
Ինչու՞ 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 — AI-ով հզորացված վեբ մշակում
Ստեղծում ենք արագ ու ժամանակակից կայքեր և AI-ը ներդնում իրական բիզնես գործընթացներում։ Ունե՞ք նախագիծ կամ հարց։ Ուրախ կլինենք օգնել։