Paul Graham bejelentette az új Bel programozási nyelvet

A Bél nyelvet Bél nyelven írják.

Paul Graham bejelentette az új Bel programozási nyelvet
1960-ban John McCarthy leírta a Lisp-et, egy új típusú programozási nyelvet. Azért mondom "új típus", mert a Lisp nem csak egy új nyelv volt, hanem a nyelvek leírásának új módja.

Lisp meghatározásához egy kis állításkészlettel, egyfajta axiómával kezdett, amelyeket aztán magának a nyelvnek a értelmezéséhez használt.

Nem a szokásos értelemben vett programozási nyelv leírására irányult – egy olyan nyelv, amellyel a számítógép megmondja, mit tegyen. 1960-as munkájában Lisp a számítások formális modelljeként értelmezhető, amely hasonló a Turing-géphez. McCarthy nem gondolt arra, hogy számítógépeken használja, amíg Steve Russell, végzős hallgatója nem javasolta.

A Lisp 1960-ban nem rendelkezett a programozási nyelvek jellemzőivel. Például nem voltak számok, hibák vagy I/O. Tehát azoknak, akik a Lisp-et használták a számítógépek programozására használt nyelvek alapjául, maguknak kellett hozzáadniuk ezeket a funkciókat. És ezt úgy tették, hogy felhagytak az axiomatikus megközelítéssel.

Így a Lisp fejlesztése két - és látszólag teljesen független - szakaszban zajlott: egy formális szakaszban, amelyet egy 1960-as cikkben vezettek be, és egy megvalósítási szakaszban, amelyben a nyelvet adaptálták és kiterjesztették számítógépeken való futtatásra. A fő munka, ha a megvalósított lehetőségek számával mérjük, a megvalósítás szakaszában zajlott. A Lisp 1960-ból, Common Lisp nyelvre fordítva, mindössze 53 sort tartalmaz. Csak azt teszi, ami a kifejezések értelmezéséhez szükséges. Minden mást a megvalósítás szakaszában adtunk hozzá.

Hipotézisem az, hogy nehéz története ellenére a Lisp profitált abból, hogy fejlődése két fázisban ment végbe; hogy a nyelv meghatározásának eredeti gyakorlata a tolmács beleírásával adta Lispnek a legjobb tulajdonságait. És ha igen, miért nem megy tovább?

Bel egy kísérlet arra a kérdésre, hogy megválaszolja: mi lenne, ha ahelyett, hogy a formális szakaszból a korai szakaszban a végrehajtási szakaszba lépnénk, ez az átmenet a lehető legkésőbb történne? Ha továbbra is az axiomatikus megközelítést alkalmazza, amíg egy teljes programozási nyelvhez közel áll, milyen axiómákra lesz szüksége, és hogyan fog kinézni a kapott nyelv?

Szeretném tisztázni, mi az a Bel és mi nem. Bár sokkal több funkcióval rendelkezik, mint McCarthy 1960-as Lispje, a Bel még mindig formális fázisban van. A Lisphez hasonlóan, amelyet egy 1960-as cikkben leírtak, ez nem olyan nyelv, amellyel programozhat. Főleg azért, mert McCarthy Lispéhez hasonlóan nem törődik a hatékonysággal. Amikor hozzáadok valamit a Bel-hez, leírom a kiegészítés jelentését anélkül, hogy megpróbálnék hatékony megvalósítást nyújtani.

Miért? Miért kell kiterjeszteni a formális szakaszt? Az egyik válasz az, hogy lássuk, hová vihet minket az axiomatikus megközelítés, ami önmagában is érdekes gyakorlat. Ha a számítógépek olyan erősek lennének, mint amilyennek szeretnénk, hogyan néznének ki a nyelvek?

De azt is hiszem, hogy korlátozások hozzáadásával is lehet hatékony Bel-alapú implementációt írni. Ha olyan nyelvet szeretne, amelynek kifejezőereje, tisztasága és hatékonysága van, érdemes lehet a kifejezőerővel és tisztasággal kezdeni, majd korlátozásokat bevezetni, ahelyett, hogy az ellenkező irányba menne.

Tehát ha meg akarsz próbálni egy megvalósítást írni a Bel alapján, menj tovább. Az első felhasználók között leszek.

Végül reprodukáltam néhány dolgot a korábbi dialektusokból. Vagy a tervezőik jól csinálták, vagy a korábban használt nyelvjárások befolyásolták, nem látom a helyes választ – az idő eldönti. Arra is törekedtem, hogy ne térjek el túlságosan a Lisp-konvencióktól. Ami azt jelenti, hogy ha azt látja, hogy eltávolodnak a Lisp-konvencióktól, annak oka lehet.

A nyelv leírásának folytatása itt.

Köszönöm a fordítást: Denis Mitropolsky

PS

Forrás: will.com

Hozzászólás