Lil' Fun Langs' Guts
Մեկնաբանություններ
Mewayz Team
Editorial Team
Ինչու ծրագրավորման փոքր լեզուների գլխարկի տակ նայելը ձեզ ավելի լավ կառուցող է դարձնում
Ձեր կողմից օգտագործվող ծրագրաշարի յուրաքանչյուր կտոր՝ սկսած CRM-ից, որը հետևում է ձեր առաջատարներին մինչև կեսգիշերին հաշիվ-ապրանքագրեր ուղարկող ավտոմատացման շարժիչը, ստեղծվել է ծրագրավորման լեզվով: Բայց երբևէ մտածե՞լ եք, թե ինչն է ստիպում ծրագրավորման լեզուն թիկացնել: Ոչ թե հսկայական էկոհամակարգերը, ինչպիսիք են Python-ը կամ JavaScript-ը, այլ փոքր, բեկորային, հաճելիորեն տարօրինակները, որոնք մշակողները կառուցում են շաբաթավերջում մեկ խնդիր լուծելու կամ պարզապես սովորելու համար: Այս «lil' fun langs»-ը` խաղալիքների լեզուներ, տիրույթի հատուկ լեզուներ (DSL) և կրթական թարգմանիչներ, այն վայրերն են, որտեղ ապրում են համակարգչային գիտության ամենաէլեգանտ գաղափարները: Հասկանալով նրանց փորոտիքները ոչ միայն ձեզ ավելի լավ ծրագրավորող է դարձնում. այն հիմնովին փոխում է ձեր կարծիքը գործիքների ստեղծման, աշխատանքային հոսքերի ավտոմատացման և մարդկանց համար իրականում աշխատող համակարգերի նախագծման մասին:
Ի՞նչ են կոնկրետ «Lil' Fun Langs»-ը:
Ծրագրավորման աշխարհը լի է լեզուներով, որոնք երբեք նախատեսված չեն եղել արտադրական սերվերների սնուցման կամ միլիոնավոր գործարքների մշակման համար: Լոքսը (Ռոբերտ Նիստրոմի Crafting Interpreters-ից), Monkey (Thorsten Ball-ի Writing an Interpreter in Go) կամ նույնիսկ կատակային լեզուները, ինչպիսիք են Brainfuck-ը և Chef-ը, գոյություն ունեն սովորեցնելու, զվարճացնելու և նույնիսկ «լեզու» նշանակության սահմանները մղելու համար: Այս փոքր լեզուները վերացնում են իրական աշխարհի գործիքների շղթաների բարդությունը և բացահայտում են այն հումքի մեխանիզմը, թե ինչպես է կոդը դառնում գործողություն:
Սակայն «lil' fun langs»-ը չի սահմանափակվում միայն կրթական վարժություններով: Դոմեյնին հատուկ լեզուները հզորացնում են շուկայի ամենաարդյունավետ բիզնես գործիքներից մի քանիսը: Ամեն անգամ, երբ դուք բանաձև եք գրում աղյուսակում, սահմանում եք ֆիլտրի կանոն ձեր էլփոստի հաճախորդում կամ կարգավորում եք ավտոմատացման աշխատանքային հոսքը այնպիսի հարթակում, ինչպիսին է Mewayz-ը, դուք շփվում եք փոքր, նպատակային լեզվով: Mewayz-ի 207 մոդուլները, որոնք ներառում են CRM, հաշիվ-ապրանքագրեր, HR, նավատորմի կառավարում և այլն, հիմնված են ներքին կանոնների շարժիչների և արտահայտությունների վերլուծիչների վրա, որոնք իրենց հիմքում փոքր լեզուներ են, որոնք նախատեսված են օգտատերերին հզորություն տրամադրելու համար՝ առանց համակարգչային գիտության աստիճան պահանջելու:
Այս լեզուների անատոմիայի ըմբռնումը ցույց է տալիս, թե ինչու են որոշ գործիքներ զգում ինտուիտիվ, մինչդեռ մյուսները ցանկանում են պայքարել այլ հարթությունում գրված ձեռնարկի հետ:
Լեքսերը. Բառերը ատոմների բաժանելը
Յուրաքանչյուր լեզու, անկախ նրանից, թե որքան փոքր է, սկսվում է նույն հիմնարար քայլից՝ բառապաշարային վերլուծություն կամ «lexing»: Լեքսերը վերցնում է նիշերի չմշակված շարանը՝ total = գին * քանակ + հարկ — և այն բաժանում է իմաստալից կտորների, որոնք կոչվում են նշաններ: Լեքսերը դեռ թքած ունի իմաստի վրա։ Այն պարզապես բացահայտում է, որ total-ը նույնացուցիչ է, =-ը նշանակման օպերատոր է, price-ը մեկ այլ նույնացուցիչ է, *-ը բազմապատկում է և այլն:
Փոքրիկ լեզվի համար lexer կառուցելը զարմանալիորեն գոհացուցիչ է: 100 տողից քիչ կոդով դուք կարող եք սովորեցնել ծրագրին ճանաչել թվերը, տողերը, հիմնաբառերը և օպերատորները: Պարզությունն այն է, ինչը ձեզ ստիպում է մտածել այն մասին, թե ինչ է անհրաժեշտ ձեր լեզվի «բառերի» բացարձակ նվազագույն շարքին: Այս նույն մտածողությունը կիրառվում է օգտատերերի համար նախատեսված գործիքների նախագծման ժամանակ: Երբ Mewayz-ի ավտոմատացման շարժիչը թույլ է տալիս փոքր բիզնեսի սեփականատիրոջը սահմանել այնպիսի կանոն, ինչպիսին է «երբ հաշիվ-ապրանքագիրը ուշանում է 7 օրով, ուղարկիր հիշեցման էլ. Լավագույն ինտերֆեյսներն առանց ջանքերի են զգացվում հենց այն պատճառով, որ ինչ-որ մեկը խորապես մտածել է, թե ինչ տեսք ունեն օգտագործողի մտադրության ամենափոքր իմաստալից միավորները:
Վերլուծում. տափակ նշանները կենդանի ծառերի վերածելը
Երբ դուք ունեք նշաններ, ձեզ անհրաժեշտ է կառուցվածք: Վերլուծումը փոխակերպում է նշանների հարթ հաջորդականությունը վերացական շարահյուսական ծառի (AST)՝ հիերարխիկ ներկայացում, որը արտացոլում է արտահայտության տարբեր մասերի միջև փոխհարաբերությունները: 3 + 4 * 5 արտահայտությունը պարզապես հինգ նշանի հաջորդականություն չէ. դա մի ծառ է, որտեղ բազմապատկումն ավելի ամուր է կապվում, քան գումարումը, 35-ի փոխարեն արտադրելով 23:
Այստեղ ամեն ինչ իսկապես զվարճալի է դառնում: Վերլուծման ալգորիթմները, ինչպիսիք են ռեկուրսիվ ծագումը կամ Pratt վերլուծությունը, ինժեներական նրբագեղ կտորներ են, որոնք տեղավորվում են մեկ ֆայլում, բայց կարող են կարգավորել զարմանալիորեն բարդ քերականությունները: Հատկապես ռեկուրսիվ ծագման վերլուծիչները կարդում են գրեթե որպես հենց լեզվի հստակեցում. յուրաքանչյուր գործառույթ համապատասխանում է քերականական կանոնին, ինչը թույլ է տալիս ծածկագիրը ինքնուրույն փաստաթղթավորել այնպիսի եղանակով, որը հազվադեպ է ծրագրային ապահովման մշակման մեջ:
Քարազերծումից ստացված դասերը գերազանցում են լեզվական ձևավորումը: Ցանկացած համակարգ, որը մշակում է կառուցվածքային մուտքագրումը՝ ամրագրման ձև՝ ամսաթվերի միջակայքերով, աշխատավարձի կազմաձևում՝ պայմանական կանոններով, CRM խողովակաշար՝ ճյուղավորվող տրամաբանությամբ, լուծում է վերլուծության խնդիր: Mewayz-ի պլատֆորմի 138,000+ օգտվողներն ամեն օր ստեղծում են բարդ, կառուցվածքային տվյալներ: Հասկանալը, թե ինչպես են վերլուծիչները երկիմաստ մուտքագրումը վերածում են միանշանակ կառուցվածքի, տարբերությունն է այնպիսի համակարգի կառուցման միջև, որը նրբագեղորեն մշակում է եզրային գործերը և այն համակարգը, որը խախտում է այն պահը, երբ ինչ-որ մեկը մուտքագրում է ամսաթիվ անսպասելի ձևաչափով:
Թարգմանիչը. Որտեղ կոդը կենդանի է դառնում
Թարգմանիչը այնտեղ է, որտեղ տեղի է ունենում կախարդանքը: Այն քայլում է AST-ը հանգույց առ հանգույց և կատարում այն: Թվային հանգույցը վերադարձնում է իր արժեքը: Երկուական գործողության հանգույցը գնահատում է իր ձախ և աջ երեխաները և միավորում դրանք: Ֆունկցիայի կանչը փնտրում է ֆունկցիան միջավայրում, կապում է փաստարկները և գնահատում մարմինը: Խաղալիքների լեզվով թարգմանիչը կարող է լինել 200-300 տող՝ բավականաչափ փոքր՝ ձեր գլխում պահելու համար, բայց բավականաչափ հզոր՝ իրական ծրագրեր գործարկելու համար:
Կատարման երկու լայն մոտեցում կա. Ծառ քայլողները ավելի պարզ են, բայց դանդաղ; նրանք ուղղակիորեն անցնում են ՀՍՏ-ով: Բայթկոդ VM-ները կազմում են AST-ը պարզ հրահանգների հաջորդականության մեջ (ինչպես փոքր անսամբլի լեզու) և փոխարենը կատարում դրանք՝ փոխանակելով իրականացման բարդությունը՝ կտրուկ ավելի լավ կատարման համար: CPython-ը՝ Python-ի ստանդարտ իրականացումը, օգտագործում է բայթկոդ 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-ը ծառայում է ֆրիլանչին, ում անհրաժեշտ է հղում bio-ում և միջին չափի ընկերություն, որն իր 207 մոդուլներում 50 աշխատակիցների համար աշխատավարձ է տրամադրում, հիմնական մարտահրավերը նույնն է, ինչի հետ բախվում է յուրաքանչյուր լեզվի դիզայներ. Պատասխանը, ինչպես ձեզ կասի լեզվի ցանկացած ներդրող, պարզունակության ճիշտ ձևակերպման մեջ է. փոքր, բաղադրելի շինանյութեր, որոնք օգտվողները կարող են միավորել այնպես, ինչպես դիզայները երբեք չէր ակնկալում:
Հաջորդ անգամ, երբ կարգավորեք ավտոմատացման կանոնը, ստեղծեք հատուկ վահանակ կամ ստեղծեք պայմանական աշխատանքային հոսք ցանկացած բիզնես գործիքի մեջ, հիշեք. դուք ծրագիր եք գրում շատ զվարճալի լեզվով: Ինչ-որ մեկը նախագծել է այդ լեզվի խորքերը՝ նրա lexer, վերլուծիչ և թարգմանիչ, որպեսզի ձեր մտադրությունը կատարվի: Եվ նրանց աշխատանքի որակն այն անտեսանելի ուժն է, որը որոշում է, թե արդյոք ձեր փորձը մոգություն է, թե դժբախտություն: Այդ խորամանկությունը հասկանալը, նույնիսկ մակերեսային մակարդակով, ձեզ գերհզորություն է տալիս՝ հնարավորություն տեսնելու մեքենան ինտերֆեյսի տակ, կանխատեսելու, թե որտեղ է այն կոտրվելու և այն ավելի հեռուն մղելու, քան երբևէ պատկերացրել են իր դիզայներները:
Կառուցեք ձեր բիզնեսի OS այսօր
Ֆրիլանսերներից մինչև գործակալություններ, Mewayz-ը 207 ինտեգրված մոդուլներով ապահովում է 138000+ բիզնես: Սկսեք անվճար, նորացրեք, երբ աճեք:
Անվճար ստեղծելՀաճախակի տրվող հարցեր
Որո՞նք են «lil' fun langs»-ը և ինչո՞ւ պետք է ինձ հոգ տանի:
Lil' fun langs-ը փոքր, փորձնական ծրագրավորման լեզուներ են, որոնք ստեղծվել են կոնկրետ գաղափարներ ուսումնասիրելու կամ հիմնական հասկացություններ սովորեցնելու համար: Դրանք տատանվում են՝ սկսած հանգստյան օրերին գրված խաղալիքների թարգմանիչներից մինչև տիրույթի հատուկ լեզուներ (DSL), որոնք նախատեսված են նեղ առաջադրանքների համար: Հասկանալով, թե ինչպես են դրանք աշխատում, ձեզ ավելի խորը պատկերացում է տալիս, թե ինչպես են գործում բոլոր ծրագրաշարերը, ներառյալ բիզնես գործիքները, որոնց վրա ամեն օր ապավինում եք: Այդ գիտելիքները ձեզ դարձնում են ավելի հստակ մշակող և ավելի տեղեկացված որոշումներ կայացնող՝ ավտոմատացման համակարգեր ընտրելիս կամ կառուցելիս:
Ինչպե՞ս է լեզվական ներքին կառուցվածքի մասին սովորելը օգնում բիզնեսի ավտոմատացմանը:
Երբ հասկանում եք այնպիսի հասկացություններ, ինչպիսիք են վերլուծությունը, գնահատումը և թարգմանիչները, դուք սկսում եք այլ կերպ տեսնել ավտոմատացումը: Դուք ճանաչում եք օրինաչափություններ աշխատանքային հոսքի ստեղծողների, ձևանմուշների շարժիչների և կանոնների համակարգերում: Mewayz-ի նման պլատֆորմները օգտագործում են այս նույն սկզբունքները իրենց 207 մոդուլներում՝ թույլ տալու ավտոմատացնել հաշիվ-ապրանքագրերը, CRM-ի աշխատանքային հոսքերը և ավելին՝ բոլորն առանց կոդ գրելու: Հիմնական սկզբունքների իմացությունը կօգնի ձեզ ավելի առաջ մղել այս գործիքները և ավելի արագ լուծել խնդիրները:
Արդյո՞ք ինձ անհրաժեշտ է համակարգչային գիտության աստիճան՝ փոքրիկ լեզու ստեղծելու համար:
Ամենևին: Շատ մշակողներ կառուցում են իրենց առաջին թարգմանիչը մեկ շաբաթվա ընթացքում՝ օգտագործելով ձեռնարկներ և բաց կոդով ուղեցույցներ: Լեզուները, ինչպիսիք են Python-ը և JavaScript-ը, հեշտացնում են հիմնական lexer, վերլուծիչ և գնահատող գրելը: Նպատակը հաջորդ արտադրական լեզուն ստեղծելը չէ, այլ սովորելն է: Նույնիսկ պարզ հաշվիչի լեզուն սովորեցնում է ձեզ, թե ինչպես են արտահայտությունները վերլուծվում և կատարվում, հմտություններ, որոնք ուղղակիորեն փոխանցվում են իրական աշխարհի զարգացմանը:
Կարո՞ղ է արդյոք DSL-ների իմացությունը օգնել ինձ ընտրել ավելի լավ բիզնես գործիքներ:
Բացարձակապես: Բիզնեսի շատ հարթակներում ներկառուցված են տիրույթի հատուկ լեզուներ՝ բանաձևերի, զտիչների և աշխատանքային հոսքի կանոնների համար: Երբ հասկանում եք, թե ինչպես են DSL-ները աշխատում գլխարկի տակ, կարող եք ավելի քննադատորեն գնահատել գործիքները: Օրինակ, Mewayz-ն առաջարկում է համապարփակ բիզնես ՕՀ՝ սկսած $19/ամսական արժեքից՝ իր մոդուլների վրա ներկառուցված ավտոմատացման տրամաբանությամբ: DSL հասկացությունների իմացությունն օգնում է ձեզ ամբողջությամբ օգտագործել այդ հնարավորությունները, այլ ոչ թե մակերեսը քերծել:
We use cookies to improve your experience and analyze site traffic. Cookie Policy