Limbaje de programare, ză fiuciăr

February 15th, 2009 Alex

Eul meu alternativ a scris pe celălalt blog o mică diatribă despre problemele combinării de biblioteci de cod scrise în limbaje de programare diferite.

Şi mai am o altă problemă: instrumentele curente de design al unui limbaj de programare sunt destul de primitive. Yacc/Lex sunt decente, dar odată parserul complet cam trebuie să lucrezi la propriul backend cu un minim de facilităţi necesare, cum ar fi garbage-collection şi FFI.
Sau interpretorul se poate baza pe un VM stabil şi complet, cum ar fi JVM sau CLR. Însă din păcate maşinile astea virtuale sunt specifice limbajelor statice pentru care-au fost create, Java/C#, şi deşi JRuby în diverse benchmark-uri are performanţe mai bune ca Ruby MRI, asta spune mai multe despre performanţa proastă a implementării de referinţă. Şi există Antlr (gramatică EBNF, parsare LL(*), AntlrWorks, backend-uri multiple), dar nu-mi rezolvă problema.

Am început să mă joc cu Parrot şi cu Rakudo, implementarea de Perl6. Parrot mi se pare genial şi pentru Februarie este pregătită versiunea 1.0. Parte din Parrot face parte şi PGE (Parrot Grammar Engine) ce permite definirea de expresii regulate cu nume ataşat. Mă rog, termenul de „expresie regulată” nu prea e corect deoarece în PGE expresiile pot fi recursive (uite o întrebare de interviu pentru tortură maximă: dă-mi un exemplu de conţinut ce nu poate fi parsat cu un regex şi demonstrează de ce :) ). Şi tot Parrot îţi pune la dispoziţie unelte pentru reprezentarea AST-ului / compilarea în bytecode.

Planul meu de dominare a lumii începe.
~

Posted in perl, technology | 2 Comments »