SP Forth
Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de
versiunea revizuită pe 20 martie 2016; verificările necesită
12 modificări .
SP-FORTH este o implementare a limbajului Forth , începută de programatorul de Kaliningrad Andrey Cherezov în 1992 [1] . În prezent, proiectul este dezvoltat de un număr de participanți din Grupul de interes al patrulea al Rusiei (RU-FIG) [2] . Implementează în principal standardul ANSI 94, deși are o serie de diferențe și extensii [3] . Inițial, a funcționat sub controlul sistemului de operare MS DOS , începând cu a 3-a versiune - Windows , în prezent există și o versiune Linux .
Biblioteci de extensii
- Al patrulea asamblator
- suport multithreading
- suport pentru comunicarea inter-thread și inter-program (mutexuri, semafore, canale etc.)
- suport pentru multitasking și lucru ca o aplicație CGI
- suport complet pentru socket - încapsularea funcțiilor socket-ului în formate mai convenabile pentru utilizare în Forth
- biblioteci gata făcute pentru crearea de servere și clienți de Internet
- suport pentru funcțiile de construire a interfeței utilizator - ferestre, dialoguri, pictograme, butoane, bare de instrumente, ListView, TreeView etc.
- suport grafic
- generarea fișierelor exe
- acces la baza de date prin ODBC
- programarea serviciilor Windows NT
- Suport API Crypto
- implementarea extensiilor OOP Forth
- Suport DCOM/COM/ActiveX/OLE
- exemple gata făcute de utilizare a tuturor bibliotecilor.
Utilizare
Are o anumită faimă datorită pachetului comercial EServ [4] scris pe baza lui de Andrey Cherezov . Un alt pachet de aplicații popular scris în SP-Forth este utilitarul de automatizare Windows nnCron .
Ca exemplu de utilizare în domeniul controlului echipamentelor tradiționale pentru Fort, se poate numi sistemul de înregistrare a imaginilor creat la Universitatea de Stat din Altai de către A. V. Kalachev [5] .
Versiuni
v1.0
O căutare nereușită a unui sistem Forth bun pentru PC-ul IBM a dus la scrierea propriului său traducător Forth. A fost lansat în vara lui 1992 și v1.0 a devenit baza pentru toate versiunile ulterioare: dicționarele de bază v1.01-1.5 au fost revizuiri și îmbunătățiri ale v1.0 originală.
v1.5
Începând cu versiunea 1.5, au început schimbări semnificative în SP-Forth. Timp de o jumătate de an de lucru cu primele versiuni ale SP-Forth, au fost identificate toate „gâturile de sticlă” ale acestor implementări, au fost luate în considerare dorințele utilizatorilor și au fost adăugate extensii. Scris în iarna lui 1993.
v2.0 beta
noiembrie 1993
- o serie de experimente cu toate varietățile existente de cod threaded conduse de la cod direct threaded prin indirect la subrutine: SP-Forth 2.0 generează „cod mașină real” de data aceasta.
- SP-Forth este „extras” din segmentul 64K: v2.0 funcționează în spațiul de adrese de 256K și mai mult.
- codul este separat de date: codul mașinii situat în segmentul CS nu este modificat în timpul execuției (poate fi schimbat în timpul compilării) și poate funcționa în ROM (la cererea dezvoltatorilor de controler). Întreaga parte modificabilă a nucleului, variabilele etc., este plasată în segmentul DS.
- informațiile pentru compilator (structuri de dicționar) sunt separate de cod și date și plasate într-un segment ES separat. În programul terminat, acesta poate fi absent (și este absent în mod implicit).
- stiva este mutată în afara segmentului de date (deși poate fi returnată acolo dacă se dorește).
- acum SP-Forth generează fișiere EXE în loc de COM. Dimensiunea minimă a unui fișier EXE funcțional în această versiune este de 64 de octeți.
v2.5
mai 1994
- miezul respectă standardul ANS din 1994;
- multe cuvinte învechite și nestandardizate sunt excluse din nucleu;
- semantica unor cuvinte s-a schimbat conform standardului;
- performanță generală ușor îmbunătățită;
- seturi standard de cuvinte CORE, EXCEPTION, SEARCH, FILE, MEMORY sunt implementate în nucleu; Extensiile standard CORE-EXT, DOUBLE, FACILITY, TOOLS, STRING sunt prezentate ca biblioteci (sursă) și sunt parțial prezente în kernel.
v2.5.13
Ultima lansare oficială a versiunii DOS a SP-Forth. Dezvoltarea ulterioară a versiunilor dos nu este planificată. Versiunile viitoare ale SP-Forth vor rula sub Win32.
v3.01
ianuarie 1996
- trecerea de la platforma DOS la Win32;
- nou compilator țintă;
- toate cuvintele CODE sunt rescrise în versiunea de 32 de biți;
- abandonarea modelului de memorie cu 4 segmente în favoarea unui model win32 plat;
- titlurile intrărilor de dicționar și datele sunt din nou „amestecate” cu codul, ca în SP-Forth v<2.0, dar posibilitatea separării lor de cod și date este păstrată în structura titlurilor;
- toate funcțiile Windows sunt disponibile prin construcția „WINAPI:”;
- nucleul folosește numai apeluri KERNEL32.DLL;
- ca și în versiunile 2.*, se folosește codul cusut subprogram, dar multe detalii despre generarea codului au fost modificate;
v3.70
Este o versiune revizuită a SPF/3.14. Obiectivele principale ale revizuirii sunt compilarea SPF în sine, îmbunătățirea gestionării erorilor de către al patrulea sistem, „siguranța firelor” a tuturor cuvintelor pentru organizarea multithreading-ului deja la nivelul nucleului SPF.
- SPF/3.70 este compilat de versiunile anterioare ale SPF - SPF/3.0-3.16 înainte ca SPF/3 să fie compilat numai de Win32, deoarece SPF/3.70 se poate compila singur. Adevărat, exe rezultat va diferi în ceea ce privește adresele de legare la memorie (până la hex 20000).
- În loc de un fișier cu text sursă - acum mai mult de 30, defalcate pe „subiecte”, dependențe ale sistemului de operare, nivel etc. Este mai convenabil să navighezi și să porți părți independente.
- Au fost adăugate instrumente pentru lucrul cu variabilele USER - o modalitate tradițională de a exclude influența reciprocă a firelor de execuție asupra variabilelor comune. Multithreading-ul a fost adus la nivelul kernelului - în SPF/3.1x a fost blocat deasupra sub forma bibliotecii ts2.txt și a patch-urilor pentru READ-FILE și WRITE-FILE, care nu era o implementare completă a funcțiilor necesare. Toate SPF Forthwords pot fi acum utilizate liber în modul multithreaded, fără conflicte asupra variabilelor și bufferelor partajate - atunci când se creează un fir, propriile copii ale acestor zone de date sunt create automat.
- Mecanismul structurat de gestionare a excepțiilor de la Forth CATCH/THROW este combinat cu mecanismul de captare a excepțiilor SEH adoptat în Windows, care permite transformarea chiar și a excepțiilor hardware (împărțire cu zero, accesări la adresa greșită etc.) în THROW lui Forth și gestionarea lor programatic fără GPF- Windows ferestre. Acest lucru simplifică foarte mult depanarea - în cazul unor erori grave, sistemul Forth nu se va prăbuși, dar va emite un dump detaliat al excepției - codul de eroare, locul erorii (adresa și numele cuvântului) și conținutul registrele. Acest mecanism este, de asemenea, multi-threaded, spre deosebire de implementarea în SPF/3.15, care trebuia remediată de biblioteci externe.
v4.0
Ianuarie 2001 SP-Forth/4.0 este lansat sub numele SPF4 și sub licență GPL.
Note
- ↑ Pagina lui Andrey Cherezov . Consultat la 5 aprilie 2012. Arhivat din original pe 27 martie 2012. (nedefinit)
- ↑ RO FIG . Preluat la 18 mai 2022. Arhivat din original la 25 aprilie 2022. (nedefinit)
- ↑ Caracteristicile SPF . Consultat la 5 aprilie 2012. Arhivat din original pe 4 februarie 2012. (nedefinit)
- ↑ În al doilea rând în Rusia: starea actuală și eforturile de standardizare
- ↑ A.V. Kalachev. Sistem de înregistrare a imaginilor bazat pe o cameră digitală cu un singur cip KAC-9630 // Journal of radio electronics. - 2007. - Nr 6 .
Link -uri