84 թուի «բայթ» հանդէսում կար յօդուած ֆորթի մասին, նաեւ հէնց վիտի եւ գուտքնեխտի տեքստերը՝ մոդուլա-2֊ի մասին։
#էկրանահան #հանդէս #համակարգիչ #կարգիչ #ծրագրաւորում #ծրագրաւորման_լեզուներ #ֆորթ #մոդուլա #մոդուլա-2 #ամսագիր #բայթ #1984 #պատմութիւն
ի՞նչ կա՞յ, ժողովուրդ, ի՞նչ էք անում, ո՞նց էք ձեզ զգում։
ես պատերազմից յետոյ գրեթէ գործից դուրս գործ չեմ արել, մասնաւորապէս որովհետեւ անհանգիստ էի՝ ներքաղաքական իրավիճակի պատճառով։ քիչ քիչ հետ եմ գալիս, աւելի շատ եմ բաներ բզբզում։ դէ գործ արել եմ, բայց թեթեւ գործ, օրինակ՝ էս մեր վեբ նախագծերի հետ։
բայց ամենակարեւորն ինչ կանեմ, ու ինչքան շուտ սկսէի, էդքան շուտ արդիւնք կունենայի՝ դա նոր կոմպիլեատորն ա, որի միտքը հա կայ։
մաեմօ֊լեսթէ֊ն եմ թարմացրել, իրականում վայելում եմ, շատ շատ լաւիկն ա։ էնտեղ հին նոկիայի մահջոնգ խաղն են աւելացրել, զի ելատեքստը կար։ իմ լայթ միթըրն ա շատ լաւ աշխատում։ (: իսկ սէյլֆիշի տակ լայթմիթրս պորտ չեմ անում, զի առնուազն էդսիքէյ֊ը ուզում ա ուէյլընդ, ու ես դրանից չունեմ։ նաեւ, որ չեմ մտածում՝ qml, js — հաւէս չի լինում մի բան անելու։ պիտի էսդիքէյ֊ն ունենամ, նոր մտածեմ, թէ ոնց են մարդիկ գո֊ն կիրառել, կամ օբերոնից ոնց իրենց սի փլաս փլաս կլասեերին կպնեմ։
իսկ մաեմօ֊ի համար՝ քո լինուքսում գրում ես, տանում ես էնտեղ քոմփայլ ես անում՝ աշխատում ա։
վերջերս սորսֆորջում նախագծեր էի նայում, ժամանակին կորցրել էի ու երկար չէի գտնում, հիմա կրկին գտայ՝ tuxcmd֊ն։ դա երկու պանելով ֆայլ մենեջեր ա, գրաֆիկական, gtk2֊ով ա աշխատում, ու պասկալով ա գրուած։
էդ իրա ելատեքստն էի նայում, երբ տեսայ որ լազարուսը մոդուլների կախուածութիւնները կարողանում ա պատկերել։
ինձ անձամբ շատ պէտք չի, ես mc եմ քշում, բայց ես չեմ պատկերացնում մարդիկ, որ գրաֆիկական միջավայրերում են աշխատում, ո՞նց են ապրում explorer֊ի տիպի ֆայլ մենեջերների հետ, էս ձեւ այլընտրանք ունենալը լաւ ա։
հետաքրքիր ա, որ պասկալով գրած եւս մի քանի նման նախագիծ կայ որ totalcmd֊ի պէս են՝ մէկը double commander֊ն ա, որ ապրում ա, լինուքսի տակ էլ ա աշխատում։ կար sexy commander, որն արդէն տաս տարի առաջ քոմփայլ չէր լինում։ էս tuxcmd֊ն հաւէսն ա, մտածում եմ, պէտք ա gtk3֊ի պորտ անել, ու կարելի ա զարգացնել։ նաեւ կարելի ա gentoo ebuild սարքել։
մտածում եմ, գուցէ լաւ չի որ spyurk.am֊ից եմ հետեւում տարբեր բլոգերի, մեդիաների՝ ֆոտոյի, ճարտարապետութեան, ծրագրաւորման, դիզայնի մասին։ գուցէ պէտք ա սոշըլհոմից հեռարձակել, որ երկու աշխարհ էլ գնայ՝ եւ դիասպորա, եւ ապ։ միւս կողից էլ, գուցէ լա՞ւ ա որ դիասպորայում ա լոկ՝ դիասպորա֊ն առանց այդ էլ չգնահատուած ա, էնտեղ թող լինի։ բայց դա էլ շատ կեանք չի տալիս, իրականում, իրականում էնտեղ ապրող մարդիկ են պէտք։
ամէն դէպքում, ձեւեր էի նայում, ոնց rss parse անել, ու rsstail ուտիլիտան եմ գտել, որ բաւական լաւիկն ա։ content֊ը չի տալիս rss֊ի, աւաղ, կարողանում ա հանել description, հեղինակին, ժամանակը, եւ այլն։ ու մտածում էի կարելի ա կպցնել ինչ֊որ rss parser shcli֊ին որը սոշըլհոմ կը փոստի։ նոյնիսկ մտածում էի իմ պարսերը գրել, երէկ մի պահ աշխատեցի, բայց մի պահ էլ յոգնեցի էդ մտքից։
մինչ էդ հասցրել էի մի գրադարան նայել, ու նկատեցի որ openssl֊ի հետ խօսելիս պայթում ա, իսկ առանց դրա, http֊ով՝ այլ տեղ ա պայթում, փորձում էի վրիպազերծել։ այդ ընթացքում նկատեցի, ոնց ա պահում fpc֊ն run time տիպերի տեղեկատւոթիւնը։
fpc֊ից եւս երկու բան՝ ընդհանուր առմամբ վատ չի երեւի էդպիսի, «ամէն ինչ կարամ», շատ օպտիմալ կոդ գրելու հնարաւորութեամբ, սի փլասոտ լեզու ունենալը՝ մեր, վիրտեան լեզուաընտանիքի մէջ։
երկրորդը՝ ընկերս վերջերս գօ֊ով կոդ էր գրում, ու քոմփայլ արածը դժուարանում էր դեփլոյ անել տարբեր պլատֆորմներ՝ զի լիբսի֊ի վերսիաներն էին տարբերւում։ իսկ fpc֊ն ուղիղ դիմում ա միջուկին, լիբսին շրջանցելով։ ստացուած կոդը աշխատում ա ցանկացած լինուքսի վրայ՝ առանց ռեքոմփայլ։ իհարկէ, նա կարող էր համոզել իր ղեկավարութեանը անցնել գօ֊ի զի գօ֊ն այսօր մոդայիկ ա (ու լաւ ա որ էդպէս ա), ու չէր կարողանայ համոզել fpc օգտագործել։ բայց ոչ էն պատճառով չէր կարողանայ, որ ղեկավարութիւնը կը նախընտրէր աւելի պարզ, մինիմալիստական լեզու, այլ էն պատճառով, որ չէին հասկանայ ինչի մասին ա խօսում, եւ ասոցիացիա ստեղծուած չի որ պասկալը՝ կրոսպլատֆորմ ճկուն լեզու ա՝ ինչպէս այն իրականացնում ա fpc֊ն, fpc֊ն էլ յայտնի չի, յայտնի ա լոկ պասկալի մասին յիշողութիւնը՝ որպէս 16բիթ դօս֊ի տակ աշխատող կոմպիլեատոր։
modula-3 կոմպիլեատորի նոր ռելիզ ա եղել 2021 թուին։ ինչը զիլ ա։
#տեք #պասկալ #մոդուլա #անկապ #ֆայլերի_կառավարիչ #առօրեայ
#նկար #պասկալ #մոդուլա #մոդուլա-2 #գիրք #պատմութիւն #առօրեայ
#պասկալ #մոդուլա #օբերոն #տտ #տեքնոլոգիա #գրականութիւն #մարդիկ
@{ քամի ; o_o@spyurk.am} 30.04.2019, 11:23:40
Reviving a computer system of 25 years ago - Wirth, 2014
ինձ վիրտի մէջ ամէնաշատն իր խնդիր֊կողմնորոշուած լինելն ա դուր գալիս։ ու պարզ մտածելը։
ասումա, ծրագիր գրելը բարդ ա՝ ինչքան էլ առեւտրականները հակառակը քարոզեն։ ճիշտ ծրագիր գրելն՝ առաւել եւս։
ասում ա, ծրագիրը կոդ չի համակարգչի համար, գրականութիւն ա մարդկանց համար։
#ծրագրաւորում #վիրտ
շատ կարեւոր քննարկում՝
https://github.com/modula3/cm3/issues/42
ես աջակցում եմ հարց բարձրացնողին։ գուցէ ինձ պէտք ա ինիցիալիզացնել զանգուածը այլ թուերով, ինչի՞ համար ժամանակ ծախսել ու զրօներ գրել դրա մէջ։
ու նախագծողները դեբիլ չէին, որ յատուկ նշել են, թէ ինչ պատահի կարող ա լինել, որ կազմարկիչը չպէտք ա ինիցիալիզացնի։
#մոդուլա #մոդուլա֊3 #ծրագրաւորում #ծրագրաւորման_լեզուներ #նախագծում
մէկը միւսից լաւը։
օբերոնի եւ մոդուլայի թրենդերի մասին՝ http://norayr.arnet.am/weblog/թրենդային
#օբերոն #մոդուլա-2 #մոդուլա #ծրագրաւորում #ծրագրաւորման_լեզուներ
Փաստօրէն, Օբերոնը երբեք չէր վայելում համայնքի բաւականաչափ ուշադրութիւն, նոյնիսկ համեմատած Մոդուլա֊2֊ի հետ։
Նոյնիսկ բաւական տուեալ չկայ, որպէսզի պարզ լինի, թէ որ երկրներում էր այն աւելի տարածուած։ Զարմանալի է, որ Մոդուլա֊2 ֊ով աւելի շատ հետաքրքրւել են Իսպանիայում, քան Գերմանիայում։
Ինչն է նաեւ զարմանալի, Օբերոնով երբեք այնքան հետաքրքրուած չէին, ինչպէս այսօր։
Նոյնիսկ ոչ այն ժամանակ, երբ Oberon S3֊ը կամ V4֊ը ակտիւ զարգանում էին, ի տարբերութիւն այսօրուայ PO֊ին։
Հաւանաբար, դա կարելի է բացատրել նրանով, որ վերջերս մարդիկ աւելի են հետաքրքրուած ծրագրաւորման լեզուներով, քան երբեւէ առաջ, եւ Վիրտի նոր գիրքը հրապարակուել է ճիշտ այն ժամանակին, երբ ծրագրաւորման լեզուները վայելում են բարենպաստ պայմաններ։
ուրեմն, ասենք մի տարի առաջ, մի աղջկայ դեբիան եմ տեղադրել։ ինչո՞ւ։ մթոմ լաւութիւն էի արել՝ չի փչանայ, ասել եմ, վիրուսներ չես ունենայ, հանգիստ կապրես։
վերջերս կապուել է։ ասում է՝ վայֆայը չի աշխատում։ նախ, կարեւորն այն է, որ ինձ է կապուել։ ինչո՞ւ ինձ։ եթէ վինդովս լինէր, նա շատ տարբերակներ կունենար ու գուցէ նախընտրեր ինձ չդիմել։ բայց լինուքս «սափորթ» անողները, այո, այնուամենայնիւ, դեռ անհամեմատ աւելի քիչ են։
ինչեւէ, մենք հանդիպում ենք սրճարանում, եւ իր նոութը վայֆային կպնում է։ «ուրեմն աշխատում է» — ուրախանում եմ ես։ «չգիտեմ ինչ է, քեզնից է վախեցել» — պատասխանում է նա։ յետոյ գնում է տուն։ եւ իր նոութը իր տան վայֆային չի կպնում։ այդ ժամանակ նա համարձակւում է զանգել պրովայդերին, ով տեղադրել է եւ կարգաւորել վայֆայը եւ բողոքել։ իսկ պրովայդերը լուծում է խնդիրը՝ իր մեղքն էր։
ո՞րն է երկրորդ կարեւոր մասը այս պատմութեան։ այն, որ այդ աղջիկը, ով բնաւ էլ կոնֆորմիստ աղջիկ չէ ընդհանուր առմամբ, ու նախանձելի համարձակութիւն ունի շատ այլ իրավիճակներում, փաստացի ենթադրել էր, որ «մարգինալ լինուքսն է» պատճառը կապ չունենալու, ոչ թէ «մեյնսթրիմ» պրովայդերը։ նա չի ենթադրել, որ այն, ինչ մարգինալ է, այն ինչ տարածուած չէ, այն ինչ կոնֆորմիստական չէ՝ կարող է անխափան աշխատել։ ինքը՝ մարգինալ, ոչ կոնֆորմիստ լինելով։
ես կարծում եմ, որ դա շատ պարզ է։ ու որ մենք շատ քիչ հաւանականութեամբ կարող ենք ունենալ իրական նոն կոնֆորմիստ եւ իրական մարգինալ։ նրանց՝ ով փոխում է աշխարհը։ մերոնք՝ փոփոխութիւն անել ունակ չեն։ եւ դա, ես կարծում եմ, կապ ունի նաեւ մեր քանակի եւ բազմազանութեան հետ։
ինչպէ՞ս են մարգինալները փոխում աշխարհը։ փոխում են՝ ունենալով մեծ շուկայ։ փոխում են՝ քանի որ իրենց համայնքներն այնքան մեծ են, որ իրենց քիչ քանակի համախոհները այնուամենայնիւ այնքան շատ են, որ տարբերւողները կարողանում են չմնալ տեղում, զարգանալ, եւ համայնքները փոփոխութեան են տանում։
այսպէս, Սթոլմանը կարող էր իր գրած ազատ ծա֊ի աջակցութիւն մատուցելով ապրել՝ ժամը 200 դոլար վաստակելով։ քանի որ միացեալ նահանգների շուկան այնքան մեծ է, որ գտնւում էին մարդիկ, ով կօգտագործեր իր ծրագրերը, եւ դրանց մէջ գտնւում էին նաեւ նրանք, ով կը վճարէին աջակցութեան համար։
այսպէս, Լինուսը, չնայած իհարկէ բնաւ հարուստ չէ, ինչպէս Գեյթսը կամ Ջոբսը, Լինուսը կարողացել է իրեն թոյլ տալ միլիոն դոլարով տուն ձեռք բերել։ Եւ երկու հարիւր հոգանոց ռեդհեթը կարողացել է լինել շահութաբեր եւ տարածուել։ իհարկէ, նահանգների ճնշող մեծամասնութիւնը դեռ օգտագործում է մայքրոսոֆթի կամ էփլի արտադրանքը սեղաններին, սակայն իրավիճակը կամաց, բայց կայուն փոխւում է։ ու արդեն զարմանալի չէ, որ տեսականօրէն ազատ անդրոիդը, լինուքս միջուկով, դէ ֆակտո ստանդարտ է։
այնտեղ, ուր շատ մարդ կայ, գտնւում է շատ մարդ, ով կարող է, օրինակ, լաւ դիտորդ լինել ընտրութիւնների ժամանակ, կամ աջակցում է ոչ այնքան շահութաբեր մտքին՝ ասենք օգնել անօթեւան կենդանիներին։ այնտեղ փոքր համայնքները դառնում են ազդեցիկ, եւ փոխում են հասարակութիւնը, իսկ յետոյ փոխում են օրէնքները։
հայաստանի շուկան այնքան փոքր է, որ կարելի է ասել՝ այն չկայ։ նաեւ ակնյայտ է, որ շուեյցարական (իսկ շուեյցարիան նեյտրալ է եւ նոյնիսկ եւրամիութեան անդամ չէ) տեքնոլոգիաները չէին կարող մրցել ամերիկեան տեքնոլոգիաների հետ, անկախ նրանից, թէ ինչքանով լաւն էին։ օբերոնը, մոդուլան այդպէս էլ մնացին համալսարանների նեղ պատերի մէջ, ուր եւ շնչահեղձ են լինում։ պասկալը ժամանակաւոր տարածում ունեցաւ՝ երբ բորլանդ ընկերութիւնը գրանցուեց ամն֊ում, եւ ամն֊ում տարածուելու պատճառով այն յետոյ հասաւ մեզ։
եթէ օբերոնը լինէր գերմանական՝ տարածուեր գերմանիայում, դրան աւելի լուրջ էին վերաբերուելու։
կամ այլ օրինակ՝ ո՞վ էր լինելու Գոդարը, եթէ նա ապրեր եւ ստեղծագործեր (եթէ իրեն թոյլ տային) Հայաստանում։ Ո՞վ էր իրեն ճանաչելու։ Հայերը չէին ճանաչի ճիշտ այնպէս, ինչպէս ծանօթ չեն Փելեշեանին։ Աշխարհը չէր ճանաչի այնպէս, ինչպէս ծանօթ չէ Փելեշեանին։ Ի՞նչ կը լինէր, եթէ Փելեշեանը ստեղծագոծած լինէր Ֆրանսիայում։ Կասէին՝ որ նա փոխել է աշխարհը։ Որ կայ կինո մինչեւ Փելեշեան, եւ Փելեշեանից յետոյ։
այնտեղ է, իրենց մօտ է երբ փայթնը յաղթում ջաւան։ այո, աւելի հիփսթերական քան գիտական փայթնը յաղթում է կորպորատիւ ջաւան։ քանի որ այնքան լիբերալ հասարակութեան մէջ միայն կարող են լինել այնքան հզօր մարգինալներ։ այսպէս է որ փոքրամասնութեան իրաւունքները պաշտպանուած են լինում այնտեղ, ուր ժողովրդավարութիւն է։
Հայաստանում շատ բարդ է զարգանալ։ այսինքն՝ կարելի է լինել կենսակայուն «բակի բուդկա», որը թոյլ է տալիս տիրոջը սպասարկել հին «բմվ» եւ վճարել դստեր տնտեսագիտականի համար, բայց ոչ աւել։ նա ալեքսանեան երբեք չի դառնալու, ինչքան գրագէտ մարկետինգ չանի, ինչքան լաւ չկազմակերպի իր խանութի աշխատանքը՝ ապրանքների դասաւորութիւնը, գները, դիզայնը։
այսինքն՝ չի ստացուի լինելով տարբեր գրաւել շուկան։ չի ստացուի լինել տեղական գուգլ, կամ էփլ, որը դուրս է եկել աւտոտնակից։
նոյնը՝ ինդիւիդների մակարդակում է։
յիշո՞ւմ էք, երբ հայրը, իր երեխային ասում է՝ «տեսնո՞ւմ ես պեծյան փորում է։ այ դու էլ դասերից փախնես՝ փորելու ես»։ այո, ճիշտ է ասում, ընդհանուր առմամբ, հայաստանի համար։ բայց ճիշտ չէ ասում նահանգների համար, ուր գեյթսը թողնում է ուսումը, եւ հիմնում է մայքրոսոֆթ։ ուր ջոբսը թողնում է ուսումը եւ ստեղծում է էփլ։ ուր էյնշթեյնը գալիս է, անում իր դոկտորականը, նրանից յետոյ, երբ մերժւում է շուեյցարիայում։
կամ՝ ինչո՞ւ է այս աղջիկը հագնում կրունկներ, չնայած չի սիրում դրանք։ քանի որ, ասում է, չեն հաւանում ինձ։ բայց չէ՞ որ — հակաճառում էի ես — երբ դու վերջապէս հանդիպես նրան, ով հաւանելու էր հենց քեզ, նա դա չի անի, քանի որ դու չես լինի ինչպիսին կաս։ այո — համաձայնում էր նա։
սակայն ես հիմա հասկանում եմ, որ նա աւելի ճիշտ է։ նա, ով այդ աղջկան կհաւանէր այնպիսին, ինչպիսին նա կայ, կամ արդեն զբաղուած է, կամ գնացել է արտասահման՝ այնտեղ, ուր շատ են նրանք, ով իրեն դուր են գալիս։ ու նրանք, ով իրեն կընդունեն։ իսկ այն աղջիկը, որ սիրում է կարճ մազեր, ու «տղայական» տեսք, նա ոչ միայն քիչ հաւանական է, որ կհանդիպի իրեն այդպէս հաւանողին, այլեւ նա ինքը, ամենայն հաւանականութեամբ կհաւանի աւելի «աւանդական» տղայի, քան նա աղջիկ է։
եւ բնաւ պատահական չէ, որ մեզ մօտ ընդդիմադիր երեխաները՝ ընդդիմադիր ընտանիքներից են։ իսկ ոչ ընդդիմադիր երեխաները՝ ոչ ընդդիմադիր ընտանիքներից։ բնաւ պատահական չէ, որ դատախազի որդին է դառնում դատախազ, ոչ թէ ընդդիմադիր։
մեզ մօտ չափազանց քիչ են, փաստացի չեն լինում շրջակայ միջավայրին դէմ գնացող մարդիկ՝ հասարակութեանը, կամ ընտանիքին, եղբայրութեանը։ մեզ մօտ չեն լինում, քանի որ մենք քիչ ենք, ու դէմ գնալով, իրենք ընդամէնը գնալու են ինքնամեկուսացման։ իսկ մեկուսացող մարդիկ վաղ թէ ուշ լրացնելու են «նեուդաչնիկների» շարքերը։ սա ամն չէ, ուր նեուդաչնիկները գտնում են իրենց պէս ընկերներ, հզօրանում են, եւ տակն ու վրայ են անում համակարգը։ կամ գոնէ կարողանում են զարգանալ լինելով այնպիսին ինչպիսին կան, առանց կոտրուելու։
ու գուցէ զարմանալի չէ բնաւ, որ հայերի էպոսի հերոսը՝ Մհերը, ի վերջոյ գնում է ինքնամեկուսացման։ նա յաղթող չէ։
մարգինալները չեն կարող փոխել հայաստանը, քանի որ չեն հաւաքում կրիտիկական զանգուած։ (այնպէս, ինչպէս գազոնը ունի մինիմալ չափ ապրելու համար, եւ երկիրը ունի այնպիսի սահմաններ, որ պաշտպանելը իրատեսական լինի։) եւ ինչքան քիչ մարդ կայ այստեղ, այնքան քիչ է այն հաւաքելու հաւանականութիւնը։ (զակոն օբրատնիխ կուադրատով)։
այդ պատճառով էլ ունենք երեք հոգի հայերէն գրող դիասպորայում։ որոնց թիւը չի աճի։ այդպէս էլ կը փտեն, մինչեւ չյոգնեն իրարից։
ու պատահական չէ, որ մեզ մօտ նոնկոնֆորմիզմ գոյութիւն չունի։ իհարկէ կան, մեն֊մենակ այստեղ եւ այնտեղ, իրենց փոքր, նեղ համայնքիկներում՝ ախպերութիւններում փտող մարդիկ։ փտող՝ քանի որ օդի շարժ չկայ։ սակայն իրենք չեն փոխի ոչ մի բան։ ոչ իրենց արուեստն է տարածուելու, ընդունուելու լայն զանգուածներում, ոչ իրենց տեքնոլոգիաները, ոչ իրենց գաղափարները։ (ո՞ւր է ժամանակակից արուեստը հայաստանում։ մնացել է նփակի պատերի արանքում։ եւ դեռ կոմունիստների ժամանակ ստեղծուած թանգարանում։ չի տարածուել։ որտե՞ղ է ժամանակակից արուեստը նիւ֊յորքում։ պէ՞տք է պատասխանել։) աւելի ճիշտ՝ դրանք կընդունուեն այն ժամանակ, երբ կը գան դրսից։ եւ զարմանալի չէ, որ այդ մարգինալներին կհամարեն դրսամոլ, արեւմտամոլ։ ասենք որտեղի՞ց պէտք է գայ թարմութիւնը՝ այնտեղից, ուր յաղթել են մարգինալները։ որտե՞ղ են իրենք յաղթում՝ արեւմուտքում։
որտե՞ղ չեն յաղթում մարգինալները՝ չինաստանում։ ի՞նչ է անում չինաստանը՝ կրկնօրինակում է արեւմուտքը, իրականացնում է արեւմտեան նախագծերը։ ինչո՞ւ սոնի ուոլքմենը չդարձաւ այֆոն։ որովհետեւ կարգին ընկերութիւն էր սոնին, ոչ թէ արտակարգ եւ ըմբոստ՝ էփլի պէս։
տասնեօթ եւ տասնութ տարեկան դեռահասներն աւելի են տարբերւում իրարից, քան երեսուներեք եւ երեսունչորս տարեկան մարդիկ։ նոյնիսկ հարիւր հազար բնակչութիւն կորցնել կամ ձեռք բերելը աւելի մեծ ազդեցութիւն է ունենում հայաստանի վրայ, քան միացեալ նահանգների՝ մէկ միլիոնը։ «միլիոնոմ բոլշե, միլիոնոմ մենշե» — ասում էր Շարլ Բոննէն՝ «ինչպէս գողանալ միլիոն» ֆիլմում։ մեզ համար ամէն մի գնացող մարդն է կարեւոր։ ամէն մէկը նշանակութիւն ունի։
Այդ պատճառով են այնքան նկատելի այն քչերը, որ ինչ֊որ բան փորձում են փոխել։ Ու այնքան ատելութեան արժանանում։ Փոփոխութիւն անողներն, տարբերուողները այնքան շատ պիտի լինէին, որ այս մարդիկ չէին էլ երեւալու իրենց մէջ, լինելով ալիքների մաս, ոչ թէ առանձին իմպուլսներ։
այո, շատ անյոյս եմ գրել, թւում է։ բայց դա իրականութիւնն է, ֆիզիկայի օրէնքների պէս։ ես չեմ կարծում որ պէտք է հաւատալ փոխելու համար։ ես կարծում եմ, որ պէտք է իրատես լինել փոխելու համար։
եւ իրատես լինելով ես գիտեմ, որ ամէն գնացողը ազդում է, եւ ամէն մնացողն ազդում է։ մնացողին բարդ է ամենուր․ եւ ուսման ժամանակ, եւ աշխատանքի վայրում, եւ նախաձեռնելուց՝ նա վաստակելու է թուք ու մուր, կամ արհամարհանք, կամ ատելութիւն, կամ պրեզրենիե։ նա գնահատուած չի լինելու, նա իրեն շատ վատ է զգալու։
ու միայն եթէ բոլորը չէ, եթէ շատերը մնան, ինչպէս շատերը գնացին ապրելու էրեծ իսրայէլ, շատ տարբեր շատերը՝ եւ նիհար գունատ աշկենազիներն եւ սեւ էֆիոպցիներն, եւ շատերը որոշեցին սովորել մեռած լեզու, եւ շատերը լինեն դուխով՝ նախաձեռնող, անող, կպնող իրենց գործին՝ առանց խանգարող «հաւատքի», բայց եւ անկախ «հասարակական» փոփոխական կարծիքից, պարզապէս, որովհետեւ իրենք անձամբ այդպէս են կարծում, այն ժամանակ է փոխուելու հասարակութիւնը, ընտրութիւնները, բնականոն ձեւով է գալու հանդուրժողականութիւնը՝ քանի որ ահա տեսէք, բոլորը տարբեր են, ամէն ձեւի մարդ կայ, եւ պարզւում է, իրենք չեն քանդում պետութիւնը, այլ ստեղծում են ազգ։
մոդուլա֊3 ֊ի համար գրաֆիկական ինտերֆեյսներ կառուցելու գրադարան, կոչւում է՝ «trestle»՝ ցցակամուրջ։ հետաքրքիր մօտեցում է, շատ պարզ։
#մոդուլա֊3 #մոդուլա #գուի #գրաֆիկական֊ինտերֆեյս #գրաֆիկա #ծրագրաւորում
ուրեմն, այսօր քննարկում էին, որն է «ճիշտը», զրոյից ֊ ինպես սի֊ում, թե մեկից ֊ ինչպես պասկալ֊ում հաշվել։ Դեյկստրայի թղթի շեյրի պատճառով։
ուզում եմ ես էլ արտահայտվել։
Առաջինը, ոնց էլ հաշվեն, լավ է մի ձեւ, որովհետեւ այլապես լրիվ ես խճճվում։
Երկրորդը, Վիրտը ինքն է հրաժարվել պասկալի մոտեցումից, ու Մոդուլայից սկսած արդեն զրոյից է հաշվում։
Երրորդը, եթե սկսենք մաթից, ապա կա մի քանի մոտեցում ֊ օրինակ ռուսական մաթ դպրոցը համարում է որ զրոն բնական թիվ չէ, իսկ գերմանական մաթ դպրոցը ֊ որ զրոն բնական թիվ է։ Ես, բնականաբար գերմանացիների կողմից եմ։ (:
Կամ այսպես՝ կա երկու մոտեցում սահմանել բնական թվերը
֊ թվարկելով ֊ առաջինը, երկրորդը, երրորդը
֊ նշելով ասենք իրերի քանակը ֊ չկա իր, մեկ իր, երկու իր․․․
Ինձ թվում է բնական, որ բացակայությունը էական հատկանիշ է։
Իսկ ինֆորմատիկայում, ես կարծում եմ, ավելի նպատակահարմար է զրոյից հաշվել։ Պարզ պատճառով ֊ մենք աշխատում ենք հիշողության օֆսեթների հետ։ Այսինքն երբ պետք է դիմել կոնկրետ դաշտին, կամ էլեմենտին, հաշվում ենք շեղումը հիշողության, ստրուկտուրայի սկզբից։
Ու պարզ է որ ունենում ենք զրոյական շեղում։ Ասենք դաշտը կարող է զրոյական օֆսեթ ունենալ։ Ուրեմն ոչինչը ինչ֊որ բան նշանակում է մեզ համար։ Այսինքն, nothing tells something ֊ ինչպես ասում էր Հաուսը։
Բացի դրանից, այսպես հաշվելը ավելի արագ է(էժան է), որը նույնպես լավ դիզայնի նշան է։
Իսկ Դեյկստրայի մասին ֊ ես կարծում եմ, որ առանց նրա ինֆորմատիկան բնավ չէր լինի այնքան գրավիչ, հավես, ռոմանտիկ, ու այնքան գիտական։ Այսինքն նա այն քչերից է ով գիտական մոտեցում է ցուցաբերում։
Օրինակ այն, որ հիշողությունը պետք է տիպավորված լինի, ամենակարեւոր մտքերից է։
Դե գոութուի մասին ես կարծում եմ խոսելն էլ է իզուր։ Որովհետեւ կոդը միայն կատարվող ծրագիրը չէ, այլ մտքերի ֆորմալ նկարագրություն է։
Նրա համար, որ մարդը կարդա ու հասկանա ինչ է գրված, նրա համար, որ կոմպիլյատորը կարողանա սխալներ գտնել։ Իսկ ոնց անցար գոութու֊ին ֊ կոմպիլյատորը ձեռքերը լվանում է, քաշվում է մի կողմ։ ի՞նչ իմանա ինչ է մտքիդ։ Նույնը չտիպավորված հիշողություն օգտագործելիս։
Էլ չեմ ասում որ Ճաշող Փիլիսոփաների ու Քնած Վարսավիրների պես հավես անտրոպոմորֆիզմ ումի՞ց, եթե ոչ Դեյկստրայից։
ա նապոսլեդոկ այս տեսանյութը՝
ավելի ճիշտ ֊ հենց այստեղից։
Կնութ՝ մենք Էդսգերի հետ սիրում էինք չորս ձեռքով նվագել, ու ես ոչ մի կերպ չսովորեցի, որ երբ նվագում էինք Հայդնի վալս, նա չէր հաշվում՝ մեկ, երկու, երեք, մեկ երկու երեք, նա ասում էր՝ զրո, մեկ, երկու, զրո, մեկ, երկու։
ու տենց
ԵՏՀ-ի Բ հարկում ապակու հետեւը տեղադրված են ԵՏՀ-ի արտադրված Լիլիթ եւ Սերես կարգիչները։
Լիլիթի ԾԱ-ն գրված էր ԵՏՀ-ում ստեղծված Մոդուլա-2 լեզվով, Սերեսը աշխատում էր Օբերոնով գրված Օբերոն ՕՀ-ի տակ։
Այժմ Օբերոնը իր զարգացումը ունի, օգտագործվում է մի շարք հետաքրքիր պրոեկտներում, ու բնականաբար ԵՏՀ-ում։ Սույն տեքստը այդ մասին չէ։
Այն մասին է, որ մի անգամ, երբ ես մտա Բ հարկ, որ իջնեմ Ա, ուր աշխատում էի, տեսնեմ ապակու մոտ ինչ որ երիտասարդ է կանգնած, կարգիչները զննում է։
Ես մտածեցի, մերոնցական է, հավանում է։
Մոտեցա, որ ծանոթանամ։ Ասացի, – վերջն են։
– Դրա՞նք – ասաց նա։
– Հիանում եմ, – ասում եմ։ – Գեղեցիկ ՕՀ, արտակարգ լեզուներ։
– Ո՞ւմ է դա պետք – ասաց նա – երբ մենք ունենք դոթնեթ։
վարագույր
ու տենց
(10/18/11 00:00:49) limjuin: my new idea is design a new language with only one big number type which covers most modern CPU basic number type
(00:01:20) limjuin: but is it a BASIC?
(00:01:49) Jomu: I was making my compiler
(00:02:05) Jomu: while reading bhopc
(00:02:10) Jomu: in modula-2, of course 🙂
(00:03:09) arnet: I was thinking about it, and I was not alone 🙂
(00:03:22) arnet: And I think if we have an architecture
(00:03:39) arnet: where we do not have fixed registers, but have just byte arrays
(00:03:56) arnet: it would be easier to get an efficient implementation
(00:04:20) Jomu: with byt arrways all around?
(00:04:30) Jomu: how so?
(00:04:33) arnet: instead of registers
(00:04:44) arnet: just allocate how many bytes you need
(00:04:51) arnet: not word sized registers
(00:04:56) Jomu: and use registers for pointers 🙂
(00:05:11) Jomu: obviously, when register is enough to carry data, it will be more efficient
(00:05:28) arnet: no, to keep variable size variables in byte array registers.
(00:05:36) arnet: One may need 3 bytes for a variable.
(00:05:46) arnet: not four.
(00:06:02) arnet: or may be 5. 🙂
(00:06:16) Jomu: or only 17 bits, think about it 🙂
(00:06:24) Jomu: or 43 bits?
(00:06:42) arnet: nice, arrays of bits 🙂
(00:07:00) arnet: if we dream, why not dream deeply?
(00:07:17) Jomu: yep, exactly 🙂
(00:08:20) limjuin: are you talking about only one bing number typed langauge?
երազել տակ երազել
ու տենց
«Մոդուլային համակարգերի գաղտնիքները» հոդվածի հեղինակն է Սերգեյ Գուբանովը։
«Մոդուլ» եւ «մոդուլյար լեզու» թերմերի բացատրությունների զանազանությունը ծնում է ավներջ վեճեր։ Ինչեր ասես, որ մոդուլ չեն անվանել, ինչ լեզու ասես, որ մոդուլյար չեն համարել։ Ոմանք մոդուլ անվանում են կլասսները, ոմանք ել համեմատում են մոդուլները օբյեկտների հետ։ Առհասարակ այնպիսի տպավորություն է ստեղծվում, որ այժմ մոդուլյար եւ կոմպոնենտային լինելը նորաձեւ ոճ է։ Տարբերակների զանազանության պատճառը բացատրությունների ձեւի մեջ է՝ ներքին ձեւի։ Ներքին է այն իմաստով, որ սահմանումը տրվում է որոշ ներքին հատկությունների հիման վրա (մոդուլը պարունակում է տվյալներ, կոդ, տիպեր, ապահովում է ինկապսուլյացիան, ունի ինտերֆեյս, եւ այլն)։ Մոդուլների ներքին էական հատկությունները առանձնացնելու բազմաթիվ եղանակներ կան, իսկ դա նշանակում է, որ գոյություն ունեն նաեւ մոդուլների սահմանման բազմաթիվ եղանակներ։ Ապագայում ներքին հատկությունների քանակը գուցե եւ ավելանա, հայտնվեն սահմանումների նոր ձեւեր․ այսինքն՝ վիճելու առիթ ավելի շատ կլինի ու դա կտանի փակուղու։ Ելքը ներքին սահմանման փոխարինումն է արտաքինով։
Արտաքին է այն իմաստով, որ սկզբից պետք է նկարագրել ինչ է «մոդուլյար համակարգը», իսկ «մոդուլի» հասկացությունը կհայտնվի ինքնաբերաբար, ավտոմատ կերպով, քանի որ մոդուլը մոդուլյար համակարգի բաղադրիչն է։ Մոդուլյար համակարգը առաջնային է, մոդուլը՝ երկրորդային։ Մոդուլն ինքը իրանով չէ, այլ համակարգի մոդուլ է։ Մոդուլյար լեզու հարկավոր է անվանել այն լեզուն, որը մոդուլյար համակարգեր նախագծելու համար հարմարեցված, օպտիմիզացված է։ Այսպիսով՝ մոդուլյար ծրագրավորման լեզուների իմաստը մոդուլյար համակարգերի նախագծումն է։
Ստորեւ բացահայտենք մոդուլյար համակարգերի իմաստը:
Մոդուլյար ծրագրավորման համակարգերը եկել են միաձույլ ծրագրերը փոխարինելու համար։ Մոդուլյար համակարգեր կիրառելու իմաստը (ի տարբերություն միակուռ ծրագրերի) դինամիկ ընդարձակվելու ունակությունն է։ Մոդուլյար համակարգը կարելի է դինամիկ ընդլայնել մի քանի ձեւով։ Օրինակ՝ դրա մեջ նոր մոդուլներ ավելացնելով կամ փոխարինելով դրա միջի հին մոդուլները նորերով , որոնք ունեն ավելի լայն հնարավորություններ կամ որեւէ այլ լավացումներ։ Ընդարձակվող մոդուլյար համակարգը երբեք ավարտված չէ, այն զարգացում է ապրում։ Որոշ մոդուլներ փոխարինվում են, որոշները դինամիկ ավելացվում։ Այսպիսի համակարգի կյանքը կարող է լինել ավելի երկար, քան նրա միջի կոմպոնենտների կյանքը (տես․ մարդը եւ բջիջները, թարգմանչի նկատողություն)։ Համակարգի օգտագործողը ինքն է որոշում ինչպես այն ընդարձակել։ Կատարյալ դեպքում գոյություն ունի համակարգի կոմպոնենտների շուկա, որտեղ տարբեր արտադրողներ առաջարկում են մոդուլների իրենց իրագործումները, որոնք եւ ձեռք է բերում համակարգի օգտագործողը։ Կոմպոնենտների շուկայի բացակայությունը կարող է խոչընդոտել միաձույլ համակարգերից մոդուլյար համակարգեր անցնելուն։ Սակայն, պահանջարկը ծնում է առաջարկ։
Դիտարկենք մոդուլյար, դինամիկ ընդլայնվող համակարգի կառուցվածքը։ Մոդուլների միջեւ փոխազդեցությունը իրագործվում է մոդուլի՝ այլ մոդուլներ ներմուծելու (import) ունակության շնորհիվ։ Այսպիսով՝ ներմուծող մոդուլը հանդիսանում է ներմուծվող մոդուլների կլիենտ։ Մոդուլների ներմուծման գրաֆը միշտ ացիկլիկ է։ Գրաֆի ացիկլիկ լինելը կապված է այն հանգամանքի հետ, որ մոդուլները հանդիսանում են բեռնման, կատարման եւ բեռնաթափման միավորներ, իսկ ցիկլիկ կախվածության դեպքում բեռնման եւ կատարման միավոր կլիներ ամբողջ ցիկլը․ այսինքն՝ այն ամբողջությամբ կլիներ մոդուլ (համակարգի կոմպոնենտ)։ Մոդուլյար համակարգը ենթադրում է կատարման միջավայր, որի հիմնական խնդիրներից է մոդուլների դինամիկ բեռնումը, ուշ կապը (late linking), կատարումը եւ բեռնաթափումը։ Այլ խնդիրը ամբողջականության կոնտրոլն է․ տիպերի դինամիկ բերումը, զանգվածների (array) ինդեքսների դինամիկ ստուգումը եւ այլն։ Դինամիկ բեռնաթափման հնարավորությունը անհրաժեշտ է հին մոդուլները նորերով փոխարինելու համար։ Ի դեպ մոդուլը չի կարելի բեռնաթափել մինչեւ բեռնաթափված չեն բոլոր նրա կլիենտները։ Դա ակներեւ է թվում, սակայն այդ մասին հաճախ մոռանում են։ Մոդուլների բեռնումը եւ բեռնաթափումը կարելի է համեմատել աղյուսներից աշտարակ հավաքելու հետ․ աշտարակը կարելի է քանդել միմիայն վերեւից, այլ դեպքում այն կփլվի։ Ակներեւ է նաեւ այն, որ մոդուլը կարելի է բեռնաթափել միմիայն հստակ (explicit) հրամանով, այլ ոչ թե ավտոմատ կերպ (օրինակ՝հիմնվելով կլիենտների բացակայության փաստի վրա․ այժմ կլիենտներ չկան, իսկ որոշ ժամանակ անց կլինեն, եւ մոդուլի վիճակը պիտի պահպանվի)։ Նոր մոդուլի ավելացումը կամ հին մոդուլի փոփոխությունը չպետք է բերի ամբողջական համակարգը ավիրելուն։ Քանի որ մոդուլները կարող են մատակարարվել տարբեր արտադրողների կողմից, ապա կատարման միջավայրը պիտի ստուգի մոդուլների համատեղելիությունը եւ խոչընդոտի անհամատեղելի մոդուլների բեռնմանը։ Համատեղելիությունը ստուգվում է մոդուլի ինտերֆեյսի անալիզի միջոցով։ Մոդուլը պարունակում է իր մեջ զանազան ծրագրային էություններ` կոնստանտներ, տիպեր, փոփոխականներ, ֆունկցիաներ։ Մոդուլի որոշ էություններ հասանելի են դառնում կլիենտների համար, այսինքն` արտահանվում են (export), իսկ մնացածները թաքցվում, այլ խոսքերով՝ ինկապսուլյացիա անում։ Ի դեպ այդպիսի ինկապսուլյացիայի ձեւը ամենահզորն է, քանի որ այն խախտելու միակ միջոցը մոդուլի բինար կոդի հետազոտությունը եւ դրա ոչ անվտանգ փոփոխությունն է։ Մոդուլի արտահանվող էությունների ամբողջությունը սահմանում է մոդուլի ինտերֆեյսը։ Դրա միջոցով էլ իրականացվում է կլիենտների հետ փոխազդեցությունը։ Եթե երկու մոդուլ (նույնիսկ տարբեր արտադրողների մոդուլներ) ունեն նույն ինտերֆեյսը, ապա դրանք երկուստեք փոխարինելի են։ Եթե երկու մոդուլներից մեկը ունի առաջինի համեմատ ընդլայնված ինտերֆեյս (այսինքն՝ նրա ինտերֆեյսը ճշգրիտ կրկնում է առաջին մոդուլի ինտերֆեյսը եւ դրան գումարած արտահանում է հավելյալ էություններ), ապա երկրորդ մոդուլը փոխադարձորեն փոխարինելի է առաջինի հետ։
Ինչպե՞ս է կատարման միջավայրը որոշում մոդուլների համատեղելի լինելը։ Ամենապարզ ձեւն է՝ դրոշմել ամեն մոդուլը իր տարբերակի համարով (լինի դա հստակ նշված տարբերակ, թե վերջին կոմպիլյացիայի ժամանակը)։ Հին մոդուլյար համակարգերը օգտագործում էին ժամանակային նշումների մեխանիզմը (timestamps)։ Բայց տարբերակի հստակ (explicit) նշելը գերադասելի է, որովհետեւ ավելի ուշ timestamp-ը հայտնում է միայն այն, որ տվյալ մոդուլը ավելի ուշ է հավաքվել (compiled), բայց չի ակնարկում որ մոդուլի ինտերֆեյսը լուրջ փոփոխությունների է ենթարկվել։ Սակայն մոդուլը որոշակի համարով դրոշմելու լուծումը նույնպես թերի է։ Ենթադրենք, նոր մոդուլը հնից տարբերվում է միայն նրանով, որ նրա մեջ փոխված է ինտերֆեյսի բավականին փոքր մասը։ Օրինակ՝ փոխվել է մի արտահանվող կոնստանտի արժեքը, իսկ մնացած ամենը մնացել է անփոփոխ։ Ապա այդ մոդուլը պետք է դրոշմվի որպես նոր տարբերակ։ Սակայն գոյություն ունեն այնպիսի կլիենտ մոդուլներ, որոնք օգտագործում են միայն ինտերֆեյսի անփոփոխ մնացած մասը։ Նոր դրոշմի պատճառով այդ մոդուլի բոլոր կլիենտ մոդուլները կճանաչվեն անվավեր, այսինքն՝ կատարման միջավայրը կհրաժարվի բեռնել (աշխատեցնել) դրանք փոփոխված մոդուլի հետ համատեղ։ Մոդուլների համատեղելիության ստուգման մեխանիզմը երբեմն անհիմն անգութ է, եւ կատարման միջավայրը կարող է անվավեր համարել բազմաթիվ մոդուլներ։ Բարեբախտաբար, գոյություն ունեն մոդուլների համատեղելիությունը հաստատելու այլ, ավելի գրագետ ձեւեր։ Հավաստիանալու գաղտնիքը նրանում է, որ մոդուլի յուրաքանչյուր արտահանվող (exported) էությանը (յուրաքանչյուր կոնստանտի, փոփոխականի, տիպի, ֆունկցիաի) կցվում է ուրույն նշան, մատնահետք (fingerprint), ավելի պարզ՝ checksum, որը հաշվարկված է այդ էության որոշակի կառուցվածքային ինվարիանտ հատկությունները ի նկատի ունենալով։ Այսպիսի «մանտնահետք» դրոշմեր ստանալը հեշտ խնդիր չէ, առավել եւս ընդարձակվող համակարգերի դեպքում։ Ավելի քան տաս տարի առաջ ETH-ում մատնահետք դրոշմեր հաշվելու թեմայով դոկտորական թեզ է պաշտպանվել (Regis Crelier «Separate Compilation and Module Extension», գիտական ղեկավարներն էին Նիկլաուս Վիրտն (Wirth) ու Հանսպետեր Մոսենբոքը (Mossenbock), Oberon-2 լեզվի համահեղինակները)։ Կատարման միջավայրում մոդուլների համատեղելիության կոնտրոլի բացակայությունը կարող է բերել անկանխատեսելի հետեւանքների։ Այսպես, օրինակ, MS Windows համակարգի կատարման միջավայրը (ըստ էության պարզապես բեռնիչը), որի մեջ dll ֆայլերը հանդիսանում են մոդուլներ, չի ստուգում այդ մոդուլների համատեղելիությունը։ Որպես հետեւանք գոյություն ունի տխրահռչակ dll hell հասկացությունը։
Մոդուլյար համակարգեր ստեղծելը սկզբունքայնորեն հնարավոր է ցանկացած ծրագրավորման լեզվի օգնությամբ։ Օրինակ՝ win32 dll մոդուլյար համակարգը կարող է իրագործվել զանազան լեզուներով։ Սակայն դժվար թե լինի գոնե մեկ լեզու, որը այդ իսկ նպատակին հարմարեցված է նախագծման պահին։ Համեմատենք մեկ dll մոդուլի ստեղծման թեթեւությունը (որը որպես կանոն շատ հեշտ է, քանի որ բոլոր հոգսերը տանում է նախագծման միջավայրը) մի քանի, կամ տասնյակ/հարյուրավոր դինամիկ բեռնվող եւ բեռնաթափվող dll մոդուլներ պարունակող համակարգի ստեղծման բարդության հետ։ LoadLibrary եւ GetProcAddress կանչերի վիթխարի քանակը հարմարավետ չես անվանի եւ դրանք կիրառող տեքնոլոգիան, կամ լեզուն, ոչ մի կերպ չես անվանի մոդուլյար համակարգեր ստեղծելու համար հարմարեցված լեզու։ Ընդ որում ստատիկ կապումը (static linking) ելք համարել չի լինի, որովհետեւ բեռնաթափել եւ փոխարինել ստատիկ կապված մոդուլը անհնար է։ Ինչպես ասված էր, բնական է մոդուլյար ծրագրավորման լեզուները սահմանել որպես մոդուլյար համակարգեր ստեղծելու համար հարմարավետ, հատուկ նախագծված, նախատեսված լեզուներ, դա է իրենց իմաստը։ Բայց ինչպես մենք քիչ առաջ համոզվեցինք, մոդուլյար համակարգերը, առհասարակ, կարելի է կերտել նաեւ այդ համար հատուկ չնախատեսված լեզուների օգնությամբ։ Հարցը միմիայն աշխատանքի ծախսն է։ Կարող է պարադոքսալ թվալ, բայց լինում է եւ հակառակը․ կան ծրագրավորման լեզուներ, որոնք, կարծես, հարմարավետ են ոչ միայն միաձույլ, այլ նաեւ մոդուլյար համակարգեր ստեղծելու համար։ Ես ի նկատի ունեմ Delphi-ն։ Թվում է, որ այնպիսի սինտակտիկ միավորները, ինչպիսին են՝ unit, interface, implementation, uses, մոդուլյար համակարգեր ստեղծելու համար շատ օգտակար են․ մոդուլներ կհանդիսանային յունիթները, ավելի ճիշտ դրանց կոմպիլյացիայի արդյունքը՝ dcu ֆայլերը (delphi compiled unit)։ Բայց, ցավոք, dcu ֆայլերը մոդուլներ չեն, դրանք «կիսաֆաբրիկատներ» են։ Չնայած նրան, որ մոդուլների բոլոր արտաքին սինտակտիկ հատկանիշները առկա են, նրանց անհնար է մոդուլյար համարել․ ներկա ժամանակ աշխարհում գոյություն չունի մոդուլյար համակարգ, որի ստեղծման համար այն հատուկ հարմարեցվի։ Տեսականորեն, եթե երբեւէ ստեղծվի հատուկ կատարման միջավայր, որն ունակ կլինի դինամիկ բեռնել եւ բեռնաթափել dcu ֆայլերը, ապա այնժամ հնարավոր կլինի Delphi-ն անվանել մոդուլյար, այսինքն՝ հատուկ հարմարեցված մոդուլյար ծրագրավորման համար։ Այս տրամաբանությունը կարող է թվալ անսպասելի, բայց այն հետեւում է այս գրառման սկզբում սահմանված մոդուլյար համակարգերի իմաստից։ Մոդուլյարության հատուկ սինտակտիկ հատկանիշները անշուշտ անհրաժեշտ են, սակայն դրանք բավական չեն, այսինքն ոչ մի պարադոքս իրականում չի դիտվում։
Չնայած նրան, որ լեզվի միջի հատուկ շարահյուսական (սինտակտիկ) հատկանիշները բավական չեն լեզուն մոդուլյար անվանելու համար, դրանք միեւնույն է անհրաժեշտ են։ Անհրաժեշտ են նրա համար, որ լեզուն հարմարեցված լինի մոդուլյար համակարգեր գրելու համար։ Մոդուլյար ծրագրավորման լեզվի շարահյուսության մեջ պիտի արտահայտված լինեն ամենաքիչը երեք հասկացություն՝ ինքը մոդուլը, մոդուլների ներմուծմանվ(import) միջոցները եւ ծրագրային էությունների արտահանման (export) միջոցները։ Մոդուլյար համակարգի ամբողջականության վերահսկումը հնարավորինս վաղ իրականացնելու համար անհրաժեշտ է անջատ (separate), այլ ոչ թե անկախ (independent) կոմպիլյացիա։ Ակնհայտ է, որ մոդուլը պիտի լինի կոմպիլյացիայի միավոր։ Այլ դեպքում ինչու՞մ է կայանում հարմարավետությունը։ Մոդուլի ներքին էությունները իրար ամուր կապված են։ Եթե կոմպիլիացիայի միավոր լինի մոդուլից փոքր մեծություն, ապա անջատ կոմպիլիացիան հաշվի առնելով՝ անհրաժեշտ կլինի հնարել որոշակի թաքցրած ինտերֆեյսներ այդ էությունների փոխազդեցությունների համար։ Ակներեւ է, որ դա ավելորդ բարդացում է, գուցե նույնիսկ՝ անվտանգության ճեղք (vulnerability), եւ դրա օգուտը պարզ չէ։
Ընդհանուր առմամբ, մոդուլյար համակարգերի ծրագրավորումը չի պահանջում օբյեկտային կողմնորոշված ծրագրավորման (ՕԿԾ) մոտեցում, իրավացի է եւ հակառակը։ Սակայն, այդ երկու մոտեցումների համաժամյա կիրառությունը բերել է նոր ծրագրավորման պարադիգմայի ստեղծմանը։ Բանն այն է, որ ՕԿԾ-ն, իր ամենատարածված բացատրությամբ, հիմնված է ժառանգողականության (inheritance) հասկացության վրա։ ՕԿԾ-ն եւ մոդուլարությունը միատեղ կիրառելու ընթացքում ծնվում է միջմոդուլյար ժառանգողականությունը, սակայն այն հանդիսանում է տարբեր արտադրողների մոդուլների փոխարինելիության խոչընդոտ։ Եթե տիպի մասը սահմանված է մեկ մոդուլի մեջ, իսկ մյուս մասը՝ այլ, ապա հիմնական տիպի նկարագրությունը պարունակող մոդուլը այլ արտադրողից նույնանման մոդուլով փոխարինելը բավականին մեծ խնդիր է․ իրականացման հնարավոր մանր տարբերությունների պատճառով։ 1995 թվին, պրոֆեսոր Կլեմենս Շիպերսկին (Clemens Szyperski) ֆորմալիզացրել է Կոմպոնենտային Կողմնորոշված Ծրագրավորման (ԿԿԾ) հիմունքները սահմանափակելով եւ ՕԿԾ-ն եւ մոդուլյար մոտեցումը դրանց չհակասող համատեղ գոյության համար («Component-Oriented Programming A Refined Variation on Object-Oriented Programming», The Oberon Tribune, Vol 1, No 2, December 1995)։ ԿԿԾ-ի իմաստը ընդարձակելի համակարգերի կառուցումն է՝ մոդուլների եւ ՕԿԾ-ի օգնությամբ։ Այսպիսով, ԿԿԾ-ն, Շիպերսկու կարծիքով, գտնվում է «<ՕԿԾ-ից դուրս» (Beyond Object Oriented Programming - թարգմանչի նկատողություն) (այսպես է կոչվում նրա արդեն երկու անգամ հրատարակված բեսթսելերը)։ ԿԿԾ-ի հիմքը հանդիսանում են․ պոլիմորֆիզմը, ուշ կապումը (late linking), իսկական ինկապսուլյացիան, կատարման միջավայրի կողմից իրականացվող անվտանգութան ամբողջական վերահսկումը։ Կատարման միջավայրը նաեւ պարտավոր է աղբ հավաքել։ Աղբ հավաքելը շքեղություն չէ բնավ, այլ անհրաժեշտություն․ այն կոմպոնենտային համակարգի ամբողջականության երաշխիքներից մեկն է (հիշենք, որ համակարգի կոմպոնենտները՝ մոդուլները, ստեղծվում են, առհասարակ, տարբեր արտադրողների կողմից)։ Այժմ, ուշադրություն դարձրեք այն հանգամանքին, որ «ժառանգողականության» հասկացությունը (այսինքն տիպի ընդլայնումը), որը այնքան տարածված է ժամանակակից ՕԿԾ լեզուներում, առհասարակ չի ընդգրկված ԿԿԾ-ի հիմքերի մեջ։ Դրա բացատրությունը տրիվիալ է։ Եթե տիպերի ընդլայնումը կիրառվում է մոդուլների մեջ, ապա դա սովորական ՕԿԾ է՝ այնտեղ ուրույն կանոններ են։ Իսկ եթե օգտագործվում է տիպերի միջմոդուլյար ընդլայնումը, ապա այն մոդուլները, որոնց միջեւ տիպերը կապված են ժառանգողականողականության հարաբերություններով, կապված են լինում ավելի պինդ, ավելի կարծր կերպ։ Բարդ է փոխարինել բազային տիպ պարունակող մոդուլը այլ արտադրողի մոդուլով, առանց անվավեր անելու կլիենտ մոդուլները, որտեղ այդ տիպը ընդլայնված է։ ԿԿԾ-ն խորհուրդ է տալիս կիրառել միջմոդուլյար ժառանգողականություն միմիայն աբստրակտ տիպերից՝ դա նպատակահարմար փոխզիջում է ՕԿԾ-ի եւ մոդուլյար համակարգերի միջեւ։ Սակայն ծրագրավորողը, իհարկե, իրավացի է ինքը որոշել, արդյո՞ք արժե կոնկրետ համակարգում օգտագործել տիպերի միջմոդուլյար ժառանգողականությունը առանց սահմանափակումների (դրանով իսկ կարծր կապելով մոդուլները իրար), թե այնուամենայնիվ, նախընտրել փոխարինելի, ընդարձակվող մոդուլներ՝ տարբեր արտադրողներից։ ԿԿԾ-ի սահմաններում, «կոմպոնենտ» բառը դառնում է թերմ։ Կոմպոնենտային համակարգը դա մոդուլյար համակարգի այն մասնավոր դեպքն է, որի մեջ կիրառվում է ՕԿԾ։ Քանի որ այժմ ՕԿԾ-ն օգտագործվում է ամենուր, ապա «մոդուլյար համակարգ» կամ «կոմպոնենտային համակարգ» հասկացությունների տարբերությունը գրեթե բացակայում է։ Մյուս կողմից, կոմպոնենտ բառը այժմ չափազանց ծանրաբեռնված է տարբեր իմաստներով, այդ իսկ պատճառով կարելի է գտնել կոմպոնենտոների այլ բացատրություններ։ Քանի որ այժմ դա «նորաձեւ» է, յուրաքանչյուրը այն բացատրում է իր ձեւով։ Օրինակ՝ Delphi-ում կան ուրույն, այսպես կոչված, «կոմպոնենտներ», որոնք բնավ ոչ մի առնչություն չունեն մոդուլյար համակարգերի հետ։ Այս գրառումը ավարտելով դիտարկենք ինչպիսի կոմպոնենտային համակարգեր կան այսօր։ Microsoft ընկերությունը իրականացրել է կոմպոնենտ համակարգի իր մտապատկերը՝ .Net պլատֆորման եւ այդ պլատֆորմայի համար կանոնիկ՝ C# ծրագրավորման լեզուն։ Անկեղծ ասած, .Net համակարգը առհասարակ չի հանդիսանում դինամիկ ընլայնվող մոդուլյար համակարգ, քանի որ նրա մեջ պարզապես բացակայում է մոդուլներ բեռնաթափելու հնարավորությունը։ .Net համակարգերը ավելի շատ նման են մոնոտոն աճող միաձույլ ծրագրերի, մասնակի, հաջորդաբար կոմպիլյացիայով ու բեռնմամբ ըստ անհրաժեշտության։ Իրականում, այս ամենը ավելի բարդ է, որովհետեւ .Net-ում տարբերություն կա կոմպիլիացիայի միավորի (dll կամ exe մոդուլ) եւ բեռնման միավորի միջեւ (assembly)։ Assembly-ն մի քանի մոդուլի տրամաբանական միացումն է մեկ ենթահամակարգում։ Assembly-ների, dll-ների եւ exe մոդուլների մեջ չխառնվելու և առանց ընդհանրությունը կորցնելու պարզության համար ենթադրենք, որ assembly-ն բաղկացած է մեկ մոդուլից, եւ դրանց մեջ ոչ մի տարբերություն չկա։ Մեկ assembly-ի մեջ մի քանի մոդուլի դեպքը սկզբունքորեն ոչ մի բան չի փոխում (բացի բարդացում ավելացնելուց), այդ պատճառով կխոսենք միայն մոդուլների մասին։ Այսպիսով՝ .Net կատարման միջավայրը մոդուլների համատեղելիության վերահսկման համար չի օգտվում վերը նշված մատնահետքերի (fingerprint) մեխանիզմով։ Դրա փոխարեն կիրառվում է մոդուլի տարբերակի համարը հստակ նշելու տեխնիկան։ Դա, իհարկե, ավելի լավ է, քան ոչինչը (ինչպես win32 dll դեպքում), բայց ստեղծում է իր խնդիրները։ Օրինակ՝ եթե .Net մոդուլը արտահանում է կոնստանտ, որը, միգուցե, ոչ ոք չի օգտագործում, ապա, այդ մոդուլի ինտերֆեյսը, այսինքն՝ կոնստանտի արժեքը փոխելով, պետք է փոխել նաեւ մոդուլի տարբերակի համարը՝ այսպիսով անվավեր հանելով բոլոր կլիենտ մոդուլները, նույնիսկ նրանք, որոնք այդ կոնստանտը չեն օգտագործել։ Սա արդեն «dll hell»-ի ճիշտ հակապատկերն է։ Եթե սովորական win32 dll բեռնիչը բոլոր մոդուլները համարում էր համատեղելի, ապա .Net-ի դեպքում բեռնիչը անհամատեղելի է համարում չափազանց շատ մոդուլներ․ ինտերֆեյսում նույնիսկ չնչին փոփոխություն կատարելիս անհրաժեշտ է փոխել ամբողջ մոդուլի տարբերակի համարը։ C# լեզվի մեջ, որը, թվում է թե իր տրամաբանությամբ պիտի հարմարեցված լիներ մոդուլյար համակարգերի ծրագրավորման համար, բացակայում է մոդուլի հասկացությունը շարահյուսական մակարդակի վրա․ ուրեմն, մոդուլի ներմուծման հասկացությունը նույնպես բացակայում է։ C# լեզվով գրված մոդուլի տեքստը կարդալիս անհնար է իմանալ․ ա) ինչպիսի մոդուլներ է այն ներմուծում։ բ) որ մոդուլի մեջ է սահմանված տեքստում օգտագործված այս կամ այն իդենտիֆիկատորը։ Կիրառվող namespace մեխանիզմը կապված չէ մոդուլների անունների հետ։ C#-ը «հին նմուշի» լեզու է, որը հարմար է միաձույլ ծրագրեր ծրագրավորելու համար, ու հարմարեցված չէ մոդուլյար համակարգեր ստեղծելու համար։ Գուցե արդար չէ այդքան խիստ լինել C#-ի հետ, քանի որ .Net-ը ավելի նման է քայլ առ քայլ աճող միակուռ համակարգի, քան դինամիկ ընդարձակվող մոդուլյար համակարգի։ Մեծ պրոեկտներ հարմարավետ ծրագրավորելու համար առաջարկվում է օգտվել ոչ թե լեզվի հնարավորություններից, այլ նախագծման միջավայրի գործիքներից։ Գոյություն ունեն կոմպոնենտային համակարգեր, ու կոմպոնենտային ծրագրավորման լեզուներ, որոնք գրեթե զուրկ են թերություններից։ Դա կարող է զարմանք առաջացնել, սակայն առաջին մոդուլյար համակարգերը հայտնվել են դեռ անցյալ դարի 70-ականների ավարտին։ Օրինակ՝ դա Lilith համակարգչի համար ստեղծված օպերացիոն համակարգն է, որը գրված է պրոֆեսոր Նիկլաուս Վիրտի (Niklaus Wirth) Modula-2 լեզվով։ Այնուհետեւ, նա ու Յուրգ Գութկնեխտը (Jurg Gutknecht) ստեղծել են Oberon օպերացիոն համակարգը նույն անվանմամբ՝ Oberon լեզվի օգնությամբ, որը արդեն կարելի է համարել կոմպոնենտային, չնայած այդ համակարգը ստեղծելու աշխատանքը սկսվել է դեռ 1985 թվին՝ կոմպոնենտային ծրագրավորման հիմունքները հռչակելուց 10 տարի առաջ։ Մեր օրերում, օրինակ, Windows-ի համար գոյություն ունի անվճար (եւ ազատ արտոնագրով - թարգմանչի նկատողություն) տարածվող, 1994թ ստեղծված շվեյցարական AG Oberon Microsystems, Inc արտադրության BlackBox Component Builder կոմպոնենտային միջավայրը։ Նիկլաուս Վիրտը տնօրենների խորհրդի կազմի մեջ է, իսկ հիմնադիրներից մեկը ԿԿԾ «գաղափարային հայր», պրոֆեսոր Կլեմենս Շիպերսկին է։ Ճիշտ է այժմ նա աշխատում է որպես software architect Microsoft Research-ում։ Ամենասկզբից BlackBox համակարգը անվանվում էր Oberon/F եւ նախագծվում էր Oberon-2 լեզվով MacOS եւ Windows համակարգերի համար։ Այնուհետեւ Oberon-2 լեզուն փոփոխված էր ԿԿԾ նորաձեւ գաղափարի համաձայն։ Նոր լեզուն ստացավ Կոմպոնենտ Պասկալ (Component Pascal) անունը (1997)․ դա Oberon-2-ի արդյունաբերական տարբերակն է։ 2004 թվին BlackBox-ը հայտարարվել է անվճար, (իսկ ծրագրի կոդը՝ ազատ - թարգմանչի նկատողություն)։ Կամավորները ստեղծում են BlackBox-ի տարբերակ Linux (GNU/Linux - թարգմանչի նկատողություն) համակարգի համար (արդեն կա ալֆա տարբերակը)։ Իսկ Oberon Microsystems-ը ներկա ժամանակ աշխատում է համակարգի նոր տարբերակի վրա։ BlackBox-ով ստեղծված է Ամազոն գետի վրա գտնվող աշխարհի ամենամեծ հիդրոէլեկտրոկայանի հսկման համակարգը։ Դրա համար ստեղծվել էր BlackBox-ի հատուկ տարբերակ 64 բիտանի Unix-ի համար։ Borland ընկերության պատվերով Oberon Microsystems ընկերությունը գրել է Java-ի JIT կոմպիլյատոր։ Բացի դրանից, Oberon Microsystems-ում Կոմպոնենտ Պասկալով գրված է Portos իրական ժամանակի օպերացիոն համակարգը (չշփոթել PortOs-ի հետ, որը լրիվ այլ համակարգ է)։ Այնուհետեւ Portos-ը վերանվանվեց JBed, իսկ Oberon Microsystems-ից առանձնացվեց Esmertec ընկերությունը։ JBed-ը ավելի շատ հայտնի է որպես իրական ժամանակի օպերացիոն համակարգ embedded սարքերի համար, որը գրված է java-ով։ Ի նկատի ունենալով Java-ի լայն տարածումը եւ Component Pascal-ի թույլ ճանաչվածությունը՝ պետք է խոստովանել, որ դա հաջող մարկետինգային քայլ է։ Ռուսաստանում վերջերս հայտնվել է ընկերություն, որը հայտարարել է որպես հիմնական արտադրամիջոց BlackBox Component Builder համակարգը օգտագործոլու մասին։ Գոյություն ունի «Ինֆորմատիկա 21» միջազգային պրոեկտ, որի նպատակներից մեկն է BlackBox համակարգի առաջխաղացումը դպրոցներ, բարոյապես հնացած Turbo Pascal-ի փոխարեն։ Եթե փորձել պատասխանել այն հարցին, թե որն է ավելի լավը՝ BlackBox-ը թե Java-ն, ապա պետք է հաշվի առնել, որ բարդությունը թերություն է, իսկ .Net-ն եւ Java-ն անհամեմատ ավելի բարդ են։ Իսկ բացի BlackBox-ից գոյույթուն ունեն մի շարք հետազոտական մոդուլյար համակարգեր։ Ուզում եմ շեշտել Aos BlueBottle օպերացիոն համակարգը (այժմ A2, թարգմանչի նկատողություն) որը անմիջապես «երկաթի» վրա ապրող ակտիվ օբյեկտների հիման վրա ստեղծված առաջին եւ միակ համակարգն է։ Այն ամբողջությամբ գրված է Active Oberon լեզվով։ Համակարգի կատարման միջավայրը իրականացված է անմիջապես «երկաթի» վրա։ Սակայն, դա արդեն այլ պատմություն է։ բնորինակը
ու տենց
Շատ բարդ էր այս գիրքը գտնել։
Ու վերջապես գտա, օգտագործածը։
Իրան խորհուրդ էր տվել Creenshaw-ն իրա քոմփայլերների գրքում։
POINTER TO սինտաքսը հայտնվեց Մոդուլայում։
Նախկին գրքի տերը հաստատ փորձում էր թարգմանել ծրագրի տեքստը Պասկալից Մոդուլա, կամ Օբերոն։
Մոդուլայում և Օբերոնում արդեն չկա function բառը, կան միայն PROCEDURE ներ։ ։Ճ
ու տենց