Funkciaj lingvoj: Malsamoj inter versioj

[nekontrolita versio][nekontrolita versio]
Enhavo forigita Enhavo aldonita
Neko244 (diskuto | kontribuoj)
e Korektis gramatikon
gramatiko, leksiko
Linio 1:
'''Funkciaj lingvoj''' estas speco de [[komputillingvoj]], kiuj havas
apartan programadan stilon olkompare al [[ordonemaj lingvoj]]. Kontraste kun
ordonemaj programoj, kiuj estas sekvencojvicoj de ordonoj por plenumiplenumendaj unu
post la alia, funkcia programo estas unuopa esprimo (aŭ formulo),
kiun oni plenumas per komputi la esprimon.
 
Do ne estu surprizo, ke funkciaj lingvoj estas bazitaj de
[[matematiko]]. Ekzemple, la funkciaj lingvoj [[Haskell]] kaj
[[Lisp]] baziĝas desur la [[Lambdokalkulo]]. Kaj tiotiu bazo estas utila
por tradukiloj, kiuj povas matematike rezoni pri la programo por pli
inteligente traduki ĝin ol tradukiloj kutime povas tradukiloj por ordonemaj
lingvoj. Kutima funkcio plenumita de tradukiloj por funkciaj lingvoj
estas kontroli erarojn. Funkciaj lingvoj pli facile ebligas la
Linio 22:
==== Enkonduko al funkciaj lingvoj ====
 
Iuj, kiuj uzis [[sterntabelo|sterntabelon]], jam spertas pri funkcia
programado. En sterntabelo, oni specifas la valorojn de ĉiu ĉelo
laŭ la valoroj de aliaj ĉeloj. La celo estasGravas, kio estas komputota,
ne kiel komputi ĝin. Ekzemple: oni ne specifas la ordon, laŭ kiu la
ĉeloj estu komputitaj; anstataŭe, nioni akceptas, ke la sterntabelo
komputos la ĉelojn laŭ la ordo, kiu respektas la dependecojn inter la
ĉeloj. Oni ne specifas, kiel la sterntabulo asignu memoron;
anstataŭe, nioni atendas, ke ĝi montrosmontru al ni senfinasenliman tabulotabulon da ĉeloj
kaj asignosasignu nur la memoron necesan por tiujla ĉeloj uzitajuzataj. Plejparte,
oni specifas la valoron de ĉelo per esprimo (kies subpartoj povas
esti komputitaj laŭ ajna ordo), anstataŭ sekvencovico de ordonoj.
 
Interesa rezulto de la nespecifita ordo de kalkulado estas, ke la
koncepto de valorizo estas ne utila. Tio forte kontrastas kun
tradiciaj ordonemaj lingvoj, en kiuj valorizo estas esenca koncepto
Linio 43:
distingaĵo de funkciaj komputillingvoj.
 
Alia bone konata preskaŭ -funkcia lingvo estas la [[norma
datumbaz-demanda lingvo]] (SQL). Demando en SQL estas esprimo kun
projekcioj, selektojelektoj, kunigoj, ktp. La demando specifas, kiu rilato
estu komputita, sen specifi, kiel ĝi estu komputita. Tiu eco de la
demando permesas, ke ĝi povas esti komputita laŭ iu ajn konvena ordo.
Realigoj de SQL ofte amplekse optimigasoptimumigas la demandojn, kiudeterminante, inter
aliaj aferoj, determinas la plej bonabonan ordoordon laŭ kiu komputi la
esprimon.
 
Sterntabuloj kaj SQL estas tre specialigitaj lingvoj. VerajnVeraj funkciaj
lingvoj prenas la samajn ideojn kaj translokigastranslokas ilin al la nivelo de
ĝeneralcela programado.
 
Linio 60:
''Mallongeco'': Funkciaj programoj emas esti pli koncizaj ol ordonemaj.
 
''Facileco de kompreno'': Funkciaj programoj ofte estas pli facilajfacile
komprenikompreneblaj. Tio povas esti bonebona por serĉi problemojn en la programo.
Tio povas esti bonebona ankaŭ por projektoj, se novaj homoj devas legi
aŭ ŝanĝi ion en programo ne originale verkita de ili, aŭ se la
originala aŭtoro forlasis la programon kaj post longe volas
mem reveni kaj facile rememori, kion li verkis.
 
''Neniu nekropsio'': La plej multaj funkciaj lingvoj estas [[tipizemaj
lingvoj]]. Tipkontrolado ĉe traduktempo nuligas grandan aron de
tiperaroj, kiuj rezultaskondukas jeal rultempa halto de la programo. Simple ne
eblas en tipizemaj lingvoj, ekzemple, trakti entjeron kiel referencon.
 
''Reuzado de programpecoj'': Funkciaj lingvoj ofte enhavas homonimigon
de operacisimboloj. Tiel la sama funkcio povas funkcii por multaj
tipoj, sen necesineceso apartande definonaparta pordifino lapor ĉiuj tipoj.
 
''Abstrakteco'': Per funkciaj lingvoj la programisto povas esprimi la
plej altnivelaaltnivelan algoritmoalgoritmon sen tro zorgi pri la detaloj. Kaj funkciaj
lingvoj estas [[modulemajblokemaj lingvoj]] kaj tial estas facile apartigi la
sendependajn partojn de la programo por plibonepli bone rezoni pri la unuopaj
partoj, sen esti konfuzita per la interfunkciado de la tuto.
 
''Nur tiom kiom necesas'': Funkciaj lingvoj povas esti ''nestriktaj''.
Tio signifas, ke la komputilo komputas nur tiom, kiom necesas por atingi
la rezulton de la programo. Kaj tio permesas pli modulemablokecan stilostilon, per
kiokiu oni povas krei iom malŝparemajn (sed pli simplajn kaj pli
ĝeneralajn) modulojnblokojn, sed la aldona laboro ne efektiviĝus.
 
''Enkonstruita memor-direktado'': En lingvoj kielkia [[C (programlingvo)]], la programisto
respondecas pri la asignado de memoro. En funkciaj lingvoj, tiujn decidojn
prizorgas la [[tradukilo]] kaj la [[rultemp-sistemo]].
 
Tiu ĉi listo ne celas konvinki la leganton, ke funkciaj programoj
estas ĉiam la plej taŭgaj lingvoj. Povas esti situacioj, kiam aliaj
lingvoj, kielkia C, estas pli taŭgaj.
 
[[kategorio:funkciaj programlingvoj]]