Ryan Gilang Pratama
Kelas 1C
2103015130
Bahasa Pemrograman
Definisi
- Bahasa Pemrograman merupakan notasi yang dipergunakan untuk mendeskripsikan proses komputasi dalam format yang dapat dibaca oleh komputer dan manusia.
- Bahasa Natural dirancang untuk memfasilitasi komunikasi antar manusia
- Bahasa Pemrograman dirancang untuk memfasilitasi komunikasi antara manusia dengan komputer
Tingkatan Bahasa Pemrograman
- Bahasa Mesin (Machine Languages)
- Bahasa Rakitan (Assembly Languages)
- Bahasa Tingkat Tinggi (High Level Languages)
Bahasa Mesin
- Dimulai sejak awal 1950
- Disebut juga sebagai symbolic machine languages
- Symbol yang dipergunakan untuk memfasilitasi aspek pemrograman :
- Mnemonic Opcodes
- Symbolic Names
- Memory Address Automatic Assignment
- Addressing Modes
Bahasa Tingkat Tinggi
Perbandingan
Penambahan dua buah integer.
Machine Languages
Assembly
High Level (Contoh Pascal)
Sejarah Bahasa Pemrograman
- 1830 - 1840, Charles Babbage, Analytical Engine
- Programmer pertama: Ada Byron Countess Of Lovelace
- 1940, John von Neumann, Komputer pertama dengan stored programs
Era 1950-an
- FORTRAN (FORmula TRANslation), 1954~1957, IBM, John Backus, arrays, loops, if-statements
- COBOL (Common Business-Oriented Language), 1959~1960, US DOD, Grace Hopper, records, output formatting
- Algol60 (ALGOrithmic Language), 1958~1960,, structured statements, begin-end blocks, type declarations, recursion, pass-by-value parameters
- LISP (LISt Processor), akhir 1950s, MIT, John McCarthy, functions dan garbage collection
- APL (A Programming Language), akhir 1950s, Harvard University dan IBM, K. Iverson, arrays and matrices
Era 1960-an
- PL/I, 1963-1964, IBM, concurrency, exception handling
- Algol68, 1963-1968, general type system, orthogonal language
- SNOBOL (StriNg Oriented symBOlic Language), awal 1960s, Bell Labs, R. Griswold, string processing, pattern matching
- Simula67, 1965~1967, Norwegian Computing Center, Kristen Nygaard dan le-Johan Dahl, simulations, classes
- ISWIM, Peter Landin, functional language murni
- BASIC, 1964, Dartmouth College, John Kemeny dan Thomas Kurtz, bahasa instructional yang sederhana dan interaktif
Era 1970-an
- Pascal, 1971, Niklaus Wirth, bahasa instruksional sederhana dengan pernyataan terstruktur
- C, 1972, Bell Labs, Dennis Ritchie, type system sederhana dan runtime environment
- CLU, 1974~1977, MIT, Barbara Liskov, pendekatan konsisten untuk mekanisme abstraksi, data abstraction, control abstraction, and exception handling
- Euclid, 1976~1977, University of Toronto, abstract data types, program verification
- Mesa, 1976~1979, Xerox, module facility, exception handling, concurrency
Era 1980-an
- Ada, 1983, DOD, abstract data types, concurrency
- Modula-2, 1982, Niklaus Wirth, modules, coroutine
- Smalltak, 1980, Xerox, Alan Kay and Dan Ingalls, a complete object-oriented programming system
- C++, 1980, Bell Labs, Bjarne Stroustrup, classes, library
- Scheme, 1975~1978, MIT, Gerald Sussman dan Guy Steele, versi baru dari LISP
- ML, 1978, Edinburgh University, Robin Milner, a syntax and type checking similar to Pascal
- Prolog, 1972~1980, A. Colmerauer, mathematical logic
Era 1990-an
- Java, 1995, Gosling, bahasa pertama yang dikeluarkan dengan API yang sudah dikembangkan
- Bahasa-bahasa Scripting seperti : Perl, Tcl, Javascript, VBScript, Python, dan PHP
Era 2000-an
Compiler
Merupakan program yang menterjemahkan program yang ditulis dengan sebuah bahasa menjadi program yang ditulis oleh bahasa lain
Semantics & Syntax
Semantics
Syntax
Atribut
Binding
Binding Time
- Language definition time: pada saat pendeklarasian
- Language implementation time: pada saat penggunaan
- Translation time: tipe-tipe dari variabel
- Link time: pada saat pemanggilan fungsi external
- Load time: lokasi global variabel
- Execution time: nilai dari variabel, lokasi local variabel
Deklarasi
- Deklarasi merupakan prinsip dalam menyediakan binding
- Umumnya diasosiasikan dengan sebuah block
- Lokal, deklarasi yang ditempatkan didalam block
- Global, deklarasi yang ditempatkan diluar block
Ruang Lingkup (Scope)
Syntax
Lexical Structure
- Pada lexical structure, bahasa pemrograman menggunakan tokens untuk membentuk grammatical categories yang akan membentuk blok-blok syntax
- Standar tokens:
- Keywords, seperti IF, WHILE, REPEAT, dll
- Literals, seperti 10 (numeric literal) atau ‘A’ (string literal)
- Special Symbols, umumnya dipergunakan untuk membentuk operator
- Identifiers , umumnya dipergunakan untuk menamai routine (prosedur & fungsi)
- Comments, baris program yang tidak akan dieksekusi