უკან დაბრუნება

რატომ Janet? — იან ჰენრის ესე პატარა ლისპის დიალექტზე
SiTech AI Team2 წთ. საკითხავი

რატომ Janet? — იან ჰენრის ესე პატარა ლისპის დიალექტზე

პროგრამისტი იან ჰენრი ბლოგზე ხსნის, რატომ გახდა პატარა ლისპის დიალექტი Janet მისი მთავარი ენა გვერდითი პროექტებისთვის: მცირე ბირთვი, ჩაშენებადი C ბიბლიოთეკა და ბინარები ინსტალაციის გარეშე.

პროგრამისტი იან ჰენრი ბლოგზე განმარტავს, რატომ არის პატარა ლისპის დიალექტი 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-ები, შელის სკრიპტები და კოლექციები

რეგულარული გამოსახულებების ნაცვლად Janet-ის ტექსტის დამუშავება parsing expression grammar-ებზეა აგებული, რომლებსაც ჰენრი უფრო მარტივს, ძლიერსა და პროგნოზირებადს უწოდებს: მათ HTML-ის, JSON-ისა და null ბაიტებიანი ბინარული ფორმატების ანალიზიც შეუძლიათ. მესამე მხარის ბიბლიოთეკა sh ამატებს შელის სკრიპტინგის DSL-ს მილებითა და გადამისამართებებით. კოლექციები ცვალებად და უცვლელ ვარიანტებად არსებობს: უცვლელებს მნიშვნელობითი სემანტიკა აქვთ, ცვალებადები კი, მაგალითად ჰეშ-ცხრილები, იდენტობით შედარებას.

მაკროები და კომპილაციის დროის მნიშვნელობები

მაკროების წერა ჰენრის ყველაზე რეკომენდებული შესაძლებლობაა და, მისი თქმით, Janet-ის არაჰიგიენური მაკროები მაინც შეიძლება იყოს რეფერენციულად გამჭვირვალე, რადგან ლიტერალური ფუნქციების unquote შეიძლება. Janet ასევე საშუალებას აძლევს მნიშვნელობებს კომპილაციის დროიდან გაშვების დროში გადავიდეს: პროგრამის კომპილაცია ასრულებს ზედა დონის კოდს და შემდეგ დისკზე წერს პროგრამის მდგომარეობის სრულ სნეპშოტს, ინახავს რა საერთო ბმულებს, გენერატორებსა და კლოჟურებს. წიგნში ნაჩვენებია, როგორ გამოიყენება ეს SQL სქემიდან მონაცემთა ბაზის ბმულების გენერაციისთვის.

გააზიარე ციფრული გამოცდილება

SiTech

SiTech — AI-გაძლიერებული ვებ დეველოპმენტი

ვქმნით სწრაფ, თანამედროვე ვებსაიტებს და AI-ს ვაერთიანებთ ქართული ბიზნესებისთვის. გაქვთ პროექტი ან კითხვა? სიამოვნებით დაგეხმარებით.