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
[redakti | redakti fonton]Ekzistas multaj sistemoj por klasifiki programlingvojn.
Kelkaj ekstersistemaj klasifikoj
[redakti | redakti fonton]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]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]La plej popularaj programlingvoj laŭ TIOBE indekso de programista komunumo:[1]
- 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
[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) |
1950-aj
[redakti | redakti fonton]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 | 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
[redakti | redakti fonton]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) |
1970-aj
[redakti | redakti fonton]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) |
1980-aj
[redakti | redakti fonton]1990-aj
[redakti | redakti fonton]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
[redakti | redakti fonton]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 | 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 | 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 | 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]- ↑ angle TIOBE Programming Community Index for September 2011
- ↑ https://www.arduino.cc/en/Reference/HomePage
- ↑ Arkivita kopio. Arkivita el la originalo je 2009-08-31. Alirita 2016-11-28 .
- ↑ Why We Created Julia (February 2012). Alirita 7 February 2013 .
- ↑ 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]- Kion Programlingvoj Solvas (What Languages Fix) - eseo pri programlingvoj de Paul Graham.