այս փոսթի մոծիվներով։
Քոմփայլերը, ընկերներ, դա մտքերի եւ ցանկությունների իրականացման գործիք է։
Սովորաբար միտքը, որը տալիս են քոմփայլերին, որոշակի ստանդարտ ձեւով արտահայտված է՝ գրավոր, այս կամ այն լեզվով։
Այդ լեզուները երբեմն անվանում են համակարգչային լեզուներ, որը սխալ է։ Որովհետեւ համակարգիչները այդ լեզուներով չեն մտածում։
Երբեմն անվանում են ծրագրավորման լեզուներ, որը այդքան էլ արտահայտիչ չէ։
Իրականում դրանք միտք արտահայտելու լեզուներ են։
Այսպիսով, քոմփայլերը վերցնում է գրավոր արտահայտված միտքը, եւ այն հասկանալով ստեղծում է, քոմփիլիացիա է անում ելաքյին արտադրանք՝ օրինակ կիրառելի ծրագիր։
ՏՏ ոլորտի մասնագետների գործը դեռ հեշտ է։
Որովհետեւ սխալները միշտ կարելի է ուղղել եւ ռեքոմփայլ անել միտքը։ Դա բերում է անպատասխան կոդագործների առաջացմանը, ովքեր գրելիս չեն մտածում, իսկ հետո, երբ սխալները հայտնաբերվում են, փորձում են ուղղումներ ավելացնել։ Դրանք, ինչ խոսք, լավ ծրագրամիստներ չեն բնավ։
Պատկերացնու՞մ եք եթե ճարտարապետները նախագիծ պատրաստելիս չմտածեին, իսկ հետո տարբեր ձեւի հենարաններ ավելացնեին, որ կառույցը չփլվի։ Ոչ, ճարտարապետները ստիպված են ուշադիր լինել մտքերը մտածելիս եւ արտահայտելիս, որովհետեւ քոմփայլ անելու պրոցեսը շատ ավելի բարդ է իրենց դեպքում։
Օրինակ, ՕփենՕֆիսը իմ կոմպի վրա կոմպիլիացիա է լինում վեցը ժամում։ Շենք կառուցում են անհամեմատ ավելի երկար։
Իսկ հոմո սափիենս տեսակի կենդանիները գենետիկ կոդից քոմփայլ են լինում գրեթե մեկ տարի։ Ի դեպ, հոմո սափիենս նշանակում է «բանական մարդ»։ Ի նկատի ունենալով որ օրինակ շիմպանզեները այդքան էլ բանական մարդ չեն, սակայն մարդ են։
Կան նաեւ ֆունկցիոնալ լեզուներ, որոնք մի կողմից մաթեմին շատ մոտ են, սակայն մյուս կողմից դրանք օգտագործելիս անհնար կամ շատ դժվար է լինում նախագծի սխալները գտնել դեռ գրելու ընթացքում։ Այդ լեզուների երկրպագուները սովոր են արդեն իսկ կառուցված շենքեր փոփոխել։
Ես այդ ոճին սովոր չեմ, սակայն։ Ինձ թվում է որ մաթեմից ավելի հեռու, իմպերատիվ լեզուները իմ իմացած մակրո աշխարհի մոդելները նկարագրելու համար ավելի պիտանի են։
Այնպես որ, ինչպես ուսուցանում է հին չինական իմաստությունը՝ զգոն եղեք մտքերը ձեւավորելիս, նրանք կարող են քոմփայլ լինել իրագործվել։
ու տենց
computer science -ը վերացարկման (աբստրակցիայի) արվեստ է։ մենք մտածել ենք մոդուլներ, վրոփերներ, կոպմոնենտներ, եւ այլն։
այսինքն մենք ուզում ենք նվազեցնել կրկին գրվող կոդի մասը, ավելի ընդհանորւ ենք սարքում ինտերֆեյսներ, եւ այլն։
դա նաեւ այն է ինչ մեզ սովորեցնում են։
հիմա նայենք ինչ ունենք մոբայլ սարքերի ոլորտում նախագծման դեպքում։
ունենք հայտարարված փորթաբնլ, բայց իրականում մեկ պլատֆորմային կպած դոթնեթ (WP7), ունենք անփորթաբլ C++ Սիմբիանի համար, ունենք հայտարարված կրոսպլատֆորմ ջավա, որի անդրոիդի համար գրված ափը էլ ոչ մի տեղ չի աշխատում․․․
ունենք cocoa էփլի դեպքում։
այսինքն, կամ գրում ես անդրոիդի, կամ այֆոնի, կամ սիմբիանի, կամ վինդովսի համար։ թե ուզում ես պորտ անել, պիտի ահագին ուժ ծախսես։
որը հակագիտական է։
բայց բիզնեսի մոծիվներով է
ի՞նչ կար առաջ․ ունեինք j2me, որը մահացավ թույլ հեռախոսների հետ, բայց որը կարելի է համարել փորթաբլ։
ի՞նչ կունենանք։ Միրիադ ընկերությունը պորտ է անում անդրոիդի դավլիկը (ջվմը) Լինուքսի վրա, այսինքն անդրոիդի ծրագրերը կաշխատեն Միգոյում։ (Միրիադը նախագծել է վինմոբայլի ջ2մեն, յբեդը, Օբերոնով)
կունենանք դոթնեթով գրված ափեր վինդովսի եւ այֆոնի, եւ Միգոյի համար ազատ մոնոյի շնորհիվ։
Կունենանք Լազարուսով գրված սոֆթ դրոիդի, սիմբիանի, այֆոնի, միգոյի, բայց ոչ վինմոբայլի համար, քանզի այնտեղ դոթնեթ ա։
Կունենանք հավանաբար ՔԹ, որը կծածկի սիմբիան, ու Միգո։ Ինչ կստացվի այֆոնի ու անդրոիդի հետ դեռ պարզ չի։
Նենց չի որ շատ գույնզգույն ա, բայց կարծես քիչ քիչ լավանում ա վիճակը։
ու տենց
«Մոդուլային համակարգերի գաղտնիքները» հոդվածի հեղինակն է Սերգեյ Գուբանովը։
«Մոդուլ» եւ «մոդուլյար լեզու» թերմերի բացատրությունների զանազանությունը ծնում է ավներջ վեճեր։ Ինչեր ասես, որ մոդուլ չեն անվանել, ինչ լեզու ասես, որ մոդուլյար չեն համարել։ Ոմանք մոդուլ անվանում են կլասսները, ոմանք ել համեմատում են մոդուլները օբյեկտների հետ։ Առհասարակ այնպիսի տպավորություն է ստեղծվում, որ այժմ մոդուլյար եւ կոմպոնենտային լինելը նորաձեւ ոճ է։ Տարբերակների զանազանության պատճառը բացատրությունների ձեւի մեջ է՝ ներքին ձեւի։ Ներքին է այն իմաստով, որ սահմանումը տրվում է որոշ ներքին հատկությունների հիման վրա (մոդուլը պարունակում է տվյալներ, կոդ, տիպեր, ապահովում է ինկապսուլյացիան, ունի ինտերֆեյս, եւ այլն)։ Մոդուլների ներքին էական հատկությունները առանձնացնելու բազմաթիվ եղանակներ կան, իսկ դա նշանակում է, որ գոյություն ունեն նաեւ մոդուլների սահմանման բազմաթիվ եղանակներ։ Ապագայում ներքին հատկությունների քանակը գուցե եւ ավելանա, հայտնվեն սահմանումների նոր ձեւեր․ այսինքն՝ վիճելու առիթ ավելի շատ կլինի ու դա կտանի փակուղու։ Ելքը ներքին սահմանման փոխարինումն է արտաքինով։
Արտաքին է այն իմաստով, որ սկզբից պետք է նկարագրել ինչ է «մոդուլյար համակարգը», իսկ «մոդուլի» հասկացությունը կհայտնվի ինքնաբերաբար, ավտոմատ կերպով, քանի որ մոդուլը մոդուլյար համակարգի բաղադրիչն է։ Մոդուլյար համակարգը առաջնային է, մոդուլը՝ երկրորդային։ Մոդուլն ինքը իրանով չէ, այլ համակարգի մոդուլ է։ Մոդուլյար լեզու հարկավոր է անվանել այն լեզուն, որը մոդուլյար համակարգեր նախագծելու համար հարմարեցված, օպտիմիզացված է։ Այսպիսով՝ մոդուլյար ծրագրավորման լեզուների իմաստը մոդուլյար համակարգերի նախագծումն է։
Ստորեւ բացահայտենք մոդուլյար համակարգերի իմաստը:
Մոդուլյար ծրագրավորման համակարգերը եկել են միաձույլ ծրագրերը փոխարինելու համար։ Մոդուլյար համակարգեր կիրառելու իմաստը (ի տարբերություն միակուռ ծրագրերի) դինամիկ ընդարձակվելու ունակությունն է։ Մոդուլյար համակարգը կարելի է դինամիկ ընդլայնել մի քանի ձեւով։ Օրինակ՝ դրա մեջ նոր մոդուլներ ավելացնելով կամ փոխարինելով դրա միջի հին մոդուլները նորերով , որոնք ունեն ավելի լայն հնարավորություններ կամ որեւէ այլ լավացումներ։ Ընդարձակվող մոդուլյար համակարգը երբեք ավարտված չէ, այն զարգացում է ապրում։ Որոշ մոդուլներ փոխարինվում են, որոշները դինամիկ ավելացվում։ Այսպիսի համակարգի կյանքը կարող է լինել ավելի երկար, քան նրա միջի կոմպոնենտների կյանքը (տես․ մարդը եւ բջիջները, թարգմանչի նկատողություն)։ Համակարգի օգտագործողը ինքն է որոշում ինչպես այն ընդարձակել։ Կատարյալ դեպքում գոյություն ունի համակարգի կոմպոնենտների շուկա, որտեղ տարբեր արտադրողներ առաջարկում են մոդուլների իրենց իրագործումները, որոնք եւ ձեռք է բերում համակարգի օգտագործողը։ Կոմպոնենտների շուկայի բացակայությունը կարող է խոչընդոտել միաձույլ համակարգերից մոդուլյար համակարգեր անցնելուն։ Սակայն, պահանջարկը ծնում է առաջարկ։
Դիտարկենք մոդուլյար, դինամիկ ընդլայնվող համակարգի կառուցվածքը։ Մոդուլների միջեւ փոխազդեցությունը իրագործվում է մոդուլի՝ այլ մոդուլներ ներմուծելու (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 ներ։ ։Ճ
ու տենց
հեհե, վաղուց լոգեր չեմ լցրել բլոգում ։Ճ օգտագործենք իրaն ճիշտ`
(00:00:50) Vahan Stepanyan: rekursia el chem sirel mankuc
(00:00:52) Vahan Stepanyan: bayc normala
(00:00:57) Vahan Stepanyan: im terutyunna
(00:00:58) Vahan Stepanyan: 😀
(00:01:04) noch: սպաս
(00:01:09) Vahan Stepanyan: aysinqn matemi hamar tvuma geecika
(00:01:12) Vahan Stepanyan: gexecik
(00:01:14) noch: իսկ կարո՞ղ ա ուզենաս արգումենտացնել
(00:01:26) Vahan Stepanyan: ha, hima porcum em 😀
(00:02:07) Vahan Stepanyan: uxxaki nuyn matemi tesankyunic, mi qich djvara linum, aysinqn aveli chisht klini asel intuitive anhaskanalia linum rekursiv function@
(00:02:22) noch: էդ հա
(00:02:25) Vahan Stepanyan: aysinqn
(00:02:28) Vahan Stepanyan: voncvor algorithmi gaxaparin hakasi chtoli
(00:02:33) Vahan Stepanyan: qayleri hajordakanutyun
(00:02:35) Vahan Stepanyan: mi tex ktrvuma
(00:02:36) noch: հաջորդական կատարման՞
(00:02:41) noch: հիհի
(00:02:44) noch: միաժամանակ գրեցինք
(00:02:48) Vahan Stepanyan: ha 🙂
(00:02:50) Vahan Stepanyan: tenc
(00:03:13) noch: պարզապես ստեղ ասենք մտածենք որ մենք լեզու ենք նախագծում
(00:03:17) noch: մի կողմից
(00:03:21) noch: որպես լեզվի նախագծող
(00:03:26) noch: գիտեմ որ ասենք ունիվերսալ չի
(00:03:33) noch: որովհետև թույլ սարքերի վրա լավ չի աշխատի
(00:03:39) noch: որոնք ասենք փոքր սթեք ունեն
(00:03:43) noch: կամ սահմանափակ ա
(00:03:44) noch: շատ
(00:03:52) noch: մյուս կողմից
(00:04:11) noch: եթե ունես ֆունկցիա
(00:04:17) noch: ինչի իրա միջից չկանչես ֆունկցիա
(00:04:24) noch: իրան էլի
(00:04:27) Vahan Stepanyan: ha @ndhanur asac ha
(00:04:34) Vahan Stepanyan: inch tarberutyun
(00:04:35) Vahan Stepanyan: che?
(00:04:38) Vahan Stepanyan: bayc de 🙂
(00:04:44) noch: ։Ճ
(00:04:59) Vahan Stepanyan: vorovhetev inch karelia grel rekursiv, et aranc rekursia i el klini mi dzev
(00:05:18) Vahan Stepanyan: u imast@ daya eli
(00:05:30) Vahan Stepanyan: asenq fibonachii tver@ eli aranc rekursiai klini hashvel
(00:05:46) Vahan Stepanyan: @nd vorum parzvuma aveli hesht eli
(00:05:58) Vahan Stepanyan: ete bavakanin chgrit karas pahes ketov tiv@
(00:06:27) Vahan Stepanyan: u vabshe rekurent arnchutyun lucelu gaxapar ka matemum
(00:06:32) Vahan Stepanyan: vor@ koruma
(00:06:36) Vahan Stepanyan: ete unes hashvich
(00:06:48) Vahan Stepanyan: u karas tas hashvi, gnas surch xmes gas
(00:07:13) Vahan Stepanyan: isk es nenc em xxchum meqenayin
(00:07:20) Vahan Stepanyan: es hima asm-ov ban em grum
(00:07:27) Vahan Stepanyan: u gitem vor ay es hraman@
(00:07:38) Vahan Stepanyan: hastat mi angamic aveli chi katarvelu amboxj cragri mej
(00:07:45) Vahan Stepanyan: kam hramanneri inchvor hamakarg@
(00:07:48) noch: ահա
(00:07:53) Vahan Stepanyan: bayc ashxatum em amenaoptimal dzevov grel
(00:08:02) Vahan Stepanyan: tenc hachelia
(00:08:31) Vahan Stepanyan: tenc chi ani oopshnik@
(00:08:31) Vahan Stepanyan: functionalshik@
(00:08:31) Vahan Stepanyan: i t.d.
(00:08:31) Vahan Stepanyan: u nuynisk matematikos@
(00:08:45) Vahan Stepanyan: angam millisecondi harc chi
(00:08:47) Vahan Stepanyan: shahuyt
(00:08:50) Vahan Stepanyan: bayc kayfa
(00:08:59) noch: մեկ ինձ շատ հետաքրքիր ա էդ որ ասում էիր առանց ռեկուրսիա։
(00:09:00) noch: երկու
(00:09:17) noch: ես կարծում եմ որ պետք ա մեզ էական չլինի
(00:09:23) noch: ինչի վրա ենք աշխատացնում մեր կոդը
(00:09:32) noch: ինտել թե առմ
(00:09:37) noch: ու էդ պատճառով ֆսյո-տակի կարծում եմ
(00:09:42) noch: որ ասմը ավելի լավ ա քիչ կիրառել
(00:09:53) noch: որ փորթաբլ ծրագրեր լինեն
(00:09:59) noch: ոնց սկսում ես քո իսկ ծրագիրը
(00:10:08) noch: փորձել աշխատացնել այլ պլատֆորմայի վրա
(00:10:18) noch: իսկ պարզ ա որ մի պլատֆորմա չի լինի որ լինի ու լավ չի որ լինի
(00:10:24) noch: ապա զգում ես որ կորած ա գործդ
(00:10:27) noch: պիտի նորից գրես
(00:11:07) Vahan Stepanyan: ha, es bnakanabar haskanum em et problem@ u voncvor high level@ henc ettexic el sksvec, bayc erb vor du xosum es anmijakan
(00:11:09) Vahan Stepanyan: aranc targmanchi
(00:11:16) Vahan Stepanyan: du gites vonc et qar@
(00:11:18) Vahan Stepanyan: amenalav@ ogtagorces
(00:11:24) Vahan Stepanyan: nu chgitem eli
(00:11:28) Vahan Stepanyan: vonc karelia bacatrel 🙂
(00:11:39) Vahan Stepanyan: hastat du inch qar el unenas
(00:11:47) Vahan Stepanyan: du ira lezvov amenalav ardyunqn es stanalu
(00:12:14) Vahan Stepanyan: u kataryal optimizacnox compiler
(00:12:20) noch: եթե դու վերաբերվում ես ծրագրին
(00:12:23) noch: որպես ինչ որ բան
(00:12:26) noch: ինչը պիտի քարը կատարի
(00:12:29) noch: ոչ թե որպես ինչ որ բան
(00:12:38) noch: որը դու գրել ես որ հետո դու կամ այլ մարդ կարդա
(00:13:04) noch: որովհետև ծրագրավորման լեզուն իմ կարծիքով շատ հաճախ սխալմամբ անվանում եմ համակարգչային լեզու
(00:13:11) noch: սակայն համակարգչային լեզուն դա ասմն ա ասենք
(00:13:16) noch: բայց ծրագրավորման լեզուն
(00:13:20) noch: դա ֆորմալ նոտացիա ա
(00:13:23) noch: որը մենք մեր համար ենք մտածել
(00:13:26) noch: որ մեզ հարմար լինի
(00:13:34) noch: ու կակ ռազ ոչ միայն գրել
(00:13:37) noch: այլ և կարդալ
(00:13:52) Vahan Stepanyan: nu es hamarum em, vor kardalu harc@ paka
(00:13:56) noch: ու ասենք կնութը որ գրական ծրագրավորում ա անում
(00:13:59) Vahan Stepanyan: xndir@ miayn mec systemi meja
(00:14:07) Vahan Stepanyan: djvara os@ tklor asm-ov
(00:14:12) Vahan Stepanyan: kam tekuz office@
(00:14:15) Vahan Stepanyan: tekuz ev open
(00:14:19) noch: )
(00:14:27) noch: բայց կարդալու մասին չհասկացա
(00:14:39) Vahan Stepanyan: nu es hamarum em, vor grox@ kardum ela normal
(00:14:39) noch: ինչ ի նկատի ունես որ կարդալու հարցը փակ ա
(00:14:54) Vahan Stepanyan: es 2 tari araj ban em grel
(00:15:01) Vahan Stepanyan: 8086-i hamar
(00:15:06) Vahan Stepanyan: hima kardum em hangist
(00:15:11) Vahan Stepanyan: mi qich mtacum es te xi es senc arel
(00:15:15) Vahan Stepanyan: bayc et shat mi qicha
(00:15:28) Vahan Stepanyan: gorc@ shat aveli djvara
(00:15:29) noch: մտածում եմ
(00:15:47) Vahan Stepanyan: erb vor arden nu shat CISC qarer en linum
(00:15:59) Vahan Stepanyan: u aveli heshta RISC-i hamar
(00:16:05) noch: մտածեցի
(00:16:09) Vahan Stepanyan: ha
(00:16:09) noch: հա էդ այլ հարց ա
(00:16:10) Vahan Stepanyan: return
(00:16:12) Vahan Stepanyan: 🙂
(00:16:13) noch: ու ունեմ ասելու էդ բանով
(00:16:16) noch: բայց դեռ էն մեկը ասեմ
(00:16:22) Vahan Stepanyan: ha
(00:16:30) noch: ուրեմն կա մեկ ընտրություն
(00:16:42) noch: գրել մեքենայական կոդ կամ հայ լեվե լեզու
(00:16:46) noch: ու կա այլ ընտրություն
(00:16:50) noch: գրել էս լեզվով
(00:16:53) noch: ասենք ֆորտրանով
(00:16:58) noch: կամ գրել ասենք պասկալով
(00:17:05) Vahan Stepanyan: ha
(00:17:11) noch: եթե ես երկրորդ ընտրությունը կատարում եմ պասկալի օգտին
(00:17:19) noch: քանի որ ինքը ավելի ճկուն ա ու արտահայտիչ քան ֆորտրանը
(00:17:45) noch: ապա ես առաջին ընտրությունը նույն տրամաբանությամբ կատարում եմ լեզու օգտագործելու օգտին ու ոչ ասմի
(00:17:46) Vahan Stepanyan: karces haskaca
(00:17:56) Vahan Stepanyan: ha pastoren
(00:18:30) Vahan Stepanyan: de irakanum nayac inch npatakneri hamar en, es chem kara abstract @ntrutyun anem
(00:18:30) Vahan Stepanyan: ete asen uxxaki @ntri
(00:18:37) Vahan Stepanyan: kntrem Pascal u Asm
(00:18:54) Vahan Stepanyan: ete asen @ntri es inch bani hamar, arden dra hamar kmtacem vorna harmar
(00:19:04) Vahan Stepanyan: bayc sirunutyun@ chi korum dranic (asm-i)
(00:19:15) Vahan Stepanyan: uxxaki es chem karcum, vor hayeren@ erbeve klini qarin haskacnel
(00:19:56) noch: հայերենը չեմ կարծում որ ճիշտ համեմատություն ա որովհետև ինքը հա իհարկե մարդկային ա, բայց նոտացիա չի էդքան էլ ճշգրիտ բաներ արտահայտելու համար։
(00:20:07) noch: այսինքն մեզ պետք ա մարդկային լեվի մեջ
(00:20:09) noch: արտահայտիչ լինի
(00:20:21) noch: որ սիրուն խոսենք, օգտագործենք նույն իմաստի համար տարբեր բառեր
(00:20:24) Vahan Stepanyan: aysinqn motik, inchqan hnaravora?
(00:20:25) noch: որ ձանձրալի չլինի
(00:20:47) noch: իսկ կոմպին հասկացնելու համար լեվի մեջ նույնիսկ խանգառում ա երբ նույն բանը կարող ես երկու տարբեր ձևով հասկացնել
(00:21:04) Vahan Stepanyan: ha
(00:21:19) Vahan Stepanyan: bayc du urish dzev es motenum
(00:21:26) Vahan Stepanyan: du motenum es vorpes lezvaban
(00:21:30) Vahan Stepanyan: kam “lezvaban”
(00:21:33) Vahan Stepanyan: vonc harmara
(00:21:34) noch: ։Ճ
(00:21:46) Vahan Stepanyan: aysinqn qarin hamarum es mijocc
(00:21:53) Vahan Stepanyan: es je tenc chem anum “))
(00:21:58) Vahan Stepanyan: 🙂
(00:22:04) noch: ահա ։Ճ
(00:22:09) Vahan Stepanyan: entadrenq ka mi mard
(00:22:13) Vahan Stepanyan: vor@ hayeren haskanuma
(00:22:23) Vahan Stepanyan: u Core i7-in satkacrac uni
(00:22:29) Vahan Stepanyan: amen inch anuma
(00:22:35) Vahan Stepanyan: aveli lava iran ogtagorcel?
(00:22:40) noch: չեմ կարծում
(00:22:42) Vahan Stepanyan: es orinak tenc chem karcum
(00:22:54) noch: կարծում եմ որ ավելի լավ ա ճիշտ նոտացիայով նկարագրել ինչ ա պահանջվում
(00:22:55) noch: ու գրավոր
(00:23:09) noch: ու ոչ լեվով որովհետև լեզվով ավելի բարդ ա էդպիսի բան անել
(00:23:17) noch: այսինքն ճշգրիտ ձևակերպելու համար
(00:23:21) noch: պիտի ենթաբազմություն մտածես
(00:23:23) noch: ու օգտվես իրանից
(00:23:32) noch: ինչը կբերի մոտավորապես ծրագրավորման լեզվին
(00:23:43) Vahan Stepanyan: irakanum harc@ ena, vor inq@ marda
(00:23:50) Vahan Stepanyan: u karelia inch ases ogtagorcel
(00:23:51) Vahan Stepanyan: jest
(00:23:58) Vahan Stepanyan: poxaberakan artahaytutyunner
(00:24:01) Vahan Stepanyan: i t.d.
(00:24:07) Vahan Stepanyan: u arden petq chi asel
(00:24:11) Vahan Stepanyan: vercra es byte@
(00:24:15) Vahan Stepanyan: texapoxi estex
(00:24:19) noch: ժեստ կարելի ա օգտագործել եթե ինքը ճշգրիտ սահմանված ա ինչ ա նշանակում ու երկիմաստ չի հասկացվի
(00:24:39) Vahan Stepanyan: de entadrvuma, vor mard@ etqan xelacia 🙂
(00:24:44) noch: բայց ես երբ մարդկանց հետ շփվում եմ հաճախ պոլագայուս նա տո որ իրանք ինձ կհասկանան ու միշտ չէ որ վստահ եմ
(00:24:46) Vahan Stepanyan: konkret ed mard@
(00:25:09) noch: ։Ճ
(00:25:21) noch: ոնց չեմ մտածում
(00:25:24) Vahan Stepanyan: arhestakan intellekt
(00:25:28) noch: կգրեմ իրան թղթի վրա ֆորմուլա
(00:25:30) noch: ու ասենք կգրեմ
(00:25:34) noch: քառակուսի արմատ
(00:25:56) noch: ու գիծ կքաշեմ բաժանելու տեղը ու փոփոխականներ կգրեմ գծի վերև ու ներքև
(00:26:08) noch: ու բնավ ոչ սենց՝ sqr(a/b)
(00:26:15) noch: այլ հենց ոնց թղթի վրա գրում էինք
(00:26:17) noch: ու կասեմ հաշվի ապ
(00:26:22) noch: բայց նոտացիա կոգտագործեմ
(00:26:29) noch: ապը սակայն տենց կասեմ
(00:26:31) noch: որ իրան լավ գա
(00:26:32) noch: զգա
(00:26:39) Vahan Stepanyan: ha 🙂
(00:26:47) Vahan Stepanyan: u aveli arag hashvi 😀
(00:26:51) noch: Ճ
(00:26:57) Vahan Stepanyan: bayc ed kayf chi
(00:27:06) Vahan Stepanyan: vortev iran du ches sarqel
(00:27:16) noch: մարդու՞ն
(00:27:21) Vahan Stepanyan: inchqan iran motik qar sarqes
(00:27:23) Vahan Stepanyan: enqan kayf
(00:27:25) Vahan Stepanyan: ayo
(00:27:33) Vahan Stepanyan: ankendan
(00:27:34) noch: այ հիմա եկանք նրան ինչի մասին ասացի կասեմ
(00:27:35) Vahan Stepanyan: key word
(00:27:40) noch: երբ ասացիր cisc risc
(00:27:44) Vahan Stepanyan: ha
(00:27:45) noch: նենց ա ստացվում
(00:27:53) noch: որ քարերի նախագծողները
(00:28:00) noch: իրանք մտածում են իրանց գործի մասին
(00:28:03) noch: ոնց անեն ասենք արագ աշխատի
(00:28:17) noch: իսկ ծրագրավորողները իրանց մասին են մտածում՝ ոնց անենք հեշտ լինի գրել ասենք
(00:28:36) noch: էդ ոնց որ օպերատորը նկարի մոնտաժնիկը հավաքի, ու սաղ ինչ ու ոնց ուզեն, առանց ռեժիսոր
(00:28:41) noch: իրականում մոտավորապես տենց ա
(00:28:47) Vahan Stepanyan: nu
(00:28:47) Vahan Stepanyan: entadrenq 🙂
(00:28:55) Vahan Stepanyan: che irakanum tenca, iharke voch bolor@, bayc de
(00:29:33) noch: նենց ա ստացվում որ երկաթի ու ծրագրի միջև ճեղքը լայնանում ա
(00:29:45) noch: ու cisc-ի դեպքում ավելի լայն ա
(00:29:50) noch: ես տենց եմ հասկանում
(00:29:54) noch: քան risc-ի
(00:29:55) noch: որովհետև
(00:29:56) Vahan Stepanyan: es e;
(00:30:34) noch: ու քանի որ ինքը ավելի քիչ մաթեմին ա մոտիկ, կարելի ա ասել որ մարդուց ել ա հեռանում
(00:30:43) noch: որովհետև ասմով շատ ավելի հեշտ ա riscի համար գրել
(00:30:46) noch: քան cisc-ի
(00:30:54) Vahan Stepanyan: ha, ha
(00:31:10) noch: բայց դե ու՞մ այսպես ասած վեջն ա
(00:31:28) Vahan Stepanyan: vor heranuma?
(00:31:32) noch: հա
(00:31:42) noch: ու էդ նաև բերում ա նրան որ քմփայլերն ա բարդանում
(00:31:56) Vahan Stepanyan: inchvor orinak mtaceci
(00:32:01) Vahan Stepanyan: chgitem inchi ed ancav mtqovs
(00:32:10) Vahan Stepanyan: inchvor xachqar sarqox varpet patkeracreci
(00:32:11) noch: էն որ ասում եմ ում վեջն ա չեմ ասւոմ լավ ա
(00:32:14) noch: ասում եմ լավ չի տենց
(00:32:14) Vahan Stepanyan: vor ira gorc@ avtomatacrel en
(00:32:15) Vahan Stepanyan: 😀
(00:32:17) noch: լավ ա երբ մտածում են
(00:32:37) noch: ո՞նց։ սարք ա նկար ես տալիս նկարում ա
(00:32:40) noch: տենց ռոբոտներ կան
(00:32:44) noch: g code ես տալիս
(00:32:47) noch: ինքը անում ա ինչ ասում ես
(00:32:54) noch: նույնիսկ ստանդարտ կա կոդի
(00:33:13) Vahan Stepanyan: ha eli
(00:33:22) Vahan Stepanyan: inchqan vata zgum varpet@
(00:33:27) noch: լավ մտածեցի
(00:33:28) noch: նայի
(00:33:33) noch: ես երբ գովազդ էի ասենք նկարում
(00:33:42) Vahan Stepanyan: ha
(00:33:49) noch: ես պատվիրատուի հետ ճշգրիտ դետալները ամփոփում էի
(00:33:58) noch: ասում էի ասենք ձայնը կլինի տղայի, կամ աղջկա
(00:34:01) noch: համամի՞տ ես
(00:34:13) noch: ասում էի՝ էս կադրը կլինի էսքան, էս՝ էսքան
(00:34:16) noch: էդ իմ համար էին անում էլի
(00:34:22) noch: որ հետո չասի չէ տենց լավ չի փոխի
(00:34:25) noch: էդ հետո ավելի դժվար ա
(00:34:30) noch: բայց էդ դրա համար
(00:34:33) noch: ես ինչ որ բաներ մտածել էի
(00:34:40) noch: այսինքն ասում էի կոնկրետ
(00:34:45) noch: ու նույնիսկ նկարում էի
(00:34:55) noch: ու էդ էլի լեզու էր
(00:35:03) noch: որը ճշգրիտ բաներ էր ձգտում արտահայտել
(00:35:11) noch: ես իրա հետ չեի խոսում քաղաքականությունից ասենք
(00:35:17) noch: կամ լավ ա կուբայում թե չէ
(00:35:33) Vahan Stepanyan: ha
(00:35:34) Vahan Stepanyan: mishtel tenca
(00:35:40) Vahan Stepanyan: erb vor xndir@ konkret@
(00:35:43) Vahan Stepanyan: lucum@ aveli optimala
(00:35:49) noch: ու եթե դա մարդ ա
(00:35:54) Vahan Stepanyan: data compressing
(00:35:57) noch: խաչքար անող
(00:36:01) Vahan Stepanyan: ha
(00:36:21) noch: կամ ինչ որ մի ռոսպիս
(00:36:38) noch: մեկա ավելի լավ ա իրան նախորոք ասել այ սենց թրչուն եմ ուզում ասենք ստեղ
(00:36:44) noch: բայց էդ ավելի լավ ա նկարել
(00:36:48) noch: որը կբերի մակետին մե
(00:36:50) noch: մեզ
(00:36:57) noch: որը իրականում արդեն ենթաբազմություն ա
(00:37:01) noch: ու ճշգրիտ սահմանում ա
(00:37:06) noch: ու ինչքան ավելի ճշգրիտ ա սահմանումը
(00:37:11) noch: էդքան ավելի մեծ ա հավանականությունը
(00:37:16) noch: որը ինչ ուզում էիր կստանաս
(00:37:27) noch: ու եթե մարդ ա աղմուկը
(00:37:30) noch: կարող ա ավելի շատ լինել
(00:37:40) noch: եթե մեքենա աղմուկը կարա քիչ լինել
(00:37:49) noch: բայց էն նույն աղմուկն ա
(00:37:50) noch: ի դեպ
(00:37:53) noch: փաստորեմ
(00:37:54) noch: ։Ճ
(00:38:03) Vahan Stepanyan: gites stex irakanum harc@ voch te ena, vor karelia hstak haskacnel inch es uzum
(00:38:29) Vahan Stepanyan: ayl aveli arvestayin moment
(00:38:29) Vahan Stepanyan: entadrenq du uxxaki karas patkeracnes
(00:38:29) Vahan Stepanyan: u haytnvi koxqt
(00:38:31) Vahan Stepanyan: u verj
(00:38:47) Vahan Stepanyan: u hashvi charnenq, vor du patkeracneluc
(00:38:50) Vahan Stepanyan: eli stexcagorcum es
(00:39:05) noch: այ ասենք պիգմալիոնը
(00:39:10) noch: պատկերացրեց էն աղջկան
(00:39:14) noch: հետո իրան քարից սարքեց
(00:39:23) noch: համարում ենք որ կորուստ չուներ
(00:39:29) noch: այսինքն ինչ պատկերացրեց ստացավ
(00:39:34) Vahan Stepanyan: ha
(00:40:03) noch: իսկ անելուց ինքը ճշգրիտ հետևում էր իրա պատկերացրածին՞
(00:40:06) noch: ասենք հա
(00:40:19) Vahan Stepanyan: aysinqn?
(00:40:21) Vahan Stepanyan: aneluc?
(00:40:25) noch: հա էլի այլապես իմաստը կորում ա
(00:40:31) noch: խոսակցության
(00:40:37) noch: փաստորեն ինքը իրա մտածածն էր անում
(00:40:41) noch: կամ մտածեցէ հայտնվեց
(00:40:47) noch: հիմա ինչը մտածեց՝ այն հայտնվեց
(00:40:54) Vahan Stepanyan: ha
(00:40:56) Vahan Stepanyan: miangamic
(00:40:58) Vahan Stepanyan: akntartoren
(00:41:00) noch: բայց ինքը իրան ա ասել
(00:41:04) Vahan Stepanyan: hakarak depqum mitq@ karar poxver
(00:41:09) noch: ինքը իրան չպիտի փոխանցի տեղեկատվություն
(00:41:16) noch: իսկ մի մարդ այլ մարդու պիտի քոփի անի
(00:41:19) noch: հաղորդի
(00:41:21) Vahan Stepanyan: che, ed verj@ chi
(00:41:26) Vahan Stepanyan: et mi depqna
(00:41:37) Vahan Stepanyan: erb vor qandakoxi gorc@ avtomatarcel en
(00:41:45) Vahan Stepanyan: isk hima inq@ porcuma bacatri qandak anoxin
(00:41:53) Vahan Stepanyan: kam nkarchin
(00:41:56) Vahan Stepanyan: kam…
(00:42:07) Vahan Stepanyan: u bnakanabar qo asac axmuk@ lineluya
(00:42:16) Vahan Stepanyan: bayc inchqan lav nkarich@ nkari
(00:42:20) Vahan Stepanyan: u clientin dur ga
(00:42:24) Vahan Stepanyan: enqan lava zgalu nkarich@
(00:42:30) Vahan Stepanyan: hima inchpisina nkarchi vichak@
(00:42:36) Vahan Stepanyan: erb vor inq@ petq chi
(00:42:42) Vahan Stepanyan: karan patkeracnen u lini
(00:42:43) Vahan Stepanyan: u verj
(00:43:36) noch: էդ մենք շեղվեցի՞նք։ որովհետև սովորաբար նկարիչներ դարնում են մարդիկ որոնք ուզում են սովորել իրենց պատկերացրածը նկարել
(00:43:59) Vahan Stepanyan: che, iranc tenc chhamarenq
(00:44:06) Vahan Stepanyan: tox lini xachqar sarqox@
(00:44:09) noch: այսինքն սովորում են արհեստ բնավ ոչ ասենք պատչեներ հանելու
(00:44:16) noch: այլ իրենց իսկ մտքերը իմպլեմենտացնելու համար
(00:44:17) Vahan Stepanyan: tox lini hen inq@ patkeracnox@
(00:44:29) noch: հա էդ ա հարցը
(00:44:30) Vahan Stepanyan: ha
(00:44:40) noch: պատկերացնողը սարքում ա առանց տեղեկատվության հաղորդման
(00:44:51) noch: ինքը կորուստ չի ունենում ու ինքը իրա համար չպիտի ձևակերպի
(00:44:54) noch: քանզի ինքը արդեն գիտի
(00:44:59) Vahan Stepanyan: ha
(00:45:15) noch: այո ինչ բառ ա՝ ձևակերպել՝ ֆորմալ հ
(00:45:18) noch: նոտել
(00:45:25) noch: ։Ճ
(00:45:31) Vahan Stepanyan: bayc mi depqum da linuma hrashqov
(00:45:31) Vahan Stepanyan: myus depqum handmade
(00:45:48) noch: չէ նույնիսկ եթե ես պատկերացրեցի ինչ որ բան ու արեցի
(00:45:51) noch: ինքը հանդմեյդ ա
(00:45:53) noch: կապ չունի
(00:45:58) noch: էդ հանդմեյդ ա թե հրաշք
(00:46:03) noch: եթե ես եմ պատկերացրել ես արել
(00:46:06) noch: ու կորուստ չկա
(00:46:28) Vahan Stepanyan: ha bayc harc@ voch te lav patkeracnelu meja
(00:46:32) Vahan Stepanyan: ayl lav irakanacnelu
(00:46:42) Vahan Stepanyan: 2rd depqum du aranc korsti ches anum
(00:46:47) noch: հարցը նրանում էր պետք ա ձևակերպել թե չէ
(00:46:49) Vahan Stepanyan: u kap chuni vor aveli lav eir patkeracrel
(00:47:05) noch: հասնում ենք նրան որ եթե ուրիշին չպետք ա բացատրես պետք չի ձևակերպել
(00:47:10) noch: եթե ուրիշին ուզում ես բացատրել
(00:47:20) noch: պիտի ձևակերպես որ ճիշտ հասկանա
(00:47:31) noch: անկախ նրանից ուրիշը մարդ ա թե չէ
(00:47:35) Vahan Stepanyan: de menq mi verapahum enq arel
(00:47:42) Vahan Stepanyan: vor karelia nayev dzevakerpelu mej anel
(00:47:47) Vahan Stepanyan: u eli nuyn xndir@ klini
(00:47:56) Vahan Stepanyan: erb vor aranc korsti poxancum es mitd
(00:48:03) Vahan Stepanyan: ed nuynn er, erb inqd eir anum
(00:48:11) Vahan Stepanyan: aysinqn irakanum ed etqan el karevor chi
(00:48:18) Vahan Stepanyan: harc@ sgacoxutyan masina
(00:48:21) Vahan Stepanyan: nu ha, lava
(00:48:22) Vahan Stepanyan: inch
(00:48:24) Vahan Stepanyan: mtaceci
(00:48:26) Vahan Stepanyan: patrasta
(00:48:29) Vahan Stepanyan: u?
(00:48:45) Vahan Stepanyan: kak to arvest chka ettex
(00:48:56) noch: չեմ կարծում։
(00:48:58) noch: նայի
(00:49:01) noch: նույն հարցը եղել ա
(00:49:06) noch: երբ հայտնվեց իմպրեսսիոնիզմը
(00:49:14) Vahan Stepanyan: ha
(00:49:15) noch: որովհետև ինքը չեր լինի եթե չհայտնվեին ծյուբիկները
(00:49:24) noch: որոնց հեշտ էր քաշ տալ ասենք դաշտ
(00:49:38) noch: իսկ մինչ այդ ապակու սկլյանկեքով էին օգտվում ու բարդ էր
(00:50:00) noch: ու համարվում ա որ էդ տեքնոլոգիական պրորիվն էր որ աջակցեց իմպրեսիոնիզմին
(00:50:04) noch: կամ երբ հայտնվեց ֆոտոն
(00:50:16) noch: ու մարդիկ սկսեցին ասել որ գեղանկարչությունը էլ պետք չի
(00:50:49) noch: ու երբ ֆոտոն սկսեց լրիվ այլ նպատակներ հետապնդել քան պարզապես իրականության պատկերումը մարդիկ հասկացան որ սխալվեցին
(00:51:02) Vahan Stepanyan: ayl
(00:51:04) Vahan Stepanyan: ?
(00:51:27) Vahan Stepanyan: amen depqum lav hamematutyuna, henc tenc
(00:51:33) noch: ։Ճ
(00:51:42) Vahan Stepanyan: es el em da asum
(00:51:56) Vahan Stepanyan: aysinqn qari het gorc anox@ petq klini
(00:52:01) Vahan Stepanyan: bayc voch te en patcharov
(00:52:03) noch: ասում եմ եթե հեշտանում ա գործդ արհեստն ա տակից դուրս գալիս ոչ թե արվեստը
(00:52:08) Vahan Stepanyan: vor aveli hesht@ aveli lav chi lini
(00:52:22) Vahan Stepanyan: ayl uxxaki aveli hesht@ chi lini
(00:52:29) Vahan Stepanyan: aysinqn aveli che, amenahesht
(00:52:35) Vahan Stepanyan: vorpeszi korust chlini
(00:52:44) noch: հա ու կոմպով տեքստ խմբագրելը ավելի հեշտ ա,
(00:52:54) noch: բայց էդ ավելի լավ ա
(00:53:03) noch: ու ավելի ա հեշտացնում լավ գիրք գրելը
(00:53:06) noch: նրան որ կարա գրի էլի
(00:53:09) noch: լավ գիրք
(00:53:13) Vahan Stepanyan: nu ha
(00:53:40) Vahan Stepanyan: es arden moracel em amen inch, isk du? 😀
(00:53:42) noch: ու վերադարնալով լեզուներին
(00:53:43) noch: ։Ճ
(00:54:02) noch: ասեմ որ ավելի լավ ա երբ լեզուն որով գրում ես քե աջակցում ա ու հեշտացնում ա գործդ
(00:54:14) noch: ։Ճ
(00:54:19) noch: որպես մարդու
(00:54:25) noch: որովհետև մենք դիզայն ենք անում բաներ մեր համար
(00:54:28) Vahan Stepanyan: ha, hamadzayn em mianshanak
(00:54:31) noch: ոչ թե պոդստրաիվածսյա ենք անում
(00:54:41) Vahan Stepanyan: es osi, officei u i t.d.-i orinak bereci 😀
(00:54:41) noch: նրան ինչպես ա հարմար երկաթի դեվելոփերներին
(00:55:04) noch: այսինքն դու հիմա ցիսկ ես գրում
(00:55:13) Vahan Stepanyan: de et tenc meknabanel petq chi
(00:55:14) noch: ու էդ էդքան հարմար չի ինչքան րիսկ գրելը
(00:55:21) Vahan Stepanyan: hima nuyn@ karelia asel kacini masin
(00:55:23) noch: ու էդ էդքան հարմար չի ինչքան պասկալ գրելը
(00:55:26) Vahan Stepanyan: u kacini developerneri
(00:55:30) Vahan Stepanyan: bayc de unenq kacin
(00:55:32) Vahan Stepanyan: eda
(00:55:46) Vahan Stepanyan: uzuma lini vikingakan uzuma sultanakan chgitem
(00:55:49) noch: դե ես դժգոհում եմ որ մկրատը նենց ա արած որ աջ ձեռքով բռնեմ
(00:55:54) noch: իսկ ինձ ձախով ա հարմար
(00:56:01) noch: կամ խցիկս նենց ա սարքած
(00:56:04) noch: որ աջով բռնեմ
(00:56:13) noch: ոնց որ իմ համար սարքած չլինի
(00:56:22) noch: այ թրչող ափսեն
(00:56:29) noch: կլոր ա
(00:56:33) noch: ու ես իրա հետ խնդիր չունեմ ։Ճ
(00:56:36) noch: բնավ
(00:56:37) noch: ։Ճ
(00:56:39) Vahan Stepanyan: irakanum da karelia artahaytel senc
(00:56:45) Vahan Stepanyan: du xcik ogtagorcel chgites
(00:56:55) Vahan Stepanyan: iharke tenc “chisht” chi
(00:57:13) Vahan Stepanyan: bayc harc@ konkret ban@ ogtagorcelna eli
(00:57:22) Vahan Stepanyan: u voch te amen mek@ vermak@ qashi ira koxm@
(00:57:26) Vahan Stepanyan: es uzum em qich grem
(00:57:37) Vahan Stepanyan: myus@, uzum el uzum em qich ashxatem
(00:57:47) Vahan Stepanyan: arajin depqum noric qich ashxatelna
(00:58:07) Vahan Stepanyan: iharke
(00:58:16) Vahan Stepanyan: xciki depqum qayl@ arvaca
(00:58:26) Vahan Stepanyan: unes patrasti “architecture”
(00:58:49) Vahan Stepanyan: u ete harmar chi, uremn lav ches karoxanum ogtagorcel u nayev hakarak@ kara lini
(00:58:57) Vahan Stepanyan: hima asel senc sarqi
(00:59:00) Vahan Stepanyan: nenc sarqi
(00:59:17) Vahan Stepanyan: agah algorithmov chi lini lucel
(00:59:27) Vahan Stepanyan: ete qar@ amenaharmar dzevov sarqvi
(00:59:36) noch: եկա
(00:59:37) Vahan Stepanyan: du el amenaharmar dzevov gres ogtagorcelov et qar@
(00:59:46) Vahan Stepanyan: chi nshanakum, vor kstacvi amenalav ardyunq@
(00:59:52) Vahan Stepanyan: kara qar@ lini mi qich var
(00:59:54) Vahan Stepanyan: vat
(00:59:57) Vahan Stepanyan: du el mi qich vat gres
(01:00:03) Vahan Stepanyan: nu chakertavor “vat”
(01:00:14) Vahan Stepanyan: bayc superpozician lini aveli effective eli
(01:03:00) noch: չէ հարցը նրանում ա որ իրականում մարդիկ լինում են էդքան խելացի, որ ասմով ել լավ կգրեն, աջլիկի համար նախատեսված խցիկով էլ լավ կնկարեն եթե պետք ա։ ասենք ես հիմա հայերեն կարողանում եմ մտքերս արտահայտել իսկ ինքը իմ առաջին լեզուն չի փաստացի։ ու էդ հաճախ զգացվում ա, և օտար բառեր օգտագործելուց
(01:03:07) noch: և նախադասությունները սխալ կազմելուց
(01:03:11) noch: ու տենց
(01:03:25) noch: բայց նենց ա որ արդյունքը պակաս վատ չի
(01:04:03) Vahan Stepanyan: ha
(01:04:21) Vahan Stepanyan: hima uxxaki et 2 modelneri mej zugaher tanel@ djvara
(01:04:48) noch: բայց ինչքան որ հային հայերեն ա հարմար շփվել այնքան էլ մարդուն հարմար ա իրա համար նախագծված աթոռի վրա նստել
(01:05:11) noch: իրա համար նախագծված թաչսքրինի էկրանին մատով կպնել
(01:05:34) Vahan Stepanyan: gites, harmarutyan hamar es ban chem asum
(01:05:46) Vahan Stepanyan: chem karcum, vor nkarchin amenaharmar@ vrdzinov nkarelna
(01:06:07) Vahan Stepanyan: u dashnamurn el amenaharmar gorciq@ chi
(01:06:15) noch: բայց մկնիկով նկարելը մատիտով նկարելուց հարմար չի
(01:06:19) Vahan Stepanyan: isk du nuyn@ harcra dashnakaharic
(01:06:30) noch: էդ պատճառով ես գասպարին կոմպով նկարելու մատիտ եմ բերել
(01:06:30) Vahan Stepanyan: ayo
(01:06:31) noch: ։Ճ
(01:06:38) Vahan Stepanyan: 🙂
(01:06:46) Vahan Stepanyan: inq@ mknikov er nkarum? 😀
(01:07:00) noch: դե մինչև չուներ որակյալ էլեկտրոնային մատիտ
(01:07:07) noch: ստիպված էր մկնիկով նկարել կոմպի վրա
(01:07:24) noch: եթե կոմպի վրա
(01:07:47) Vahan Stepanyan: hetaqrqira, es uxxaki chem patkeracnum vonc karelia, inq@ uremn shat @ndunaka 😀
(01:08:04) Vahan Stepanyan: aysinqn iharke sovorelu harca, bayc de…
(01:08:12) noch: չէ փաստորեն
(01:08:14) Vahan Stepanyan: isk inq@ vonca sirum nkarel hima?
(01:08:16) noch: մենք չենք կարողանում
(01:08:20) noch: մկնիկով էդպիսի գծեր քաշել
(01:08:25) noch: ինչպես մատիտով
(01:08:59) noch: ինքը ամեն ձև ել նկարում ա, ու կոմպով ու վրձինով։ բայց մկնիկով հաստատ ավելի անհարմար ա քան մատիտով
(01:09:33) Vahan Stepanyan: ha, et kochvuma gorciq
(01:09:36) noch: Ճ
(01:09:41) noch: լեզուն ել ա գործիք էլի
(01:09:42) noch: ։Ճ
(01:09:45) Vahan Stepanyan: ha
(01:09:58) Vahan Stepanyan: bayc gorciq@ zgacmunq chi artahaytum
(01:10:04) Vahan Stepanyan: es esqan jamanak et ei asum
(01:10:17) Vahan Stepanyan: hakarak depqum es khakarakvei irakanutyan@
(01:10:19) Vahan Stepanyan: kran vor chliner
(01:10:24) Vahan Stepanyan: cher lini neboskryob
(01:10:33) Vahan Stepanyan: i t.d.
(01:10:46) noch: գործիքը չի արտահայտում, մարդն ա արտահայտում
(01:10:53) Vahan Stepanyan: mard ka siruma sitezatori vra nvagel
(01:10:56) Vahan Stepanyan: @ndex aveli heshta
(01:11:03) noch: բայց մարդուն կարա գործիքը ավելի աջակցի կամ էլ խոչընդոտի
(01:11:05) Vahan Stepanyan: vortev ete dashnamuri vra fixvac dzayner en
(01:11:14) Vahan Stepanyan: estex karas inch uzes dnes
(01:11:30) noch: էնդեղ լիքը տարբերություն կա
(01:11:58) noch: առաջինը սինթեզված ձայնի որակը նույնիսկ մոտիկ չի լինում իրական ստրունայի տատանումից ստացած ձայնի որակին
(01:12:16) Vahan Stepanyan: de nayac inch detalizaciayov es nayum
(01:12:23) Vahan Stepanyan: ed voncvor ases
(01:12:32) Vahan Stepanyan: C-ic compile arac@ aveli meca
(01:12:36) Vahan Stepanyan: kam dandax
(01:12:42) Vahan Stepanyan: dranq hashvi chi arnvum
(01:13:07) Vahan Stepanyan: u irakanum hech el partadir chi myus koxmic
(01:13:14) Vahan Stepanyan: vor strunayi irakan mexanikakan dzayni nmanvi
(01:13:25) Vahan Stepanyan: dranic el henc cnvec electro janr@
(01:13:28) Vahan Stepanyan: vor es shat em sirum
(01:13:30) noch: ստեղ ես այլ կերպ կձևակերպեի՝ մարդուն ավելի մոտ ա իսկական հնչողությունը, որովհետև ինքը զգում ա սինթեզվողի տկարությունը
(01:13:47) Vahan Stepanyan: nayel verev
(01:13:49) noch: հա էդ այլ հարց ա
(01:13:55) noch: ։Ճ
(01:13:59) Vahan Stepanyan: 🙂
(01:14:07) noch: ամեն նոր տեքնոլոգիա
(01:14:12) noch: բերում ա իրա հետ նոր էստետիկա
(01:14:19) noch: լավ ամեն չէ
(01:14:26) noch: բայց տենց լինում ա
(01:14:32) Vahan Stepanyan: ha :))
(01:14:49) Vahan Stepanyan: gnacinq qnenq ha voncvor? 😀
(01:14:55) noch: ու հայտնի չի ինչ կբերեն քվանթային հաշվարկները
(01:14:57) noch: եթե բերեն
(01:14:58) noch: հա
(01:14:59) noch: ։Ճ
(01:15:13) Vahan Stepanyan: o, dra masin el karelia xosal
(01:15:17) Vahan Stepanyan: es karcum em vor amen inch sxala
(01:15:18) noch: լսի ես էս գցեմ ԿՄ
(01:15:23) Vahan Stepanyan: chem sirum Einsteinin
(01:15:26) Vahan Stepanyan: u tenc
(01:15:30) Vahan Stepanyan: hl@ kxosenq 😀
(01:15:36) noch: ես մեծ անվստահությամբ եմ վերաբերվում քվանթային համակարգչությանը
(01:15:42) noch: սակայն էյնշտեյնին սիրում եմ
(01:15:59) Vahan Stepanyan: ha, de kqnnarkenq anpayman
(01:16:01) Vahan Stepanyan: isk lj
(01:16:02) Vahan Stepanyan: xndrem
(01:16:08) Vahan Stepanyan: sa lriv free xosakcutyuna
(01:16:09) Vahan Stepanyan: 😀
(01:16:15) noch: քանզի հարաբերականությունը անհարաբերականորեն հարաբերական ա
(01:16:18) noch: Ճ
(01:16:39) Vahan Stepanyan: gites harc@ nranuma, vor es karcum em, inq@ mi qich goxa
(01:16:45) Vahan Stepanyan: tenc cher asi Puankaren
(01:16:53) Vahan Stepanyan: bayc karar liner mtqi hexinak
(01:17:00) noch: ահ
(01:17:00) Vahan Stepanyan: …
(01:17:06) noch: լավ էդ առանձին խոսալու բան ա
(01:17:09) noch: պոկա պոկա
(01:17:10) Vahan Stepanyan: 🙂
(01:17:11) noch: բարի գիշեր
(01:17:12) Vahan Stepanyan: poka poak
(01:17:13) Vahan Stepanyan: 😉
(01:17:21) Vahan Stepanyan: bari gisher
Սա երրորդ մասն ա։
Ասենք սա ինձ թաչ ա անում՝
<blockquote style="border: 2px solid rgb(127, 195, 59); padding: 10pt; margin-left: 30pt; background-color: #a6df6d;">
<p>
try not to do things you don’t understand<br /> and if you are forced to do things you don’t understand, then at least, do not speak about things you don’t understand
</p>
und so weiter
[այստեղից][1]
ու հա, ՆՅ-ում ավելի լավ զբաղմունք չեմ գտնում քան բլոգեր կարդալ:
ֆոտոներ մի սպասեք, նենց ա որ ոգեւորված չեմ
ինչքան տարբեր տեղերում լինում եմ այնքան համոզվում եմ, որ իմ համար ավելի լավ տեղ չկա քան Երեւանը:
_ու տենց_
[1]: http://thread.gmane.org/gmane.comp.version-control.git/57643/focus=57918
– համ էլ սատանիկը էն մարդկանց ցանկում կա, որ ասի լայք, ես ել ասեմ դե ռազ որ լայք ուրեմն ֆսյո։
– վայ քու արա
քո մոտ տենց մարդկա՞նց ցուցակ էլ կա
(վայ քու արա)^2
– իրա մոտ ամենինչն ա ցուցակ (list)
ու տենց
Ստանդարնտները լավ բան են։ Ինչ որ ստանդարտ պետք ա լինում։ Նույնիսկ ասենք շփման մեջ, միմյանց հասկանալու համար։ Կամ թերմերի մեջ, կրկին՝ հասկանալու համար։
Սակայն, երբ ստեղծում եք նորը ստանդարտին հետևելը, կամ համապատասխանելը հաճախ բերում է վատ որոշումներին, ու վատ դիզայնին։
Ասենք, երբ Ստրաուստրուպը C++ նախագծելուց փորձում էր պահպանել C-ի հետ համատեղելիությունը, դա բերեց ինչպես տգեղ լուծումների, այնպես էլ լեզվի չաղացմանը։
Ուինդոուս/Սոլարիս-ներում – պահպանել նախկին տարբերակների հետ համատեղելիությունը որոշումը բերեց գրադարանների չաղացմանը։
Ի տարբերություն, Վիրտը, նախագծելով Մոդուլան որոշեց չպահպանել պասկալի հետ համատեղելիությունը։ Փոխարենը, նա գրեց քոնվերթեր, պասկալից մոդուլա տրանսլացիա անելու համար։ Նույնպես նա վարվում էր և հետագայում, Մոդուլայից Օբերոն քոնվերթեր գրելով, քանի որ հասկանում էր՝ համատեղելիությունը պահպանելը կբերի տգեղ դիզայնի։
Բաց ԾԱ-ի աշխարհում համատեղելիություն պահպանելը իմաստ չունի։
Փոխվեց գրադարանը՝ փոխվում է ծրագիրը որը այն օգտագործում է։ Եթե ծրագրի հեղինակը հետաքրքրված չէ, դա անում է մեյնթեյները կամ յուրաքանչյուր մեկը ում այդ ծրագիրը պետք է։ Այսպիսով, բաց ԾԱ-ն չունենալով համատեղելիության շերտ՝ ավելի նիհար է։
Ինչպես ես արդեն գրել եմ, կարգինը՝ արտակարգ լինել չի կարող։
Այս պատճառով Պլան9-ը և Ինֆերնոն, որոնց դիզայնի մեջ, ի դեպ, անկերես է Օբերոնի ազդեցությունը, չեին կարող հետևել սովորական Յունիքս/Պոսիքս ստանդարտների։
Ու պարզ է որ նրանք լայն չեն կիրառվում այն պատճառով, որ ծրագրերի մեծ մասը գրված է տեքնոլոգիաներով, որոնք անհամատեղելի են Ինֆերնոի հետ։ Օրինակ, C-ով կոդ այնտեղ ափլիքեյշն լեվել չի օգտագործվում, դրա համար կա Լիմբո։
Սակայն, նոր դիզայն կարող է իրեն թույլ տալ կորմորացիա որը նախագծում է ու տարածում նոր համակարգ։
Ես Անդրոիդ-ի մասին եմ։
Գուգլը լինուքս միջուկի հիման վրա ստեղծել է «նոր» համակարգ, ձեռք է բերել նոր ջավա վիրտուալ մեքենա։
Դրայվերների խնդիր մոբայլ սարքերի համար չկա՝ միևնույն է լիքը նոր դրայվեր գրվել է։
Լինուքսից օգտագործվել է սքեդուլերը, թիսիփի սթեքը, և այլն։ Սի-ով ափլիքեյշն կոդ գրելն նախատեսված չեր։
Այսինքն, կարելի էր անել համակարգ, որտեղ կան դիզայնի նոր ընտրություններ, ինչպես ընդհանուր հասցեական տարածությունը։ Բայց էդպիսի բան արված չէ։ Ընդ որում Լինուքս միջուկի քաստոմիզացիայի վրա այնքան ռեսուրս է ծախսվել, որ այդ ուժերը անհրաժեշտ էր ծախսել Ինֆերնոն փրոդաքշն և մոբայլ սարքեր բերելով։
Որովհետև նոր է, արագագործ, ու գեղեցիկ։
ու տենց
[այստեղից][1]
Ռոբ Փայքի, որը այժմ Գոու-ի ֆյուրերն ա ամենահայտնի խոսքերից։
Ինձ շատ ուրախացրեց [այս փոսթը][2]․
<blockquote style="border: 2px solid rgb(127, 195, 59); padding: 10pt; margin-left: 30pt; background-color: #a6df6d;">
<p>
> Java is done right in concept.
</p>
<p>
wtf?
</p>
<p>
[ Let me start by saying I don’t speak for any of these guys,<br /> I can’t even get their OS to run a GUI.]
</p>
<p>
Java is better than C++, but as others have mentioned that’s like saying<br /> toothache is better than herpes.
</p>
<p>
It’s just C without pointer arithmetic. Leaving aside actual<br /> implementation bugs, it :
</p>
<p>
* runs on less platforms than any other language I’ve ever used,<br /> * wimped out of having numeric types implemented as objects, then<br /> bolted on ‘containers’ for them in 1.1<br /> *has changed its GUI twice and *still* doesn’t do it right,<br /> * it’s thread model is essential to its operation but differs widely<br /> between VMs even on the same platform<br /> * the same it true for its garbage collector.<br /> * The APIs are huge and inconsistent.<br /> * it *finally* – in 1.4 – has a regex API (which is unusably complex).<br /> * it’s native code bindings are absolutely the worst I’ve ever seen,<br /> even Perl does a better job
</p>
<p>
And don’t forget m5 current personal favourite –<br /> its pointlessly restrictive type system.
</p>
<p>
Type is stored in the *pointer*, not the object.<br /> So I have to hold the VMs hand each time I pass an argument.<br /> I’m not allowed to reuse a variable to<br /> point to an List and a Vector, even if I’m going to call a method<br /> with the same name on both.
</p>
<p>
And then to really piss in my chips, 90% of the Collections API<br /> which lets me store these objects and actually *do* something with them<br /> only lets me pull them out as Object.
</p>
<p>
I HAVE TO CAST THEM. So when I get an object ‘dynamically’ – via RMI or<br /> out of a Vector or whatever, I have to know what it is in advance.<br /> The poor frigging object doesn’t know (no, don’t get me started on the<br /> abomination that is the reflection API, people are already starting to<br /> stare).
</p>
<p>
And this is a dynamic language. KERR-RIST.
</p>
<p>
None of this matters of course, because “it’s better than C++”.<br /> And IT managers think the Sun shines out of its ass.
</p>
<p>
Java is the f*cking COBOL of the 90s and<br /> future generations of geeks are going to fly back from Mars to piss on<br /> our graves for inflicting it on them.
</p>
<p>
> Unfortunately. I can do system programming and command-line<br /> > apps with Java.
</p>
<p>
Sure. If you don’t mind a fifteen second delay while the VM drags itself<br /> up from the bottom of the sea each time you run a command line app.
</p>
<p>
Or should that ‘.’ be a ‘,’ ?
</p>
ու տենց
http://thread.gmane.org/gmane.comp.version-control.git/57643/focus=57918
ու տենց
[այստեղից][1]
[լրիվ տեքստը][2]
ինչի՞ ա տենց հայտարարում։ անկապ չեր ասի, երևի ուզում են [Գոու][3]-ն տարածել։
<blockquote style="border-left: 2px solid #FFCC00; padding: 10pt; margin-left: 30pt; background-color: #FFFCEC;">
<p>
“Go is an attempt to combine the safety and performance of statically typed languages with the convenience and fun of dynamically typed interpretative languages,” he said, before adding, “to the extent that it succeeds you’ll have to judge for yourself.”
</p>
փաստորեն։
Սա էլ Պայքի 2000 թվի թուղթ ա։ Հետաքրքիր ա։
_ու տենց_
Գիտեք որ արհամարհանքով եմ վերաբերվում ջավա/դոթնեթ/մոնո/քորփորեյթ/էնթերփրայս և այլ իմպերիալիստական չաղ և քաղքենիքաղցած գործիքներին։
Տեխնոլոգիապես։
Ընդհանրապես փորթաբլ լեզու ունենալու գաղափարը լավն է։
Այսինքն մի լեզու որով ոնց էլ գրես, ամեն ինչի վրա քմփայլ կլինի։
Ու ոչ թե նենց ոնց որ ասենք սի-ն որ ասենք եթե ԳՆՈՒ սի քմփայլեր ամեն տեղ կա, ուրեմն ֆսյո։
Չեմ ֆսյո չի բնավ, քանզի ասենք դուք շիֆտ-միֆտ անու՞մ եք։ Վաաաայ, բա էնդիաննեսսը մոռացա՞ք։
Բա տիպերը ձեր մոտ ի՞նչ չափսերի են։
Էթեսեթտրա։
Ու էդ տեսանկյունից իհարկե վատ չի որ ինչ որ տենց բան փորձել են մտածել։
Բայց սպասե՛ք։ Բանն այն է որ լիքը այլ լեզուներ ստեղծվել են հենց փորթաբիլիթին մտքին ունենալով։
Քանզի Լիսպը նա լյուբիծելյա ա, ապա հեռու չգնալու համար հիշեմ Ադան, որտեղ տիպերը առհասարակ ռանջերով են նկարագրվում, ասենք
type Range_Type is range -5 .. 10;
type Angle is delta Pi/2.0**31 range -Pi .. Pi;
Կարող եմ նաև նշել Լիմբո-ն, որը Ինֆերնո համակարգի հիմնական ծրագրավորման լեզուն է։
Ու եթե Լիմբոն համեմատաբար նոր է (իննսունականներ)
ապա Ադան վաղուց կար ու ջեներալփուրփոս է։
Սակայն մարկետինգը ասում է որ սիրուն չէ անել Սան Ադա Մաշին։ Ավելի լավ է մի նոր բան մտածել։
Ջավան ռադիկալ ա, սակայն բնավ ազատ չէ։ Այսինքն, գրել միմիայն օբջեքթ օրիենթեդ պետք չէ։
Լիքը խնդիր կա երբ օբյեկտները լրիվ ավելորդ են։
Մի ծրագրավորող ասում էր որ երբ ջավայով ա գրում, հա պատերի ա իրան խփում։ Քայլ ձախ, քայլ աջ՝ պատ։
Ու դրանք ոչ թե ասենք թայփ տեստեր են որոնք օբյեքտ լեզվին շատ անհրաժետ են, այլ ասենք վիրտուալ մեքենան։
Սինտաքս։
Կրկին մարկետինգ։ Սի-ի սինտակսի թերությունները մնացել են։
x=x+1 – ներեցեք, ո՞նց եք բացատրելու մարդուն էդ ո՞նց ա x-ը «հավասար»։ Չէ՞ հավասար չէ բնավ։ Վերագրվու՞մ ա։
Ապա վերագրման նշան կիրառեք, որը ընգծում ա անհավասարակշռությունը։
Այդ նշանը Ալգոլի ժամանակներից կա՝ :=
Չի դզում՝ նորը մտածեք։
Ու ասեմ որ Յունիքսի ստեղծողները իրանք ով նախագծել են Լիմբոն, արդեն այնտեղ կիրառում են հենց այդ նշանը։
Լիմբոն և Օբերոնը ինսփայր են արել Գոու, որին խորհուրդ եմ անում ուշադրություն դարձնել։ Չնայած, իրա մեջ դեռ ռեալիզացիա արած չեն շատ հնարավարություններ, որոնք կան պարզ Օբերոնում, բայց դա հիմա էական չէ։
Էդ նաև ազատում ա == որպես էքվալիթիի նշան օգտագործելուց։
Առհասարակ, ==, <> սխալի բուն են։ Նիշերից մեկը չտպվեց՝ հետո լիքը մարդ տառապում ա խնդիրը գտնելով։
Ու մի ասեք, փորձառու ծրագրավորողը տենց սխալ չի անի։ Ինչի՞ փորձառուն տենց հիմար բաներով պիտի տարբերվի անփորձից։ Փորձառուն մի քիչ այլ գաղափար ա։ Տենց հիմար փորձ պետք չէ բնավ։
Ռեալիզացիա։
Դիտարկենք ՋՎՄ/ՋԴԿ և գցջ։
ՋՎՄ-ի շերտը շատ ծանր է և չաղ։
Մասշտաբիրուեմոսծը բացակայում է։
ՄԵ-ն միկրո էդիշն ա, այլ ոչ թե ստանդարտ մեքենայի քոր, որը էքստենսիբլ ա լինում, ու դառնում ստանդարտ փլագիններ ավելացնելով։
Էքսթենսիբլիությունը – սիրուն լուծում ա։ Տարբեր էդիշններ՝ տգեղ և հիշեցնում է հենակներ, որոնք, անկասկած շատ են կիրառվել ռեալիզացիայի ժամանակ։
Վիրտուալ մեքենան ուտում է հիշողություն և մինչև վերջերս բաց չեր։
Ու որպես կանոն ջավա կոդը անհամեմատ դանդաղ ա կատարվում։
Իմ խորհին համոզմունքն է որ մենք ժամանակից թանկ բան չունենք։
Այսպիսով ծրագրի վրա թող նախագծողները ավելի երկար աշխատեն, բայց մենք քիչ ժամանակ սպասենք ամեն անգամ։ Սակայն, իրականությունն այն է որ դա հակասում է մարկետինգի և բիզնեսի շահերին։
Ինչքան արագ գրվի սոֆտը, այդքան արագ շուկա կհանվի, այդքան քիչ փող կծախսվի նախագծման ընթացքում։
Ջավայի տորմոզնուտոսծի շատ հավես իլլյուստրացիա կա։
Ռուսները Տոմմի անունով ռոբոտ ունեին։ Ինքը մասնակցում էր ԴԱՐՊԱ-ի կազմակերպած րեյսինգի մրցույթին։ Եվ սպանվեց իրան ապստենու գլուխը պատով տվեց։ Երևի ԳՑ-ն էր միացել։ Այդ դեպքից հետո ծրագրավորողների մի մաս սկսեց համաձայնվել ջավիստների հետ այն մասին որ «ջավա նե տարմազիտ»։
Իմ իմացած յուզերների մեծ մասը զզվում ա ջավա ափլիքեյշններից․ «նրանք ծանր են, դանդաղ և այլն» պատճառաբանություններով։
Այդ իսկ պատճառով հիմա ջավան հարկադրվել է հեռանալ քորփորեյթ լուծումների ասպարեզ։ Դեսքթոփ ափլիքեյշններ անտեսելի քիչ են։
գցջ-ն՝ քմփայլ է լինում նեյթիվ կոդ, լինկ էր լինում սի և այլ գրադարաններին, նույնիսկ աղբ թափելը իրականացվախ է Հանս Բոեհմի Սի/ՍիՓլասՓլասՔոլեկտորով ։ Ահագին գործ իրան լավացնելու մաջ արել է ՐեդՀատը, որը ասենք, ժամանակին պատչեր արել որ Թոմքատ իրանով քմփայլի։
Այս իրականացումը վատը չէ, նույնիսկ լավն է, սակայն իրանով լիքը բան անել չի լինի։ ՋԴԿ-ի օփենսոուրսացումը կարող է խոչընդոտել այս լուծման հետագա զարգացմանը։
Արտաքին տեսք։
Ջավայի Սվինգ ուիդջետներից տգեղ բան չկա։ Մոտիֆը նույնիսկ սիրուն ա դրա հետ համեմատ։ Այսպիսի բաներից հետ տալս գալիս ա։ Լուրջ։ Սիրտս խարնում ա։
Ընդ որում ուինդոուսում էդ ուիդջետներով հաճախ հասարակ մաուսի սքրոլ չի աշխատում։ Լինուքսում ի դեպ՝ աշխատում ա։
Եթե ԱյԲիԷմի ՍՎՏ թուլքիթը չլիներ (էկլիպսի ուիդջետները դրանով են արած) ի՞նչ էիք անելու այ դեվելոպերներ։
Իդեոլոգիապես։
Իմ կարծիքով,
Ջավան ինքը իրա դիզայնով օփեն սորսին խփում էր՝ տիպա մեզ պետք չեն իսխոդնիկներ պորտ անելու համար, այլ պլատֆորմային, քանզի ամեն պլատֆորմայի վրա մի վիրտուալ շերտ կա։
Ու ջահնդամը որ լիքը հիշուղություն ա ուտում այդ շերտը, և հիմնականում դանդաղ են աշխատում ծրագրերը։
Սաղ հեչ։ Փաստորեն հիմա ստացվում ա որ նույնիսկ նենց տգեղ լուծումը «լավն» ա դարնում երբ այֆոնը կապվում ա օբջեքթիվ-սի-կակաո վիճակներին փորթաբիլիությունը խոչընդոտելու նպատակով։ Ի դեպ, էփլին լավ կհարվածի ՔյուՏի պորտը։ Թե սիպլասնել են բան անելու։ Ո՞ր պատճառաբանությամբ։
Հա, ու ասենք ծանոթ եմ տեսնում Սոնի Էրիկսոնով, ասում եմ՝ լավ ա չի բողոքի որ բան չի կարողանում տեղակայել, քանզի իրա մոտ, ջավա կա՝ աշխատում ա լիքը բան։
Չնայած ՄԵ-ի ռեալիզացիան նենց աղքատիկ էր վախտին, ասենք թափանցիկ սպրայտեր չկային։ Չգիտեմ հիմա ավելացրել են թե ոչ։
Իսկ նապասլեդըկ խորհուրդ եմ տալիս նայել սա ու համոզվել թե ով է ջավամանը իրականում ։
_ու տենց _
թույն տվեք ինձ, ես նոր հասկացա, ինչում էր պատճառը այֆոնի համար միմիայն երեք լեզվով գրելու սահմանափակման։
մտածենք, ի՞նչն է միավորում բորտից դուրս մնացած տեքնոլոգիաները․
մոնո, ֆլաշ, ֆրիպասկալ/լազարուս․․․
ճիշտ է․ կրոսսպլատֆորմ դեվելոփմենթ։
մի անգամ գրում ես, ամենուր աշխատում ա։
էփլի նպատակը հնարավորին չափ դժվարացնելն էր կրոսսպլատֆորմ սոֆթ գրելը և դրանով ԾԱ ֆրագմենտացիա ստեղծելը։
Ավելի պարզ, հնարավորին չափ խոչընդոտելը նրան, որ նույն ծրագիրը լինի և անդրոիդի, և ուինմոբայլի, և մեմո/միգոյի, և եսհեռախոս-ի համար։
Օբջեքթիվ սի/կակաո ով փորձել ա գիտի ինչ ա։ Ի դեպ սիմբիանի սիպլյուսներն ել մի բան չեն։
Բայց Նոկիան արեց ճիշտ հակառակը, պորտ անելով qt-ն սիմբիանի վրա և այսպիսով հեշտացնելով դրսից qt-ով գրվախ սոֆթի պորտը սիմբի։
Էլի ի դեպ․ էփլը պատենտավորել է այֆոնի տեսքը․ պատենտում նկարագրված է թաչսքրին ու ստեղն։ Առանց մեկնաբանության։
ու ես չեմ ասում որ էփլենք «վատն են», կամ «լավը չեն»։ Ոչ բնավ։ Պարզապես չար են։
Ու փորձում են էժան քայլերով էլիտարության համ տալ, պատճառաբանելով, որ ծիպը ֆլաշը բիդլոկոդերների գործիք ա, ու դրանով իսկ դարձնում է եսհեռախոս-ը բիդլոի, այսինքն չմտածող մարդկանց համար հեռախոս։
Ես չունեմ այֆն և չգիտեմ ինչպես այն օգտագործել։
ու տենց
[այստեղից ][1]
_ու տենց _
[1]: http://www.stlport.org/resources/StepanovUSA.html
prof. Niklaus Wirth at the 4th Annual Google Test Automation Conference
_ու տենց _
гугл выпустил бесбейсикоподобный язык для андроид. ну читаю я что это талое, смотрю пример 🙂
_ու տենց _
Computer Language – это неправильный термин.
Языки программирования – самые что ни на есть Human языки. Они созданы людьми для людей, чтобы с их помощью выражать (описывать) и читать мысли (читать – если это не перл :))
Наличие компилятора только подтверждает мою мысль, ведь он транслирует человеческое описание алгоритма в машинные коды – нативный компьютерный язык.
Человек, который умеет писать, скажем в шестнадцатиричном коде, – он знает компьютерный язык. Тот, кто знает ассемблер – умеет общаться с компьютером со словарем. А тот кто знает Си или Паскаль – он не умеет общаться с компьютером без переводчика 🙂
Люди думают по разному, и именно поэтому есть такое количество языков программирования
взято у old_dilettante{.lj-user}
—
Вот такой текст запостил Давид Толпин в список рассылки Brain Users Group{.snap_shots}:
мне пришли откровения про лопаты и языки программирования.
Haskell и Схема – это сферические лопаты в вакууме. Они внутренне совершенны и
стройны, но ими довольно трудно копать. Разве что вакуум.
Common Lisp – это лопата, с кривоватой ручкой и слегка ржавым ножом, но
пригодная для копания. Испытываешь легкую досаду от неуклюжестей, но работаешь.
C++ – это такой предмет, на рукояти с одной стороны – лопата, с другой – грабли.
Можно делать все, что угодно, но либо отрезаешь себе что-нибудь лопатой, или
протыкаешь граблями.
Python – это пластмассовая лопата. Очень красивая и удобная, но копать ей можно
что-то мягкое и легкое; иначе не выдерживает и ломается.
Java – это лопата с прорезями, или грабли с широкими зубьями. При помощи нее
можно как плохо копать, так и плохо грести.
Perl – это не лопата. Это мотыга. Можно очень хорошо копать, если очень хорошо
умеешь, иначе ничего не выходит.
C – это лопата без ручки. Либо трахаешься по локоть в грязи, либо приделываешь к
ней ручку, после чего получается просто самодельный лисп.
—
Добавлю от себя, когда меня спрашивают про Оберон, я часто говорю: Это как латинский алфавит, когда из букв нужно составлять слова, против китайских иероглифов (c++), где на каждое слово предусмотрен отдельный знак.
if (a=b) {
……….
}
Нет, не сравнение! Присваивание! И вот эту ошибку не могли заметить в течение двух недель, в одной фирме, где я работал 🙂
Потому, что немудрено ошибиться, и поставить на один знак равенства меньше.
Конечно, можно сказать, что нормальные люди так не пишут.
Но ведь пишут же!
Я это к чему? К тому, что такой синтакс, унаследованный в массе языков, часто оказывает медвежью услугу.
И сколько народа в мире так ошибалось? И как долго они искали свои баги? А все потому, что кто-то так сдизайнил язык.
you may compare packages popularity, like I have compared popularity of freepascal, gnu pascal, gnat (ada) and oo2c (oberon) compilers
Compiler benchmarks