Programlingvo: Malsamoj inter versioj

[kontrolita revizio][kontrolita revizio]
Enhavo forigita Enhavo aldonita
e spaceto
Unua prilaboro de la artikolo, rearanĝo de diversaj partoj
Linio 1:
[[Dosiero:C Hello World Program.png||eta|[[Fontkodo]] de la simpla porkomputila programo skribita en [[C (programlingvo)|programlingvo]], kiu printas la frazon "Hello, world" se oni kompilas kaj startas ĝin]]
[[Dosiero:Programming language textbooks.jpg|eta|Lernolibroj pri programado]]
'''Programlingvo''' estas artefarita lingvo, kreita por transdoni komandojn al aparatoj, plejofte al [[komputilo]]j. Programlingvoj estas uzataj por krei [[Komputila programo|programojn]] kiuj kontrolas la konduton de ia aparato kaj por formuli precizajn [[Algoritmo|algoritmojn]].
 
'''Programlingvo''' estas [[formala lingvo|formala]] [[artefarita lingvo|artefarita]] [[lingvo]], kreita por transdoni [[Komando (komputa)|komandojn]] al aparatoj[[aparato]]j, plejofte al [[komputilo]]j. Programlingvoj estas uzataj por krei [[Komputila programo|programojn]] kiuj kontrolas la konduton de ia aparato kaj por formuli precizajnesprimi [[Algoritmo|algoritmojn]].
Multaj skemoj ekzistas por klasifiki programlingvojn. Oni parolas pri kelkaj generacioj de komputilaj programlingvoj:
 
== Klasifiko de programlingvoj ==
Ekzistas multaj sistemoj por klasifiki programlingvojn.
 
=== Programlingvoj laŭ generacioj ===
Kiam oni komparas programlingvon kontraŭ naturajn lingvojn oni parolas pri kelkaj generacioj:
 
* Unua-generaciaj lingvoj estas maŝinlingvoj, la lingvoj de la procesoro. Ili estas binaraj kaj malfacilaj por homoj.
* Dua-generaciaj lingvoj estas [[Asembla Komputillingvo|asemblaj lingvoj]]. La ordonoj de la procesoro havas simbolajn nomojn.
* Tria-generaciaj lingvoj estas proceduraj lingvoj kiel [[Fortran (programlingvo)|Fortran]], [[C (programlingvo)|C]], [[Paskalo (programlingvo)|Paskalo]], [[COBOL]], [[Algol]] kaj [[BASIC (programlingvo)|BASIC]].
* Kvara generacio de la lingvoj entenas la lingvojn, kies sintakso similas tiujn de naturaj lingvoj. Multaj el tiuj lingvoj estas niĉaj lingvoj, kiel ekzemple SQL, la lingvo de datumbazoj.
* La kvara generacio estis, kiam tiuj nomoj pereis. Tiuj lingvoj ne estis nur lingvoj. Ili havis datumbazojn, uzanto-interfacajn bibliotekojn, kaj tion kion ni nun nomigas programada medio (angle "integrated development environment").
 
=== Programlingvoj laŭ primara programparadigmo ===
Ankaŭ ekzistas lingvoj, kiuj ne akordiĝas kun tiu ĉi klasifiko. '''[[Objektema programado|Objektemaj lingvoj]]''' kiel [[C++]], [[Ĝavo]] kaj [[Smalltalk]] pritraktas objektojn. Objekto estas instanco (ekzemplero) de klaso. Kaj objektoj havas metodojn, kiujn vi povas voki por peti, ke la objekto faru ion.
En komputila scienco ekzistas diversaj paradigmoj pri tio kiel oni aliras kaj efektivigas la programadon. Laŭ tiuj paradigmoj oni povas klasifiki la lingvoj kiel:
Ankaŭ ekzistas lingvoj, kiuj ne akordiĝas kun tiu ĉi klasifiko.* '''[[Objektema programado|Objektemaj lingvoj]]''', kiel [[C++]], [[Ĝavo]] kaj [[Smalltalk]], kie (preskaŭ) ĉiu variablo pritraktasestas objektojnobjekto. Objekto estas instanco (ekzemplero) de klaso. Kaj objektoj havas metodojn, kiujn vi povas voki por peti, ke la objekto faru ion.
* '''[[Ordonema programado|ordonemaj lingvoj]]''', kiel [[C (programlingvo)|C]], [[Ĝavo]], [[Paskalo (programlingvo)|Paskalo]], [[Ada (programlingvo)|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.
* '''[[Funkciaj lingvoj]]''', kiel [[Haskell]] kaj [[LISP (programlingvo)|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 definitajn taskojn en porkomputilajn ordonojn.
 
[[CMultaj (programlingvo)|C]]programparadigmoj, [[Ĝavo]], [[Paskalo (programlingvo)|Paskalo]], [[Ada (programlingvo)|Ada]], ktpkiuj estas '''[[Ordonemasendependaj programado|ordonemaj lingvoj]]'''. Tio estasintere, kepovas programojlibere en tiuj lingvoj konsistas el sekvenco de ordonojkombiniĝi, kiujnekzemple onila plenumasordonema strikte unu post la alia. Kontraste, [[Haskell]]funkcia kaj [[LISPObjektema (programlingvo)programado|Lisp]] estas '''[[funkciaj lingvojobjektema]]'''. FunkciaOni programonomas estas unuopa esprimo (aŭ formulo)lingvojn, kiunkiuj onientenas plenumaskaj peraktive komputiuzas laplurajn esprimon. Ĉu lingvo estas ordonema aŭ funkciaparadigmojn, estasmultparadigmaj sendepende de ĉu ĝi estas [[Objektema programado|objektema]]lingvoj. Do ekzemple, ekde la 1970-a jardeko estas [[Objektema programado|objektema]] versio de [[LISP (programlingvo)|Lisp]], kaj estas [[Objektema programado|objektemaj]] versioj de [[C (programlingvo)|C]]. Multaj modernaj lingvoj, kiel [[Java]], [[C dieso (programlingvo)|C#]], [[Python]], [[Perl]] kaj aliaj estas nuntempe multparadigmaj kaj ebligas flekseman programadon.
 
Estas multaj aliaj ecoj de programlingvoj, kiujn oni studas kaj esploras, sed kiujn oni ne mencias ĉi tie.
 
Hodiaŭ multaj lingvoj subtenas multajn stilojn de programoj. [[Perl (programlingvo)|Perl]] povas esti procedura aŭ [[Objektema programado|objektema]] kaj ankaŭ [[C++]].
 
== Populareco de programlingvoj ==
[[Dosiero:Programming language textbooks.jpg|eta|Lernolibroj pri programado]]
La plej popularaj programlingvoj laŭ TIOBE indekso de programista komunumo:<ref>{{en}} [http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html TIOBE Programming Community Index for September 2011]</ref>