Programlingvo

Programlingvo estas formala artefarita lingvo, kreita por transdoni komandojn al aparatoj, plejofte al komputiloj. Programlingvoj estas uzataj por krei programojn kiuj kontrolas la konduton de ia aparato kaj por esprimi algoritmojn.

Nuntempe ekzistas miloj da programlingvoj, kaj ĉiujare aperas kelkaj lingvoj. Iuj el ili postulas, ke la komputado estu indikita en la imperativa formo (t.e., kiel sinsekvo de ordonoj por plenumi), dum aliaj uzas kromajn formojn de programoj, ekzemple la deklaran formon (kiam oni indikas la deziratan rezulton kaj ne precizigas la vojon por atingi ĝin).

La priskribo de ĉiu programlingvo kutime konsistas el du partoj: sintakso, aŭ kiel oni skribas, kaj semantiko, aŭ kion signifas ĉiu vorto en la lingvo. Por kelkaj lingvoj ekzistas normiga dokumentado, kiu servas kiel ĉefa referenco por multaj efektivigoj (ekzemple C, Java), dum ĉe aliaj lingvoj ekzistas unu klasika referenca efektivigo, kiun oni traktas kiel normigan (ekz. ĉe Perl). Kelkaj lingvoj havas ambaŭ.

 Klasifiko de programlingvoj 
Ekzistas multaj sistemoj por klasifiki programlingvojn.

 Kelkaj ekstersistemaj klasifikoj 
eta|Fontkodo de unu programo en Scratch: la lingvo, kiu estas uzata por instrui programadon al lernejanoj

Oni distingas kelkajn klasojn de lingvoj, kiuj estas utilaj por praktika uzado, sed kiuj ne konsistigas iun klaran klasifik-atributon. Jen kelkaj ekzemploj de diversaj programlingvoj:

 Maŝina kodo kaj asemblaj lingvoj, sed ankaŭ C ebligas programadon ĉe la aparatara nivelo.
 Altnivelaj programlingvoj ebligas komfortan, rapidan programadon.
 Skriptoj estas uzataj por aŭtomatigo de kutimaj agoj, por sinsekva prilaboro de datenoj kaj regi komputilojn.
 Vidaj lingvoj kun ekranredaktiloj estas utilaj por rapida kreado de grafika interfaco.
 Esoteraj programlingvoj estas eksperimentoj por foje tre interesaj konceptoj.
 Grafikaj programlingvoj ofertas simplan lernadon de programado: anstataŭ skribi la fontkodon oni kreas programon per musklakoj sur ekrano.
 Domajnaj lingvoj estas uzataj ne por priskribi algoritmojn, sed por iuj specifaj taskoj (kontraste al la ĝeneralcelaj lingvoj):
 Datumbankaj lingvoj (SQL) estas speciale kreitaj por formuli datum-mendojn.
 Aparataraj lingvoj (VHDL) priskribas la strukturon kaj funkciojn de aparatoj.
 CNC-programlingvojn oni uzas por programi kontrolilojn.

 Programlingvoj laŭ generacioj 
Historie, kiam oni komparas programlingvon kontraŭ naturaj lingvoj, oni parolas pri kelkaj generacioj. Komence tiuj generacioj montris la kreskantan potencon de lingvoj prezenti pli kaj pli abstraktajn objektojn, sed post enkonduko de novaj generacioj oni foje iom re-difinis la antaŭajn, pro kio la tuta klasifiko iom transformiĝis.

 Unua-generaciaj lingvoj (1GL) 
Unua-generaciaj lingvoj (1GL) estas maŝinlingvoj, la lingvoj de la procesoro. Komence neniu ilo estis uzata por kompili aŭ asembli la lingvojn de unua generacio. La lingvoj de tiu generacio estis enigataj rekte al la komputilo per ŝaltiloj sur ties panelo.

Tiuj lingvoj estas pure binaraj, t.e. konsistantaj el nuloj kaj unuj. Tiu trajto igas ilin facile kompreneblaj por maŝinoj, sed tre malfacilaj por homoj.

La ĉefa avantaĝo de tiuj lingvoj estis, ke la programoj rulis tre rapide kaj efike, ĉar ili estis plenumataj rekte de centra procesilo. Sed se iu eraro aperis, estis malfacile trovi kaj korekti ĝin.

Hodiaŭ oni apenaŭ uzas tiujn lingvojn, nur se oni devas ripari iun konatan problemon. Oni ne plu uzas binaran sistemon, sed preferas la deksesuman sistemon, kiuj estas multe pli kompakta.

 Dua-generaciaj lingvoj (2GL) 
Dua-generaciaj lingvoj (2GL) estas asemblaj lingvoj. La ordonoj de la procesoro havas simbolajn nomojn.

La faktermino "dua-generaciaj" lingvoj, kune kun la lingvoj de "unua generacio" aperis kiam oni volis distingigi la lingvojn de alta nivelo (kiel COBOL kaj Paskalo) disde la pli fruaj lingvoj surbaze de maŝinkodoj.

Kontraste al la lingvoj de la unua generacio, tiuj lingvoj havas jenajn ecojn:

 La kodo en tiuj lingvoj estas legebla por homoj, sed ne por komputiloj. Necesas konverti programojn en tiuj lingvoj en maŝinan kodon por igi ilin ruleblaj. Tiu procezo nomiĝas asembl(ad)o.
 Tiuj lingvoj estas unikaj por ĉiu centra procesilo kaj redaktilo.

Oni uzas tiujn lingvojn por programi kernojn de operaciumoj kaj pelilojn (kvankam ofte ankaŭ eblas programi ilin per C, kiu estas pli kaj pli preferata), sed krome en programoj, kiuj bezonas tre altan rendimenton, kiel grafikaj ludoj (ofte tridimensiaj), video-redaktado ktp.

 Tria-generaciaj lingvoj (3GL) 
Tria-generaciaj lingvoj (3GL) estas ankaŭ nomataj altnivelaj lingvoj, kiuj estas la plejparto de hodiaŭaj lingvoj. Kontraste al 2GL tiuj lingvoj estas multe malpli maŝin-dependaj kaj pli legeblaj por programistoj. Tiuj lingvoj subtenas multajn diversajn datumtipojn tiel, ke la lingvo "favoras" la homon, sed ne komputilon, dum programado. Unu grava avantanĝo super la lingvoj de la dua generacio estas aŭtomata pritrakto de negravaj detaloj (kiel aŭtomata kontrolo de memoro). Precipe gravas la subteno de abstraktaj kaj agregatigaj datumtipoj, kiuj ebligas multajn program-vojojn. Per tiu trajto la lingvoj de tiu generacio staras multe pli proksime al homaj (naturaj) lingvoj (kaj povas esti komprenitaj ĝis ioma grado ofte per homoj sen antaŭlerno de tiu lingvo).

La unuaj tiaj lingvoj estis proceduraj lingvoj kiel Fortran, COBOL kaj Algol, enkondukitaj en 1950aj jaroj.

Modernaj tiaspecaj lingvoj estas C, Paskalo, BASIC, tamen se oni komparas tiujn lingvojn kontraŭ iliajn hodiaŭajn dialektojn (kiel Java, Python, C#, oni povas ankaŭ vidi, ke ankaŭ tiuj ne estas vere tre "altnivelaj" hodiaŭ. Tamen, tiu uzo estas historia, ĉar unue la lingvoj de alta nivelo ebligis pli facilan kreadon, korektadon, redaktadon kaj subtenon de programaro.

 Kvara generacio de la lingvoj (4GL) 
Kvara generacio de la lingvoj (4GL) estas grupo de lingvoj, kies celo estis perfektigi la lingvojn de la tria generacio (3GL). Kun ĉiu plia generacio oni strebas atingi pli altan nivelon de abstrakteco disde la interna konstruo de komputiloj, kiu igis la lingvojn pli flekseblaj kaj libere programeblaj, pli potencaj kaj multfacetaj. Dum la ekzakta difino por lingvoj de tiu generacio ŝanĝiĝis dum tempo, tiaspecaj lingvoj estas ĝenerale tiuj, kiuj eblas funkcii al granda aro de datumoj per unu ordono, kompare al la traktado al bitoj kaj bitokoj okaze de la pli malaltaj lingvoj. Krome, tiuj lingvoj havas larĝan kaj maturan sistemon de datumtipoj, ofte subtenon por datumbankoj, kreado de raportoj, optimumizado, kreado de grafika interfaco kaj TTT-programado.

Dum multaj lingvoj de tiu generacio taŭgas por plenumo de ajnaj algoritmaj taskoj (t.n. “komunuzaj lingvoj”), ekzistas ankaŭ la lingvoj, kies rolo estas limigita al plenumo de certa tasko: mendo al datumbanko (SQL) aŭ kreo de raporto (ABAP).

 Kvina generacio de la lingvoj (5GL) 
Kvina generacio de la lingvoj (5GL) estas lingvoj, kiuj mem devenas la algoritmon por solvi la donitan taskon surbaze de difinitaj postuloj. Do, programisto ne plu devas efektivigi algoritmon, sed nur klare difini la taskon. Multaj deklaremaj kaj funkciaj lingvoj apartenas al tiu generacio.

Tiu termino aperis kaj estis populara en la 90-aj jaroj, kiam oni volis perfektigi la ekzistantajn lingvojn tiel, ke la komputilo, sed ne programisto, difinas la efektivigon. Tiam la uzanto tute ne devas zorgi pri tio kiel programi ion, sed simple pri ĝusta difino de la tasko kaj ties postuloj/limoj. Ekzemplo de la lingvoj de tiu generacio estas Prolog.

Dum longa tempo oni konsideris tiujn lingvojn la estonteco de la programado, kaj estis profetaĵoj, ke tiaj lingvoj plene anstataŭos ordinarajn lingvojn en programado (kun escepto de malalt-nivelaj lingvoj). En Japanio de 1982 ĝis 1993 oni multe investis en priesploro de tiuj lingvoj, kun la espero krei novajn, multe pli potencajn lingvojn kaj ilojn. Tamen, dum oni produktis pli kaj pli longajn programojn, la misoj de tiu aliro fariĝis pli evidentaj. Evidentiĝis, ke se oni havas postulojn de iu tasko, devenigi la efikan algoritmon por solvi tiun taskon estas tre malfacila tasko. Tiu grava paŝo ankoraŭ ne estas farebla per komputiloj kaj bezonas enmiksiĝon de homa intelekto.

 Programlingvoj laŭ primara programparadigmo 
+ Programparadigmoj (elektitaj)Lingvo  funkcia  ordonema  objektema  deklarema  logika  kunrula Ada   X  X    X C   X    Prolog     X  X Scheme  X  X (X) X  (X)Haskell  X (X)  X  (X)Scala  X (X) X  (X)   X

En Informadiko ekzistas diversaj paradigmoj. Laŭ tiuj paradigmoj oni povas klasifiki la lingvojn:
 Objektemaj lingvoj, kiel C++, Ĝavo kaj Smalltalk, kie (preskaŭ) ĉiu variablo estas objekto. Objekto estas ekzemplero de klaso. Kaj objektoj havas metodojn, kiujn oni povas voki por peti, ke la objekto faru ion.
 Ordonemaj lingvoj, kiel C, Ĝavo, Paskalo, Ada. Programoj en tiuj lingvoj konsistas el sekvenco de ordonoj kaj la komputilo simple plenumas tiujn ordonojn en la donita (aŭ modifita per alia ordono) sinsekvo.
 Deklaremaj lingvoj sekvas tute malan modelon, en kiu programisto priskribas la kondiĉojn, kiujn la rezulto de la programo devas plenumi. Kiel tiu rezulto efektiviĝas estas decidita dum kompilado pere de la kompililo. La plej ilustra ekzemplo de tiaj lingvoj estas SQL, la lingvo de datum-mendoj. Laŭ la tipo de kondiĉoj ĉiuj deklaremaj lingvoj estas subklasigitaj al logikaj lingvoj, kiuj baziĝas sur matematika logiko, kaj funkciaj lingvoj, en kies fundamento estas matematikaj funkcioj.
 Funkciaj lingvoj, kiel Haskell kaj Lisp. En funkcia programo la tuta programo estas unuopa esprimo (aŭ formulo), kiun oni devas elkalkuli. Kutime en tiuj lingvoj la programoj similas al matematikaj taskoj, kaj la kompililo plenumas gravan taskon por konverti tiujn sufiĉe formale difinitajn taskojn en porkomputilajn ordonojn.

Multaj programparadigmoj, kiuj estas sendependaj intere, povas libere kombiniĝi, ekzemple la ordonema aŭ la funkcia kaj objektema. Oni nomas lingvojn, kiuj entenas kaj aktive uzas plurajn paradigmojn, t.n. lingvoj plurparadigmaj. Do ekzemple, ekde la 1970-a jardeko estas objektema versio de Lisp, kaj estas objektemaj versioj de C. Multaj modernaj lingvoj, kiel Java, C#, Python, Perl kaj aliaj estas nuntempe plurparadigmaj kaj ebligas flekseman programadon.

 Populareco de programlingvoj 
eta|Lernolibroj pri programado
La plej popularaj programlingvoj laŭ TIOBE indekso de programista komunumo: TIOBE Programming Community Index for September 2011

 Java
 C
 C++
 C#
 PHP
 Objective-C
 (Visual) Basic
 Python
 Perl
 JavaScript
 Ruby
 Delphi/Object Pascal
 Lua
 Lisp
 Transact-SQL
 Pascal
 PL/SQL
 Ada
 RPG (OS/400)
 D

 Kronologio de programlingvoj 
La suba listo enhavas gravajn programlingvoj, grupitajn laŭ jardekoj. Se la lingvo aperas en krampoj, tio signifas, ke tiu estis domana lingvo. Steleto (*) signifas, ke la lingvo estis unika kaj ne havas rektajn pralingvojn.

 Antaŭ-1950 
 Jaro Nomo Kreinto(j), firmao Pralingvo(j) 1943–45 Plankalkül (koncepto) Konrad Zuse * 1943–46 ENIAC coding system John von Neumann, John Mauchly, J. Presper Eckert, Herman Goldstine laŭ Alan Turing * 1946 ENIAC Short Code Richard Clippinger, John von Neumann laŭ Alan Turing ENIAC coding system 1946 Grafika notacio de Neumann kaj Goldstine John von Neumann kaj Herman Goldstine ENIAC coding system 1947 ARC Assembly Kathleen Booth ENIAC coding system 1948 CPC Coding scheme Howard H. Aiken Analytical Engine order code 1948 Curry notacio Haskell Curry ENIAC coding system 1948 Plankalkül (koncepto publikigita) Konrad Zuse * 1949 Short Code John Mauchly kaj William F. Schmitt ENIAC Short Code Jaro Nomo Kreinto(j), firmao Pralingvo(j)

 1950-aj 
 Jaro Nomo Kreinto(j), firmao Pralingvo(j) 1950 Short Code William F Schmidt, Albert B. Tonik, J.R. Logan Brief Code 1950 Birkbeck Assembler Kathleen Booth ARC 1951 Superplan Heinz Rutishauser Plankalkül 1951 ALGAE Edward A Voorhees kaj Karl Balke * 1951 Intermediate Arthur Burks Short Code 1951 Regional Assembly Language Maurice Wilkes EDSAC 1951 Boehm unNamod coding system Corrado Böhm CPC Coding scheme 1951 Klammerausdrücke Konrad Zuse Plankalkül 1951 OMNIBAC Symbolic Assembler Charles Katz Short Code 1951 Stanislaus (notacio) Fritz Bauer * 1951 Whirlwind assembler Charles Adams kaj Jack Gilmore ĉe MIT, Project Whirlwind EDSAC 1951 Rochester assembler Nathaniel Rochester EDSAC 1951 Sort Merge Generator Betty Holberton * 1952 A-0 Grace Hopper Short Code 1952 Autocode Alick Glennie laŭ Alan Turing CPC Coding scheme 1952 Editing Generator Milly Koss SORT/MERGE 1952 COMPOOL RAND/SDC * 1953 Speedcoding John W. Backus * 1953 READ/PRINT Don Harroff, James Fishman, George Ryckman * 1954 Sistemo de Laning kaj Zierler Laning, Zierler, Adams ĉe MIT Project Whirlwind * 1954 Mark I Autocode Tony Brooker Glennie Autocode 1954–55 Fortran (koncepto) Sub la gvido de John W. Backus ĉe IBM Speedcoding 1954 ARITH-MATIC Sub la gvido de Grace Hopper ĉe UNIVAC A-0 1954 MATH-MATIC Sub la gvido de Charles Katz A-0 1954 MATRIX MATH H G Kahrimanian * 1954 IPL I (koncepto) Allen Newell, Cliff Shaw, Herbert A. Simon * 1955 FLOW-MATIC Sub la gvido de Grace Hopper ĉe UNIVAC A-0 1955 BACAIC M. Grems kaj R. Porter 1955 PACT I SHARE FORTRAN, A-2 1955 Freiburger Code University of Freiburg * 1955–56 Sequentielle Formelübersetzung Fritz Bauer kaj Karl Samelson Boehm 1955–56 IT Sub la gvido de Alan Perlis Laning kaj Zierler 1955 PRINT IBM 1958 IPL II (implementaĵo) Allen Newell, Cliff Shaw, Herbert A. Simon IPL I 1956–58 LISP (koncepto) John McCarthy IPL 1957 COMTRAN Bob Bemer FLOW-MATIC 1957 GEORGE Charles Leonard Hamblin * 1957 Fortran I (implementaĵo) John W. Backus ĉe IBM FORTRAN 1957–58 UNICODE Remington Rand UNIVAC MATH-MATIC 1957 COMIT (koncepto) * 1958 Fortran II Sub la gvido de John W. Backus ĉe IBM FORTRAN I 1958 ALGOL 58 (IAL) ACM/GAMM FORTRAN, IT, Sequentielle Formelübersetzung 1958 IPL V Allen Newell, Cliff Shaw, Herbert A. Simon IPL II 1959 FACT Fletcher R. Jones, Roy Nutt, Robert L. Patrick * 1959 COBOL (koncepto) The CODASYL Committee FLOW-MATIC, COMTRAN, FACT 1959 JOVIAL Jules Schwartz ĉe SDC ALGOL 58 1959 LISP (implementaĵo) John McCarthy IPL 1959 MAD – Michigan Algorithm Decoder Bruce Arden, Bernard Galler, kaj Robert M. Graham ALGOL 58 1959 TRAC (koncepto) Calvin Mooers Jaro Nomo Kreinto(j), firmao Pralingvo(j)

 1960-aj 
 Jaro Nomo Kreinto(j), firmao Pralingvo(j) 1960 ALGOL 60 ALGOL 58 1960 COBOL 61 (implementaĵo) La CODASYL Komitato FLOW-MATIC, COMTRAN 1961 COMIT (implementaĵo) * 1962 FORTRAN IV IBM FORTRAN II 1962 APL (koncepto) Kenneth E. Iverson * 1962 Simula (koncepto) ALGOL 60 1962 SNOBOL Ralph Griswold, kaj aliaj FORTRAN II, COMIT 1963 CPL Barron, Christopher Strachey, kaj aliaj ALGOL 60 1963 SNOBOL3 Griswold, kaj aliaj SNOBOL 1963 ALGOL 68 (koncepto) Adriaan van Wijngaarden, kaj aliaj ALGOL 60 1963 JOSS I Cliff Shaw, RAND ALGOL 58 1964 MIMIC H. E. Petersen, kaj aliaj MIDAS 1964 COWSEL Rod Burstall, Robin Popplestone CPL, LISP 1964 PL/I (koncepto) IBM ALGOL 60, COBOL, FORTRAN 1964 BASIC John George Kemeny kaj Thomas Eugene Kurtz ĉe Dartmouth College FORTRAN II, JOSS 1964 IBM RPG IBM FARGO 1964 Mark-IV Informatics 1964 Speakeasy-2 Stanley Cohen ĉe Argonne National Laboratory Speakeasy 1964 TRAC (implementaĵo) Calvin Mooers 1964 P′′ Corrado Böhm * 1964? IITRAN 1965 RPG II IBM FARGO, RPG 1965 MAD/I (koncepto) University of Michigan MAD, ALGOL 60, PL/I 1965 TELCOMP BBN JOSS 1965 Atlas Autocode Tony Brooker, Derrick Morris ĉe Manchester University Algol 60, Autocode 1966 JOSS II Chuck Baker, RAND JOSS I 1966 ALGOL W Niklaus Wirth, C. A. R. Hoare ALGOL 60 1966 FORTRAN 66 FORTRAN IV 1966 ISWIM (koncepto) Peter J. Landin LISP 1966 CORAL66 ALGOL 60 1966 APL (implementaĵo) Kenneth E. Iverson * 1967 BCPL Martin Richards CPL 1967 MUMPS Massachusetts General Hospital FORTRAN, TELCOMP 1967 Simula 67 (implementaĵo) Ole-Johan Dahl, Bjørn Myhrhaug, Kristen Nygaard ĉe Norsk Regnesentral ALGOL 60 1967 InterLisp D.G. Bobrow kaj D.L. Murphy Lisp 1967 SNOBOL4 Ralph Griswold, kaj aliaj SNOBOL3 1967 XPL William McKeeman, kaj aliaj ĉe University of California Santa Cruz, CaliforniaJ. J. Horning, kaj aliaj ĉe Stanford University PL/I 1967 Space programlingvo (SPL) System Development Corporation JOVIAL 1968 ALGOL 68 (UNESCO/IFIP standard) Adriaan van Wijngaarden, Barry J. Mailloux, John E. L. Peck kaj Cornelis H. A. Koster, kaj aliaj ALGOL 60 1968 POP-1 Rod Burstall, Robin Popplestone COWSEL 1968 DIBOL-8 DEC DIBOL 1968 Forth (koncepto) Moore 1968 LOGO Seymour Papert LISP 1968 MAPPER Unisys CRT RPS 1968 REFAL (implementaĵo) Valentin Turchin * 1968 TTM (implementaĵo) Steven Caine kaj E. Kent Gordon, California Institute of Technology GAP, GPM 1968 PILOT John Amsden Starkweather, University of California, San Francisco Computest 1969 PL/I (implementaĵo) IBM ALGOL 60, COBOL, FORTRAN 1969 B Ken Thompson, kun kontribuoj de Dennis Ritchie BCPL 1969 Polymorphic programlingvo (PPL) Thomas A. Standish ĉe Harvard University 1969 SETL Jack Schwartz ĉe Courant Institute of Mathematical Sciences 1969 TUTOR Paul Tenczar & University of Illinois at Urbana-Champaign 1969 Edinburgh IMP Edinburgh University Algol 60, Autocode, Atlas Autocode Jaro Nomo Kreinto(j), firmao Pralingvo(j)

 1970-aj 
 Jaro Nomo Kreinto(j), firmao Pralingvo(j) 1970? Forth (implementaĵo) Charles H. Moore 1970 POP-2 POP-1 1970 Pascal Niklaus Wirth, Kathleen Jensen ALGOL 60, ALGOL W 1970 BLISS Wulf, Russell, Habermann ĉe Carnegie Mellon University ALGOL 1971 KRL Daniel G. Bobrow ĉe Xerox PARC, Terry Winograd ĉe Stanford University KM, FRL (MIT) 1971 Sue Ric Holt kaj aliaj ĉe University of Toronto Pascal, XPL 1971 Compiler Description Language (CDL) Cornelis H.A. Koster ĉe University of Nijmegen 1972 Smalltalk Daniel Henry Holmes Ingalls, Jr., Xerox PARC Simula 67 1972 PL/M Gary Kildall ĉe Digital Research PL/I, ALGOL, XPL 1972 C Dennis Ritchie B, BCPL, ALGOL 68 1972 INTERCAL Don Woods kaj James M. Lyon * 1972 Prolog Alain Colmerauer 2-level W-Grammar 1972 Structured Query language (SQL) IBM ALPHA, Quel (Ingres) 1973 COMAL Børge Christensen, Benedict Løfstedt Pascal, BASIC 1973 ML Robin Milner 1973 LIS Jean Ichbiah kaj aliaj ĉe CII Honeywell Bull Pascal, Sue 1973 Speakeasy-3 Stanley Cohen, Steven Pieper ĉe Argonne National Laboratory Speakeasy-2 1974 CLU Barbara Liskov ALGOL 60, Lisp, Simula 1974 GRASS Thomas A. DeFanti BASIC 1974 BASIC FOUR MAI BASIC Four Inc. Business BASIC 1974 PROSE modeling language CDC 6600 Cybernet Services SLANG, FORTRAN 1975 ABC Leo Geurts kaj Lambert Meertens SETL 1975 Irvine Dataflow (koncepto) Arvind?, University of California, Irvine 1975 PROSE modeling language Time-Sharing Version CDC 6400 Cybernet KRONOS Services SLANG, FORTRAN 1975 Scheme Gerald Jay Sussman, Guy L. Steele, Jr. LISP 1975 Altair BASIC Bill Gates, Paul Allen BASIC 1975 CS-4 James S. Miller, Benjamin M. Brosgol kaj aliaj ĉe Intermetrics ALGOL 68, BLISS, ECL, HAL 1975 Modula Niklaus Wirth Pascal 1976 Plus Allan Ballard, Paul Whaley ĉe University of British Columbia Pascal, Sue 1976 Smalltalk-76 Xerox PARC Smalltalk-72 1976 Mesa Xerox PARC ALGOL 1976 SAM76 Claude A.R. Kagan LISP, TRAC 1976 Ratfor Brian Kernighan C, FORTRAN 1976 S John Chambers ĉe Bell Labs APL, PPL, Scheme 1976 SAS SAS Institute 1977 FP John Backus * 1977 Bourne Shell (sh) Stephen R. Bourne * 1977 Commodore BASIC Jack Tramiel Licensed from Microsoft 1977 IDL David Stern of Research Systems Inc Fortran 1977 Standard MUMPS MUMPS 1977 Icon (koncepto) Ralph Griswold SNOBOL 1977 Red Benjamin M. Brosgol kaj aliaj ĉe Intermetrics por United States Department of Defense ALGOL 68, CS-4 1977 Blue John B. Goodenough kaj aliaj ĉe SofTech por United States Department of Defense ALGOL 68 1977 Yellow Jay Spitzen kaj aliaj ĉe SRI International por United States Department of Defense ALGOL 681977EuclidButler Lampson ĉe Xerox Parc, Ric Holt kaj James Cordy ĉe University of Toronto 1978 C shell Bill Joy C 1978 RPG III IBM FARGO, RPG, RPG II 1978 HAL/S Desajnita de Intermetrics por NASA XPL 1975 Irvine Dataflow (implementaĵo) Arvind kaj Gostelow, ĉe University of California kaj Irvine 1978? MATLAB Cleve Moler ĉe University of New Mexico Fortran 1978? SMALL Nevil Brownlee ĉe University of Auckland Algol60 1978 VisiCalc Dan Bricklin, Bob Frankston surmarketigita de VisiCorp * 1979 Modula-2 Niklaus Wirth Modula, Mesa 1979 REXX Mike Cowlishaw ĉe IBM PL/I, BASIC, EXEC 2 1979 AWK Alfred Aho, Peter J. Weinberger, Brian Kernighan C, SNOBOL 1979 Icon (implementaĵo) Ralph Griswold SNOBOL 1979 Vulcan dBase-II Wayne Ratliff * Jaro Nomo Kreinto(j), firmao Pralingvo(j)

 1980-aj 
 Jaro Nomo Kreinto(j), firmao Pralingvo(j) 1980 Ada 80 (MIL-STD-1815) Jean Ichbiah ĉe CII Honeywell Bull Green 1980 C with classes Bjarne Stroustrup C, Simula 67 1980–81 CBASIC Gordon Eubanks BASIC, Compiler Systems, Digital Research 1981 BBC BASIC Acorn Computers, Sophie Wilson BASIC 1981 IBM BASICA Microsoft BASIC 1982? Speakeasy-IV Stanley Cohen, kaj aliaj ĉe Speakeasy Computing Corporation Speakeasy-3 1982? Draco Chris Gray Pascal, C, ALGOL 68 1982 PostScript Warnock InterPress1982TuringRic Holt kaj James Cordy, ĉe University of TorontoEuclid 1983 GW-BASIC Microsoft IBM BASICA 1983 Turbo Pascal Hejlsberg ĉe Borland Pascal 1983 Ada 83 (ANSI/MIL-STD-1815A) Jean Ichbiah ĉe Alsys Ada 80, Green 1983 Objective-C Brad Cox Smalltalk, C 1983 C++ Bjarne Stroustrup C with Classes 1983 True BASIC John George Kemeny, Thomas Eugene Kurtz ĉe Dartmouth College BASIC 1983 occam David May EPL 1983? ABAP SAP AG COBOL 1983 Korn Shell (ksh) David Korn sh 1984 CLIPPER Nantucket dBase 1984 Common Lisp Guy L. Steele, Jr. kaj many others LISP 1984? GOM – Good Old Mad Don Boettner, University of Michigan MAD 1984 RPL Hewlett-Packard Forth, Lisp 1984 Standard ML ML 1984 Redcode Alexander Dewdney kaj D.G. Jones 1984 OPL PSION BASIC 1985 PARADOX Borland dBase 1985 QuickBASIC Microsoft BASIC1986 Clarion Bruce Barrington 1986 CorVision Cortex INFORM 1986 Eiffel Bertrand Meyer Simula 67, Ada 1986 GFA BASIC Frank Ostrowski BASIC 1986 Informix-4GL Informix 1986 LabVIEW National Instruments 1986 Miranda David Turner ĉe University of Kent 1986 Object Pascal Apple Computer Inc. Pascal 1986 PROMAL C 1987 Ada ISO 8652:1987 ANSI/MIL-STD-1815A unchanged Ada 83 1987 Self (koncepto) Sun Microsystems Inc. Smalltalk 1987 occam 2 David May kaj INMOS occam 1987 HyperTalk Apple Computer Inc. * 1987 Perl Larry Wall C, sed, awk, sh 1987 Oberon Niklaus Wirth Modula-2 1987 Erlang Joe Armstrong kaj others in Ericsson Prolog 1987 Mathematica (Wolfram Language) Wolfram Research * 1987 Turbo Basic Robert 'Bob' Zale BASIC/Z 1987 Clean Software Technology Research Group of Radboud University Nijmegen * 1988 RPG/400 IBM FARGO, RPG, RPG II, RPG III 1988 Octave MATLAB 1988 Tcl John Ousterhout Awk, Lisp 1988 STOS BASIC François Lionet kaj Constantin Sotiropoulos BASIC 1988 Object REXX Simon C. Nash REXX, Smalltalk 1988 SPARK Bernard A. Carré Ada 1988 A+ Arthur Whitney APL 1988 Hamilton C shell Nicole Hamilton C shell 1989 Turbo Pascal OOP Anders Hejlsberg ĉe Borland Turbo Pascal, Object Pascal 1989 Modula-3 Cardeli, kaj aliaj DEC kaj Olivetti Modula-2 1989 PowerBASIC Robert 'Bob' Zale Turbo Basic 1989 VisSim Peter Darnell, Visual Solutions 1989 LPC Lars Pensjö 1989 Bash Brian Fox Bourne shell, C shell, Korn shell1989Magik (programlingvo)Arthur Chance, of Smallworld Systems LtdSmalltalk Jaro Nomo Kreinto(j), firmao Pralingvo(j)

 1990-aj 
 Jaro Nomo Kreinto(j), firmao Pralingvo(j) 1990 AMOS BASIC François Lionet kaj Constantin Sotiropoulos STOS BASIC 1990 AMPL Robert Fourer, David Gay kaj Brian Kernighan ĉe Bell Laboratories 1990 Object Oberon H Mössenböck, J Templ, R Griesemer Oberon 1990 J Kenneth E. Iverson, Roger Hui ĉe Iverson Software APL, FP 1990 Haskell Miranda 1990 EuLisp Common Lisp, Scheme 1990 Z Shell (zsh) Paul Falstad ĉe Princeton University ksh 1991 GNU E David J. DeWitt, Michael J. Carey C++ 1991 Oberon-2 Hanspeter Mössenböck, Wirth Object Oberon 1991 Python Guido van Rossum ABC, ALGOL 68, Icon, Modula-3 1991 Oz Gert Smolka kaj liaj studentoj Prolog 1991 Q Albert Gräf 1991 Visual Basic Alan Cooper, vendita al Microsoft QuickBASIC 1992 Borland Pascal Turbo Pascal OOP 1992 Dylan multaj homoj ĉe Apple Computer Inc. Common Lisp, Scheme 1993? Self (implementaĵo) Sun Microsystems Inc. Smalltalk 1993 Amiga E Wouter van Oortmerssen DEX, C, Modula-2 1993 Brainfuck Urban Müller P′′ 1993 LiveCode Transcript HyperTalk 1993 AppleScript Apple Computer Inc. HyperTalk 1993 K Arthur Whitney APL, Lisp 1993 Lua Roberto Ierusalimschy kaj aliaj ĉe Tecgraf, PUC-Rio Scheme, SNOBOL, Modula, CLU, C++ 1993 R Robert Gentleman kaj Ross Ihaka S 1993 ZPL Chamberlain kaj aliaj ĉe University of Washington C 1993 NewtonScript Walter Smith Self, Dylan 1994 Claire Yves Caseau Smalltalk, SETL, OPS5, Lisp, ML, C, LORE, LAURE 1994 ANSI Common Lisp Common Lisp 1994 RAPID ABB Group ARLA 1994 Pike Fredrik Hübinette kaj aliaj ĉe Linköping University LPC, C, µLPC 1994 ANS Forth Elizabeth Rather, kaj aliaj Forth 1995 Ada 95 S. Tucker Taft, kaj aliaj ĉe Intermetrics, Inc. Ada 83 1995 Borland Delphi Anders Hejlsberg ĉe Borland Borland Pascal 1995 ColdFusion (CFML) Allaire 1995 Java James Gosling ĉe Sun Microsystems C, Simula 67, C++, Smalltalk, Ada 83, Objective-C, Mesa 1995 LiveScript Brendan Eich ĉe Netscape Self, C, Scheme 1995 Mercury Zoltan Somogyi ĉe University of Melbourne Prolog, Hope, Haskell 1995 PHP Rasmus Lerdorf Perl 1995 Ruby Yukihiro Matsumoto Smalltalk, Perl 1995 JavaScript Brendan Eich ĉe Netscape LiveScript 1996 Curl David Kranz, Steve Ward, Chris Terman ĉe MIT Lisp, C++, Tcl/Tk, TeX, HTML 1996 Lasso Blue World Communications Inc. 1996 Perl Data Language (PDL) Karl Glazebrook, Jarle Brinchmann, Tuomas Lukka, kaj Christian Soeller APL, Perl 1996 OCaml INRIA Caml Light, Standard ML 1996 NetRexx Mike Cowlishaw REXX 1997 Component Pascal Oberon microsystems, Inc Oberon-2 1997 E Mark S. Miller Joule, Original-E 1997 Pico Free University of Brussels Scheme 1997 Squeak Smalltalk Alan Kay, kaj aliaj ĉe Apple Computer Inc. Smalltalk-80, Self 1997 ECMAScript ECMA TC39-TG1 JavaScript 1997 F-Script Philippe Mougin Smalltalk, APL, Objective-C 1997 ISLISP ISO Standard ISLISP Common Lisp 1997 Tea Jorge Nunes Java, Scheme, Tcl 1997 REBOL Carl Sassenrath, Rebol Technologies Self, Forth, Lisp, Logo 1998 Standard C++ ANSI/ISO Standard C++ C++, Standard C, C 1998 M2001 Ronald E. Prather, Trinity University (Texas) * 1998 Pikt Robert Osterlund (then ĉe University of Chicago) AWK, Perl, Unix shell 1998 PureBasic Frederic Laboureur, Fantaisie Software 1998 UnrealScript Tim Sweeney ĉe Epic Games C++, Java 1999 XSLT (+ XPath) W3C, James Clark DSSSL 1999 Game Maker Language (GML) Mark Overmars Game Maker 1999 Harbour Antonio Linares dBase Jaro Nomo Kreinto(j), firmao Pralingvo(j)

 2000-aj 
 Jaro Nomo Kreinto(j), firmao Pralingvo(j) 2000 Join Java G Stewart von Itzstein Java 2000 ActionScript Gary Grossman ECMAScript 2000 Joy Manfred von Thun FP, Forth 2000 XL Christophe de Dinechin Ada, C++, Lisp 2000 C# Anders Hejlsberg, Microsoft (ECMA) C, C++, Java, Delphi, Modula-2 2000 D Walter Bright, Digital Mars C, C++, C#, Java 2000 Ferite Chris Ross C, C++, Java, PHP, Python, Ruby, Scheme 2001 AspectJ Gregor Kiczales, Xerox PARC Java, Common Lisp 2001 Processing Casey Reas kaj Benjamin Fry Java, C, C++https://www.arduino.cc/en/Reference/HomePage 2001 Visual Basic .NET Microsoft Visual Basic 2001 RPG IV (RPGLE, ILE RPG, RPG Free) IBM FARGO, RPG, RPG II, RPG III, RPG/400 2001 GDScript (GDS) OKAM Studio Godot 2002 Io Steve Dekorte Self, NewtonScript 2002 Gosu Guidewire Software GScript 2003 Nemerle Universitato de Wrocław C#, ML, MetaHaskell 2003 Factor Slava Pestov Joy, Forth, Lisp 2003 Falcon Giancarlo Niccolai C++, Perl, Lua, Smalltalk, PHP, Lisp, Python, Ruby 2003 Scala Martin Odersky Smalltalk, Java, Haskell, Standard ML, OCaml 2003 Squirrel Alberto Demichelis Lua 2004 Subtext Jonathan Edwards * 2004 Alma-0 Krzysztof Apt, Centrum Wiskunde & Informatica * 2004 Boo Rodrigo B. de Oliveira Python, C# 2004 FreeBASIC Andre Victor QBasic 2004 Groovy James Strachan Java 2004 Little b Aneil Mallavarapu, Harvard Medical School, Department of Systems Biology Lisp 2005 F# Don Syme, Microsoft Research OCaml, C#, Haskell 2005 Seed7 Thomas Mertes * 2006 Links Philip Wadler, University of Edinburgh Haskell 2006 Cobra ChuckEsterbrook Python, C#, Eiffel, Objective-C 2006 Windows PowerShell Microsoft C#, ksh, Perl, CL, DCL, SQL 2006 OptimJ Ateji Java 2007 Ada 2005 Ada Rapporteur Group Ada 95 2007 Fantom Brian Frank, Andy Frank C#, Scala, Ruby, Erlang 2007 Scratch Mitchel Resnick, John Maloney, Natalie Rusk, Evelyn Eastmond, Tammy Stern, Amon Millner, Jay Silver, kaj Brian Silverman Logo, Smalltalk, Squeak, E-Toys, HyperCard, AgentSheets, StarLogo, Tweak, BYOB 2007 Vala GNOME C# 2007 Clojure Rich Hickey Lisp, ML, Haskell, Erlang 2007 Fortress Guy Steele Scala, ML, Haskell 2007 Oberon-07 Wirth Oberon 2007 LOLCODE Adam Lindsay * 2008 Genie Jamie McCracken Python, Boo, D, Object Pascal 2008 Pure Albert Gräf Q 2009 Go Google C, Oberon, Limbo, Smalltalk 2009 CoffeeScript Jeremy Ashkenas JavaScript, Ruby, Python, Haskell 2009 Idris Edwin Brady Haskell, Agda, Coq 2009 Parasail S. Tucker Taft, AdaCore Modula, Ada, Pascal, ML Jaro Nomo Kreinto(j), firmao Pralingvo(j)

 Post 2010 
 Jaro Nomo Kreinto(j), firmao Pralingvo(j) 2010 Chapel Brad Chamberlain, Cray Inc. HPF, ZPL 2010 Rust Graydon Hoare, Mozilla Alef, C++, Camlp4, Common Lisp, Erlang, Hermes, Limbo, Napier, Napier88, Newsqueak, NIL, Sather, Standard ML 2011 Ceylon Gavin King, Red Hat Java 2011 Dart Google Java, JavaScript, CoffeeScript, Go 2011 Elm Evan Czaplicki Haskell, Standard ML, OCaml, F# 2011 Kotlin JetBrains Java, Scala, Groovy, C#, Gosu 2011 C++11 C++ ISO/IEC 14882:2011 C++, Standard C, C2011 Red Nenad Rakocevic Rebol, Scala, Lua 2012 Elixir José Valim Erlang, Ruby, Clojure 2012 TypeScript Anders Hejlsberg, Microsoft JavaScript, CoffeeScript 2012 Julia Jeff Bezanson, Stefan Karpinski, Viral Shah, Alan Edelman, MIT MATLAB, Lisp, C, Fortran, Mathematica (strictly its Wolfram Language), Python, Perl, R, Ruby, Lua  2012 Ada 2012 ARA kaj Ada Europe (ISO/IEC 8652:2012) Ada 2005, ISO/IEC 8652:1995/Amd 1:2007 2014 Hack Facebook PHP 2014 Swift Apple Inc. Objective-C, Rust, Haskell, Ruby, Python, C#, CLU 2014 C++14 C++ ISO/IEC 14882:2014 C++, Standard C, C Jaro Nomo Kreinto(j), firmao Pralingvo(j)

Vidu ankaŭ
 Esotera programlingvo
 Listo de programlingvoj
 Neanglabazitaj programlingvoj

 Referencoj 

 Eksteraj ligiloj 

 Kion Programlingvoj Solvas (What Languages Fix) - eseo pri programlingvoj de Paul Graham.

Kategorio:Lingvotipoj