Lengoaia konpilatu
Lengoaia konpilatua programazio lengoaia bat zeinek bere inplementazioak konpiladoreak (iturburu kodetik makina lengoaia eratzen duten itzultzaileak) diren eta ez interpreteak (iturburu kodea pasoz pauso exekutatzen dute, exekuzioan inolako itzulpenik egin gabe).
Definizioa ez da beti betetzen. Printzipioz, edozein lengoaia konpiladore edo itzultzaile bat erabiliz inplementatu daiteke . Hala ere, gero eta ohikoagoa da bi irtenbideen arteko konbinazio bat: konpiladore batek iturburu-kodea itzuli dezake tarteko elementu bat erabilita (sarritan Bytecode bat), gero interprete bati pasatuko zaiona exekutatzeko.
Abantailak eta desabantailak
[aldatu | aldatu iturburu kodea]Konpilazio denborari dagokionez, kode makinara konpilatutakoak, itzuli egin behar direnak baino azkarragoak dira, itzulpen prozesua egin behar ez dutelako. Hala ere, teknologia berriak, konpilazioa denbora exekuzioan bezala, eta hainbat hobekuntzak itzulpen prozesuan, hutsune hori murrizten hasi dira. Tarteko uneren batean, irtenbide mistoa eraginkorragoa izan ohi da bytecode-ak erabiliz.
Behe-mailako programazio lengoaiak normalean konpilatuak dira, batez ere eraginkortasuna kezka nagusia bada, gurutze-plataformen euskarria ordez.
Ahalegin txikiak eginda posible da lengoaia interpretatuentzako konpiladoreak eraikitzea. Adibidez, Common Lisp Java bytecode-re konpilatua izan daiteke, Java-ren makina birtualak interpretatzen duena; C kodera, kode-makinara konpilatu egiten dena. Konpilazio era ezberdin eskaintzen dituzten lengoaiek, kontrol gehiago eskaintzen dute programatzaileak exekuzio denbora kontrolatzeko eta plataforma ezberdinetan bateragarritasuna sustatzeko.
Lengoaiak
[aldatu | aldatu iturburu kodea]Normalean konpilatutzat hartzen diren zenbait lengoaia:
- Ada
- ALGOL
- Algol 60
- Algol 68
- SMALL
- BASIC
- C
- D
- CLEO
- COBOL
- Cobra
- Common Lisp
- Delphi
- Eiffel
- Sather
- Ubercode
- Factor (azken bertsioak)
- Forth
- Fortran
- Go
- Haskell
- Haxe (bytecode-ra)
- IBM RPG
- Java (bytecode-ra)
- JOVIAL
- G
- Lisp
- Lush
- Mercury
- Meta Lengoaia
- Standard ML
- Alice
- OCaml
- Standard ML
- Modula-2
- Modula-3
- Open-URQ
- PureBasic
- Pascal
- Perl
- PHP
- PL/I
- Rust
- Scala
- Seed7
- Swift
- Visual Basic
- Visual Foxpro
- Visual Prolog
Tresnak
[aldatu | aldatu iturburu kodea]- ANTLR
- CodeWorker
- Lex
- Yacc
- Flex
- GNU Bison
- Yacc