Lil' Fun Langs' Guts
კომენტარები
Mewayz Team
Editorial Team
რატომ გხდით პროგრამირების პატარა ენების ქუსლქვეშ ყურება უკეთეს შემქმნელად
თქვენ მიერ გამოყენებული პროგრამული უზრუნველყოფის ყველა ნაწილი — CRM-დან, რომელიც თვალყურს ადევნებს თქვენს მიწოდებებს ავტომატიზაციის ძრავამდე, რომელიც აგზავნის ინვოისებს შუაღამისას — აგებულია პროგრამირების ენით. მაგრამ ოდესმე გიფიქრიათ, რა ხდის პროგრამირების ენას ნიშნვას? არა მასიური ეკოსისტემები, როგორიცაა Python ან JavaScript, არამედ პატარა, უხეში, სასიამოვნო უცნაური ეკოსისტემები, რომლებსაც დეველოპერები აშენებენ შაბათ-კვირას ერთი პრობლემის გადასაჭრელად ან უბრალოდ სასწავლად. ეს "lil' fun langs" - სათამაშო ენები, დომენის სპეციფიკური ენები (DSL) და საგანმანათლებლო თარჯიმნები - არის ის ადგილი, სადაც ცხოვრობს კომპიუტერული მეცნიერების ზოგიერთი ყველაზე ელეგანტური იდეა. გაგება მათი guts არ მხოლოდ თქვენ უკეთესი პროგრამისტი; ის ფუნდამენტურად ცვლის იმას, თუ როგორ ფიქრობთ ინსტრუმენტების შექმნაზე, სამუშაო ნაკადების ავტომატიზაციასა და ადამიანებისთვის რეალურად გამოსადეგი სისტემების დიზაინზე.
რა არის "Lil' Fun Langs"?
პროგრამირების სამყარო სავსეა ენებით, რომლებიც არასოდეს ყოფილა გამიზნული წარმოების სერვერების გასაძლიერებლად ან მილიონობით ტრანზაქციის დასამუშავებლად. ენები, როგორიცაა Lox (რობერტ ნისტრომის Crafting Interpreters), Monkey (Thorsten Ball-ის Writing an Interpreter in Go), ან თუნდაც ხუმრობის ენები, როგორიცაა Brainfuck და Chef, არსებობს სწავლებისთვის, გასართობად და იმის საზღვრებს, თუ რას ნიშნავს „ენა“. ეს პატარა ენები აშორებს რეალურ სამყაროში არსებული ხელსაწყოების სირთულის და ამჟღავნებს უხერხულ მექანიზმს, თუ როგორ ხდება კოდი მოქმედებად.
მაგრამ "lil' fun langs" არ შემოიფარგლება მხოლოდ საგანმანათლებლო სავარჯიშოებით. დომენის სპეციფიკური ენები აძლიერებს რამდენიმე ყველაზე ეფექტურ ბიზნეს ინსტრუმენტს ბაზარზე. ყოველ ჯერზე, როცა წერთ ფორმულას ელცხრილში, განსაზღვრავთ ფილტრის წესს თქვენს ელფოსტის კლიენტში, ან აკონფიგურირებთ ავტომატიზაციის სამუშაო პროცესს ისეთ პლატფორმაზე, როგორიცაა Mewayz, თქვენ ურთიერთობთ პატარა, დანიშნულებისამებრ შექმნილ ენასთან. Mewayz-ის 207 მოდული — რომელიც მოიცავს CRM-ს, ინვოისის შედგენას, HR, ფლოტის მენეჯმენტს და სხვა — ეყრდნობა შიდა წესების ძრავებს და გამოხატვის ანალიზებს, რომლებიც, ძირითადად, მცირე ენებია, რომლებიც შექმნილია მომხმარებლებისთვის ძალაუფლების მისაცემად კომპიუტერული მეცნიერების ხარისხის გარეშე.
ამ ენების ანატომიის გაგება ცხადყოფს, რატომ არის ზოგიერთი ინსტრუმენტი ინტუიციურად, ზოგი კი სხვა განზომილებაში დაწერილ სახელმძღვანელოს ეჭიდება.
ლექსერი: სიტყვების დაშლა ატომებად
ყველა ენა, რაც არ უნდა მცირე იყოს, იწყება ერთი და იგივე ფუნდამენტური ნაბიჯით: ლექსიკური ანალიზით, ან „ლექსინგით“. ლექსერი იღებს სიმბოლოების დაუმუშავებელ სტრიქონს - რაღაცას total = ფასი * რაოდენობა + გადასახადი — და ანაწილებს მას მნიშვნელოვან ნაწილებად, სახელწოდებით ჟეტონები. ლექსერს ჯერ მნიშვნელობა არ აინტერესებს. ის უბრალოდ განსაზღვრავს, რომ total არის იდენტიფიკატორი, = არის მინიჭების ოპერატორი, price არის სხვა იდენტიფიკატორი, * არის გამრავლება და ასე შემდეგ.
პატარა ენისთვის ლექსერის შექმნა საოცრად დამაკმაყოფილებელია. კოდის 100 სტრიქონზე ნაკლებ ხაზში შეგიძლიათ ასწავლოთ პროგრამას ამოიცნოს რიცხვები, სტრიქონები, საკვანძო სიტყვები და ოპერატორები. სიმარტივე არის მთავარი - ის გაიძულებს იფიქრო იმაზე, თუ რა სჭირდება თქვენს ენას "სიტყვების" აბსოლუტურ მინიმალურ კომპლექტს. იგივე აზროვნება გამოიყენება მომხმარებლის წინაშე არსებული ხელსაწყოების დიზაინის დროს. როდესაც Mewayz-ის ავტომატიზაციის ძრავა საშუალებას აძლევს მცირე ბიზნესის მფლობელს დააწესოს ისეთი წესი, როგორიცაა „როდესაც ინვოისი ვადაგადაცილებულია 7 დღით, გაგზავნეთ შეხსენების ელ.წერილი“, სისტემა ჩუმად იყენებს ამ წესს სტრუქტურირებულ ტოკენებში, რომლებზეც შეუძლია მოქმედება. საუკეთესო ინტერფეისები უპრობლემოდ იგრძნობა ზუსტად იმიტომ, რომ ვიღაცამ ღრმად დაფიქრდა იმაზე, თუ როგორ გამოიყურება მომხმარებლის განზრახვის ყველაზე პატარა მნიშვნელოვანი ერთეულები.
პარსირება: ბრტყელი ნიშნების ცოცხალ ხეებად გადაქცევა
როდესაც გექნებათ ტოკენები, გჭირდებათ სტრუქტურა. ანალიზები გარდაქმნის ნიშნების ბრტყელ თანმიმდევრობას აბსტრაქტული სინტაქსის ხედ (AST) - იერარქიულ წარმოდგენას, რომელიც ასახავს კავშირებს გამოხატვის სხვადასხვა ნაწილებს შორის. გამოთქმა 3 + 4 * 5 არ არის მხოლოდ ხუთი ნიშნის თანმიმდევრობა; ეს არის ხე, სადაც გამრავლება უფრო მჭიდროდ არის მიბმული, ვიდრე შეკრება, წარმოქმნის 23-ს 35-ის ნაცვლად.
ეს ის ადგილია, სადაც ყველაფერი ნამდვილად სახალისო ხდება. ანალიზების ალგორითმები, როგორიცაა რეკურსიული წარმოშობა ან პრატის პარსინგი, არის ინჟინერიის ელეგანტური ნაწილები, რომლებიც ჯდება ერთ ფაილში, მაგრამ შეუძლია გაუმკლავდეს საოცრად რთულ გრამატიკებს. რეკურსიული წარმოშობის პარსერები, კერძოდ, იკითხება თითქმის როგორც თავად ენის სპეციფიკაცია - თითოეული ფუნქცია შეესაბამება გრამატიკის წესს, რაც ქმნის კოდის თვითდოკუმენტირებას ისე, როგორც იშვიათია პროგრამული უზრუნველყოფის შემუშავებაში.
პარსინგის გაკვეთილები სცილდება ენის დიზაინს. ნებისმიერი სისტემა, რომელიც ამუშავებს სტრუქტურირებულ შეყვანას - დაჯავშნის ფორმა თარიღის დიაპაზონებით, სახელფასო კონფიგურაცია პირობითი წესებით, CRM მილსადენი განშტოების ლოგიკით - წყვეტს ანალიზების პრობლემას. Mewayz-ის პლატფორმაზე 138,000+ მომხმარებელი ყოველდღიურად ქმნის კომპლექსურ, სტრუქტურირებულ მონაცემებს. იმის გაგება, თუ როგორ აქცევს პარსერები ორაზროვან შეყვანას ცალსახა სტრუქტურად, არის განსხვავება სისტემის აშენებას შორის, რომელიც მოხდენილად ამუშავებს კიდეებს და არღვევს იმ მომენტს, როდესაც ვინმე შეიყვანს თარიღს მოულოდნელ ფორმატში.
თარჯიმანი: სადაც კოდი ცოცხლდება
თარჯიმანი არის ადგილი, სადაც ხდება მაგია. ის დადის AST-ზე, კვანძ-კვანძზე და ახორციელებს მას. რიცხვითი კვანძი აბრუნებს თავის მნიშვნელობას. ორობითი ოპერაციული კვანძი აფასებს მის მარცხენა და მარჯვენა შვილებს და აერთიანებს მათ. ფუნქციის გამოძახება ეძებს ფუნქციას გარემოში, აკავშირებს არგუმენტებს და აფასებს სხეულს. სათამაშოების ენაზე, მთლიანი თარჯიმანი შეიძლება იყოს 200-300 სტრიქონი - საკმარისად მცირე, რომ თქვენს თავში დაიჭიროთ, მაგრამ საკმარისად ძლიერი რეალური პროგრამების გასაშვებად.
აღსრულების ორი ფართო მიდგომა არსებობს: ხეზე მოსიარულე თარჯიმანი და ბაიტეკოდის ვირტუალური მანქანები. ხეზე მოსიარულეები უფრო მარტივი, მაგრამ ნელი არიან; ისინი პირდაპირ გადიან AST-ს. Bytecode VM-ები აკომპლექტებენ AST-ს მარტივი ინსტრუქციების თანმიმდევრობით (როგორც პატარა ასამბლეის ენა) და ასრულებენ მათ ნაცვლად, ვაჭრობენ განხორციელების სირთულეს მკვეთრად უკეთესი შესრულებისთვის. CPython, პითონის სტანდარტული იმპლემენტაცია, იყენებს ბაიტეკოდის VM-ს. Lua, ერთ-ერთი ყველაზე ეფექტური ჩაშენებადი ენა, გახდა პიონერი რეგისტრზე დაფუძნებული VM დიზაინი, რომელმაც გავლენა მოახდინა თამაშის ძრავებზე მთელ მსოფლიოში.
ძირითადი შეხედულება: ყველაზე მძლავრი ბიზნეს ინსტრუმენტები არ არის ყველაზე მეტი ფუნქციებით — ისინი საუკეთესო შიდა „ენით“ გამოხატავენ იმას, რაც რეალურად სჭირდებათ მომხმარებლებს. ყველა წესის ძრავა, ფორმულის სისტემა და ავტომატიზაციის შემქმნელი არის შენიღბული პატარა თარჯიმანი. ამ თარჯიმნის ხარისხი განსაზღვრავს ხელსაწყოს მასშტაბებს 10 მომხმარებლისგან 100000-მდე.
💡 DID YOU KNOW?
Mewayz replaces 8+ business tools in one platform
CRM · Invoicing · HR · Projects · Booking · eCommerce · POS · Analytics. Free forever plan available.
Start Free →
გარემოები და სფერო: სახელმწიფოს ფარული არქიტექტურა
ენის დანერგვის ერთ-ერთი ყველაზე რთული კონცეფცია - და ერთ-ერთი ყველაზე პირდაპირ გამოყენებადი ბიზნეს პროგრამული უზრუნველყოფისთვის - არის ის, თუ როგორ მართავენ ენები მდგომარეობას გარემოსა და ფარგლების მეშვეობით. როდესაც თქვენ წერთ ცვლადის დავალებას ფუნქციის შიგნით, ეს ცვლადი არ უნდა გაჟონოს და არ გადაიწეროს რაღაც გლობალურ მასშტაბში. ეს აშკარად ჟღერს, მაგრამ მისი სწორად დანერგვა მოითხოვს მონაცემთა სტრუქტურას, რომელსაც ეწოდება გარემოს ჯაჭვი: ჰეშის რუქების დაკავშირებული სია, სადაც თითოეული დონე წარმოადგენს ფარგლებს, და ცვლადის ძიება აგრძელებს ჯაჭვს, სანამ არ იპოვიან შესატყვისს.
ეს ნიმუში ყველგან ჩანს კარგად შემუშავებულ პროგრამულ უზრუნველყოფაში. მომხმარებლის ნებართვები ბიზნეს პლატფორმაზე მუშაობს იგივე გზით - გუნდის წევრის წვდომა განისაზღვრება ჯერ მათი ინდივიდუალური ნებართვების შემოწმებით, შემდეგ მათი როლის ნებართვების, შემდეგ ორგანიზაციის ნაგულისხმევი პარამეტრების შემოწმებით. Mewayz-ის მოდულის სისტემა, რომელიც მოიცავს ყველაფერს, ბმული ბიო გვერდებიდან დაწყებული ხელფასების სრულ დამუშავებამდე, იყენებს ფენოვან კონფიგურაციას, რომელიც ასახავს ზუსტად ამ პრინციპს. ბიზნესის მფლობელი ადგენს ნაგულისხმევს ორგანიზაციის მასშტაბით, დეპარტამენტის მენეჯერებს შეუძლიათ კონკრეტული პარამეტრების უგულებელყოფა და ცალკეულ მომხმარებლებს შეუძლიათ საკუთარი სამუშაო სივრცის მორგება — ეს ყველაფერი კონფლიქტების გარეშე.
პროგრამირების ენაში არასწორად გაცნობა იწვევს შეცდომებს. ბიზნეს პლატფორმაზე არასწორად მოხვედრა იწვევს მონაცემთა გაჟონვას, ნებართვების ესკალაციას და ოპერაციულ ქაოსს, რომელიც რეალურ ფულს ხარჯავს. გაკვეთილები ერთნაირია აბსტრაქციის ყველა დონეზე.
რას გასწავლით სინამდვილეში პატარა ენის შექმნა
თუ თქვენ არასოდეს შეგიქმნიათ პატარა პროგრამირების ენა, აი, რას გვასწავლის ეს გამოცდილება — და რატომ აქვს მნიშვნელობა, ხართ თუ არა დეველოპერი, ტექნიკური დამფუძნებელი, თუ ვინმე, ვისაც უბრალოდ სურს გაიგოს ინსტრუმენტები, რომლებსაც ისინი ყოველდღიურად იყენებენ:
- აზროვნების სიზუსტე: გრამატიკის განსაზღვრისას ბუნდოვანი არ შეიძლება. თქვენი ენის სპეციფიკაციების ყოველი გაურკვევლობა ხდება შეცდომა თქვენს პარსერში. ეს დისციპლინა პირდაპირ გადადის უკეთესი სპეციფიკაციების, უფრო მკაფიო დოკუმენტაციისა და უფრო ზუსტი მახასიათებლების მოთხოვნებზე.
- ემპათია მომხმარებლების მიმართ: როდესაც თქვენ შეიმუშავებთ ენას, თქვენ ქმნით ინტერფეისს ადამიანის აზროვნებისთვის. თქვენ ისწავლით კითხვას: "რას იგულისხმება მომხმარებელი ამით?" — კითხვა, რომელიც უნდა იწვევდეს ყველა პროდუქტის გადაწყვეტილებას.
- შესრულების ინტუიცია: თქვენ შეიტყობთ, რატომ არის ზოგიერთი ოპერაცია სწრაფი, ზოგი კი ნელი, არა საორიენტაციო ნიშნების წაკითხვით, არამედ იმის დანახვით, თუ რამდენ ნაბიჯს დგამს თარჯიმანი. ეს გაგიუმჯობესებთ მასშტაბის სისტემების შემუშავებას.
- გამართვის ოსტატობა: როცა თქვენი ენა არასწორ გამომავალს იძლევა, დასამალი არსად გაქვთ. არ არსებობს ბრალი ჩარჩო, ბიბლიოთეკის ვერსიის კონფლიქტი. ეს არის თქვენი ლოგიკა, თქვენი მონაცემთა სტრუქტურები, თქვენი ალგორითმი. ეს ქმნის ღრმა გამართვის უნარს, რომელიც განასხვავებს კარგ ინჟინრებს დიდებისგან.
- დაფასება აბსტრაქციისთვის: თქვენ გესმით, რატომ გააკეთეს უმაღლესი დონის ენებმა არჩევანი - რატომ აქვს JavaScript-ს დახურვა, რატომ აირჩია Python-მა მნიშვნელოვანი სივრცე, რატომ არსებობს Rust-ის სესხის შემმოწმებელი. ეს არ არის თვითნებური გადაწყვეტილებები; ეს არის რეალური პრობლემების გადაწყვეტა, რომლებსაც შეგხვდებათ საკუთარი განხორციელებისას.
სათამაშოების ენებიდან რეალურ სამყაროში ავტომატიზაციამდე
უფასო სათამაშო ენასა და წარმოების ავტომატიზაციის ძრავას შორის უფრო მცირეა, ვიდრე ბევრი ფიქრობს. Shopify-ის Liquid შაბლონის ენა დაიწყო, როგორც მარტივი, უსაფრთხო შაბლონის სისტემა და ახლა მილიონობით მაღაზიის ვიტრინას ამუშავებს. GitHub Actions-ის სამუშაო ნაკადის სინტაქსი არის დომენის სპეციფიკური ენა, რომელიც აგებულია YAML-ზე. Stripe's Sigma შეკითხვის ენა საშუალებას აძლევს ფინანსურ გუნდებს დაკითხონ გადახდის მონაცემები SQL-ის დაწერის გარეშე. თითოეული მათგანი იწყებოდა ვიღაცის კითხვაზე: "რა არის ყველაზე პატარა, უმარტივესი ენა, რომელიც გადაჭრის ამ კონკრეტულ პრობლემას?"
ეს არის იგივე ფილოსოფია პლატფორმების უკან, რომლებიც მიზნად ისახავს ბიზნეს ოპერაციების გაერთიანებას ერთ ეკოსისტემაში. როდესაც Mewayz ემსახურება შტატგარეშე სპეციალისტს, რომელსაც სჭირდება ბმული ბიო გვერდი და საშუალო ზომის კომპანია, რომელიც ამუშავებს ხელფასს 50 თანამშრომლისთვის მის 207 მოდულში, მთავარი გამოწვევა იგივეა, რაც ყველა ენის დიზაინერის წინაშე დგას: როგორ ქმნით სისტემას, რომელიც საკმარისად მარტივია დამწყებთათვის, მაგრამ საკმარისად ძლიერი რთული გამოყენების შემთხვევებისთვის? პასუხი, როგორც ნებისმიერი ენის განმახორციელებელი გეტყვით, მდგომარეობს პრიმიტივების სწორად მიღებაში - პატარა, შედგენილი სამშენებლო ბლოკები, რომლებიც მომხმარებლებს შეუძლიათ გააერთიანონ ისე, როგორც დიზაინერს არასოდეს ელოდა.
შემდეგ ჯერზე, როცა დააკონფიგურირებთ ავტომატიზაციის წესს, შექმნით მორგებულ დაფას ან დააყენებთ პირობით სამუშაო პროცესს ნებისმიერ ბიზნეს ინსტრუმენტში, გახსოვდეთ: თქვენ წერთ პროგრამას ძალიან სახალისო ენაზე. ვიღაცამ დააპროექტა ეს ენა - მისი ლექსერი, პარსერი და თარჯიმანი - თქვენი განზრახვის შესასრულებლად. და მათი მუშაობის ხარისხი არის უხილავი ძალა, რომელიც განსაზღვრავს თქვენი გამოცდილება მაგიას თუ უბედურებას. ამ გონების გაგება, თუნდაც ზედაპირულ დონეზე, გაძლევს სუპერ ძალას: უნარს დაინახო მანქანა ინტერფეისის ქვეშ, იწინასწარმეტყველო სად გატყდება და უფრო შორს წაიყვანო, ვიდრე მისი დიზაინერები წარმოიდგენდნენ.
შექმენით თქვენი ბიზნესის OS დღეს
დაწყებული შტატგარეშე მომუშავეებიდან დაწყებული სააგენტოებით დამთავრებული, Mewayz ახორციელებს 138000+ ბიზნესს 207 ინტეგრირებული მოდულით. დაიწყეთ უფასოდ, განაახლეთ, როცა გაიზრდებით.
შექმენითუფასოხშირად დასმული კითხვები
რა არის "lil' fun langs" და რატომ უნდა მაინტერესებდეს?
Lil' fun langs არის პატარა, ექსპერიმენტული პროგრამირების ენები, რომლებიც შექმნილია კონკრეტული იდეების შესასწავლად ან ძირითადი ცნებების სწავლებისთვის. ისინი მერყეობს სათამაშოების თარჯიმანებიდან, რომლებიც დაწერილია შაბათ-კვირას, დომენის სპეციფიკურ ენებზე (DSL), რომლებიც შექმნილია ვიწრო ამოცანებისთვის. იმის გაგება, თუ როგორ მუშაობენ ისინი, გაძლევს უფრო ღრმა წარმოდგენას იმის შესახებ, თუ როგორ მუშაობს ყველა პროგრამული უზრუნველყოფა - ბიზნეს ინსტრუმენტების ჩათვლით, რომლებსაც ყოველდღიურად ეყრდნობით. ეს ცოდნა გახდით უფრო მკვეთრ დეველოპერად და უფრო ინფორმირებულ გადაწყვეტილების მიმღებად ავტომატიზაციის სისტემების არჩევისას ან აშენებისას.
როგორ ეხმარება ენების ინტერიერების სწავლა ბიზნესის ავტომატიზაციაში?
როდესაც გესმით ისეთი ცნებები, როგორიცაა ანალიზი, შეფასება და თარჯიმანი, ავტომატიზაციის სხვაგვარად დანახვას დაიწყებთ. თქვენ ცნობთ შაბლონებს სამუშაო ნაკადის შემქმნელებში, შაბლონების ძრავებში და წესების სისტემებში. პლატფორმები, როგორიცაა Mewayz, იყენებს იმავე პრინციპებს თავიანთ 207 მოდულში, რათა მოგცეთ ავტომატიზირება ინვოისის, CRM სამუშაო ნაკადების და სხვა – ეს ყველაფერი კოდის დაწერის გარეშე. საფუძვლების ცოდნა გეხმარებათ ამ ხელსაწყოების უფრო შორს წაყენებაში და პრობლემების უფრო სწრაფად მოგვარებაში.
მჭირდება კომპიუტერული მეცნიერების ხარისხი პატარა ენის შესაქმნელად?
სულაც არა. ბევრი დეველოპერი ქმნის თავის პირველ თარჯიმანს ერთ შაბათ-კვირაში გაკვეთილებისა და ღია წყაროს სახელმძღვანელოების გამოყენებით. ენები, როგორიცაა Python და JavaScript, მარტივს ხდის ძირითადი ლექსერის, პარსერის და შემფასებელის დაწერას. მიზანი არ არის შემდეგი საწარმოო ენის შექმნა - ეს არის საქმის სწავლა. უბრალო კალკულატორის ენაც კი გასწავლით, როგორ ხდება გამონათქვამების გაანალიზება და შესრულება, უნარები, რომლებიც პირდაპირ გადადის რეალურ სამყაროში.
შემიძლია თუ არა DSL-ების გაგება დამეხმაროს უკეთესი ბიზნეს ინსტრუმენტების შერჩევაში?
აბსოლუტურად. ბევრი ბიზნეს პლატფორმა შეიცავს დომენის სპეციფიკურ ენებს ფორმულებისთვის, ფილტრებისთვის და სამუშაო ნაკადის წესებისთვის. როდესაც გესმით, როგორ მუშაობს DSL-ები ქუდის ქვეშ, შეგიძლიათ უფრო კრიტიკულად შეაფასოთ ინსტრუმენტები. მაგალითად, Mewayz გთავაზობთ ყოვლისმომცველ ბიზნეს OS-ს, რომელიც იწყება $19/თვეში, ჩაშენებული ავტომატიზაციის ლოგიკით მის მოდულებში. DSL კონცეფციების ცოდნა გეხმარებათ ამ ფუნქციების სრულად გამოყენებაში, ვიდრე ზედაპირის გახეხვა.
We use cookies to improve your experience and analyze site traffic. Cookie Policy