Վերադառնալ

Ինչու՞ Janet. էսսե փոքրիկ Lisp բարբառի մասին
SiTech AI Team2 րոպե ընթերցում

Ինչու՞ Janet. էսսե փոքրիկ Lisp բարբառի մասին

Ծրագրավորող Յան Հենրին բացատրում է, թե ինչու փոքրիկ Lisp բարբառ Janet-ը դարձավ իր հիմնական լեզուն կողմնակի նախագծերում. ութ հրահանգից բաղկացած միջուկ, ներկառուցվող C միջավայր և ինքնուրույն բինարներ։

Ծրագրավորող Յան Հենրին իր բլոգի էսսեում բացատրում է, թե ինչու փոքրիկ Lisp բարբառ Janet-ը մի քանի տարի է ինչ դարձել է իր հիմնական լեզուն զվարճալի կողմնակի նախագծերի համար։ Նա այնքան սիրեց լեզուն, որ ամբողջ գիրք գրեց դրա մասին՝ «Janet for Mortals», և անվճար հրապարակեց ինտերնետում։

Փոքր լեզու, որը կարելի է սովորել մեկ երեկոյում

Janet-ը իմպերատիվ լեզու է՝ առաջին կարգի ֆունկցիաներով, իդենտիֆիկատորների մեկ անվանատարածքով և լեքսիկական բլոկային սկոպով։ Նրա միջուկը ընդամենը ութ հրահանգ է՝ do, def, var, set, if, while, break և fn, իսկ մակրոները ապահովում են ավելի բարձր մակարդակի կառավարում։ Հենրիի նկարագրությամբ՝ կատարման սեմանտիկան ծանոթ է՝ «պատկերացրու JavaScript, գումարած արժեքային տիպեր, հանած բոլոր տարօրինակությունները»։ Ամբողջ ստանդարտ գրադարանը տեղավորվում է մեկ էջում։

Բայթկոդից մինչև ինքնուրույն բինարներ

Janet-ը ինքն իրեն կոմպիլյացնում է բայթկոդի, գրում այն C ֆայլում, որը նաև գործարկում է Janet-ի կատարման միջավայրը, ապա կոմպիլյացնում է այդ ֆայլը համակարգի C կոմպիլյատորով։ Արդյունքում ծրագրերը տարածվում են որպես բնիկ գործարկվող ֆայլեր՝ առանց որևէ բան տեղադրելու։ hello world-ի բինարը մեկ մեգաբայթից պակաս է՝ 784K Janet 1.27.0-ի համար aarch64 macOS-ում, ներառյալ կատարման միջավայրը, աղբահավաքը և բայթկոդի կոմպիլյատորը, ուստի ծրագրերը կարող են գործարկել Janet-ի կոդը նաև կատարման պահին։ Միջավայրը փոքրիկ C գրադարան է, որը հեշտ է ներկառուցել, նույնիսկ կայքերում։

PEG-եր, shell սկրիպտներ և հավաքածուներ

Կանոնավոր արտահայտությունների փոխարեն Janet-ի տեքստի մշակումը հիմնված է parsing expression grammar-երի վրա, որոնք Հենրին համարում է ավելի պարզ, հզոր և կանխատեսելի՝ դրանք կարող են վերլուծել HTML, JSON և զրոյական բայթերով բինար ֆորմատներ։ sh կոչվող երրորդ կողմի գրադարանը ավելացնում է shell սկրիպտների DSL՝ խողովակներով և վերահասցեավորումներով։ Հավաքածուները լինում են փոփոխվող և անփոփոխ. անփոփոխներն ունեն արժեքային սեմանտիկա, իսկ փոփոխվողները, օրինակ հեշ աղյուսակները, համեմատվում են ինքնությամբ։

Մակրոներ և կոմպիլյացիայի պահի արժեքներ

Մակրոներ գրելը Հենրիի ամենաշատ խորհուրդ տված հնարավորությունն է, և նրա խոսքով Janet-ի ոչ հիգիենիկ մակրոները դեռ կարող են լինել ռեֆերենցիալ թափանցիկ, քանի որ բառացի ֆունկցիաները կարելի է unquote անել։ Janet-ը նաև թույլ է տալիս արժեքները տեղափոխել կոմպիլյացիայի պահից կատարման պահ՝ ծրագրի կոմպիլյացիան կատարում է վերին մակարդակի կոդը, ապա սկավառակի վրա գրում ծրագրի վիճակի ամբողջական պատկերը՝ պահպանելով ընդհանուր հղումները, գեներատորները և փակումները։ Գրքում ցուցադրված է, թե ինչպես դրանով SQL սխեմայից գեներացնել տվյալների բազայի կապեր։

SiTech

SiTech — AI-ով հզորացված վեբ մշակում

Ստեղծում ենք արագ ու ժամանակակից կայքեր և AI-ը ներդնում իրական բիզնես գործընթացներում։ Ունե՞ք նախագիծ կամ հարց։ Ուրախ կլինենք օգնել։