ասք վիշապին մակում բնակեցնելու մասին

ուրեմն, ուզում եմ մի քիչ գրել իմ մակօս֊ական փորձից։
որպէս դեւ, ով առաջին անգամ է այս օհ֊ի հետ աշխատում։ իմ հին ծանօթ աւստրալիացին իր մակի վրայ հաշիւ է բացել, որ կպնեմ, վոկ֊ը պորտ անեմ մակի։

նախ սիլանգից՝ ասեմ, որ այս գործիքն առաջին անգամ եմ փորձում, օգտւողի տեսակէտից ահագին յարմար է թւում։ Ոչ միայն տողն է ասում, ուր սխալն է գտել, ինչպէս ջիսիսի֊ն, ոչ միայն տողի որ երորդ նիշն է (միշտ զարմանում էի, ինչո՞ւ ոչ մի սի կոմպիլյատոր դա չի անում), ոչ միայն սիրուն գեղեցիկ պսեւդոգրաֆիկայով ցոյց է տալիս՝ ահա, այստեղ է սխալդ — այ այստեղ սա է պակասում, ասենք, բայց եւ… ակնարկում է թէ ինչ անես, որ սխալները ուղղես։

clang hints

Միւս կողմից, այդ իր վարքագիծը նոյնիսկ յոգնացնում է։ Ասենք, այս դէպքում, լրիւ անիմաստ է զգուշացնել, ինձ թւում է՝

clang warning

ասում է՝ «place parentheses around the ‘&&’ expression to silence this warning»։ ինչո՞ւ։ կոմպիլյատորը գիտի, չէ՞, ցանկացած սի֊ի կոմպիլյատորը այդքան պարզ բան գիտի, չէ՞ որն է օպերատորների precedence֊ը։ ուրեմն ո՞ւմ համար է։ գրողի, կամ կարդացողի։ որ գրողը տեսնի իր գրածը, ու իմանայ, որն է precedence֊ը, այնպէս չստացւի, որ կասկած լինի, որ նա չգիտի։

բայց սա արդեն ո՞ւմ համար է։ ակնյայտ անգրագէտի՞։ չգիտեմ, լա՞ւ է դա, թէ չէ։ այն էլ լռելեայն, առանց զգուշացումներն յատուկ միացնելու։

Ասենք այս կոդի մէջ կայ սխալ՝

int main()
{

   int a, b;
   
   a = 23; b = 42;

   if (a = b)
      {
        b = a;
      }

}

սիլանգը ասում է՝

clang_warnings

ասում է… նու ճիշտ բան է ասում, հա՞։ բայց կարող է ես ուզում եմ սենց բան անել, ինձ պէտք է հենց այսպէս, ինչի՞ պիտի հայհոյի։ նկատի ունեմ, նա ինձ նախապէս դնում է յիմարի տեղ։ ենթադրում է, որ ես չգիտեմ ինչ եմ անում։
չգիտեմ, լաւ է դա թէ վատ։
ջիսիսի֊ում իմ ցանկութեամբ կմիացնէի ասենք, -pedantic, ու կնայէի ինչ է ասում։

հիմա համակարգից։

փաստօրէն, ստատիկ բինար նիշք ստանալ չեմ կարող։ մակօս֊ում չի լինի։ իրենք (էփլը, ֆաշիստները, սրիկաները) չեն տալիս համակարգի գրադարանների ստատիկ տարբերակները՝ .a նիշքերը, ասենք։ Որ դրանց միջի .o նիշքերը լինի ստատիկ միացնել իմ ծրագրին։

երկրորդ շատ հետաքրքիր բանը։ այստեղ ELF չկայ, այստեղ Mach-O բինարնիկներ են։
ու այդ պատճառով էլ .so չկայ, կայ .dynlib.

ldd֊ի փոխարէն էլ otool է

$ otool -L voc
voc:
	/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 169.3.0)
$ 

ու վերջապէս այն, ինչը լրիւ անսպասելի էր։

ուրեմն, ես երբ voc֊ը թեստաւորում եմ, անում եմ այսպէս․ ստացա՞յ նոր վարկածը, իրենով իրեն շինում կոմպիլացնում եմ, ու նայում եմ md5 գումարը նոյնը մնա՞ց թէ չէ։

ինձ պէտք է որ նոյնը մնայ, եթէ չէ, ուրեմն ինչ֊որ բան սխալ է, ինքն իրեն վերարտադրել չի կարողանում։ ու սխալը երկար չի թաքնւում, արդեն երկրորդ անգամ, յաջորդ սերնդի վարկածը կամ ինքն իրեն, կամ այլ մոդուլներ կոմպիլյացիա անել չի կարողանում։

այս անգամ, նա ինքն իրեն ստաբիլ ստանում է, լրիւ գրադարանները ստաբիլ կարողանում է շինել, իսկ արի ու տես, որ իր իսկ md5 գումարը հա փոխւում է։
ամէն անգամ կոմպիլյացիայից յետոյ փոխւում է։

ես մտածում էի՝ խնդիր ունեմ։ ես եմ մի բան սխալ արել։
յետոյ մտածեցի, ո՞վ գիտի ի՞նչ է այդ ոչ էլֆ օ֊մախ բայնարին։ մի հատ ․օ֊ները ստուգեմ։

բոլոր գեներացւող ․օ֊ները նոյն էմդիհինգն ունէին։ Դա ինձ հանգստացրեց։ Բայց ամէն անգամ լինքինգից յետոյ ստացւած նիշքի էմդիհինգ գումարը փոխւում էր։ Յետոյ պարզեցի, որ այդ մակի ֆորմատի ձեւն է, ամէն անգամ լինքերը մախ բինարիի մէջ uuid է սարքում խփում։ այն պէտք է իրեն համապատասխանեցնելու համար արտաքին dwarf debugging տւեալները յստակ այս կամ այն նիշքի հետ։

այնպէս որ զգօն եղէք մակի համար գրելիս․ սիլանգը ձեզ կարող է յիմարի տեղ դնել, համակարգը ստատիկ բինար սարքել չի թողնի, իսկ լինքերը ամէն անգամ նոր ձեւի նիշք է արտադրելու նոյն կոդից։

ու տենց

ասք Յոլլայի մասին

Ով չգիտի, Նոկիայից գնացած կամ հեռացված աշխատողներն են շարունակում իրենց Միգո Մաեմո նախագիծը։

իսկ ես հավանել եմ ինտերֆեյսը, շարժումներով կառավարելը, Ն9֊ից ցրած ու փոխած սվայփը։

Կարեւոր է ինչպես, շարունակելով մաեմոյի ու հարմաթանի ավանդույթները, իրենք միակն են ում մոտ այսպես ասած «մինիմայզ» արած ֆոնում կատարվող ծրագիրը նույնիսկ փոքր թամբնեյլի շարունակում է աշխատել, օրինակ շարունակում է ցույց տալ տեսանյութը։
Ու նույնը սվայփի ժամանակ։

Նաեւ կարեւոր է որ մաեմոյի պես աբստրակցիա են արված կոնտակտները՝ ուզում ես ֆբ֊ով ուղարկի, ուզում ես սմս, հավանաբար նաեւ ուզում ես սքայփով զանգիր, ուզում ես ջաբերով, ուզում ես՝ բջջային կապով։

Դուրս է գալու շուկա տարվա վերջում, արժի 400 եվրո, որը թանկ չէ, իսկ հաջորդ տարվա սկզբին էժան դիվայս աղքատ, կամ այլապես զարգացող երկրների համար։

Հիմա իրենց երեւի օդի պես պետք է փող ու պրեօրդեր են կազմակերպել, որ օգնի արտադրել։

Ինձ անձամբ պետք է իսկական ստեղնաշար, ու ես հուսով եմ իրենք շուտով կհայտնեն, երբ կլինի դրանով սարքը, քանի որ խոսակցություններ ստեղնաշարով սարքի մասին չեն մարում։

ու տենց

ասք փորթաբլ գրելու մասին

computer science -ը վերացարկման (աբստրակցիայի) արվեստ է։ մենք մտածել ենք մոդուլներ, վրոփերներ, կոպմոնենտներ, եւ այլն։
այսինքն մենք ուզում ենք նվազեցնել կրկին գրվող կոդի մասը, ավելի ընդհանորւ ենք սարքում ինտերֆեյսներ, եւ այլն։
դա նաեւ այն է ինչ մեզ սովորեցնում են։

հիմա նայենք ինչ ունենք մոբայլ սարքերի ոլորտում նախագծման դեպքում։
ունենք հայտարարված փորթաբնլ, բայց իրականում մեկ պլատֆորմային կպած դոթնեթ (WP7), ունենք անփորթաբլ C++ Սիմբիանի համար, ունենք հայտարարված կրոսպլատֆորմ ջավա, որի անդրոիդի համար գրված ափը էլ ոչ մի տեղ չի աշխատում․․․
ունենք cocoa էփլի դեպքում։

այսինքն, կամ գրում ես անդրոիդի, կամ այֆոնի, կամ սիմբիանի, կամ վինդովսի համար։ թե ուզում ես պորտ անել, պիտի ահագին ուժ ծախսես։
որը հակագիտական է։
բայց բիզնեսի մոծիվներով է

ի՞նչ կար առաջ․ ունեինք j2me, որը մահացավ թույլ հեռախոսների հետ, բայց որը կարելի է համարել փորթաբլ։

ի՞նչ կունենանք։ Միրիադ ընկերությունը պորտ է անում անդրոիդի դավլիկը (ջվմը) Լինուքսի վրա, այսինքն անդրոիդի ծրագրերը կաշխատեն Միգոյում։ (Միրիադը նախագծել է վինմոբայլի ջ2մեն, յբեդը, Օբերոնով)
կունենանք դոթնեթով գրված ափեր վինդովսի եւ այֆոնի, եւ Միգոյի համար ազատ մոնոյի շնորհիվ։
Կունենանք Լազարուսով գրված սոֆթ դրոիդի, սիմբիանի, այֆոնի, միգոյի, բայց ոչ վինմոբայլի համար, քանզի այնտեղ դոթնեթ ա։
Կունենանք հավանաբար ՔԹ, որը կծածկի սիմբիան, ու Միգո։ Ինչ կստացվի այֆոնի ու անդրոիդի հետ դեռ պարզ չի։
Նենց չի որ շատ գույնզգույն ա, բայց կարծես քիչ քիչ լավանում ա վիճակը։

ու տենց

ասք Մոդուլյար համակարգերի գաղտնիքների մասին

«Մոդուլային համակարգերի գաղտնիքները» հոդվածի հեղինակն է Սերգեյ Գուբանովը։

«Մոդուլ» եւ «մոդուլյար լեզու» թերմերի բացատրությունների զանազանությունը ծնում է ավներջ վեճեր։ Ինչեր ասես, որ մոդուլ չեն անվանել, ինչ լեզու ասես, որ մոդուլյար չեն համարել։ Ոմանք մոդուլ անվանում են կլասսները, ոմանք ել համեմատում են մոդուլները օբյեկտների հետ։ Առհասարակ այնպիսի տպավորություն է ստեղծվում, որ այժմ մոդուլյար եւ կոմպոնենտային լինելը նորաձեւ ոճ է։ Տարբերակների զանազանության պատճառը բացատրությունների ձեւի մեջ է՝ ներքին ձեւի։ Ներքին է այն իմաստով, որ սահմանումը տրվում է որոշ ներքին հատկությունների հիման վրա (մոդուլը պարունակում է տվյալներ, կոդ, տիպեր, ապահովում է ինկապսուլյացիան, ունի ինտերֆեյս, եւ այլն)։ Մոդուլների ներքին էական հատկությունները առանձնացնելու բազմաթիվ եղանակներ կան, իսկ դա նշանակում է, որ գոյություն ունեն նաեւ մոդուլների սահմանման բազմաթիվ եղանակներ։ Ապագայում ներքին հատկությունների քանակը գուցե եւ ավելանա, հայտնվեն սահմանումների նոր ձեւեր․ այսինքն՝ վիճելու առիթ ավելի շատ կլինի ու դա կտանի փակուղու։ Ելքը ներքին սահմանման փոխարինումն է արտաքինով։
Արտաքին է այն իմաստով, որ սկզբից պետք է նկարագրել ինչ է «մոդուլյար համակարգը», իսկ «մոդուլի» հասկացությունը կհայտնվի ինքնաբերաբար, ավտոմատ կերպով, քանի որ մոդուլը մոդուլյար համակարգի բաղադրիչն է։ Մոդուլյար համակարգը առաջնային է, մոդուլը՝ երկրորդային։ Մոդուլն ինքը իրանով չէ, այլ համակարգի մոդուլ է։ Մոդուլյար լեզու հարկավոր է անվանել այն լեզուն, որը մոդուլյար համակարգեր նախագծելու համար հարմարեցված, օպտիմիզացված է։ Այսպիսով՝ մոդուլյար ծրագրավորման լեզուների իմաստը մոդուլյար համակարգերի նախագծումն է։

Ստորեւ բացահայտենք մոդուլյար համակարգերի իմաստը:
Continue reading “ասք Մոդուլյար համակարգերի գաղտնիքների մասին”

ասք ջավա ծրագրամիստներին ոչնչացնելու մասին

Բլոգը ճիշտ օգտագործեմ, որպես վեբ լոգ՝

Android:
1) Очень тупой интерфейс, просто груда иконок
2) Без JIT’а производительность для таких процессоров просто ужасная. С JIT’ом – лучше, но программы на C++ всё равно в разы быстрее 😉 Т.о. Android в очередной доказал, что Java-говно
3) Весь софт абсолютно типичный для закрытых мобильных платформ. Редкие исключения типа openvpn’а или ssh лишь подтверждают правило: без перепрошивок Android – это раздутая платформа а-ля P2K, но хуже
4) При наличии таких наработок, как Opie и QTopia Google предпочёл просто тупо скопировать идеи Яблока в духе “китайской Nokia”. В итоге получился второй сорт
5) У меня Спика, и в ней не работает встроенное радио, нет хардверного 3D драйвера, хотя есть нужное железо, GPS по дефолту – через пень колоду, процессор – мощный и тупой, флэш не держит. И таких обрубков под Android воз и маленькая тележка.
6) Фингерпады – зло, а в России зимой – ещё и крайне опасное зло. Да, стилус рулит и альтернатив нет.

“В заключение хотелось бы отметить”… У меня MOTOMING на более слабом железе умеет больше, а что не умеет – так нет железа для этого (WiFi нет например). Но платформа использует железку с максимальной отдачей. И это при мизерной оперативке и процессоре 312МГц.
А всё почему? Потому что в основе ezxlinux – бинарная платформа. А Android – свистоперделка для тупых Java-приложений.

Всё вышесказанное свидетельствует о том, что Java-программисты должны уничтожаться в зародыше, иначе планета погибнет от глобального потепления, будучи заваленной к тому же непереработанными аккумуляторами.

Спасибо за внимание!

այստեղից

ու տենց

ասք ստանդարտներին հետևելու մասին

Ստանդարնտները լավ բան են։ Ինչ որ ստանդարտ պետք ա լինում։ Նույնիսկ ասենք շփման մեջ, միմյանց հասկանալու համար։ Կամ թերմերի մեջ, կրկին՝ հասկանալու համար։
Սակայն, երբ ստեղծում եք նորը ստանդարտին հետևելը, կամ համապատասխանելը հաճախ բերում է վատ որոշումներին, ու վատ դիզայնին։
Ասենք, երբ Ստրաուստրուպը C++ նախագծելուց փորձում էր պահպանել C-ի հետ համատեղելիությունը, դա բերեց ինչպես տգեղ լուծումների, այնպես էլ լեզվի չաղացմանը։
Ուինդոուս/Սոլարիս-ներում – պահպանել նախկին տարբերակների հետ համատեղելիությունը որոշումը բերեց գրադարանների չաղացմանը։
Ի տարբերություն, Վիրտը, նախագծելով Մոդուլան որոշեց չպահպանել պասկալի հետ համատեղելիությունը։ Փոխարենը, նա գրեց քոնվերթեր, պասկալից մոդուլա տրանսլացիա անելու համար։ Նույնպես նա վարվում էր և հետագայում, Մոդուլայից Օբերոն քոնվերթեր գրելով, քանի որ հասկանում էր՝ համատեղելիությունը պահպանելը կբերի տգեղ դիզայնի։
Բաց ԾԱ-ի աշխարհում համատեղելիություն պահպանելը իմաստ չունի։
Փոխվեց գրադարանը՝ փոխվում է ծրագիրը որը այն օգտագործում է։ Եթե ծրագրի հեղինակը հետաքրքրված չէ, դա անում է մեյնթեյները կամ յուրաքանչյուր մեկը ում այդ ծրագիրը պետք է։ Այսպիսով, բաց ԾԱ-ն չունենալով համատեղելիության շերտ՝ ավելի նիհար է։
Ինչպես ես արդեն գրել եմ, կարգինը՝ արտակարգ լինել չի կարող։
Այս պատճառով Պլան9-ը և Ինֆերնոն, որոնց դիզայնի մեջ, ի դեպ, անկերես է Օբերոնի ազդեցությունը, չեին կարող հետևել սովորական Յունիքս/Պոսիքս ստանդարտների։
Ու պարզ է որ նրանք լայն չեն կիրառվում այն պատճառով, որ ծրագրերի մեծ մասը գրված է տեխնոլոգիաներով, որոնք անհամատեղելի են Ինֆերնոի հետ։ Օրինակ, C-ով կոդ այնտեղ ափլիքեյշն լեվել չի օգտագործվում, դրա համար կա Լիմբո։
Սակայն, նոր դիզայն կարող է իրեն թույլ տալ կորմորացիա որը նախագծում է ու տարածում նոր համակարգ։
Ես Անդրոիդ-ի մասին եմ։
Գուգլը լինուքս միջուկի հիման վրա ստեղծել է «նոր» համակարգ, ձեռք է բերել նոր ջավա վիրտուալ մեքենա։
Դրայվերների խնդիր մոբայլ սարքերի համար չկա՝ միևնույն է լիքը նոր դրայվեր գրվել է։
Լինուքսից օգտագործվել է սքեդուլերը, թիսիփի սթեքը, և այլն։ Սի-ով ափլիքեյշն կոդ գրելն նախատեսված չեր։
Այսինքն, կարելի էր անել համակարգ, որտեղ կան դիզայնի նոր ընտրություններ, ինչպես ընդհանուր հասցեական տարածությունը։ Բայց էդպիսի բան արված չէ։ Ընդ որում Լինուքս միջուկի քաստոմիզացիայի վրա այնքան ռեսուրս է ծախսվել, որ այդ ուժերը անհրաժեշտ էր ծախսել Ինֆերնոն փրոդաքշն և մոբայլ սարքեր բերելով։
Որովհետև նոր է, արագագործ, ու գեղեցիկ։

ու տենց