Dalam beberapa hal, sejarah teori bahasa pemrograman mendahului bahkan pengembangan bahasa pemrograman. Kalkulus lambda, yang dikembangkan oleh Alonzo Church dan Stephen Cole Kleene pada tahun 1930-an, dianggap oleh beberapa orang sebagai bahasa pemrograman pertama di dunia, meskipun dimaksudkan untuk memodelkan komputasi daripada menjadi sarana bagi pemrogram untuk mendeskripsikanalgoritma ke sistem komputer. Banyak bahasa pemrograman fungsional modern telah dideskripsikan sebagai menyediakan "lapisan tipis" di atas kalkulus lambda,[2] dan banyak yang dideskripsikan dengan mudah dalam kaitannya dengannya.
Bahasa pemrograman pertama yang ditemukan adalah Plankalkül, yang dirancang oleh Konrad Zuse pada tahun 1940-an, tetapi tidak diketahui publik hingga tahun 1972, dan tidak diimplementasikan hingga tahun 1998. Bahasa pemrograman tingkat tinggi pertama yang dikenal luas dan berhasil adalah FORTRAN (untuk Formula Translation), yang dikembangkan dari tahun 1954 hingga 1957 oleh tim peneliti IBM yang dipimpin oleh John Backus. Keberhasilan FORTRAN menyebabkan pembentukan komite ilmuwan untuk mengembangkan bahasa komputer "universal"; hasil dari upaya mereka adalah ALGOL 58. Secara terpisah, John McCarthy dari Massachusetts Institute of Technology (MIT) mengembangkan Lisp, bahasa pertama dengan asal-usul di akademisi yang berhasil. Dengan keberhasilan upaya awal ini, bahasa pemrograman menjadi topik penelitian yang aktif pada tahun 1960-an dan seterusnya.
Garis Waktu
Beberapa peristiwa kunci lain dalam sejarah teori bahasa pemrograman sejak saat itu:
1950-an
Noam Chomsky mengembangkan hierarki Chomsky di bidang linguistik, sebuah penemuan yang secara langsung berdampak pada teori bahasa pemrograman dan cabang ilmu komputer lainnya.
Pada tahun 1964, Peter Landin adalah orang pertama yang menyadari kalkulus lambda Church dapat digunakan untuk memodelkan bahasa pemrograman. Dia memperkenalkan SECD machine yang "menginterpretasikan" ekspresi lambda.
Pada tahun 1966, Landin memperkenalkan ISWIM, sebuah bahasa pemrograman komputer abstrak dalam artikelnya The Next 700 Programming Languages. Ini berpengaruh dalam desain bahasa yang mengarah ke bahasa Haskell.
Pada tahun 1966, Corrado Böhm memperkenalkan bahasa CUCH (Curry-Church).[3]
Pada tahun 1972, pemrograman logika dan Prolog dikembangkan sehingga memungkinkan program komputer untuk diekspresikan sebagai logika matematika.
Sebuah tim ilmuwan di Xerox PARC yang dipimpin oleh Alan Kay mengembangkan Smalltalk, bahasa berorientasi objek yang dikenal luas karena lingkungan pengembangannya yang inovatif.
Backus, pada kuliah Turing Award tahun 1977, menyerang keadaan bahasa industri saat ini dan mengusulkan kelas baru bahasa pemrograman yang sekarang dikenal sebagai bahasa pemrograman tingkat fungsi.
Pada tahun 1985, perilisan Miranda memicu minat akademis pada bahasa pemrograman fungsional murni yang dievaluasi secara malas (*lazy-evaluated*). Sebuah komite dibentuk untuk menentukan standar terbuka yang menghasilkan perilisan standar Haskell 1.0 pada tahun 1990.
Ada beberapa bidang studi yang berada di dalam teori bahasa pemrograman, atau yang memiliki pengaruh mendalam padanya; banyak di antaranya memiliki tumpang tindih yang cukup besar. Selain itu, PLT memanfaatkan banyak cabang matematika lainnya, termasuk teori komputabilitas, teori kategori, dan teori himpunan.
Semantik formal
Semantik formal adalah spesifikasi formal dari perilaku program komputer dan bahasa pemrograman. Tiga pendekatan umum untuk mendeskripsikan semantik atau "makna" dari program komputer adalah semantik denotasional, semantik operasional, dan semantik aksiomatik.
Teori tipe
Teori tipe adalah studi tentang sistem tipe; yang merupakan "metode sintaksis yang dapat diatasi untuk membuktikan tidak adanya perilaku program tertentu dengan mengklasifikasikan frasa sesuai dengan jenis nilai yang dihitungnya".[4] Banyak bahasa pemrograman dibedakan oleh karakteristik sistem tipe mereka.
Analisis dan transformasi program
Analisis program adalah masalah umum untuk memeriksa program dan menentukan karakteristik kunci (seperti tidak adanya kelas kesalahan program). Transformasi program adalah proses mengubah program dalam satu bentuk (bahasa) ke bentuk lain.
Analisis bahasa pemrograman komparatif
Analisis bahasa pemrograman komparatif berusaha mengklasifikasikan bahasa ke dalam berbagai jenis berdasarkan karakteristiknya; kategori luas bahasa sering dikenal sebagai paradigma pemrograman.
Generik dan metaprogramming
Metaprogramming adalah pembuatan program tingkat yang lebih tinggi yang, ketika dieksekusi, menghasilkan program (mungkin dalam bahasa yang berbeda, atau dalam subset dari bahasa asli) sebagai hasilnya.
Bahasa khusus domain
Bahasa khusus domain adalah bahasa yang dibangun untuk secara efisien memecahkan masalah dalam domain tertentu, atau bagian darinya.
Konstruksi kompiler
Teori kompiler adalah teori penulisan kompiler (atau lebih umum, penerjemah); program yang menerjemahkan program yang ditulis dalam satu bahasa ke bentuk lain. Tindakan kompiler secara tradisional dipecah menjadi analisis sintaks (memindai dan mengurai), analisis semantik (menentukan apa yang harus dilakukan program), optimasi (meningkatkan kinerja program seperti yang ditunjukkan oleh beberapa metrik; biasanya kecepatan eksekusi) dan pembuatan kode (pembuatan dan keluaran program yang setara dalam beberapa bahasa target; seringkali arsitektur set instruksi dari central processing unit (CPU)).
Michael J. C. Gordon. Programming Language Theory and Its Implementation. Prentice Hall.
Gunter, Carl dan Mitchell, John C. (eds.). Theoretical Aspects of Object Oriented Programming Languages: Types, Semantics, and Language Design. MIT Press.