Sejarah bahasa pemrograman bermula dari dokumentasi komputer mekanis awal hingga alat modern untuk pengembangan perangkat lunak. Bahasa pemrograman awal sangat terspesialisasi, mengandalkan notasi matematika dan sintaksis yang serupa dan cenderung sulit dipahami.[1] Sepanjang abad ke-20, penelitian dalam teori kompilator menghasilkan penciptaan bahasa pemrograman tingkat tinggi, yang menggunakan sintaksis yang lebih mudah diakses untuk menyampaikan instruksi.

Bahasa pemrograman tingkat tinggi pertama adalah Plankalkül, yang diciptakan oleh Konrad Zuse antara tahun 1942 dan 1945.[2] Bahasa tingkat tinggi pertama yang memiliki kompilator terkait diciptakan oleh Corrado Böhm pada tahun 1951, untuk tesis PhD-nya.[3] Bahasa pertama yang tersedia secara komersial adalah FORTRAN (FORmula TRANslation), yang dikembangkan pada tahun 1956 (manual pertama muncul tahun 1956, tetapi mulai dikembangkan sejak 1954) oleh tim yang dipimpin oleh John Backus di IBM.

Sejarah awal

sunting

Selama tahun 1842–1849, Ada Lovelace menerjemahkan memoar matematikawan Italia Luigi Menabrea tentang mesin terbaru yang diusulkan oleh Charles Babbage: Mesin Analitikal (Analytical Engine); ia melengkapi memoar tersebut dengan catatan yang merinci metode penghitungan bilangan Bernoulli dengan mesin tersebut, yang diakui oleh sebagian besar sejarawan sebagai program komputer pertama yang dipublikasikan di dunia.[4]

Alat Tenun Jacquard (Jacquard Loom) dan Mesin Diferensial (Difference Engine) buatan Charles Babbage keduanya dirancang untuk menggunakan kartu berlubang (punched cards),[5][6] yang berfungsi mendeskripsikan urutan operasi yang harus dijalankan oleh mesin yang dapat diprogram tersebut.

Kode sumber komputer pertama sangat terspesialisasi untuk aplikasinya masing-masing: misalnya, Alonzo Church mampu mengekspresikan kalkulus lambda dalam bentuk rumus matematika, dan Mesin Turing merupakan abstraksi dari pengoperasian mesin penanda pita.

Bahasa pemrograman pertama

sunting

Pada tahun 1940-an, komputer bertenaga listrik modern yang pertama kali dapat dikenali mulai diciptakan. Keterbatasan kecepatan dan kapasitas memori memaksa para pemrogram untuk menulis program bahasa rakitan (assembly) yang disesuaikan secara manual. Pada akhirnya disadari bahwa pemrograman dalam bahasa rakitan membutuhkan upaya intelektual yang sangat besar.[butuh rujukan]

Proposal awal untuk sebuah bahasa pemrograman tingkat tinggi adalah Plankalkül, yang dikembangkan oleh Konrad Zuse untuk komputer Z1 miliknya antara tahun 1942 dan 1945, tetapi tidak diimplementasikan pada saat itu.[7]

Bahasa pemrograman berfungsi pertama yang dirancang untuk menyampaikan instruksi ke komputer ditulis pada awal tahun 1950-an. Short Code milik John Mauchly, yang diusulkan pada tahun 1949, adalah salah satu bahasa tingkat tinggi pertama yang pernah dikembangkan untuk komputer elektronik.[8] Berbeda dengan kode mesin, pernyataan dalam Short Code mewakili ekspresi matematika dalam bentuk yang dapat dipahami. Namun, program tersebut harus diinterpretasikan ke dalam kode mesin setiap kali dijalankan, membuat prosesnya jauh lebih lambat daripada menjalankan kode mesin yang setara.

Pada awal tahun 1950-an, Alick Glennie mengembangkan Autocode, yang kemungkinan merupakan bahasa pemrograman terkompilasi pertama, di Universitas Manchester. Pada tahun 1954, iterasi kedua dari bahasa tersebut, yang dikenal sebagai "Mark 1 Autocode", dikembangkan untuk Mark 1 oleh R. A. Brooker. Brooker, bersama Universitas Manchester, juga mengembangkan autocode untuk Ferranti Mercury pada tahun 1950-an. Versi untuk EDSAC 2 dirancang oleh Douglas Hartree dari Laboratorium Matematika Universitas Cambridge pada tahun 1961. Dikenal sebagai EDSAC 2 Autocode, bahasa ini merupakan pengembangan langsung dari Mercury Autocode yang disesuaikan dengan kondisi lokal, dan terkenal karena optimalisasi kode objek serta diagnosis bahasa sumbernya yang tergolong maju pada masa itu. Jalur pengembangan yang sezaman tetapi terpisah, Atlas Autocode, dikembangkan untuk mesin Atlas 1 di Universitas Manchester.

Pada tahun 1954, FORTRAN diciptakan di IBM oleh tim yang dipimpin oleh John Backus; ini adalah bahasa tingkat tinggi serbaguna pertama yang digunakan secara luas dan memiliki implementasi fungsional, kontras dengan bahasa lain yang hanya berupa rancangan di atas kertas.[9][10] Ketika FORTRAN pertama kali diperkenalkan, bahasa ini dipandang dengan skeptis karena adanya kutu (bugs), penundaan dalam pengembangan, dan efisiensi yang dianggap kalah dibanding program tulisan tangan dalam bahasa rakitan.[11] Namun, dalam pasar perangkat keras yang berkembang pesat, bahasa ini akhirnya dikenal karena efisiensinya. FORTRAN masih menjadi bahasa yang populer untuk komputasi kinerja tinggi[12] dan digunakan untuk program yang menguji serta memeringkat superkomputer tercepat di dunia dalam daftar TOP500.[13]

Bahasa pemrograman awal lainnya dirancang oleh Grace Hopper di AS, dengan nama FLOW-MATIC. Bahasa ini dikembangkan untuk UNIVAC I di Remington Rand selama periode 1955 hingga 1959. Hopper menemukan bahwa pelanggan bisnis pemrosesan data merasa kurang nyaman dengan notasi matematika. Pada awal tahun 1955, ia dan timnya menulis spesifikasi untuk bahasa pemrograman berbasis Bahasa Inggris dan menerapkan prototipenya.[14] Kompilator FLOW-MATIC tersedia untuk umum pada awal tahun 1958 dan selesai secara substansial pada tahun 1959.[15] FLOW-MATIC memberikan pengaruh besar dalam perancangan COBOL, karena hanya bahasa ini dan keturunan langsungnya, AIMACO, yang digunakan pada saat itu.[16]

Bahasa-bahasa lain yang masih digunakan saat ini termasuk LISP (1958), yang diciptakan oleh John McCarthy, dan COBOL (1960), yang dibuat oleh Short Range Committee. Tonggak sejarah lain pada akhir tahun 1950-an adalah publikasi "bahasa baru untuk algoritma" oleh komite ilmuwan komputer Amerika dan Eropa; yaitu Laporan ALGOL 60 ("ALGOrithmic Language"). Laporan ini mengonsolidasikan banyak ide yang beredar pada saat itu dan menampilkan tiga inovasi utama dalam bahasa pemrograman:

  • struktur blok bersarang (nested block structure): urutan kode dan deklarasi terkait dapat dikelompokkan ke dalam blok tanpa harus diubah menjadi prosedur terpisah yang dinamai secara eksplisit;
  • cakupan leksikal (lexical scoping): sebuah blok dapat memiliki variabel, prosedur, dan fungsi privatnya sendiri yang tidak terlihat oleh kode di luar blok tersebut, yang dikenal dengan prinsip penyembunyian informasi.

Inovasi lainnya, yang terkait dengan hal ini, adalah cara bahasa tersebut dideskripsikan:

  • notasi yang tepat secara matematis, Bentuk Backus–Naur (BNF), digunakan untuk mendeskripsikan sintaksis bahasa tersebut. Hampir semua bahasa pemrograman berikutnya menggunakan varian BNF untuk mendeskripsikan bagian tata bahasa bebas konteks dari sintaksis mereka.

ALGOL 60 sangat berpengaruh dalam perancangan bahasa-bahasa generasi berikutnya, beberapa di antaranya segera menjadi lebih populer. Sistem Burroughs Large Systems dirancang untuk diprogram menggunakan subset ALGOL yang diperluas.

Ide-ide kunci ALGOL dilanjutkan hingga menghasilkan ALGOL 68:

  • sintaksis dan semantik menjadi lebih ortogonal, dengan adanya rutinitas anonim, sistem pengetikan rekursif dengan fungsi tingkat tinggi, dsb.;
  • tidak hanya bagian bebas konteks, tetapi seluruh sintaksis dan semantik bahasa didefinisikan secara formal menggunakan Tata bahasa Van Wijngaarden, sebuah formalisme yang dirancang khusus untuk tujuan ini.

Banyaknya fitur bahasa ALGOL 68 yang jarang digunakan (misalnya, blok konkuren dan paralel) serta sistem pintasan sintaksis dan pemaksaan tipe otomatis (automatic type coercions) yang kompleks membuatnya kurang populer di kalangan implementor dan mendapat reputasi sebagai bahasa yang sulit. Niklaus Wirth bahkan keluar dari komite perancangan untuk menciptakan bahasa Pascal yang lebih sederhana.

Logo
Fortran
Lisp
Simula

Beberapa bahasa terkemuka yang dikembangkan pada periode ini meliputi:

Memantapkan paradigma fundamental

sunting
Logo
Scheme
C
Smalltalk

Periode dari akhir 1960-an hingga akhir 1970-an membawa perkembangan besar bagi bahasa pemrograman. Sebagian besar paradigma pemrograman utama yang digunakan saat ini diciptakan pada periode ini:Templat:Original research inline

Masing-masing dari bahasa ini melahirkan seluruh rumpun keturunan, dan sebagian besar bahasa modern melacak silsilah mereka ke setidaknya salah satu bahasa di atas.

Tahun 1960-an dan 1970-an juga diwarnai perdebatan sengit mengenai keunggulan "pemrograman terstruktur", yang pada dasarnya berarti pemrograman tanpa menggunakan perintah goto. Sebagian besar pemrogram percaya bahwa, bahkan dalam bahasa yang menyediakan goto, menggunakannya adalah gaya pemrograman yang buruk kecuali dalam situasi yang sangat jarang. Perdebatan ini sangat terkait dengan desain bahasa: beberapa bahasa tidak memiliki goto, sehingga memaksa penerapan pemrograman terstruktur.

Untuk menyediakan waktu kompilasi yang lebih cepat, beberapa bahasa disusun untuk "kompilator satu-pass" (one-pass compilers) yang mengharuskan rutinitas bawahan didefinisikan terlebih dahulu, seperti pada Pascal, di mana rutinitas utama atau fungsi penggerak berada di bagian akhir program.

Beberapa bahasa terkemuka yang dikembangkan pada periode ini meliputi:

  • 1967 – BCPL (pendahulu bahasa B)
  • 1967 – Logo
  • 1969 – B (pendahulu bahasa C)
  • 1970 – Pascal
  • 1970 – Forth
  • 1972 – C
  • 1972 – Smalltalk
  • 1972 – Prolog
  • 1973 – ML
  • 1975 – Scheme
  • 1978 – SQL (bahasa kueri, yang kemudian diperluas)

1980-an: konsolidasi, modul, performa

sunting
Logo
MATLAB
Erlang
Tcl
C++

Tahun 1980-an merupakan tahun-tahun konsolidasi relatif bagi bahasa imperatif. Alih-alih menciptakan paradigma baru, gerakan-gerakan ini memperluas ide-ide yang ditemukan pada dekade sebelumnya. C++ menggabungkan pemrograman berorientasi objek dan pemrograman sistem. Pemerintah Amerika Serikat menstandardisasi Ada, bahasa pemrograman sistem yang ditujukan untuk digunakan oleh kontraktor pertahanan. Di Jepang dan tempat lain, dana besar dihabiskan untuk meneliti apa yang disebut bahasa pemrograman generasi kelima yang menggabungkan konstruksi pemrograman logika. Komunitas bahasa fungsional bergerak untuk menstandardisasi ML dan Lisp. Penelitian di Miranda, sebuah bahasa fungsional dengan evaluasi malas (lazy evaluation), mulai berkembang pada dekade ini.

Satu tren baru yang penting dalam desain bahasa adalah peningkatan fokus pada pemrograman untuk sistem skala besar melalui penggunaan modul, atau unit organisasi kode skala besar. Modula, Ada, dan ML semuanya mengembangkan sistem modul yang menonjol pada tahun 1980-an. Sistem modul sering kali dipadukan dengan konstruksi pemrograman generik: generik pada dasarnya adalah modul yang diparameterisasi[butuh rujukan] (lihat juga Polimorfisme (ilmu komputer)).

Meskipun paradigma baru yang besar untuk bahasa pemrograman imperatif tidak muncul, banyak peneliti memperluas ide-ide dari bahasa sebelumnya dan menerapkannya pada konteks baru. Sebagai contoh, bahasa dari sistem Argus dan Emerald mengadaptasi pemrograman berorientasi objek untuk sistem komputasi terdistribusi.

Tahun 1980-an juga membawa kemajuan dalam implementasi bahasa pemrograman. Gerakan komputer set instruksi terreduksi (RISC) dalam arsitektur komputer merumuskan bahwa perangkat keras harus dirancang untuk kompilator daripada untuk pemrogram bahasa rakitan manusia. Dibantu oleh peningkatan kecepatan unit pemroses sentral (CPU) yang memungkinkan metode kompilasi yang makin agresif, gerakan RISC memicu minat yang lebih besar pada teknologi kompilator untuk bahasa tingkat tinggi.

Teknologi bahasa terus berlanjut di jalur ini hingga memasuki tahun 1990-an.

Beberapa bahasa terkemuka yang dikembangkan pada periode ini meliputi:

1990-an: era Internet

sunting
Logo
Haskell
Lua
PHP
Rebol
Python
Ruby
Ocaml

Pertumbuhan pesat Internet pada pertengahan 1990-an menjadi peristiwa bersejarah besar berikutnya bagi bahasa pemrograman. Dengan membuka platform yang radikal bagi sistem komputer, Internet menciptakan peluang bagi diadopsinya bahasa-bahasa baru. Bahasa JavaScript naik daun dengan cepat karena integrasi awalnya dengan peramban web Netscape Navigator. Berbagai bahasa skrip lainnya memperoleh penggunaan luas dalam mengembangkan aplikasi khusus untuk server web seperti PHP. Tahun 1990-an tidak melihat adanya hal baru yang mendasar dalam pemrograman imperatif, melainkan banyak penggabungan kembali dan pematangan ide-ide lama. Era ini memulai penyebaran bahasa pemrograman fungsional. Filosofi pendorong utamanya adalah produktivitas pemrogram. Banyak bahasa pengembangan aplikasi cepat (RAD) bermunculan, yang biasanya dilengkapi dengan lingkungan pengembangan terpadu (IDE), pengumpulan sampah (garbage collection), dan merupakan keturunan dari bahasa yang lebih tua. Semua bahasa tersebut berbasis berorientasi objek. Ini termasuk Object Pascal, Objective Caml (diganti namanya menjadi OCaml), Visual Basic, dan Java. Java menerima banyak perhatian pada masa ini.

Lebih radikal dan inovatif daripada bahasa RAD adalah bahasa skrip baru. Bahasa-bahasa ini tidak diturunkan secara langsung dari bahasa lain dan menampilkan sintaksis baru serta penggabungan fitur yang lebih bebas. Banyak yang menganggap bahasa skrip ini lebih produktif daripada bahasa RAD, tetapi sering kali karena pilihan yang membuat program kecil menjadi lebih sederhana tetapi program besar menjadi lebih sulit untuk ditulis dan dipelihara.[butuh rujukan] Meskipun demikian, bahasa skrip menjadi bahasa yang paling menonjol digunakan terkait dengan Web.

Beberapa bahasa pemrograman menyertakan bahasa lain dalam distribusinya untuk menghemat waktu pengembangan. Sebagai contoh, Python dan Ruby menyertakan Tcl untuk mendukung pemrograman antarmuka pengguna grafis (GUI) melalui pustaka seperti Tkinter.

Beberapa bahasa terkemuka yang dikembangkan pada periode ini meliputi:

2000-an: paradigma pemrograman

sunting
Logo
D
Groovy
PowerShell
Scratch
Go
Clojure
Haxe

Evolusi bahasa pemrograman terus berlanjut, dan lebih banyak paradigma pemrograman yang mulai digunakan dalam tahap produksi.

Beberapa tren tersebut meliputi:

Perusahaan Big Tech memperkenalkan beberapa bahasa pemrograman baru yang dirancang untuk melayani kebutuhan mereka sendiri, sebagai contoh:

Beberapa bahasa terkemuka yang dikembangkan selama periode ini meliputi:

2010-an: era Seluler

sunting
Logo
Rust
Dart
Swift
Kotlin
TypeScript
C#
Julia
Zig

Evolusi bahasa pemrograman terus berlanjut seiring dengan bangkitnya domain pemrograman baru.

  • Peningkatan minat pada aspek distribusi dan mobilitas (mobility).
  • Integrasi dengan basis data, termasuk XML dan basis data relasional.
  • Sumber terbuka sebagai filosofi pengembangan untuk bahasa, termasuk GNU Compiler Collection (GCC) dan bahasa-bahasa seperti PHP, Python, Ruby, dan Scala.
  • Bahasa paralel masif untuk unit pemroses grafis (GPU) dan larik superkomputer, termasuk OpenCL.
  • Penelitian awal tentang komputasi kuantum dan bahasa pemrograman kuantum.
  • Beberapa bahasa pemrograman baru mencoba menyediakan pengganti modern untuk bahasa pemrograman C.
  • Banyak bahasa pemrograman baru dipengaruhi oleh bahasa dinamis yang populer dan menjanjikan penambahan keamanan tipe tanpa menurunkan produktivitas.
  • Banyak bahasa pemrograman baru menggunakan LLVM dalam implementasinya.

Banyak perusahaan Big Tech terus memperkenalkan bahasa pemrograman baru yang dirancang untuk memenuhi kebutuhan internal mereka dan menyediakan dukungan kelas satu untuk platform mereka. Sebagai contoh:

Beberapa bahasa terkemuka yang dikembangkan selama periode ini meliputi:[18][19]

Bahasa pemrograman baru lainnya termasuk Elm, Ballerina, Red, Crystal, V (Vlang), dan Reason.

2020-an: Tren saat ini

sunting
Logo
Power Fx
Carbon

Pengembangan bahasa pemrograman baru terus berlanjut. Beberapa bahasa baru mencoba memberikan keuntungan dari bahasa yang sudah dikenal seperti C++ (serbaguna dan cepat) sambil menambahkan keamanan atau mengurangi kompleksitas. Bahasa baru lainnya mencoba menghadirkan kemudahan penggunaan seperti yang disediakan oleh Python dengan menambahkan performa sebagai prioritas utama.

Beberapa bahasa pemrograman baru yang terkemuka meliputi:

Tokoh kunci

sunting
Beberapa inovator
Dennis Ritchie
Niklaus Wirth
Grace M. Hopper
Bjarne Stroustrup
Anders Hejlsberg
Guido van Rossum
Yukihiro Matsumoto
James Gosling
Larry Wall

Beberapa tokoh penting yang membantu mengembangkan bahasa pemrograman:

Lihat pula

sunting

Referensi

sunting
  1. ^ Hopper (1978) p. 16.
  2. ^ Knuth, Donald E.; Pardo, Luis Trabb. "Early development of programming languages". Encyclopedia of Computer Science and Technology (dalam bahasa American English). 7. Marcel Dekker: 419–493.
  3. ^ Tesis PhD Corrado Böhm
  4. ^ Fuegi, J.; Francis, J. (October–December 2003), "Lovelace & Babbage and the creation of the 1843 'notes'", Annals of the History of Computing, 25 (4): 16–26, Bibcode:2003IAHC...25d..16F, doi:10.1109/MAHC.2003.1253887
  5. ^ Bales, Rebecca (24 July 2023). "Charles Babbage Analytical Engine Explained". history-computer.com.
  6. ^ Swade, Doron. "The Engines". computerhistory.org. Diakses tanggal 23 February 2024.
  7. ^ Pada tahun 1998 dan 2000, kompilator dibuat untuk bahasa tersebut sebagai eksperimen sejarah. Rojas, Raúl, et al. (2000). "Plankalkül: The First High-Level Programming Language and its Implementation". Institut frame Informatik, Freie Universität Berlin, Technical Report B-3/2000. (teks lengkap)
  8. ^ Sebesta, W.S. (2006). Concepts of Programming Languages. Pearson/Addison-Wesley. hlm. 44. ISBN 978-0-321-33025-3.
  9. ^ "Fortran creator John Backus dies – Tech and gadgets". NBC News. 2007-03-20. Diakses tanggal 2010-04-25.
  10. ^ "CSC-302 99S : Class 02: A Brief History of Programming Languages". Math.grin.edu. Diarsipkan dari asli tanggal 2010-07-15. Diakses tanggal 2010-04-25.
  11. ^ Padua, David (Feb 2000). "The FORTRAN I Compiler" (PDF). Computing in Science and Engineering. 2 (1): 70–75. Bibcode:2000CSE.....2a..70P. doi:10.1109/5992.814661. Diakses tanggal 7 November 2019.
  12. ^ Eugene Loh (18 June 2010). "The Ideal HPC Programming Language". ACM Queue. 8 (6). Association of Computing Machines.
  13. ^ "HPL – A Portable Implementation of the High-Performance Linpack Benchmark for Distributed-Memory Computers". Diakses tanggal 2015-02-21.
  14. ^ Hopper (1978) p. 16.
  15. ^ Sammet (1969) p. 316
  16. ^ Sammet (1978) p. 204.
  17. ^ Gordon, Michael J. C. (1996). "From LCF to HOL: a short history" (PDF). hlm. 3. Diakses tanggal 2015-05-04. Edinburgh LCF, including the ML interpreter, was implemented in Lisp.
  18. ^ "TIOBE Index, Top 100 programming languages according to TIOBE Index". www.tiobe.com. Indeks TIOBE. 22 February 2024.
  19. ^ "GitHub's Octoverse 2018". Diarsipkan dari asli tanggal 2019-03-22.
  20. ^ Rojas, Raúl; Hashagen, Ulf (2002). The First Computers: History and Architectures. MIT Press. hlm. 292. ISBN 978-0262681377. Diakses tanggal October 25, 2013.

Bacaan lanjutan

sunting

Pranala luar

sunting