Lil' Fun Langs' Quts | Mewayz Blog Skip to main content
Hacker News

Lil' Fun Langs' Quts

Şərhlər

18 min read Via taylor.town

Mewayz Team

Editorial Team

Hacker News

Niyə kiçik proqramlaşdırma dillərinin başlığı altında baxmaq sizi daha yaxşı inşaatçı edir

İstifadə etdiyiniz hər bir proqram təminatı – potensial yollarınızı izləyən CRM-dən tutmuş, gecə yarısı fakturaları göndərən avtomatlaşdırma mühərrikinə qədər – proqramlaşdırma dili ilə qurulub. Bəs siz heç düşünmüsünüzmü ki, proqramlaşdırma dilini qeyd edir? Python və ya JavaScript kimi nəhəng ekosistemlər deyil, tərtibatçıların bir problemi həll etmək və ya sadəcə öyrənmək üçün həftə sonu qurduqları kiçik, bərbad, ləzzətli qəribə sistemlər. Bu "əyləncəli dillər" - oyuncaq dillər, domenə aid dillər (DSL) və təhsil tərcüməçiləri - kompüter elmində ən zərif ideyaların yaşadığı yerdir. Onların cəsarətini başa düşmək səni daha yaxşı proqramçı etməz; o, alətlər yaratmaq, iş axınını avtomatlaşdırmaq və insanlar üçün həqiqətən işləyən sistemləri layihələndirmək haqqında düşüncələrinizi əsaslı şəkildə dəyişir.

"Lil' Fun Langs" tam olaraq nədir?

Proqramlaşdırma dünyası heç vaxt istehsal serverlərini gücləndirmək və ya milyonlarla əməliyyatları emal etmək üçün nəzərdə tutulmayan dillərlə doludur. Lox (Robert NystromunCrafting Interpreters əsərindən), Meymun (Thorsten Ball-ınWriting an Interpreter in Go əsərindən) və ya hətta Brainfuck və Chef kimi zarafat dilləri öyrətmək, əyləndirmək və "dil"in nə demək olduğunun sərhədlərini aşmaq üçün mövcuddur. Bu kiçik dillər real dünya alətləri zəncirlərinin mürəkkəbliyini aradan qaldırır və kodun necə fəaliyyətə çevrilməsinin xam mexanikasını ifşa edir.

Lakin "ləzzətli əyləncələr" təkcə maarifləndirici məşqlərlə məhdudlaşmır. Domenə xas dillər bazarda ən effektiv biznes alətlərindən bəzilərini gücləndirir. Hər dəfə elektron cədvəldə düstur yazdıqda, e-poçt müştərinizdə filtr qaydasını təyin etdikdə və ya Mewayz kimi platformada avtomatlaşdırma işini konfiqurasiya etdikdə kiçik, məqsədyönlü dillə qarşılıqlı əlaqədə olursunuz. Mewayz daxilində olan 207 modul – CRM, faktura, HR, donanma idarəçiliyi və daha çoxunu əhatə edir – daxili qayda mühərriklərinə və ifadə analizatorlarına əsaslanır ki, onlar da öz əsas etibarilə kompüter elmi dərəcəsi tələb etmədən istifadəçilərə güc vermək üçün nəzərdə tutulmuş kiçik dillərdir.

Bu dillərin anatomiyasını başa düşmək bəzi alətlərin nə üçün intuitiv, digərlərinin isə başqa ölçüdə yazılmış təlimatla mübarizə aparmaq kimi hiss etdiyini aşkar edir.

The Lexer: Sözləri Atomlara Parçalamaq

Hər bir dil, nə qədər kiçik olsa da, eyni fundamental addımla başlayır: leksik təhlil və ya "leksikləşdirmə". Lexer xam simvollar silsiləsi götürür - total = price * quantity + tax kimi bir şey - və onu əlamətlər adlanan mənalı hissələrə bölür. Lexer hələ mənaya əhəmiyyət vermir. O, sadəcə müəyyən edir ki, total identifikator, = təyinat operatoru, price başqa identifikator, * vurma və s.

Kiçik bir dil üçün lüğət yaratmaq təəccüblü dərəcədə qənaətbəxşdir. 100-dən az kod sətirində siz proqrama rəqəmləri, sətirləri, açar sözləri və operatorları tanımaq üçün öyrədə bilərsiniz. Əsas odur ki, sadəlik sizi dilinizin mütləq minimum “sözlər” toplusunun nəyə ehtiyacı olduğunu düşünməyə vadar edir. Eyni düşüncə, istifadəçiyə yönəlmiş alətlər dizayn edərkən də tətbiq olunur. Mewayz-in avtomatlaşdırma mühərriki kiçik biznes sahibinə "qaimə-fakturanın vaxtı 7 gün keçdikdə, xatırlatma e-poçtu göndərin" kimi bir qayda yaratmağa icazə verdikdə, sistem bu qaydanı sakitcə işləyə biləcəyi strukturlaşdırılmış işarələrə çevirir. Ən yaxşı interfeyslər asan görünür, çünki kimsə istifadəçi niyyətinin ən kiçik mənalı vahidlərinin necə göründüyü barədə dərindən düşünür.

Parsing: Düz Tokenləri Canlı Ağaclara çevirmək

Tokenlər əldə etdikdən sonra sizə struktur lazımdır. Ayrışdırma düz işarələr ardıcıllığını Abstrakt Sintaksis Ağacına (AST) çevirir - ifadənin müxtəlif hissələri arasındakı əlaqələri tutan iyerarxik təsvir. 3 + 4 * 5 ifadəsi sadəcə beş işarədən ibarət ardıcıllıq deyil; bu, vurmanın toplamadan daha sıx bağlandığı ağacdır və 35 əvəzinə 23 verir.

İşlərin əsl əyləncəli olduğu yer budur. Rekursiv eniş və ya Pratt təhlili kimi təhlil alqoritmləri tək bir fayla uyğun gələn, lakin təəccüblü dərəcədə mürəkkəb qrammatikaları idarə edə bilən zərif mühəndislik parçalarıdır. Xüsusilə rekursiv eniş təhlilçiləri demək olar ki, dilin özünün spesifikasiyası kimi oxuyurlar – hər bir funksiya qrammatik qaydaya uyğundur və kodu proqram təminatının işlənib hazırlanmasında nadir rast gəlinən şəkildə özünü sənədləşdirir.

Analizdən alınan dərslər dil dizaynından çox kənara çıxır. Strukturlaşdırılmış daxiletməni emal edən hər hansı bir sistem - tarix diapazonları olan sifariş forması, şərti qaydalara malik əmək haqqı konfiqurasiyası, budaqlanan məntiqə malik CRM boru kəməri - təhlil problemini həll edir. Mewayz platformasındakı 138.000+ istifadəçi hər gün mürəkkəb, strukturlaşdırılmış məlumat yaradır. Təhlilçilərin qeyri-müəyyən daxiletməni birmənalı struktura necə çevirdiyini başa düşmək, kənar halları zərif şəkildə idarə edən sistem qurmaqla kiminsə gözlənilməz formatda tarixə daxil olduğu anı pozan sistem qurmaq arasındakı fərqdir.

Tərcüməçi: Kod Harada Canlanır

Tərcüməçi sehrin baş verdiyi yerdir. O, AST-ı, node-node gəzir və icra edir. Nömrə qovşağı öz dəyərini qaytarır. İkili əməliyyat nodu sol və sağ uşaqlarını qiymətləndirir və onları birləşdirir. Funksiya çağırışı funksiyanı mühitdə axtarır, arqumentləri bağlayır və bədəni qiymətləndirir. Oyuncaq dilində bütün tərcüməçi 200-300 sətir ola bilər – beyninizdə tutacaq qədər kiçik, lakin real proqramları işlətmək üçün kifayət qədər güclüdür.

İcra üçün iki geniş yanaşma var: ağacda gəzən tərcüməçilər və bayt kodlu virtual maşınlar. Ağac gəzintiləri daha sadə, lakin daha yavaşdır; AST-dən birbaşa keçirlər. Bytecode VM-lər AST-ni sadə təlimatlar ardıcıllığına (kiçik montaj dili kimi) tərtib edir və onların yerinə onları yerinə yetirir, dramatik şəkildə daha yaxşı performans üçün icra mürəkkəbliyi ilə ticarət edir. Standart Python tətbiqi olan CPython bayt kodu VM-dən istifadə edir. Ən səmərəli daxil edilə bilən dillərdən biri olan Lua bütün dünyada oyun mühərriklərinə təsir edən registr əsaslı VM dizaynına öncülük etdi.

Əsas fikir: Ən güclü biznes alətləri ən çox funksiyaya malik olanlar deyil – onlar istifadəçilərin həqiqətən ehtiyac duyduqlarını ifadə etmək üçün ən yaxşı daxili "dilə" malik olanlardır. Hər bir qayda mühərriki, formula sistemi və avtomatlaşdırma qurucusu maskalanmış kiçik tərcüməçidir. Həmin tərcüməçinin keyfiyyəti alətin 10 istifadəçidən 100.000 istifadəçiyə qədər miqyasını müəyyənləşdirir.

💡 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 →

Ətraf mühit və əhatə dairəsi: Dövlətin Gizli Arxitekturası

Dilin tətbiqində ən çətin anlayışlardan biri - və biznes proqram təminatına birbaşa tətbiq oluna bilən anlayışlardan biri dillərin mühit və əhatə dairəsi vasitəsilə vəziyyəti necə idarə etməsidir. Funksiya daxilində dəyişən təyinatı yazdığınız zaman həmin dəyişən sızmamalı və qlobal miqyasda bir şeyin üzərinə yazmamalıdır. Bu açıq səslənir, lakin onun düzgün həyata keçirilməsi üçün mühit zənciri adlı məlumat strukturu tələb olunur: hər səviyyənin əhatə dairəsini təmsil etdiyi heş xəritələrin əlaqəli siyahısı və dəyişən axtarışları uyğunluq tapana qədər zəncir boyunca irəliləyir.

Bu nümunə yaxşı dizayn edilmiş proqram təminatında hər yerdə görünür. Biznes platformasında istifadəçi icazələri eyni şəkildə işləyir – komanda üzvünün girişi əvvəlcə onların fərdi icazələrini, sonra rolunun icazələrini, sonra təşkilatın defoltlarını yoxlamaqla müəyyən edilir. Link-in-bio səhifələrindən tutmuş tam əmək haqqı emalına qədər hər şeyi əhatə edən Mewayz modul sistemi bu dəqiq prinsipi əks etdirən laylı konfiqurasiyadan istifadə edir. Biznes sahibi təşkilat üzrə defoltları təyin edir, departament menecerləri xüsusi parametrləri ləğv edə bilər və fərdi istifadəçilər öz iş yerlərini fərdiləşdirə bilərlər – hamısı münaqişə olmadan.

Proqramlaşdırma dilində əhatə dairəsini səhv əldə etmək səhvlərə səbəb olur. Biznes platformasında əhatə dairəsinin səhv olması məlumat sızmasına, icazələrin artmasına və real pula başa gələn əməliyyat xaosa səbəb olur. Dərslər abstraksiyanın hər səviyyəsində eynidir.

Kiçik bir dil qurmaq sizə əslində nəyi öyrədir

Əgər heç vaxt kiçik proqramlaşdırma dili yaratmamısınızsa, təcrübənin konkret olaraq öyrətdiyi budur – və sizin inkişaf etdirici, texniki təsisçi və ya sadəcə onların hər gün istifadə etdiyi alətləri anlamaq istəyən biri olmağınızın nə üçün vacibliyi:

  • fikrin dəqiqliyi: Qrammatikanı təyin edərkən qeyri-müəyyən ola bilməzsiniz. Dil spesifikasiyanızdakı hər bir qeyri-müəyyənlik analizatorunuzda səhvə çevrilir. Bu intizam birbaşa olaraq daha yaxşı spesifikasiyaların, daha aydın sənədlərin və daha dəqiq xüsusiyyət tələblərinin yazılmasına keçir.
  • İstifadəçilər üçün empatiya: Dil dizayn edərkən, insan düşüncəsi üçün interfeys dizayn etmiş olursunuz. Siz soruşmağı öyrənirsiniz: "İstifadəçi bununla nəyi nəzərdə tutur?" — hər bir məhsul haqqında qərar verməli olan sual.
  • Performans intuisiyası: Siz bəzi əməliyyatların niyə sürətli, digərlərinin isə yavaş olduğunu öyrənirsiniz, bunu etalonları oxumaqla deyil, tərcüməçinin dəqiq neçə addım atdığını görməkdən öyrənirsiniz. Bu, miqyaslı sistemləri dizayn etməyinizi daha yaxşı edir.
  • Sazlama ustalığı: Diliniz yanlış nəticə çıxardıqda, gizlənməyə heç bir yeriniz yoxdur. Günahlandırmaq üçün heç bir çərçivə yoxdur, kitabxana versiyası münaqişəsi yoxdur. Bu sizin məntiqiniz, məlumat strukturlarınız, alqoritminizdir. Bu, yaxşı mühəndisləri böyüklərdən ayıran dərin sazlama bacarığını formalaşdırır.
  • Mücərrədliyə görə minnətdarlıq: Siz daha yüksək səviyyəli dillərin niyə seçdiklərini başa düşürsünüz – niyə JavaScript bağlanır, niyə Python əhəmiyyətli boşluq seçdi, nə üçün Rust-un borc yoxlaması var. Bunlar özbaşına qərarlar deyil; onlar öz tətbiqinizdə qarşılaşacağınız real problemlərin həlli yollarıdır.

Oyuncaq dillərindən real dünya avtomatlaşdırılmasına

Oyuncaq dili ilə istehsalın avtomatlaşdırılması mühərriki arasındakı boşluq əksər insanların düşündüyündən daha kiçikdir. Shopify-ın Liquid şablon dili sadə, təhlükəsiz şablon sistemi kimi başladı və indi milyonlarla vitrinləri gücləndirir. GitHub Actions'ın iş axını sintaksisi YAML üzərində qurulmuş domenə xas dildir. Stripe-in ​​Sigma sorğu dili maliyyə qruplarına SQL yazmadan ödəniş məlumatlarını sorğulamağa imkan verir. Bunların hər biri birinin soruşması ilə başladı: "Bu xüsusi problemi həll edən ən kiçik, ən sadə dil nədir?"

Bu, biznes əməliyyatlarını vahid ekosistemdə birləşdirməyi hədəfləyən platformaların arxasında duran eyni fəlsəfədir. Mewayz 207 modulu üzrə 50 işçi üçün əmək haqqı cədvəli ilə çalışan orta ölçülü şirkətə bio səhifəsinə ehtiyacı olan frilanserə xidmət etdikdə, əsas problem hər bir dil dizaynerinin qarşılaşdığı problemdir: yeni başlayanlar üçün kifayət qədər sadə, lakin mürəkkəb istifadə halları üçün kifayət qədər güclü sistemi necə yaratmaq olar? Cavab, hər hansı bir dil tətbiqçisinin sizə deyəcəyi kimi, ibtidai elementləri düzgün əldə etməkdir - istifadəçilərin dizaynerin heç gözləmədiyi üsullarla birləşdirə biləcəyi kiçik, birləşdirilə bilən tikinti blokları.

Növbəti dəfə avtomatlaşdırma qaydasını konfiqurasiya etdikdə, fərdi idarə paneli quranda və ya hər hansı biznes alətində şərti iş axını quranda, yadda saxlayın: siz əyləncəli bir dildə proqram yazırsınız. Kimsə sizin niyyətinizi yerinə yetirmək üçün bu dilin bağırsaqlarını - onun leksik, təhlilçi və tərcüməçisini hazırlayıb. Və onların işinin keyfiyyəti, təcrübənizin sehrli və ya bədbəxtlik kimi olduğunu müəyyən edən görünməz qüvvədir. Bu cəsarətləri hətta səth səviyyəsində dərk etmək sizə super güc verir: interfeysin altındakı maşını görmək, onun harada qırılacağını təxmin etmək və onu öz dizaynerlərinin təsəvvür etdiyindən daha da irəli aparmaq bacarığı.

Bu gün Biznes ƏS-inizi Yaradın

Frilanserlərdən tutmuş agentliklərə qədər Mewayz 207 inteqrasiya modulu ilə 138.000+ biznesə səlahiyyət verir. Pulsuz başlayın, böyüdükcə təkmilləşdirin.

Pulsuz Hesab Yaradın→

Tez-tez verilən suallar

"Lil' fun langs" nədir və mən nəyə görə maraqlanmalıyam?

Lil' əyləncəli dillər xüsusi ideyaları araşdırmaq və ya əsas anlayışları öyrətmək üçün yaradılmış kiçik, eksperimental proqramlaşdırma dilləridir. Onlar həftə sonu yazılan oyuncaq tərcüməçilərdən tutmuş dar tapşırıqlar üçün nəzərdə tutulmuş domenə aid dillərə (DSL) qədər müxtəlifdir. Onların necə işlədiyini başa düşmək sizə gündəlik etibar etdiyiniz biznes alətləri də daxil olmaqla bütün proqram təminatının necə işlədiyi barədə daha dərin fikir verir. Bu bilik sizi avtomatlaşdırma sistemlərini seçərkən və ya qurarkən daha dəqiq tərtibatçı və daha məlumatlı qərar qəbul edən şəxs edir.

Dilin daxili xüsusiyyətlərini öyrənmək biznesin avtomatlaşdırılmasına necə kömək edir?

Tərcümə, qiymətləndirmə və tərcüməçilər kimi anlayışları başa düşdüyünüz zaman avtomatlaşdırmaya fərqli baxmağa başlayırsınız. Siz iş axını qurucularında, şablon mühərriklərində və qayda sistemlərində nümunələri tanıyırsınız. Mewayz kimi platformalar kod yazmadan faktura, CRM iş axınlarını və daha çoxunu avtomatlaşdırmağa imkan vermək üçün 207 modulunda eyni prinsiplərdən istifadə edir. Əsasları bilmək bu alətləri daha da irəli aparmağa və problemləri daha sürətli həll etməyə kömək edir.

Kiçik bir dil yaratmaq üçün mənə kompüter elmi dərəcəsi lazımdır?

Heç yox. Bir çox tərtibatçı dərsliklərdən və açıq mənbəli bələdçilərdən istifadə edərək bir həftə sonu öz ilk tərcüməçini qurur. Python və JavaScript kimi dillər əsas lexer, parser və qiymətləndirici yazmağı asanlaşdırır. Məqsəd növbəti istehsal dilini yaratmaq deyil, bunu etməklə öyrənməkdir. Hətta sadə bir kalkulyator dili sizə ifadələrin necə təhlil edildiyini və icra olunduğunu, birbaşa real dünyada inkişafa ötürən bacarıqları öyrədir.

DSL-ləri başa düşmək mənə daha yaxşı biznes alətləri seçməyə kömək edə bilərmi?

Mütləq. Bir çox biznes platforması düsturlar, filtrlər və iş axını qaydaları üçün domenə xas dilləri yerləşdirir. DSL-lərin başlıq altında necə işlədiyini başa düşsəniz, alətləri daha tənqidi qiymətləndirə bilərsiniz. Məsələn, Mewayz modulları arasında daxili avtomatlaşdırma məntiqi ilə ayda 19 dollardan başlayan hərtərəfli biznes əməliyyat sistemi təklif edir. DSL konsepsiyalarını bilmək, səthi cızmaq əvəzinə, bu funksiyalardan tam istifadə etməyə kömək edir.

deyil, bu funksiyalardan tam istifadə etməyə kömək edir

Try Mewayz Free

All-in-one platform for CRM, invoicing, projects, HR & more. No credit card required.

Start managing your business smarter today

Join 6,203+ businesses. Free forever plan · No credit card required.

Ready to put this into practice?

Join 6,203+ businesses using Mewayz. Free forever plan — no credit card required.

Start Free Trial →

Ready to take action?

Start your free Mewayz trial today

All-in-one business platform. No credit card required.

Start Free →

14-day free trial · No credit card · Cancel anytime