Saltu al enhavo

Programlingvo

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

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

[redakti | redakti fonton]

Ekzistas multaj sistemoj por klasifiki programlingvojn.

Kelkaj ekstersistemaj klasifikoj

[redakti | redakti fonton]
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

[redakti | redakti fonton]

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)

[redakti | redakti fonton]

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)

[redakti | redakti fonton]

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)

[redakti | redakti fonton]

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)

[redakti | redakti fonton]

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)

[redakti | redakti fonton]

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

[redakti | redakti fonton]
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

[redakti | redakti fonton]
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

[redakti | redakti fonton]

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

[redakti | redakti fonton]
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)
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)
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, California
J. 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)
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 68
1977 Euclid Butler 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)
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 InterPress
1982 Turing Ric Holt kaj James Cordy, ĉe University of Toronto Euclid
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 BASIC
1986 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 shell
1989 Magik (programlingvo) Arthur Chance, of Smallworld Systems Ltd Smalltalk
Jaro Nomo Kreinto(j), firmao Pralingvo(j)
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)
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++[2]
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 deWrocł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[3] 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

[redakti | redakti fonton]
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, C
2011 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[4] (strictly its Wolfram Language), Python, Perl, R, Ruby, Lua[5]
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ŭ

[redakti | redakti fonton]

Referencoj

[redakti | redakti fonton]
  1. angle TIOBE Programming Community Index for September 2011
  2. https://www.arduino.cc/en/Reference/HomePage
  3. Arkivita kopio. Arkivita el la originalo je 2009-08-31. Alirita 2016-11-28.
  4. Why We Created Julia (February 2012). Alirita 7 February 2013.
  5. Introduction. Arkivita el la originalo je 2016-04-08. Alirita 2016-11-28. Arkivita kopio. Arkivita el la originalo je 2016-04-08. Alirita 2016-11-28.

Eksteraj ligiloj

[redakti | redakti fonton]