Evolusi Bahasa Pemrograman Yudianto Sujana
Plankalkul –1945 Tidak pernah diimplementasikan Struktur data : Array, records
2
Pseudocode –1949 Digunakan karena terlalu sulit jika harus menggunakan machine code. Shortcode – 1949 – BINAC- oleh Mauchly, Ekspresi dikodekan dari kiri ke kanan. Speedcoding – 1954 – IBM 701 – oleh Backus. – Pseudo operation untuk fungsi aritmatik dan matematika. – Percabangan kondisional dan tanpa kondisi. – Autoincrement register untuk pengaksesan array 3
Laning dan Zierler System –1953 Diimplementasikan pada komputer Whilwind – MIT. Merupakan system compiler pertama. Fasilitas translasi ekspresi dan pemanggilan fungsi. Tidak pernah diporting ke mesin lain 4
FORTRAN I – 1957 FORTRAN 0 -1954 – tidak diimplementasi FORmula TRANslation dibuat oleh John Backus Didesain untuk IBM 704, yang memiliki Index Register dan hardware floating-point. Lingkungan pengembangan : – Komputer (saat itu) belum reliable. – Aplikasi terbatas pada scientific. – Tidak ada metodologi pemrograman dan alat bantunya. – Efisiensi mesin harus benar-benar diperhatikan. Merupakan bahasa tingkat-tinggi pertama yang diterima secara luas. 5
FORTRAN I – 1957 Implementasi FORTRAN I – Nama variable hingga 6 karakter. – Input/Output dapat diformat (diatur). – User dapat membuat subrutin (subprogram) sendiri. – Three-way selection statement (arithmetic IF statement). – Tidak ada statement tipe data. – Kompilasi tidak terpisah. – Compiler direlease April 1957 6
FORTRAN II – 1958 Independent compilation. Perbaikan bug dari FORTRAN I
7
FORTRAN IV – 1962 Deklarasi tipe eksplisit. Logical selection statement (Logical IF). Subprogram dapat menjadi parameter. Menjadi ANSI standard pada tahun 1968
8
FORTRAN 77 – 1978 Dilengkapi dengan character-string handling. Logical loop control statement. IF-THEN-ELSE statement
9
FORTRAN 90 – 1990 Menggunakan modul-modul dengan akses private maupun public. Terdapat array dinamik. Record dan Pointer. Rekursif. Statement CASE, EXIT, dan CYCLE. Pengecekan tipe parameter. 10
LISP – 1959 LISt Processing. Dibuat oleh John McCarthy, MIT, 1959. Riset Artificial Intellegence membutuhkan bahasa yang : – Memproses data menggunakan list (bukan array). Mendukung komputasi simbolik (bukan numeric). Hanya terdapat 2 tipe data : Atom dan List. Sintaksnya didasarkan pada Kalkulus Lambda (Lambda calculus). Merupakan pionir dari functional programming. Tidak membutuhkan variable atau assignment. Control dilakukan lewat rekursi dan ekspresi kondisional. Masih merupakan bahasa yang dominan dalam AI. COMMON LISP dan Scheme merupakan dialek dari LISP. Terdapat bahasa-bahasa lain yang berhubungan : ML, Miranda, Haskell. 11
ALGOL 58 – 1958 ALGOrithmic Language. Perkembangan bahasa saat itu (saat ALGOL dibuat) : – FORTRAN terbatas untuk mesin IBM 70x. – Bahasa-bahasa yang lain juga dikembangkan tetapi hanya untuk mesin tertentu. – Tidak terdapat bahasa yang portable, semuanya bergantung pada mesin – Tidak terdapat bahasa yang universal. ACM (Association for Computing Machinery) dan GAMM bertemu bertemu selama 4 hari untuk merencanakan desain bahasa. 12
ALGOL 58 – 1958 Tujuan dari bahasa tersebut : – Mendekati notasi matematika. – Baik untuk mendeskripsikan algoritma. – Harus dapat ditranslasikan ke kode mesin. Fitur dari bahasa ALGOL – Menggunakan konsep tipe data secara formal. – Nama variable tidak terbatas panjangnya. – Index array tidak terbatas. – Parameter dipisahkan oleh modenya (in dan out). – Index ditempatkan dalam bracket (tanda [ ]). – Mendukung compound statement (pernyataan majemuk) (begin…end). – Tanda semicolon (titik koma, ;) merupakan pemisah antar statement. – Menggunakan operator assignment := – Statement IF mempunyai ELSE-IF (nested-IF) 13
ALGOL 60 – 1960 Merupakan modifikasi dari ALGOL 58. Fitur baru : – Block structure (local scope). – 2 model passing parameter(by name dan by value). – Rekursi subprogram. – Stack-dynamic array. Tetap belum mempunyai I/O dan string handling 14
ALGOL 60 – 1960 Kesuksesan ALGOL 60 : – Menjadi bahasa yang standar/formal untuk merealisasikan algoritma selama 20 tahun. – Semua bahasa imperative sesudahnya mengacu pada ALGOL-60. – Merupakan bahasa pertama yang tidak bergantung pada mesin (machine independent language). Merupakan bahasa pertama yang syntaxnya didefinisikan secara formal. (Menggunakan BNF- Backus Naur Form/ Backus Normal Form). 15
ALGOL 60 – 1960 Kegagalan : – Tidak dipakai secara luas di Amerika Serikat, dengan alasan : • Tidak terdapat I/O dan character set, sehingga program tidak dapat diporting. • Karena terlalu fleksible, menjadi susah untuk diimplementasi. • Deskripsi syntax formal. • Kurang dukungan dari IBM (yang saat itu merupakan perusahaan yang paling maju dalam bidang komputer). • Dominasi FORTRAN di Amerika. 16
COBOL – 1960 COmmon Business Oriented Language Perkembangan bahasa saat itu : – UNIVAC menggunakan FLOW-MATIC. – USAF menggunakan AIMACO. – IBM mengembangkan COMTRAN. Didasarkan pada FLOW-MATIC – Fitur FLOW-MATIC : • Panjang nama variable hingga 12 karakter • Menggunakan nama dalam bahasa inggris untuk operator aritmatika. • Data dan code terpisah. • Kata kerja (verbs) merupakan kata pertama dalam setiap statement. 17
COBOL – 1960 Tujuan desain : – Harus seperti bahasa Inggris yang sederhana. – Mudah untuk digunakan. – Harus dapat dipergunakan secara luas. – Harus terbebas dari masalah implementasi compiler. Desainer terdiri dari perusahaan komputer dan DoD (U.S Departement of Defense). Kontribusi terhadap perkembangan bahasa pemrograman : – Fasilitas makro yang pertama dalam bahasa tingkat tinggi. – Struktur data hirarki (record). – Statement kondisi bersarang (nested selection statements). – Nama variable dapat mencapai 30 karakter. – Pembagian data. Digunakan secara luas untuk aplikasi bisnis. Penggunaannya didukung oleh DoD 18
BASIC – 1964 Beginners All-purpose Symbolic Instruction Code. Dibuat oleh John Kemeny dan Thomas Kurtz. Mudah untuk dipelajari. Struktur program jelek. Dialek dari BASIC yang sekarang populer : QuickBASIC dan Visual BASIC.
19
PL/I – 1965 Programming Language I. Dibuat oleh IBM dan SHARE. Menggabungkan fitur dari ALGOL 60, COBOL, dan FORTRAN. Dikembangkan untuk aplikasi Bisnis dan Science. Pertama kali adanya exception handling.
20
Early Dynamic Language Karakteristik : Memiliki tipe dinamik, dan dynamic storage allocation. APL (A Programming Language) – 1962. – Didesain sebagai HDL (Hardware Description Language) oleh Ken Iverson dari IBM. – Sangat ekspresif (terdapat banyak operator). – Program sangat sulit untuk dibaca. SNOBOL – 1964. – Didesain sebagai string manipulation language di Bell Labs oleh Farber, Griswold, dan Polensky. – Sangat baik untuk string pattern-matching. 21
SIMULA 67 – 1967 SIMULAtion. Didesain untuk simulasi system oleh Nygaard dan Dahl (Norwegia). Didasarkan pada ALGOL 60 dan SIMULA I Kontribusi : Coroutine (semacam subprogram) yang diimplementasi dalam struktur yang disebut class. Class adalah struktur yang memuat data dan fungsi. 22
ALGOL 68 – 1968 Merupakan pengembangan dari ALGOL 60. Desain didasarkan pada konsep orthogonality. Kontribusi : – User-defined data structures. – Tipe referensi. – Array dinamik (flex array). Mempunyai pengaruh yang besar pada bahasa pemrograman berikutnya, terutama Pascal, C, dan Ada. 23
Pascal –1971 Didesain oleh Niklaus Wirth, yang keluar dari tim ALGOL 68. Dikembangkan dari ALGOL 68. Didesain untuk pengajaran pemrograman terstruktur. Kecil dan mudah, tidak terdapat hal yang benarbenar baru. Tetap menjadi bahasa pemrograman yang digunakan secara luas untuk mengajarkan pemrograman di universitas-universitas. 24
C – 1972 Didesain untuk pemrograman system oleh Dennis Ritchie dari Bell Labs. Dikembangkan dari bahasa B dan ALGOL 68. Memiliki operator yang banyak, tetapi dari segi pengecekan tipe data (type checking) kurang baik. Didistribusikan bersama system operasi UNIX
25
Bahasa lain yang merupakan turunan dari ALGOL Modula-2 (1970 oleh Niklaus Wirth) Pascal ditambah modul untuk low-level agar dapat digunakan untuk pemrograman sistem. Modula-3 (1980 oleh Digital dan Olivetti) Modula-2 ditambah class, exception handling, garbage-collection, dan concurrency. Oberon (1980 oleh Wirth) Menambahkan OOP ke Modula-2, penghilangan statement for, tipe enumerasi dan statement with). Delphi (1994 Borland) Pascal ditambah support untuk OOP, lebih aman (dalam hal pointer dan memori) dibanding C++. 26
PROLOG – 1972 PROgramming in LOGic. Dikembangkan oleh Comeraurer dan Roussel University of Aix-Marseille). Didasarkan pada formal logic. Sifatnya non-procedural. Dapat disebut sebagai Intelligent Database System yang menggunakan proses pengambilan keputusan untuk memutuskan kebenaran dari query yang diberikan. 27
Ada – 1983 Dikembangkan untuk DoD. Pengembangan melibatkan ratusan orang, biaya besar, dan waktu pengembangan sekitar 8 tahun. Memuat semua yang akhirnya dikenal sebagai bagian dalam software engineering dan language design. Kompiler yang pertama sangat rumit, dan kompiler yang pertama dapat digunakan dirilis 5 tahun setelah desain bahasanya selesai. 28
Ada – 1983 Ada 95 – Mendukung OOP melalui penurunan tipe, terdapat mekanisme kontrol yang lebih baik dalam penggunaan data secara bersama-sama, library lebih flexible. Kontribusi : – Packages – dukungan untuk data abstraction. – Exeception handling. – Generic program units. – Concurrency – melalui model tasking 29
Smalltalk –1972-1980 Dikembangkan di Xerox Palo Alto Research Center (Xerox PARC), oleh Alan Kay, kemudian dilanjutkan oleh Adele Goldberg. Merupakan bahasa yang pertama kali mengimplementasikan konsep object-oriented (data abstraction, inheritance, dan dynamic type binding). Merupakan pionir dari GUI (Graphical User Interface). 30
C++ - 1985 Dikembangkan oleh Bjarne Stroustrup di Bell Labs. Dikembangkan dari C dan SIMULA 67. Terdapat fasilitas OOP yang berasal dari SIMULA 67 dan ditambahkan ke C. Mempunyai exception handling. Merupakan bahasa yang besar dan kompleks karena mendukung procedural programming dan object-oriented programming. Popularitasnya cepat berkembang bersama dengan OOP. ANSI standard pada tahun 1997. Eiffel – merupakan bahasa yang juga mendukung OOP, lebih kecil dan lebih mudah dari C++, didesain oleh Bertrand Meyer tahun 1992. 31
Java – 1995 Dikembangkan oleh James Gosling, Sun Microsystems Didasarkan pada C++ Secara signifikan menyederhanakan C++. Hanya mendukung OOP. Mempunyai reference, tetapi tidak pointer. Terdapat juga dukungan untuk applets (world wide web) dan concurrency (Java Threads). 32
Scripting Language untuk Web JavaScript – Digunakan pada Pemrograman Web (client-side) untuk mengahasilkan dynamic HTML document. – Memepunyai syntax yang mirip dengan Java. PHP (PHP Hypertext Preprocessor) – Digunakan pada Pemrograman Web (server-side) menghasilkan code HTML sebagai outputnya. – Mempunyai syntax yang mirip dengan C++ (support OOP). 33
Scripting Language untuk Web VBScript – Digunakan pada Pemrograman Web (client-side) untuk mengahasilkan dynamic HTML document. – Didasarkan atas Visual Basic. – Dikembangkan oleh Microsoft. Jscript – Digunakan pada Pemrograman Web (client-side) untuk mengahasilkan dynamic HTML document. – Memiliki syntac yang mirip dangan C++. – Dikembangkan oleh Microsoft. ASP (Active Server Page) – Digunakan pada Pemrograman Web (server-side) menghasilkan code HTML sebagai outputnya. – Dikembangkan oleh Microsoft. 34
Tugas Anda Buat paper tentang bahasa pemrograman – Java – Delphi – C++ – C# – PHP – Ruby – VB.NET – Python – Perl – ASP Dikumpul dan dipresentasikan setelah mid test 36