Programming language theory (PLT) is a branch of computer science that deals with the design, implementation, analysis, characterization, and classification of formal languages known as programming languages.
Teori bahasa pemrograman (PLT) adalah cabang ilmu komputer yang membahas desain, implementasi, analisis, karakterisasi, dan klasifikasi bahasa formal yang dikenal sebagai bahasa pemrograman.
Programming language theory is closely related to other fields including linguistics, mathematics, and software engineering.
Teori bahasa pemrograman terkait erat dengan bidang lain termasuk linguistik, matematika, dan rekayasa perangkat lunak.
In some ways, the history of programming language theory predates even the development of programming languages.
Dalam beberapa hal, sejarah teori bahasa pemrograman mendahului bahkan pengembangan bahasa pemrograman.
The lambda calculus, developed by Alonzo Church and Stephen Cole Kleene in the 1930s, is considered by some to be the world's first programming language, even though it was intended to model computation rather than being a means for programmers to describe algorithms to a computer system.
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 mendeskripsikan algoritma ke sistem komputer.
Many modern functional programming languages have been described as providing a "thin veneer" over the lambda calculus, and many are described easily in terms of it.
Banyak bahasa pemrograman fungsional modern telah dideskripsikan sebagai menyediakan "lapisan tipis" di atas kalkulus lambda, dan banyak yang dideskripsikan dengan mudah dalam kaitannya dengannya.
The first programming language to be invented was Plankalkül, which was designed by Konrad Zuse in the 1940s, but not publicly known until 1972, and not implemented until 1998.
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.
The first widely known and successful high-level programming language was FORTRAN (for Formula Translation), developed from 1954 to 1957 by a team of IBM researchers led by John Backus.
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.
The success of FORTRAN led to the formation of a committee of scientists to develop a "universal" computer language; the result of their effort was ALGOL 58.
Keberhasilan FORTRAN menyebabkan pembentukan komite ilmuwan untuk mengembangkan bahasa komputer "universal"; hasil dari upaya mereka adalah ALGOL 58.
Separately, John McCarthy of Massachusetts Institute of Technology (MIT) developed Lisp, the first language with origins in academia to be successful.
Secara terpisah, John McCarthy dari Massachusetts Institute of Technology (MIT) mengembangkan Lisp, bahasa pertama dengan asal-usul di akademisi yang berhasil.
With the success of these initial efforts, programming languages became an active topic of research in the 1960s and beyond.
Dengan keberhasilan upaya awal ini, bahasa pemrograman menjadi topik penelitian yang aktif pada tahun 1960-an dan seterusnya.
Some other key events in the history of programming language theory since then: 1950s Noam Chomsky developed the Chomsky hierarchy in the field of linguistics, a discovery which has directly impacted programming language theory and other branches of computer science.
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.
In 1962, the Simula language was developed by Ole-Johan Dahl and Kristen Nygaard; it is widely considered to be the first example of an object-oriented programming language; Simula also introduced the concept of coroutines.
1960-an Pada tahun 1962, bahasa Simula dikembangkan oleh Ole-Johan Dahl dan Kristen Nygaard; itu secara luas dianggap sebagai contoh pertama dari bahasa pemrograman berorientasi objek; Simula juga memperkenalkan konsep coroutine.
In 1964, Peter Landin is the first to realize Church's lambda calculus can be used to model programming languages.
Pada tahun 1964, Peter Landin adalah orang pertama yang menyadari kalkulus lambda Church dapat digunakan untuk memodelkan bahasa pemrograman.
He introduces the SECD machine which "interprets" lambda expressions.
Dia memperkenalkan SECD machine yang "menginterpretasikan" ekspresi lambda.
In 1965, Landin introduces the J operator, essentially a form of continuation.
Pada tahun 1965, Landin memperkenalkan J operator, pada dasarnya bentuk continuation.
In 1966, Landin introduces ISWIM, an abstract computer programming language in his article The Next 700 Programming Languages.
Pada tahun 1966, Landin memperkenalkan ISWIM, sebuah bahasa pemrograman komputer abstrak dalam artikelnya
It is influential in the design of languages leading to the Haskell language.
Ini berpengaruh dalam desain bahasa yang mengarah ke bahasa Haskell.
In 1966, Corrado Böhm introduced the language CUCH (Curry-Church).
Pada tahun 1966, Corrado Böhm memperkenalkan bahasa CUCH (Curry-Church).
In 1967, Christopher Strachey publishes his influential set of lecture notes Fundamental Concepts in Programming Languages, introducing the terminology R-values, L-values, parametric polymorphism, and ad hoc polymorphism.
Pada tahun 1967, Christopher Strachey menerbitkan serangkaian catatan kuliahnya yang berpengaruh Fundamental Concepts in Programming Languages, memperkenalkan terminologi nilai-R, nilai-L, polimorfisme parametrik, dan polimorfisme ad hoc.
In 1969, J. Roger Hindley publishes The Principal Type-Scheme of an Object in Combinatory Logic, later generalized into the Hindley–Milner type inference algorithm.
Pada tahun 1969, J. Roger Hindley menerbitkan The Principal Type-Scheme of an Object in Combinatory Logic, yang kemudian digeneralisasi menjadi Hindley–Milner algoritma inferensi tipe.
In 1969, Tony Hoare introduces the Hoare logic, a form of axiomatic semantics.
Pada tahun 1969, Tony Hoare memperkenalkan logika Hoare, bentuk semantik aksiomatik.
In 1969, William Alvin Howard observed that a "high-level" proof system, referred to as natural deduction, can be directly interpreted in its intuitionistic version as a typed variant of the model of computation known as lambda calculus.
Pada tahun 1969, William Alvin Howard mengamati bahwa sistem bukti "tingkat tinggi", yang disebut deduksi natural, dapat langsung diinterpretasikan dalam varian intuisifnya sebagai varian model komputasi bertipe yang dikenal sebagai kalkulus lambda.
This became known as the Curry–Howard correspondence.
Ini dikenal sebagai korespondensi Curry–Howard.
In 1970, Dana Scott first publishes his work on denotational semantics.
1970-an Pada tahun 1970, Dana Scott pertama kali menerbitkan karyanya tentang semantik denotasional.
In 1972, logic programming and Prolog were developed thus allowing computer programs to be expressed as mathematical logic.
Pada tahun 1972, pemrograman logika dan Prolog dikembangkan sehingga memungkinkan program komputer untuk diekspresikan sebagai logika matematika.
A team of scientists at Xerox PARC led by Alan Kay develop Smalltalk, an object-oriented language widely known for its innovative development environment.
Sebuah tim ilmuwan di Xerox PARC yang dipimpin oleh Alan Kay mengembangkan Smalltalk, bahasa berorientasi objek yang dikenal luas karena lingkungan pengembangannya yang inovatif.
From 1975, Gerald Jay Sussman and Guy Steele develop the Scheme language, a Lisp dialect incorporating lexical scoping, a unified namespace, and elements from the actor model including first-class continuations.
Dari tahun 1975, Gerald Jay Sussman dan Guy Steele mengembangkan bahasa Scheme, dialek Lisp yang menggabungkan ruang lingkup leksikal, namespace terpadu, dan elemen dari actor model termasuk kontinuasi kelas-pertama.
Backus, at the 1977 Turing Award lecture, assailed the current state of industrial languages and proposed a new class of programming languages now known as function-level programming languages.
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.
In 1977, Gordon Plotkin introduces Programming Computable Functions, an abstract typed functional language.
Pada tahun 1977, Gordon Plotkin memperkenalkan Programming Computable Functions, bahasa fungsional bertipe abstrak.
In 1978, Robin Milner introduces the Hindley–Milner type system inference algorithm for ML language.
Pada tahun 1978, Robin Milner memperkenalkan algoritma inferensi sistem tipe Hindley–Milner untuk bahasa ML.
In 1988, Gilles Kahn published his paper on natural semantics.
Pada tahun 1988, Gilles Kahn menerbitkan makalahnya tentang semantik natural.
There emerged process calculi, such as the Calculus of Communicating Systems of Robin Milner, and the Communicating sequential processes model of C. A. R. Hoare, as well as similar models of concurrency such as the actor model of Carl Hewitt.
Muncul kalkulus proses, seperti Calculus of Communicating Systems dari Robin Milner, dan model Communicating sequential processes dari C. A. R. Hoare, serta model konkurensi serupa seperti actor model dari Carl Hewitt.
In 1985, the release of Miranda sparks an academic interest in lazy-evaluated purely functional programming languages.
Pada tahun 1985, perilisan Miranda memicu minat akademis pada bahasa pemrograman fungsional murni yang dievaluasi secara malas (*lazy-evaluated*).
A committee was formed to define an open standard resulting in the release of the Haskell 1.0 standard in 1990.
Sebuah komite dibentuk untuk menentukan standar terbuka yang menghasilkan perilisan standar Haskell 1.0 pada tahun 1990.
Bertrand Meyer created the methodology design by contract and incorporated it into the Eiffel language.
Bertrand Meyer menciptakan metodologi design by contract dan menggabungkannya ke dalam bahasa Eiffel.
1990s Gregor Kiczales, Jim Des Rivieres and Daniel G. Bobrow published the book The Art of the Metaobject Protocol.
1990-an Gregor Kiczales, Jim Des Rivieres, dan Daniel G. Bobrow menerbitkan buku The Art of the Metaobject Protocol.
Eugenio Moggi and Philip Wadler introduced the use of monads for structuring programs written in functional programming languages.
Eugenio Moggi dan Philip Wadler memperkenalkan penggunaan monad untuk menyusun program yang ditulis dalam bahasa pemrograman fungsional.
There are several fields of study that either lie within programming language theory, or which have a profound influence on it; many of these have considerable overlap.
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.
In addition, PLT makes use of many other branches of mathematics, including computability theory, category theory, and set theory.
Selain itu, PLT memanfaatkan banyak cabang matematika lainnya, termasuk teori komputabilitas, teori kategori, dan teori himpunan.
Formal semantics is the formal specification of the behaviour of computer programs and programming languages.
Semantik formal adalah spesifikasi formal dari perilaku program komputer dan bahasa pemrograman.
Three common approaches to describe the semantics or "meaning" of a computer program are denotational semantics, operational semantics and axiomatic semantics.
Tiga pendekatan umum untuk mendeskripsikan semantik atau "makna" dari program komputer adalah semantik denotasional, semantik operasional, dan semantik aksiomatik.
Type theory is the study of type systems; which are "a tractable syntactic method for proving the absence of certain program behaviors by classifying phrases according to the kinds of values they compute".
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".
Many programming languages are distinguished by the characteristics of their type systems.
Banyak bahasa pemrograman dibedakan oleh karakteristik sistem tipe mereka.
Program analysis is the general problem of examining a program and determining key characteristics (such as the absence of classes of program errors).
Analisis program adalah masalah umum untuk memeriksa program dan menentukan karakteristik kunci (seperti tidak adanya kelas kesalahan program).
Program transformation is the process of transforming a program in one form (language) to another form.
Transformasi program adalah proses mengubah program dalam satu bentuk (bahasa) ke bentuk lain.
Comparative programming language analysis seeks to classify languages into different types based on their characteristics; broad categories of languages are often known as programming paradigms.
Analisis bahasa pemrograman komparatif berusaha mengklasifikasikan bahasa ke dalam berbagai jenis berdasarkan karakteristiknya; kategori luas bahasa sering dikenal sebagai paradigma pemrograman.
Metaprogramming is the generation of higher-order programs which, when executed, produce programs (possibly in a different language, or in a subset of the original language) as a result.
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.
Domain-specific languages are those constructed to efficiently solve problems in a given domain, or part of such.
Bahasa khusus domain adalah bahasa yang dibangun untuk secara efisien memecahkan masalah dalam domain tertentu, atau bagian darinya.
Compiler theory is the theory of writing compilers (or more generally, translators); programs that translate a program written in one language into another form.
Teori kompiler adalah teori penulisan kompiler (atau lebih umum, penerjemah); program yang menerjemahkan program yang ditulis dalam satu bahasa ke bentuk lain.
The actions of a compiler are traditionally broken up into syntax analysis (scanning and parsing), semantic analysis (determining what a program should do), optimization (improving the performance of a program as indicated by some metric; typically execution speed) and code generation (generation and output of an equivalent program in some target language; often the instruction set architecture of a central processing unit (CPU)).
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)).
Run-time systems refer to the development of programming language runtime environments and their components, including virtual machines, garbage collection, and foreign function interfaces.
Sistem waktu-proses mengacu pada pengembangan lingkungan waktu proses bahasa pemrograman dan komponennya, termasuk mesin virtual, pengumpulan sampah, dan antarmuka fungsi asing.
Conferences are the primary venue for presenting research in programming languages.
Konferensi adalah tempat utama untuk menyajikan penelitian dalam bahasa pemrograman.
The most well known conferences include the Symposium on Principles of Programming Languages (POPL), Programming Language Design and Implementation (PLDI), the International Conference on Functional Programming (ICFP), the international conference on Object-Oriented Programming, Systems, Languages & Applications (OOPSLA) and the International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS).
Konferensi yang paling terkenal meliputi Symposium on Principles of Programming Languages (POPL), Programming Language Design and Implementation (PLDI), International Conference on Functional Programming (ICFP), konferensi internasional tentang Object-Oriented Programming, Systems, Languages & Applications (OOPSLA) dan International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS).
Notable journals that publish PLT research include the ACM Transactions on Programming Languages and Systems (TOPLAS), Journal of Functional Programming (JFP), Journal of Functional and Logic Programming, and Higher-Order and Symbolic Computation.
Jurnal-jurnal terkemuka yang menerbitkan penelitian PLT meliputi ACM Transactions on Programming Languages and Systems (TOPLAS), Journal of Functional Programming (JFP), Journal of Functional and Logic Programming, dan Higher-Order and Symbolic Computation.
SIGPLAN Very high-level programming language Abadi, Martín and Cardelli, Luca.
SIGPLAN Bahasa pemrograman tingkat sangat tinggi Abadi, Martín dan Cardelli, Luca.
Gunter, Carl and Mitchell, John C. (eds.).
Gunter, Carl dan Mitchell, John C. (eds.).
W. and Tennent, Robert. D. (1997).
W. dan Tennent, Robert. D. (1997).
Lambda the Ultimate, a community weblog for professional discussion and repository of documents on programming language theory.
Lambda the Ultimate, sebuah weblog komunitas untuk diskusi profesional dan repositori dokumen tentang teori bahasa pemrograman.
Great Works in Programming Languages.
Karya Besar dalam Bahasa Pemrograman.
Collected by Benjamin C. Pierce (University of Pennsylvania).
Dikumpulkan oleh Benjamin C. Pierce (University of Pennsylvania).
Collected by Karl Crary (Carnegie Mellon University).
Dikumpulkan oleh Karl Crary (Carnegie Mellon University).
Programming Language Research.
Penelitian Bahasa Pemrograman.
Directory by Mark Leone.
Direktori oleh Mark Leone.
λ-Calculus: Then & Now by Dana S. Scott for the ACM Turing Centenary Celebration Grand Challenges in Programming Languages.
λ-Calculus: Dulu & Sekarang oleh Dana S. Scott untuk Perayaan Seratus Tahun Turing ACM Grand Challenges in Programming Languages.
Panel session at POPL 2009.
Sesi panel di POPL 2009.