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

Lil' Fun Langs' Guts

Пікірлер

1 min read Via taylor.town

Mewayz Team

Editorial Team

Hacker News

Неліктен кішкентай бағдарламалау тілдерінің астына қарау сізді жақсы құрастырушы етеді

Сіз пайдаланатын бағдарламалық құралдың әрбір бөлігі — тұтынушыларды қадағалайтын CRM жүйесінен бастап түн ортасында шот-фактураларды жіберетін автоматтандыру жүйесіне дейін — бағдарламалау тілімен жасалған. Бірақ сіз бағдарламалау тілін белгілеуге не беретінін ойлап көрдіңіз бе? Python немесе JavaScript сияқты ауқымды экожүйелер емес, бірақ әзірлеушілер бір мәселені шешу үшін немесе жай ғана үйрену үшін демалыс күндері құрастыратын шағын, қиыршық, керемет оғаш жүйелер. Бұл «қызықты тілдер» - ойыншық тілдері, доменге арналған тілдер (DSL) және білім беру аудармашылары - информатикадағы ең талғампаз идеялардың кейбірі өмір сүретін жерде. Олардың ішкі қасиеттерін түсіну сізді жақсы бағдарламашы етіп қана қоймайды; ол шын мәнінде адамдар үшін жұмыс істейтін құралдарды құру, жұмыс процестерін автоматтандыру және жүйелерді жобалау туралы көзқарасыңызды түбегейлі өзгертеді.

"Lil' Fun Langs" дегеніміз не?

Бағдарламалау әлемі ешқашан өндірістік серверлерді қуаттандыруға немесе миллиондаған транзакцияларды өңдеуге арналмаған тілдерге толы. Lox (Роберт НистромныңАудармашылар шеберінен), Маймыл (Торстен БоллдыңGo тілінде аудармашы жазу) сияқты тілдер немесе тіпті Brainfuck және Chef сияқты әзіл тілдері оқыту, көңіл көтеру және "тіл" дегеннің шекарасын ұлғайту үшін бар. Бұл шағын тілдер нақты әлемдегі құралдар тізбегінің күрделілігін жояды және кодтың әрекетке айналуының өңделмеген механикасын көрсетеді.

Бірақ "lil' fun langs" тек білім беру жаттығуларымен шектелмейді. Доменге тән тілдер нарықтағы ең тиімді бизнес құралдарының кейбірін қуаттайды. Электрондық кестеде формула жазған сайын, электрондық пошта клиентінде сүзгі ережесін анықтаған сайын немесе Mewayz сияқты платформада автоматтандыру жұмыс процесін конфигурациялаған сайын, сіз шағын, арнайы жасалған тілмен әрекеттесесіз. Mewayz ішіндегі 207 модуль — CRM, шот-фактура, HR, флотты басқару және т.б. қамтиды — ішкі ережелер қозғалтқыштары мен өрнек талдауыштарына сүйенеді, олар негізінен информатика дәрежесін қажет етпестен пайдаланушыларға қуат беруге арналған шағын тілдер болып табылады.

Осы тілдердің анатомиясын түсіну кейбір құралдардың неліктен интуитивті екенін, ал басқаларының басқа өлшемде жазылған нұсқаулықпен күресуді қалайтынын көрсетеді.

Лексер: сөздерді атомдарға бөлу

Кішкентай болса да, әрбір тіл бірдей іргелі қадамнан басталады: лексикалық талдау немесе «лексика». Лексер таңбалардың шикі жолын алады — total = price * quantity + tax сияқты нәрсе — және оны таңбалауыштар деп аталатын мағыналы бөліктерге бөледі. Лексатор әлі мағынаға мән бермейді. Ол жай ғана total - идентификатор, = - тағайындау операторы, price - басқа идентификатор, * - көбейту және т.б.

екенін анықтайды.

Кішкентай тіл үшін лексиканы құру таңқаларлықтай қанағаттандырады. 100-ден аз код жолында сіз бағдарламаны сандарды, жолдарды, кілт сөздерді және операторларды тануға үйрете аласыз. Қарапайымдылық - бұл сіздің тіліңізге «сөздердің» абсолютті минималды жиынтығы не қажет екендігі туралы ойлауға мәжбүр етеді. Дәл осындай ойлау пайдаланушыға арналған құралдарды жобалау кезінде қолданылады. Mewayz автоматтандыру механизмі шағын бизнес иесіне «шот-фактураның мерзімі 7 күнге кешіктірілген кезде, еске салғыш электрондық поштасын жіберіңіз» сияқты ережені орнатуға мүмкіндік бергенде, жүйе бұл ережені әрекет ете алатын құрылымдық белгілерге үнсіз түрде енгізеді. Ең жақсы интерфейстер оңай жұмыс істейді, себебі біреу пайдаланушы ниетінің ең кіші мағыналы бірліктері қандай болатынын терең ойлады.

Талдау: жалпақ белгілерді тірі ағаштарға айналдыру

Токендер болғаннан кейін сізге құрылым қажет. Талдау таңбалауыштардың жалпақ тізбегін дерексіз синтаксистік ағашқа (AST) түрлендіреді — өрнектің әртүрлі бөліктері арасындағы қатынастарды қамтитын иерархиялық көрініс. 3 + 4 * 5 өрнегі жай бес таңбалау тізбегі емес; бұл көбейту қосуға қарағанда тығыз байланысатын ағаш, 35 орнына 23 шығарады.

Осы жерде іс шынымен қызық болады. Рекурсивті шығу немесе Пратт талдауы сияқты талдау алгоритмдері бір файлға сәйкес келетін, бірақ таңқаларлық күрделі грамматиканы өңдей алатын талғампаз инженерия бөліктері болып табылады. Рекурсивті төмендеу талдаушылары, атап айтқанда, тілдің спецификациясы іспетті дерлік оқылады — әрбір функция грамматикалық ережеге сәйкес келеді, бұл кодты бағдарламалық жасақтаманы әзірлеуде сирек кездесетін тәсілмен өздігінен құжаттайды.

Талдау сабақтары тіл дизайнынан әлдеқайда кең. Құрылымдық енгізуді өңдейтін кез келген жүйе — күндер диапазоны бар брондау пішіні, шартты ережелері бар жалақы конфигурациясы, тармақталған логикасы бар CRM құбыры — талдау мәселесін шешеді. Mewayz платформасындағы 138 000+ пайдаланушылар күн сайын күрделі, құрылымдық деректерді жасайды. Талдаушылардың анық емес енгізуді бірмәнді құрылымға қалай айналдыратынын түсіну - шеткі регистрлерді әдемі өңдейтін жүйені құру мен біреу күтпеген форматта күнді енгізген сәтін бұзатын жүйе құру арасындағы айырмашылық.

Аудармашы: код қай жерде тірі болады

Аудармашы - бұл сиқырдың орын алатын жері. Ол AST бойынша, түйін бойынша жүреді және оны орындайды. Сандық түйін өз мәнін қайтарады. Екілік операция түйіні өзінің сол және оң жақ еншілестерін бағалайды және оларды біріктіреді. Функция шақыруы функцияны ортада іздейді, аргументтерді байланыстырады және денені бағалайды. Ойыншық тілінде барлық аудармашы 200-300 жолды құрауы мүмкін — бұл сіздің басыңызға сыймайтындай кішкентай, бірақ нақты бағдарламаларды іске қосу үшін жеткілікті күшті.

Орындаудың екі кең тәсілі бар: ағашпен жүретін аудармашылар және байт кодтық виртуалды машиналар. Ағашпен жүретіндер қарапайымырақ, бірақ баяу; олар АСТ арқылы тікелей өтеді. Bytecode VM құрылғылары AST-ті қарапайым нұсқаулар тізбегіне (мысалы, кішкентай құрастыру тілі) құрастырады және олардың орнына оларды орындайды, айтарлықтай жақсырақ өнімділік үшін іске асырудың күрделілігін саудалайды. CPython, стандартты Python іске асыруы байт кодты VM пайдаланады. Ең тиімді ендірілген тілдердің бірі Луа дүние жүзіндегі ойын қозғалтқыштарына әсер еткен регистр негізіндегі VM дизайнын бастады.

Негізгі түсінік: Ең қуатты бизнес құралдары ең көп мүмкіндіктері бар құралдар емес — олар пайдаланушыларға шын мәнінде қажет нәрсені білдіретін ең жақсы ішкі "тіл" бар құралдар. Әрбір ереже қозғалтқышы, формулалар жүйесі және автоматтандыру құрастырушысы жасырын түрде кішкентай аудармашы болып табылады. Бұл аудармашының сапасы құралдың 10 пайдаланушыдан 100 000-ға дейін масштабтауын анықтайды.

💡 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's қарыз тексерушісі бар. Бұл ерікті шешімдер емес; олар сіздің жеке іске асыруыңызда кездесетін нақты мәселелердің шешімдері.

Ойыншықтар тілдерінен нақты әлемдегі автоматтандыруға дейін

Ойыншық тілі мен өндірісті автоматтандыру қозғалтқышы арасындағы алшақтық көптеген адамдар ойлағаннан азырақ. Shopify Liquid үлгілеу тілі қарапайым, қауіпсіз үлгі жүйесі ретінде басталды және қазір миллиондаған дүкен сөрелеріне қуат береді. GitHub Actions жұмыс үрдісінің синтаксисі YAML негізінде құрылған доменге тән тіл болып табылады. Stripe компаниясының Sigma сұрау тілі қаржылық топтарға SQL жазбасынсыз төлем деректерін сұрауға мүмкіндік береді. Олардың әрқайсысы біреудің: «Осы нақты мәселені шешетін ең кішкентай, ең қарапайым тіл қандай?» деп сұраудан басталды.

Бұл бизнес операцияларын бір экожүйеге біріктіруді мақсат ететін платформалардың артындағы дәл осындай философия. Mewayz өзінің 207 модулі бойынша 50 қызметкердің жалақысын есептейтін орта компанияғажәне биодағы сілтемені қажет ететін фрилансерге қызмет көрсеткенде, негізгі мәселе әрбір тіл дизайнеріне тап болады: жаңадан бастағандар үшін қарапайым, бірақ күрделі пайдалану жағдайлары үшін жеткілікті қуатты жүйені қалай жасауға болады? Жауап, кез келген тілді іске асырушы сізге айтатындай, қарапайым мәндерді дұрыс алуда жатыр — пайдаланушылар дизайнер ешқашан күтпеген тәсілдермен біріктіре алатын шағын, құрастырылатын құрылыс блоктары.

Келесі рет автоматтандыру ережесін конфигурациялағанда, реттелетін бақылау тақтасын жасағанда немесе кез келген іскери құралда шартты жұмыс процесін орнатқанда, есте сақтаңыз: сіз бағдарламаны өте қызықты тілде жазасыз. Сіздің ниетіңізді орындауға болатындай ету үшін біреу сол тілдің лексикасын, талдаушысын және аудармашысын жобалаған. Олардың жұмысының сапасы сіздің тәжірибеңіз сиқырлы немесе қасірет сияқты екенін анықтайтын көрінбейтін күш болып табылады. Бұл қасиеттерді, тіпті беткі деңгейде де түсіну сізге керемет күш береді: интерфейстің астындағы машинаны көру, оның қай жерде бұзылатынын болжау және оны дизайнерлер ойлағаннан да алға жылжыту мүмкіндігі.

Бүгінгі күні өз бизнесіңізді құрыңыз

Фрилансерлерден агенттіктерге дейін, Mewayz 207 біріктірілген модульдері бар 138 000+ бизнеске қуат береді. Тегін бастаңыз, өскен кезде жаңартыңыз.

Тегін тіркелгі жасау→

Жиі қойылатын сұрақтар

"Lil' fun langs" деген не және мен не үшін ойлануым керек?

Lil' қызық langs - бұл нақты идеяларды зерттеу немесе негізгі ұғымдарды үйрету үшін жасалған шағын, эксперименттік бағдарламалау тілдері. Олар демалыс күндері жазылған ойыншық аудармашылардан тар тапсырмаларға арналған домендік тілдерге (DSL) дейін. Олардың қалай жұмыс істейтінін түсіну сізге барлық бағдарламалық жасақтаманың қалай жұмыс істейтінін, соның ішінде сіз күнделікті пайдаланатын бизнес құралдарын тереңірек түсінуге мүмкіндік береді. Бұл білім сізді автоматтандыру жүйелерін таңдау немесе құру кезінде анағұрлым нақты әзірлеуші және неғұрлым хабардар шешім қабылдаушы етеді.

Ішкі тілді үйрену бизнесті автоматтандыруға қалай көмектеседі?

Талдау, бағалау және аудармашылар сияқты ұғымдарды түсінген кезде автоматтандыруды басқаша көре бастайсыз. Сіз жұмыс үрдісін құрастырушылардағы, үлгі қозғалтқыштарындағы және ереже жүйелеріндегі үлгілерді танисыз. Mewayz сияқты платформалар шот-фактураны, CRM жұмыс процестерін және т.б. автоматтандыруға мүмкіндік беру үшін өздерінің 207 модулінде дәл осы принциптерді пайдаланады - барлығы код жазбай-ақ. Негіздерді білу бұл құралдарды ілгерілетуге және ақаулықтарды тезірек жоюға көмектеседі.

Шағын тіл жасау үшін маған информатика дәрежесі қажет пе?

Мүлдем емес. Көптеген әзірлеушілер оқулықтар мен ашық бастапқы нұсқаулықтарды пайдаланып бір демалыс күндері өздерінің алғашқы аудармашысын жасайды. Python және JavaScript сияқты тілдер негізгі лексерді, талдаушыны және бағалаушыны жазуды жеңілдетеді. Мақсат келесі өндіріс тілін жасау емес, ол әрекет арқылы үйрену. Тіпті қарапайым калькулятор тілі өрнектерді талдау және орындау әдісін, нақты әлемді дамытуға тікелей ауысатын дағдыларды үйретеді.

DSLs түсіну маған жақсырақ бизнес құралдарын таңдауға көмектесе ала ма?

Мүлдем. Көптеген іскери платформалар формулалар, сүзгілер және жұмыс процесі ережелері үшін доменге тән тілдерді ендіреді. DSL қалай жұмыс істейтінін түсінгенде, құралдарды сыни тұрғыдан бағалай аласыз. Мысалы, Mewayz модульдері бойынша кірістірілген автоматтандыру логикасы бар айына 19 доллардан басталатын кешенді бизнес ОЖ ұсынады. DSL концепцияларын білу бетті сызып тастамай, сол мүмкіндіктерді толығымен пайдалануға көмектеседі.

емес, осы мүмкіндіктерді толық пайдалануға көмектеседі

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