Përpilimi i efektshëm i gjuhës R (S, S Plus) nga përkthimi në Common Lisp

Cfare eshte. R2cl është një provë minimale e përkthyesit të konceptit nga gjuha R ose S në Common Lisp. Një rritje në shpejtësinë e mbi 1000 herë pastaj mund të arrihet duke përdorur kodin e zakonshëm CMU Common Lisp kodin përpilues në kodin që rezulton, duke e bërë të krahasueshme me FORTRAN, Ada ose C.

Qëllimi i vetëm i versionit aktual (0.1) është që të lejojë përkthimin automatik dhe përpilimin e një referimi të thjeshtë. Ne nuk zbatuam asnjë tipar që nuk nevojitet për këtë qëllim.

Shkarko R2cl-0.1.tgz lëshuar 7 Janar 2006.

Instalimi dhe përdorimi. Për të instaluar ju duhet së pari të instaloni cmucl (CMU Common Lisp) dhe R. Të dy vijnë me shumicën e shpërndarjeve të Linux-it, por ju duhet t’i zgjidhni ato për instalim. Mendoj se versionet më të fundit (pas vitit 2000) do të funksionojnë. Kam R 1.5.1 dhe cmucl x86-linux 3.0.8 18c + që punojnë në Debian 3.0 (woody). Duhet të ekzekutosh shell bash (që është parazgjedhja) dhe duhet të bëni gnu në sistemin tuaj (që normalisht keni).

Thjesht fshini arkivin e shpërndarjes:

tar xvzf R2cl-0.1.tgz

Do të krijojë directory R2cl. Lloji:

cd R2cl
bëj

dhe të shikojnë përkthimin, hartimin dhe kohëzgjatjen e ekzekutimit të standardeve. Kjo është e gjitha, përveç nëse doni të keni një vështrim në kodin.
Arsyeshmëria. R është një ri-implementim i gjuhës S për përpunim statistikor. Është një projekt i lirë, shih r-project.org. R është një gjuhë ‘matricë’ shumë ekspresive (përdor shumë përdorues të operatorëve të matricës dhe vektorëve) me një bibliotekë të madhe të funksioneve statistikore. Sidoqoftë, shprehja kërkon një motor të ekzekutimit dinamik bazuar në një model të ‘kujtesës së pafundme’ i cili është i ngadalshëm. Gjithashtu kërkon që shprehjet dhe funksioni të ndërtohen nga një program ose të futen nga një operator në kohën e duhur duke zbatuar kështu një qasje të interpretuar. Kjo e bën implementimin strumbforward të saj të ngadaltë. Për programet që mund të kenë një ekuivalent në FORTRAN, FORTRAN ekuivalenti do të jetë mbi 1000 herë më i shpejtë.

Lisp është një gjuhë me të njëjtin model ekzekutimi, me përjashtim të faktit se është edhe më i përgjithshëm dhe përfshin një tipar të gjerë makro dhe të objektit të orientuar. Ka disa shije, por rrymat kryesore janë skema (që është redukcioniste, favorizon thjeshtësinë) dhe Common Lisp (standardi ISO i cili është i gjerë dhe shumë i shqetësuar me përpilimin efikas).

Asnjë nga këto gjuhë nuk do të jetë e lehtë për t’u përkthyer plotësisht, për shembull, në C. Për të pasur gjuhën e plotë që ju nevojitet, të paktën pjesërisht, të keni motorin e intepretimit dhe makinën ‘kujtesë të pafundme’ të kombinuar me kodin e gjeneruar.

Megjithatë, nuk ka asnjë arsye për copa të kodit të cilat nuk përdorin përgjithësinë (të tilla si gjenerimi i kodit burimor dhe ekzekutimi në kohën e duhur) që të mos jenë të kompilueshme për të koduar aq shpejt sa FORTRAN. Në praktikë, kjo është një detyrë e madhe. Megjithatë, ajo u arrit në një zbatim të lirë, për shembull në CMU CommonLisp, pasi isha i kënaqur të mësoja kur provoja këto standarde.

Semantika e R është një nëngrup i semantikës së Skemës. Ai gjithashtu përfshin, sigurisht, një pasuri të llojeve të të dhënave të përshtatshme për statistika. Semantika (mekanizmat ekspresive) të CommonLisp-it ndoshta janë superset e Skemës. Kjo do të thotë që R është e lehtë për tu shprehur në skemë (në të vërtetë motori i zbatimit të lirë është një motor Skeme) dhe ndoshta i lehtë për t’u përkthyer në CommonLisp. Kjo më vonë është interesante për shkak të disponueshmërisë së përpiluesit efikas.

Kështu që unë arrita në këtë projekt lodër, për të kontrolluar nëse një rrugë e tillë për hartimin efikas të R është e mundur.

Shumë aplikacione R nuk kanë nevojë për shpejtësi. Ju mund të përshkruani punën që ju duhet bërë në mënyrë të shpejtë që rrallë mendoni të prisni disa sekonda që sistemi të bëjë atë. Megjithatë, ekzistojnë edhe klasa të tëra të aplikacioneve ku shpejtësia është e nevojshme dhe nëse një portë e plotë e R në CommonLisp (projekt i vërtetë i madh) do të bëhej, të gjitha do të bëheshin të realizueshme për përdoruesit e R si unë.

ORIGINAL SOURCE: http://dan.corlan.net/R_to_common_lisp_translator/ by A.D. CORLAN