Programlingvo

artefarita lingvo por verki programojn por komputiloj

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.

Fontkodo de la simpla porkomputila programo skribita en programlingvo, kiu printas la frazon "Hello, world" se oni kompilas kaj startigas ĝin

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

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 (konstraste 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 ligvo "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)
Lingvofunkciaordonemaobjektemadeklaremalogikakunrula
AdaXXX
CX
PrologXX
SchemeXX(X)X(X)
HaskellX(X)X(X)
ScalaX(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

Lernolibroj pri programado

La plej popularaj programlingvoj laŭ TIOBE indekso de programista komunumo:[1]

  1. Java
  2. C
  3. C++
  4. C#
  5. PHP
  6. Objective-C
  7. (Visual) Basic
  8. Python
  9. Perl
  10. JavaScript
  11. Ruby
  12. Delphi/Object Pascal
  13. Lua
  14. Lisp
  15. Transact-SQL
  16. Pascal
  17. PL/SQL
  18. Ada
  19. RPG (OS/400)
  20. 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

JaroNomoKreinto(j), firmaoPralingvo(j)
1943–45Plankalkül (koncepto)Konrad Zuse*
1943–46ENIAC coding systemJohn von Neumann, John Mauchly, J. Presper Eckert, Herman Goldstine laŭ Alan Turing*
1946ENIAC Short CodeRichard Clippinger, John von Neumann laŭ Alan TuringENIAC coding system
1946Grafika notacio de Neumann kaj GoldstineJohn von Neumann kaj Herman GoldstineENIAC coding system
1947ARC AssemblyKathleen BoothENIAC coding system
1948CPC Coding schemeHoward H. AikenAnalytical Engine order code
1948Curry notacioHaskell CurryENIAC coding system
1948Plankalkül (koncepto publikigita)Konrad Zuse*
1949Short CodeJohn Mauchly kaj William F. SchmittENIAC Short Code
JaroNomoKreinto(j), firmaoPralingvo(j)

1950-aj

JaroNomoKreinto(j), firmaoPralingvo(j)
1950Short CodeWilliam F Schmidt, Albert B. Tonik, J.R. LoganBrief Code
1950Birkbeck AssemblerKathleen BoothARC
1951SuperplanHeinz RutishauserPlankalkül
1951ALGAEEdward A Voorhees kaj Karl Balke*
1951IntermediateArthur BurksShort Code
1951Regional Assembly LanguageMaurice WilkesEDSAC
1951Boehm unNamod coding systemCorrado BöhmCPC Coding scheme
1951KlammerausdrückeKonrad ZusePlankalkül
1951OMNIBAC Symbolic AssemblerCharles KatzShort Code
1951Stanislaus (notacio)Fritz Bauer*
1951Whirlwind assemblerCharles Adams kaj Jack Gilmore ĉe MIT, Project WhirlwindEDSAC
1951Rochester assemblerNathaniel RochesterEDSAC
1951Sort Merge GeneratorBetty Holberton*
1952A-0Grace HopperShort Code
1952AutocodeAlick Glennie laŭ Alan TuringCPC Coding scheme
1952Editing GeneratorMilly KossSORT/MERGE
1952COMPOOLRAND/SDC*
1953SpeedcodingJohn W. Backus*
1953READ/PRINTDon Harroff, James Fishman, George Ryckman*
1954Sistemo de Laning kaj ZierlerLaning, Zierler, Adams ĉe MIT Project Whirlwind*
1954Mark I AutocodeTony BrookerGlennie Autocode
1954–55Fortran (koncepto)Sub la gvido de John W. Backus ĉe IBMSpeedcoding
1954ARITH-MATICSub la gvido de Grace Hopper ĉe UNIVACA-0
1954MATH-MATICSub la gvido de Charles KatzA-0
1954MATRIX MATHH G Kahrimanian*
1954IPL I (koncepto)Allen Newell, Cliff Shaw, Herbert A. Simon*
1955FLOW-MATICSub la gvido de Grace Hopper ĉe UNIVACA-0
1955BACAICM. Grems kaj R. Porter
1955PACT ISHAREFORTRAN, A-2
1955Freiburger CodeUniversity of Freiburg*
1955–56Sequentielle FormelübersetzungFritz Bauer kaj Karl SamelsonBoehm
1955–56ITSub la gvido de Alan PerlisLaning kaj Zierler
1955PRINTIBM
1958IPL II (implementaĵo)Allen Newell, Cliff Shaw, Herbert A. SimonIPL I
1956–58LISP (koncepto)John McCarthyIPL
1957COMTRANBob BemerFLOW-MATIC
1957GEORGECharles Leonard Hamblin*
1957Fortran I (implementaĵo)John W. Backus ĉe IBMFORTRAN
1957–58UNICODERemington Rand UNIVACMATH-MATIC
1957COMIT (koncepto)*
1958Fortran IISub la gvido de John W. Backus ĉe IBMFORTRAN I
1958ALGOL 58 (IAL)ACM/GAMMFORTRAN, IT, Sequentielle Formelübersetzung
1958IPL VAllen Newell, Cliff Shaw, Herbert A. SimonIPL II
1959FACTFletcher R. Jones, Roy Nutt, Robert L. Patrick*
1959COBOL (koncepto)The CODASYL CommitteeFLOW-MATIC, COMTRAN, FACT
1959JOVIALJules Schwartz ĉe SDCALGOL 58
1959LISP (implementaĵo)John McCarthyIPL
1959MAD – Michigan Algorithm DecoderBruce Arden, Bernard Galler, kaj Robert M. GrahamALGOL 58
1959TRAC (koncepto)Calvin Mooers
JaroNomoKreinto(j), firmaoPralingvo(j)

1960-aj

JaroNomoKreinto(j), firmaoPralingvo(j)
1960ALGOL 60ALGOL 58
1960COBOL 61 (implementaĵo)La CODASYL KomitatoFLOW-MATIC, COMTRAN
1961COMIT (implementaĵo)*
1962FORTRAN IVIBMFORTRAN II
1962APL (koncepto)Kenneth E. Iverson*
1962Simula (koncepto)ALGOL 60
1962SNOBOLRalph Griswold, kaj aliajFORTRAN II, COMIT
1963CPLBarron, Christopher Strachey, kaj aliajALGOL 60
1963SNOBOL3Griswold, kaj aliajSNOBOL
1963ALGOL 68 (koncepto)Adriaan van Wijngaarden, kaj aliajALGOL 60
1963JOSS ICliff Shaw, RANDALGOL 58
1964MIMICH. E. Petersen, kaj aliajMIDAS
1964COWSELRod Burstall, Robin PopplestoneCPL, LISP
1964PL/I (koncepto)IBMALGOL 60, COBOL, FORTRAN
1964BASICJohn George Kemeny kaj Thomas Eugene Kurtz ĉe Dartmouth CollegeFORTRAN II, JOSS
1964IBM RPGIBMFARGO
1964Mark-IVInformatics
1964Speakeasy-2Stanley Cohen ĉe Argonne National LaboratorySpeakeasy
1964TRAC (implementaĵo)Calvin Mooers
1964P′′Corrado Böhm*
1964?IITRAN
1965RPG IIIBMFARGO, RPG
1965MAD/I (koncepto)University of MichiganMAD, ALGOL 60, PL/I
1965TELCOMPBBNJOSS
1965Atlas AutocodeTony Brooker, Derrick Morris ĉe Manchester UniversityAlgol 60, Autocode
1966JOSS IIChuck Baker, RANDJOSS I
1966ALGOL WNiklaus Wirth, C. A. R. HoareALGOL 60
1966FORTRAN 66FORTRAN IV
1966ISWIM (koncepto)Peter J. LandinLISP
1966CORAL66ALGOL 60
1966APL (implementaĵo)Kenneth E. Iverson*
1967BCPLMartin RichardsCPL
1967MUMPSMassachusetts General HospitalFORTRAN, TELCOMP
1967Simula 67 (implementaĵo)Ole-Johan Dahl, Bjørn Myhrhaug, Kristen Nygaard ĉe Norsk RegnesentralALGOL 60
1967InterLispD.G. Bobrow kaj D.L. MurphyLisp
1967SNOBOL4Ralph Griswold, kaj aliajSNOBOL3
1967XPLWilliam McKeeman, kaj aliaj ĉe University of California Santa Cruz, California
J. J. Horning, kaj aliaj ĉe Stanford University
PL/I
1967Space programlingvo (SPL)System Development CorporationJOVIAL
1968ALGOL 68 (UNESCO/IFIP standard)Adriaan van Wijngaarden, Barry J. Mailloux, John E. L. Peck kaj Cornelis H. A. Koster, kaj aliajALGOL 60
1968POP-1Rod Burstall, Robin PopplestoneCOWSEL
1968DIBOL-8DECDIBOL
1968Forth (koncepto)Moore
1968LOGOSeymour PapertLISP
1968MAPPERUnisysCRT RPS
1968REFAL (implementaĵo)Valentin Turchin*
1968TTM (implementaĵo)Steven Caine kaj E. Kent Gordon, California Institute of TechnologyGAP, GPM
1968PILOTJohn Amsden Starkweather, University of California, San FranciscoComputest
1969PL/I (implementaĵo)IBMALGOL 60, COBOL, FORTRAN
1969BKen Thompson, kun kontribuoj de Dennis RitchieBCPL
1969Polymorphic programlingvo (PPL)Thomas A. Standish ĉe Harvard University
1969SETLJack Schwartz ĉe Courant Institute of Mathematical Sciences
1969TUTORPaul Tenczar & University of Illinois at Urbana-Champaign
1969Edinburgh IMPEdinburgh UniversityAlgol 60, Autocode, Atlas Autocode
JaroNomoKreinto(j), firmaoPralingvo(j)

1970-aj

JaroNomoKreinto(j), firmaoPralingvo(j)
1970?Forth (implementaĵo)Charles H. Moore
1970POP-2POP-1
1970PascalNiklaus Wirth, Kathleen JensenALGOL 60, ALGOL W
1970BLISSWulf, Russell, Habermann ĉe Carnegie Mellon UniversityALGOL
1971KRLDaniel G. Bobrow ĉe Xerox PARC, Terry Winograd ĉe Stanford UniversityKM, FRL (MIT)
1971SueRic Holt kaj aliaj ĉe University of TorontoPascal, XPL
1971Compiler Description Language (CDL)Cornelis H.A. Koster ĉe University of Nijmegen
1972SmalltalkDaniel Henry Holmes Ingalls, Jr., Xerox PARCSimula 67
1972PL/MGary Kildall ĉe Digital ResearchPL/I, ALGOL, XPL
1972CDennis RitchieB, BCPL, ALGOL 68
1972INTERCALDon Woods kaj James M. Lyon*
1972PrologAlain Colmerauer2-level W-Grammar
1972Structured Query language (SQL)IBMALPHA, Quel (Ingres)
1973COMALBørge Christensen, Benedict LøfstedtPascal, BASIC
1973MLRobin Milner
1973LISJean Ichbiah kaj aliaj ĉe CII Honeywell BullPascal, Sue
1973Speakeasy-3Stanley Cohen, Steven Pieper ĉe Argonne National LaboratorySpeakeasy-2
1974CLUBarbara LiskovALGOL 60, Lisp, Simula
1974GRASSThomas A. DeFantiBASIC
1974BASIC FOURMAI BASIC Four Inc.Business BASIC
1974PROSE modeling languageCDC 6600 Cybernet ServicesSLANG, FORTRAN
1975ABCLeo Geurts kaj Lambert MeertensSETL
1975Irvine Dataflow (koncepto)Arvind?, University of California, Irvine
1975PROSE modeling language Time-Sharing VersionCDC 6400 Cybernet KRONOS ServicesSLANG, FORTRAN
1975SchemeGerald Jay Sussman, Guy L. Steele, Jr.LISP
1975Altair BASICBill Gates, Paul AllenBASIC
1975CS-4James S. Miller, Benjamin M. Brosgol kaj aliaj ĉe IntermetricsALGOL 68, BLISS, ECL, HAL
1975ModulaNiklaus WirthPascal
1976PlusAllan Ballard, Paul Whaley ĉe University of British ColumbiaPascal, Sue
1976Smalltalk-76Xerox PARCSmalltalk-72
1976MesaXerox PARCALGOL
1976SAM76Claude A.R. KaganLISP, TRAC
1976RatforBrian KernighanC, FORTRAN
1976SJohn Chambers ĉe Bell LabsAPL, PPL, Scheme
1976SASSAS Institute
1977FPJohn Backus*
1977Bourne Shell (sh)Stephen R. Bourne*
1977Commodore BASICJack TramielLicensed from Microsoft
1977IDLDavid Stern of Research Systems IncFortran
1977Standard MUMPSMUMPS
1977Icon (koncepto)Ralph GriswoldSNOBOL
1977RedBenjamin M. Brosgol kaj aliaj ĉe Intermetrics por United States Department of DefenseALGOL 68, CS-4
1977BlueJohn B. Goodenough kaj aliaj ĉe SofTech por United States Department of DefenseALGOL 68
1977YellowJay Spitzen kaj aliaj ĉe SRI International por United States Department of DefenseALGOL 68
1977EuclidButler Lampson ĉe Xerox Parc, Ric Holt kaj James Cordy ĉe University of Toronto
1978C shellBill JoyC
1978RPG IIIIBMFARGO, RPG, RPG II
1978HAL/SDesajnita de Intermetrics por NASAXPL
1975Irvine Dataflow (implementaĵo)Arvind kaj Gostelow, ĉe University of California kaj Irvine
1978?MATLABCleve Moler ĉe University of New MexicoFortran
1978?SMALLNevil Brownlee ĉe University of AucklandAlgol60
1978VisiCalcDan Bricklin, Bob Frankston surmarketigita de VisiCorp*
1979Modula-2Niklaus WirthModula, Mesa
1979REXXMike Cowlishaw ĉe IBMPL/I, BASIC, EXEC 2
1979AWKAlfred Aho, Peter J. Weinberger, Brian KernighanC, SNOBOL
1979Icon (implementaĵo)Ralph GriswoldSNOBOL
1979Vulcan dBase-IIWayne Ratliff*
JaroNomoKreinto(j), firmaoPralingvo(j)

1980-aj

JaroNomoKreinto(j), firmaoPralingvo(j)
1980Ada 80 (MIL-STD-1815)Jean Ichbiah ĉe CII Honeywell BullGreen
1980C with classesBjarne StroustrupC, Simula 67
1980–81CBASICGordon EubanksBASIC, Compiler Systems, Digital Research
1981BBC BASICAcorn Computers, Sophie WilsonBASIC
1981IBM BASICAMicrosoftBASIC
1982?Speakeasy-IVStanley Cohen, kaj aliaj ĉe Speakeasy Computing CorporationSpeakeasy-3
1982?DracoChris GrayPascal, C, ALGOL 68
1982PostScriptWarnockInterPress
1982TuringRic Holt kaj James Cordy, ĉe University of TorontoEuclid
1983GW-BASICMicrosoftIBM BASICA
1983Turbo PascalHejlsberg ĉe BorlandPascal
1983Ada 83 (ANSI/MIL-STD-1815A)Jean Ichbiah ĉe AlsysAda 80, Green
1983Objective-CBrad CoxSmalltalk, C
1983C++Bjarne StroustrupC with Classes
1983True BASICJohn George Kemeny, Thomas Eugene Kurtz ĉe Dartmouth CollegeBASIC
1983occamDavid MayEPL
1983?ABAPSAP AGCOBOL
1983Korn Shell (ksh)David Kornsh
1984CLIPPERNantucketdBase
1984Common LispGuy L. Steele, Jr. kaj many othersLISP
1984?GOM – Good Old MadDon Boettner, University of MichiganMAD
1984RPLHewlett-PackardForth, Lisp
1984Standard MLML
1984RedcodeAlexander Dewdney kaj D.G. Jones
1984OPLPSIONBASIC
1985PARADOXBorlanddBase
1985QuickBASICMicrosoftBASIC
1986ClarionBruce Barrington
1986CorVisionCortexINFORM
1986EiffelBertrand MeyerSimula 67, Ada
1986GFA BASICFrank OstrowskiBASIC
1986Informix-4GLInformix
1986LabVIEWNational Instruments
1986MirandaDavid Turner ĉe University of Kent
1986Object PascalApple Computer Inc.Pascal
1986PROMALC
1987Ada ISO 8652:1987ANSI/MIL-STD-1815A unchangedAda 83
1987Self (koncepto)Sun Microsystems Inc.Smalltalk
1987occam 2David May kaj INMOSoccam
1987HyperTalkApple Computer Inc.*
1987PerlLarry WallC, sed, awk, sh
1987OberonNiklaus WirthModula-2
1987ErlangJoe Armstrong kaj others in EricssonProlog
1987Mathematica (Wolfram Language)Wolfram Research*
1987Turbo BasicRobert 'Bob' ZaleBASIC/Z
1987CleanSoftware Technology Research Group of Radboud University Nijmegen*
1988RPG/400IBMFARGO, RPG, RPG II, RPG III
1988OctaveMATLAB
1988TclJohn OusterhoutAwk, Lisp
1988STOS BASICFrançois Lionet kaj Constantin SotiropoulosBASIC
1988Object REXXSimon C. NashREXX, Smalltalk
1988SPARKBernard A. CarréAda
1988A+Arthur WhitneyAPL
1988Hamilton C shellNicole HamiltonC shell
1989Turbo Pascal OOPAnders Hejlsberg ĉe BorlandTurbo Pascal, Object Pascal
1989Modula-3Cardeli, kaj aliaj DEC kaj OlivettiModula-2
1989PowerBASICRobert 'Bob' ZaleTurbo Basic
1989VisSimPeter Darnell, Visual Solutions
1989LPCLars Pensjö
1989BashBrian FoxBourne shell, C shell, Korn shell
1989Magik (programlingvo)Arthur Chance, of Smallworld Systems LtdSmalltalk
JaroNomoKreinto(j), firmaoPralingvo(j)

1990-aj

JaroNomoKreinto(j), firmaoPralingvo(j)
1990AMOS BASICFrançois Lionet kaj Constantin SotiropoulosSTOS BASIC
1990AMPLRobert Fourer, David Gay kaj Brian Kernighan ĉe Bell Laboratories
1990Object OberonH Mössenböck, J Templ, R GriesemerOberon
1990JKenneth E. Iverson, Roger Hui ĉe Iverson SoftwareAPL, FP
1990HaskellMiranda
1990EuLispCommon Lisp, Scheme
1990Z Shell (zsh)Paul Falstad ĉe Princeton Universityksh
1991GNU EDavid J. DeWitt, Michael J. CareyC++
1991Oberon-2Hanspeter Mössenböck, WirthObject Oberon
1991PythonGuido van RossumABC, ALGOL 68, Icon, Modula-3
1991OzGert Smolka kaj liaj studentojProlog
1991QAlbert Gräf
1991Visual BasicAlan Cooper, vendita al MicrosoftQuickBASIC
1992Borland PascalTurbo Pascal OOP
1992Dylanmultaj homoj ĉe Apple Computer Inc.Common Lisp, Scheme
1993?Self (implementaĵo)Sun Microsystems Inc.Smalltalk
1993Amiga EWouter van OortmerssenDEX, C, Modula-2
1993BrainfuckUrban MüllerP′′
1993LiveCode TranscriptHyperTalk
1993AppleScriptApple Computer Inc.HyperTalk
1993KArthur WhitneyAPL, Lisp
1993LuaRoberto Ierusalimschy kaj aliaj ĉe Tecgraf, PUC-RioScheme, SNOBOL, Modula, CLU, C++
1993RRobert Gentleman kaj Ross IhakaS
1993ZPLChamberlain kaj aliaj ĉe University of WashingtonC
1993NewtonScriptWalter SmithSelf, Dylan
1994ClaireYves CaseauSmalltalk, SETL, OPS5, Lisp, ML, C, LORE, LAURE
1994ANSI Common LispCommon Lisp
1994RAPIDABB GroupARLA
1994PikeFredrik Hübinette kaj aliaj ĉe Linköping UniversityLPC, C, µLPC
1994ANS ForthElizabeth Rather, kaj aliajForth
1995Ada 95S. Tucker Taft, kaj aliaj ĉe Intermetrics, Inc.Ada 83
1995Borland DelphiAnders Hejlsberg ĉe BorlandBorland Pascal
1995ColdFusion (CFML)Allaire
1995JavaJames Gosling ĉe Sun MicrosystemsC, Simula 67, C++, Smalltalk, Ada 83, Objective-C, Mesa
1995LiveScriptBrendan Eich ĉe NetscapeSelf, C, Scheme
1995MercuryZoltan Somogyi ĉe University of MelbourneProlog, Hope, Haskell
1995PHPRasmus LerdorfPerl
1995RubyYukihiro MatsumotoSmalltalk, Perl
1995JavaScriptBrendan Eich ĉe NetscapeLiveScript
1996CurlDavid Kranz, Steve Ward, Chris Terman ĉe MITLisp, C++, Tcl/Tk, TeX, HTML
1996LassoBlue World Communications Inc.
1996Perl Data Language (PDL)Karl Glazebrook, Jarle Brinchmann, Tuomas Lukka, kaj Christian SoellerAPL, Perl
1996OCamlINRIACaml Light, Standard ML
1996NetRexxMike CowlishawREXX
1997Component PascalOberon microsystems, IncOberon-2
1997EMark S. MillerJoule, Original-E
1997PicoFree University of BrusselsScheme
1997Squeak SmalltalkAlan Kay, kaj aliaj ĉe Apple Computer Inc.Smalltalk-80, Self
1997ECMAScriptECMA TC39-TG1JavaScript
1997F-ScriptPhilippe MouginSmalltalk, APL, Objective-C
1997ISLISPISO Standard ISLISPCommon Lisp
1997TeaJorge NunesJava, Scheme, Tcl
1997REBOLCarl Sassenrath, Rebol TechnologiesSelf, Forth, Lisp, Logo
1998Standard C++ANSI/ISO Standard C++C++, Standard C, C
1998M2001Ronald E. Prather, Trinity University (Texas)*
1998PiktRobert Osterlund (then ĉe University of Chicago)AWK, Perl, Unix shell
1998PureBasicFrederic Laboureur, Fantaisie Software
1998UnrealScriptTim Sweeney ĉe Epic GamesC++, Java
1999XSLT (+ XPath)W3C, James ClarkDSSSL
1999Game Maker Language (GML)Mark OvermarsGame Maker
1999HarbourAntonio LinaresdBase
JaroNomoKreinto(j), firmaoPralingvo(j)

2000-aj

JaroNomoKreinto(j), firmaoPralingvo(j)
2000Join JavaG Stewart von ItzsteinJava
2000ActionScriptGary GrossmanECMAScript
2000JoyManfred von ThunFP, Forth
2000XLChristophe de DinechinAda, C++, Lisp
2000C#Anders Hejlsberg, Microsoft (ECMA)C, C++, Java, Delphi, Modula-2
2000DWalter Bright, Digital MarsC, C++, C#, Java
2000FeriteChris RossC, C++, Java, PHP, Python, Ruby, Scheme
2001AspectJGregor Kiczales, Xerox PARCJava, Common Lisp
2001ProcessingCasey Reas kaj Benjamin FryJava, C, C++[2]
2001Visual Basic .NETMicrosoftVisual Basic
2001RPG IV (RPGLE, ILE RPG, RPG Free)IBMFARGO, RPG, RPG II, RPG III, RPG/400
2001GDScript (GDS)OKAM StudioGodot
2002IoSteve DekorteSelf, NewtonScript
2002GosuGuidewire SoftwareGScript
2003NemerleUniversitato deWrocławC#, ML, MetaHaskell
2003FactorSlava PestovJoy, Forth, Lisp
2003FalconGiancarlo NiccolaiC++, Perl, Lua, Smalltalk, PHP, Lisp, Python, Ruby
2003ScalaMartin OderskySmalltalk, Java, Haskell, Standard ML, OCaml
2003SquirrelAlberto DemichelisLua
2004SubtextJonathan Edwards*
2004Alma-0Krzysztof Apt, Centrum Wiskunde & Informatica*
2004BooRodrigo B. de OliveiraPython, C#
2004FreeBASICAndre VictorQBasic
2004GroovyJames StrachanJava
2004Little bAneil Mallavarapu, Harvard Medical School, Department of Systems BiologyLisp
2005F#Don Syme, Microsoft ResearchOCaml, C#, Haskell
2005Seed7Thomas Mertes*
2006LinksPhilip Wadler, University of EdinburghHaskell
2006CobraChuckEsterbrookPython, C#, Eiffel, Objective-C
2006Windows PowerShellMicrosoftC#, ksh, Perl, CL, DCL, SQL
2006OptimJAtejiJava
2007Ada 2005Ada Rapporteur GroupAda 95
2007FantomBrian Frank, Andy FrankC#, Scala, Ruby, Erlang
2007ScratchMitchel Resnick, John Maloney, Natalie Rusk, Evelyn Eastmond, Tammy Stern, Amon Millner, Jay Silver, kaj Brian SilvermanLogo, Smalltalk, Squeak, E-Toys, HyperCard, AgentSheets, StarLogo, Tweak, BYOB
2007ValaGNOMEC#
2007ClojureRich HickeyLisp, ML, Haskell, Erlang
2007FortressGuy SteeleScala, ML, Haskell
2007Oberon-07Wirth[3]Oberon
2007LOLCODEAdam Lindsay*
2008GenieJamie McCrackenPython, Boo, D, Object Pascal
2008PureAlbert GräfQ
2009GoGoogleC, Oberon, Limbo, Smalltalk
2009CoffeeScriptJeremy AshkenasJavaScript, Ruby, Python, Haskell
2009IdrisEdwin BradyHaskell, Agda, Coq
2009ParasailS. Tucker Taft, AdaCoreModula, Ada, Pascal, ML
JaroNomoKreinto(j), firmaoPralingvo(j)

Post 2010

JaroNomoKreinto(j), firmaoPralingvo(j)
2010ChapelBrad Chamberlain, Cray Inc.HPF, ZPL
2010RustGraydon Hoare, MozillaAlef, C++, Camlp4, Common Lisp, Erlang, Hermes, Limbo, Napier, Napier88, Newsqueak, NIL, Sather, Standard ML
2011CeylonGavin King, Red HatJava
2011DartGoogleJava, JavaScript, CoffeeScript, Go
2011ElmEvan CzaplickiHaskell, Standard ML, OCaml, F#
2011KotlinJetBrainsJava, Scala, Groovy, C#, Gosu
2011C++11C++ ISO/IEC 14882:2011C++, Standard C, C
2011RedNenad RakocevicRebol, Scala, Lua
2012ElixirJosé ValimErlang, Ruby, Clojure
2012TypeScriptAnders Hejlsberg, MicrosoftJavaScript, CoffeeScript
2012JuliaJeff Bezanson, Stefan Karpinski, Viral Shah, Alan Edelman, MITMATLAB, Lisp, C, Fortran, Mathematica[4] (strictly its Wolfram Language), Python, Perl, R, Ruby, Lua[5]
2012Ada 2012ARA kaj Ada Europe (ISO/IEC 8652:2012)Ada 2005, ISO/IEC 8652:1995/Amd 1:2007
2014HackFacebookPHP
2014SwiftApple Inc.Objective-C, Rust, Haskell, Ruby, Python, C#, CLU
2014C++14C++ ISO/IEC 14882:2014C++, Standard C, C
JaroNomoKreinto(j), firmaoPralingvo(j)

Vidu ankaŭ

Referencoj

Eksteraj ligiloj