ծրագրաւորողների մեծ մասը քեարթու են, որովհետեւ կայ ծրագրաւորողների պահանջարկ։
աւելին, կայ պայմանական ջս ծրագրաւորողների պահանջարկ։ էդ մարդիկ ճարտարագէտ չեն ոչ միայն էն պատճառով, որ ճարտարագէտը գիտի լիքը բան ֆիզիկայի, նիւթերի, ալիքների, մասնիկների, լոյսի, մաթէմի, անվերջութեան, աբստրակցիաների, ֆորմալ ներկայացումների, էլեկտրականութեան, էլեկտրամագգնետիզմի, դաշտերի, քիմիայի մասին։ քեարթու ծրագրաւորողները նոյնիսկ չգիտեն համակարգիչները ոնց են աշխատում, ծրագիրը ram֊ից ա աշխատում թէ դիսկից, որն ա թիւրինգ քոմփլիտ լինելը, որն ա նոյմանի ազդեցութիւնը էսօրուայ ամէն համակարգչի, օհ֊ի, բայց ոչ միշտ՝՝ լեզուի վրայ, էդ մարդիկ նոյնիսկ չեն իմանում հաշուել՝ բինարով, ինչ֊որ բան որ իրենց ոլորտի հիմքում ա։
իսկական ճարտարագէտի՝ տարբեր ոլորտների մասին պատկերացումը բերում ա նրան, որ էդպիսի մարդը դժուար լինի նեղմիտ, դժուար կարեւորի կարգինը, չտեսնի ազգայինից էն կողմ, կարեւորի տէրտէրի ասածը, ռիտուալը, եւ այլն։ մարդը որ հասկանում ա ինչքան հարուստ ու բազմազան ա աշխարհը, իմանում ա որ իր եւ մեր՝ աշխարհ ճանաչելը էնքան չնչին ա, որ դա նպաստում ա իր՝ համեստ լինելուն։
ի տարբերութիւն, մարդը որ ճարտարագէտ չի ու այդ լայն սպեկտրի գիտելիքներին չի տիրապետում՝ աւելի հաւանական ա որ լինի քիթը ցցած, ինքնավստահ սնոբ, ունենայ կարցրացած կարծիքներ, որ յաճախ հետադէմ են։
ու էդ մարդիկ յաճախ ոչ միայն աշխարհի շերտերը չեն տեսնում, այդպիսի մարդուց կարելի ա լսել՝ «ես գիտեմ c++», ու դա նշանակում ա որ նա չի պատկերացնում նոյնիսկ այդ լեզուի ծաւալը, ու որ դժուար թէ որեւէ մարդ կայ, որ էդ ծաւալին ամբողջութեամբ տիրապետում ա։ ի՞նչ ասել այլ գիտելիքների ծաւալի մասին հեռաւոր պատկերացումից։
չեմ կարող չշեշտել որ բարդ գործիքի գոյութիւնը անգամ կարող ա հեռացնել մարդուն մասնագիտական էական կոնցեպտներ իմանալուց՝ նա ընկնում ա օրինակ իր բարդ լեզուի էս ու էն «կոճակի» տեղը սովորելու հետեւից, ստորգետնեայ քարերի տեղերը անգիր ա անում, փոխարէնը էականին ուշադրութիւն դարձնէր, ու նոյնիսկ եթէ շատ ջանք ա դրել գործիք սովորելու վրայ, այդ գործիքից էն կողմ չի էլ ուզում տեսնել։ կամ նա չի իմանում էականի գոյութեան մասին, քանի որ սովորել ա գործիք, պայմանական «սովորէք c# երկու շաբաթում», որ ընդունուի գործի, առնի տուն, մեքենայ եւ այդ մեքենայի բարձրութիւնից, յարմար նստած, օդորակուող միջավայրից, նայի շուրջը, սիգնալ տայ, եւ ջղայնանայ որ հետիոտնը փողոցը ստորգետնեայ անցումով նախընտրում ա չանցնել, կամ ինչպիսի աղէտ՝ որ լուսակիր ա յայտնուել որտեղ չկար ու զեբրա։ ու նա հիմա պիտի սպասի, ոչ թէ ցրտին կանգնած ծերունին։
նա արդէն հպարտ ա, զի իր նեղ աշխարհում ամէն պահանջուածի հասել ա, ու կը կենտրոնանայ այդ կենցաղային մանրուքների վրայ, որ իր համար կը դառնան անչափ կարեւոր, կը նեարդայնանայ դրանցից։
գուցէ իր երեխաները ստանան աւելի լաւ կրթութիւն, գուցէ կը փորձեն նայել իրենց քթից էն կողմ, կը նկատեն որ լուսինը հորիզոնի մօտ աւելի մեծ ա, ու կը հետաքրքրուեն՝ ինչի՞ ա էդպէս, չէ՞ որ նոյն լուսինն ա։ ապա գուցէ նաեւ մտահոգուեն միջավայրի մասին, քաղաքականութեամբ, որ արդէն մի քիչ աւելի լայն հայեացքի կունենան։ գուցէ։ բայց երբ «էլիտան» ինքնագոհ ճարտարագէտ կոչուող, բայց դրա հետ կապ չունեցող քեարթուներ են՝ դա չի նպաստում էնպիսի միջավայրի, ուր կը լինի լայն հայեացքին նպաստող կրթութիւն։
#ծրագրաւորում #կրթութիւն #ճարտարագիտութիւն #նեղմտութիւն #խաւարամտութիւն
էսօր խօսում էինք, յիշատակեցի oncd ու nsa ռիփորթները, ահա էստեղ յղումները թողնեմ, որ լինեն, միւս անգամ հեշտ գտնեմ՝
երկրորդ թուղթը յիշատակում ա #պասկալ ֊ը։ այդ պատճառով embarcadero֊ն հրապարակեց այս յօդուածը՝ արդե՞օք պասկալը ապահով լեզու ա։
#ծրագրաւորման_լեզու #ծրագրաւորման_լեզուներ #ծրագրաւորում #տէք #ապահովութիւն #տէքնոլոգիա #տէքնոլոգիաներ #տեխնոլոգիաներ #լեզու #անվտանգութիւն
#սի #ծրագրաւորում #էկրանահան #ահաւոր
հա, ինչն ազատ ա, կարողանում ենք օգտագործել։ բայց արդե՞օք ուզում ենք, եթէ lowtech չի։
օրինակ, անդրոիդը աւտորիտար պրոդուկտ ա, կայսերական՝ խոշոր ընկերութեան պրոդուկտ ա, նախագծուած ա ոչ թէ օգտուողի, այլ բիզնէսի համար՝ օրինակ կարելի ա արգելել յաւելուածին էկրանահան անել։
մի տեղ գուցէ պատմել եմ, որ չկարողացանք թարումեանի տառատեսակները contribute անել անդրոիդի մէջ, զի մի տարի իրանց բզելուց եւ տշուելուց յետոյ պատասխանեցին որ third party փաթչ չեն վերցնի։ յետոյ իրենք աւելացրին հայերէն, ու շատ աւելի վատը, քան թարումեանը նկարել էր։
իսկ lowtech֊ը՝ վերնակուլար, տարօրինակ ա։
իսկ ո՞րը lowtech չի։
մենք հակուած ենք դիտարկել սի լեզուն որպէս lowtech, որովհետեւ իրա սինտաքսը մեծ չի, երկաթին մօտ ա՝ կարելի ա արդիւնաւէտ կատարուող կոդ գրել, քոմփայլեր գրելը տեսականօրէն շատ բարդ չի, ու ինտերնետում տարբեր նախագծեր կան, որ սուղ ժամանակում սի քոմփայլեր իրականացրել են։
բայց մոռանում ենք որ սի կոդի զգալի մասը, եթէ ոչ մեծ մասը՝ օգտագործում ա gcc֊ի ընդլայնումները։ ու լինուքս միջուկն էլ։ որովհետեւ էս կամ էն ընկերութեանը պէտք էր, փաթչ են արել, gcc֊ն ընդունել ա, առհասարակ կապիտալը սիրում ա նոր ու շատ ֆիչըրներ, իսկ երբ դրանք աւելանում են՝ սկսում են օգտագործուել։ էստեղ էական ա կապիտալի/կորպորացիայի ազդեցութիւնը gcc֊ի վրայ։
էսպէս քոմփայլերը ստացւում ա բարդ, իսկ այն օգտագործելով գրուած կոդը՝ ոչ տեղափոխելի։
եւ լինուսը բողոքում էր ու ասում էր որ կը հրաժարուէր gcc֊ից եթէ կարողանար։
իրականում սրանից բխում ա մտահոգիչ բան՝ լինուքս միջուկը ինքը lowtech չի՝ շատ լաւ ա աշխատում, շատ ֆիչըրներ ունի, ու lowtech չի։ ունի շատ կորպորատիւ ներդրում, ու պահանջում ա ոչ lowtech քոմփայլեր։ երեւի էսօր իւնիքսներից ամենա lowtech֊ը netbsd֊ն են ու openbsd֊ն։ ու դէ minix֊ը։ բայց էլի, netbsd֊ն ոնց որ դեռ gcc֊ի վրայ ա, openbsd֊ն անցաւ llvm֊ի, իսկ minix֊ն ի սկզբանէ շինում էին թանենբաումի amsterdam compiler kit֊ով, բայց վաղուց անցան llvm֊ի, որը էլի թոյլ ա տալիս օգտագործել լիքը ֆիչըրներ ու մեծ կախուածութիւն ա ստեղծում։
ինձ թւում ա, tcc֊ն ա lowtech։ ու ուրախ եմ որ voc֊ը tcc֊ի հետ աշխատում ա։
կայ gm2 (gnu modula-2) նախագիծ՝ տեսականօրէն modula-2 քոմփայլերը կարող ա ինքն իրան շինել մի քսան վայրկեանում նոյնիսկ շատ հին երկաթի վրայ։ բայց քանի որ gm2֊ը ինտեգրուած ա gcc֊ի հետ, gcc ծառի մաս ա (որը նաեւ ոգեւորում ա, մի կողմից պաշտօնական ա դարձնում լեզուն) նշանակում ա, որ այն քոմփայլ անելու համար պէտք ա նախ քոմփայլ անել gcc֊ն՝ գուցէ մի երեք ժամ, ու յետոյ նոր մի քսան վայրկեան մոդուլա֊2 ֊ի ֆրոնտէնդը։ հետեւաբար gm2֊ը lowtech չի, բայց ինչ֊որ մի այլ modula-2 քոմփայլեր, օրինակ mocka֊ն՝ երեւի ա։
փայթընը նոյնպէս lowtech չի։ կարելի ա հեշտ սկսել, անշուշտ, բայց շատ կորպորատիւ ներդրումներ ունի։ շատ կուզէի ասել որ go֊ն ա lowtech, զի լեզուն ինքը փոքր ա, քոմփայլերն ինքը առանց գրադարանների շինւում ա մի քանի րոպէում։ բայց կրկին՝ կորպորատիւ ներդրումներ, փաթեթների առատութիւն՝ արդե՞օք այն lowtech ա։
freepascal֊ը երեւի lowtech ա։ չնայած լեզուն կորպորատիւ նախագծման արդիւնք ա (ու դրանից լիքը ոչ հետեւողական բաներ), բայց համեմատ էսօրուայ լեզուների նոյնիսկ փոքր ա դիտւում։ առաւել եւս որ կարելի ա սահմանել ստանդարտ՝ օրինակ turbo pascal֊ինը, որը ընդհանուր առմամբ ամէն ինչի համար բաւական ա։ շատ էլ ա։
freepascal֊ը գրեթէ չունի կորպորատիւ ազդեցութիւն, ու իրա հետեւում ոչ թէ կապիտալ ա, այլ կոմպետենտ ու նուիրուած համայնք։ այնպէս որ երեւի lowtech ա, ու երեւի վերնակուլար ա։ օրինակ, երբ delphi֊ում հնարաւոր դարձաւ ամէնուր փոփոխական յայտարարել, freepascal֊ում դա քննարկուեց ու համայնքը որոշեց որ էդ լաւ չի ու պէտք չի։
c#֊ը հաստատ վերնակուլար չի՝ էդքան մեծացած լեզու ա ու էդքան բարդ շերտեր ա պահանջում։
lisp֊ը (բայց ոչ ansi common lisp֊ը) lowtech ա, վերնակուլար ա։
կրկին՝ ստանդարտիզացուած, յղկուած տէքը մեզ մօտ աւտորիտար ա ու կայսերական։
gemini֊ն՝ մարդու մասշտաբի զբօսնելի կամ հեծանուելի տէք ա։
ոչ ստանդարտ տէքը՝ ոչ ֆէյսբուքի կամ նոյնիսկ մաստոդոնի պէս՝ տարօրինակ ա։ իսկ տարօրինակը հարցեր ա առաջացնում, եւ պատահական չի որ աւտորիտար վարչակարգը փորձում ա պատսպարել, թաքցնել տարօրինակը, որ մարդկանց մտքերում անպէտք հարցեր չառաջանան։
#ազատութիւն #ծրագրաւորման_լեզուներ #ծրագրաւորում #վերնակուլար
գուցէ գիտէք, որ borland֊ը որ ստեղծել էր delphi֊ն, փորձեց object pascal֊ում եղած ֆիչըրները բերել c++։ ու բորլանդի c++֊ը տարբերւում ա սովորական c++֊ից նրանով, որ ունի այսպէս կոչուած closure֊ներ, կամ անոնիմ մեթոդներ։
իրականում, եթէ գալիս ես օբերոնից՝ ոչ մի տարօրինակ բան չկայ, շատ նորմալ ֆունկցիոնալ ա։
ահա օրինակ՝
type
TNotifyEvent = procedure(Sender: TObject) of object;
TButton = class
private
FOnClick: TNotifyEvent;
public
procedure Click;
property OnClick: TNotifyEvent read FOnClick write FOnClick;
end;
procedure TButton.Click;
begin
if Assigned(FOnClick) then
FOnClick(Self);
end;
procedure MyButtonClick(Sender: TObject);
begin
WriteLn('Button clicked!');
end;
procedure SomeEntryPoint;
var
Button: TButton;
begin
Button := TButton.Create;
Button.OnClick := @MyButtonClick;
Button.Click; // Outputs: Button clicked!
Button.Free;
end;
TNotifyEvent֊ը ֆունկցիայի, պրոցեդուրայի տիպ ա։ յետոյ այդ տիպի պրոցեդուրա ա կարելի ստեղծել։
Sender: Tobject ֊ը մեզ պէտք ա, որ իմանանք ով ա այդ event֊ը ուղարկել։ ինչի՞ ա ինքը TObject տիպի՝ որովհետեւ դա կլասսերի ծառի արմատն ա՝ ամէնը դրանից են ժառանգած, այսինքն՝ ամէնը կարելի ա դրան վերագրել։
օրինակ, կարելի ա էսպէս իմանալ թէ ով ա՝
if Sender is TButton then // Check if the sender is a button
begin
if TButton(Sender).Name = 'Button1' then
ShowMessage('Button 1 was clicked!')
else if TButton(Sender).Name = 'Button2' then
ShowMessage('Button 2 was clicked!');
end
else
begin
ShowMessage('Something else triggered this event!');
end;
տեսէք լրիւ օբերոնի runtime check անող IS ֊ն ա։
Button(Sender).Name ֊ը թոյլ ա տալիս կարդալ էդ կոնկրէտ կոճակի անունը։ օրինակ, կարող ես կոճակի անունը դնել Button1, իսկ կարող ես օրինակ՝ processButton։
Button֊ը իրականում ցուցիչ ա յիշողութեան մի տեղի, որ դատարկ ա։
TButton.Create֊ը լցնում ա էդ տեղը, ստեղծում ա յիշողութեան մէջ դաշտերը, կլասը, ու վերադարձնում ա էդ պատրաստուած յիշողութեանը ցուցիչ։
Button.OnClick֊ին կարողանում ենք վերագրել MyButtonClick ֆունկցիայի հասցէն։
այդ OnClick֊ը pascal֊ի property ա, որը կայ իմ իմանալով միայն այլ անդրեաս հայլսբերգի լեզուի՝ c#֊ի մէջ։
դրանից յետոյ Button.Click֊ը դա ա կանչելու։
շատ օբերոնական ա, չէ՞։ (:
ո՞նց ա դա արւում borland֊ի c++ դիալեկտով՝
#include <vcl.h>
#pragma hdrstop
class TButton
{
private:
typedef void __fastcall (__closure *TNotifyEvent)(TObject *Sender);
TNotifyEvent FOnClick;
public:
void __fastcall Click()
{
if (FOnClick)
FOnClick(this);
}
void __fastcall setOnClick(TNotifyEvent value)
{
FOnClick = value;
}
TNotifyEvent __fastcall getOnClick()
{
return FOnClick;
}
__property TNotifyEvent OnClick = {read=getOnClick, write=setOnClick};
};
void __fastcall MyButtonClick(TObject *Sender)
{
ShowMessage("Button clicked!");
}
int main()
{
TButton *Button = new TButton;
Button->OnClick = MyButtonClick;
Button->Click(); // Outputs: Button clicked!
delete Button;
return 0;
}
նախ, ահագին ոչ ընթերնելի ա, ինձ թւում ա։
յետոյ, դէ մասնաւորապէս որովհետեւ fastcall֊ը նշանակում ա որ պասկալի ֆունկցիա ա կանչելու, զի ամբողջ գրադարանը (vcl֊ը կամ fmx֊ը) պասկալով ա գրուած։
closure֊ը borland֊ի լուծումն ա որ մեթոդ փոյնթերն իմանայ this֊ի մասին։ ոնց pascal֊ում ա հնարաւոր։
property֊ով են փորձում դէ property իրականացնել։
հետաքրքիր ա, որ qt֊ն էլ ստանդարտ c++ չի՝ իրենք փաստացի նոր լեզու են ստեղծել, ու իրենց մօտ կայ moc (meta object compiler) որը յետոյ բերում ա qt֊ի կոդը ստանդարտ c++֊ի։ ու իրենք ունեն ինչ֊որ slot֊եր ու signal֊ներ որ էլի էմուլացնում են նոյն բանը՝ property֊ներ ու event֊ներ։
gtk֊ում ստանդարտ c ա, ու դա աւելի ա դուրս գալիս։
ի դէպ՝
https://norayr.am/weblog/2021/04/18/2492083/ — այն մասին ա որ embarcadero֊ն այլեւս չի կարողանում իր c++ քոմփայլերը շարունակել, զի c++ ստանդարտն էնքան արագ ա շարժւում, որ չեն ձգում։ ու հիմա փաստացի մէյնթէյն են անում llvm֊ի փաթչեր։ llvm֊ի արտօնագիրն էլ թոյլ ա տալիս որ դա անեն։ աւաղ։ (:
https://norayr.am/weblog/2021/04/19/2530704/
#ծրագրաւորում #ծրագրաւորման_լեզուներ #տէք #պասկալ #օբերոն #pascal #oberon
https://www.youtube.com/watch?v=0yXwnk8Cr0c
պարզւում ա, նիւ եօրքի մետրօյի կառավարումը կատարւում էր պասկալով գրուած ծրագրով։ մինչեւ չփոխեցին ադայի։
իսկ գիտէ՞ք քանի տող կոդ օրը պիտի գրի ապահով ծրագրի հեղինակը։ կիմանաք էս տեսանիւթից։
#պասկալ #ադա #ծրագրաւորում #տէք #ծրագրաւորման_լեզուներ #պատմութիւն
ահա, arm֊ն էլ ա օգտագործել branch prediction ու էդպէս էլ պիտի լինէր՝
https://www.youtube.com/watch?v=CjpEZ2LAazM ✓
սա շատ հետաքրքիր թութղ ա՝
https://arxiv.org/pdf/2406.08719
speculative execution֊ը բարդ լուծում ա, իսկ բարդութիւնից կարող են բխել խնդիրները։ պարտադիր չի որ բխեն, բայց մենք մարդ ենք, ու մեզ բարդ ա գործ անել բարդ համակարգերի հետ։
#մարդ_ես
ես հասկանում եմ որ մրցակցութիւնն ա ստիպում բոլոր տէք նախագծողներին բարդացնել դիզայնը, գտնել բարդ լուծումներ։ չնայած կարող ա եւ տակից դուրս չգան։
ու մրցակցութիւնը ոնց որ ստիպի իրանց լինել անպատասխանատու։ իրենք կարողանում են բարձր գնահատականներ հաւաքել տարբեր չափումներում ու թեստերում, բայց ահա հիմա ունեն բագ։ օկէյ, կը ֆիքսեն ու ուրախ կը վաճառեն մեզ նոր պրոցեսորներ։
իսկ եղած պրոցեսորի համար ֆիքսը եթէ լինի՝ ապա ծրագրային, ու կը դանդաղեցնի աշխատանքը։ ու էն ինչ շահել ենք speculative execution֊ի պատճառով, կը կոմպենսացուի ծրագրային ուղղումով։ լաւ ա եթէ աւելի դանդաղ չի աշխատի, քան առանց դրա կաշխատէր։
ու մի կողմից հա, նախագծողներն են, որ ուզում են գլխից վերեւ թռնել, ֆիզիկայի օրէնքներն անցնեն, ժամանակից առաջ ընկնեն։ իսկ նրանք որ չեն կարողացել՝ դուրս են մնում շուկայից, բիզնէսից։
միւս կողմից էդ մենք ենք, շուկան, որ չի ջոկում ինչ ա կատարւում, մանաւանդ էդ նոր ոլորտում, ու ուրախ գնում ենք էդպիսի պրոցեսորներ։
պահանջ չենք դնում որ լինեն աւելի դանդաղ, բայց աւելի պարզ դիզայնի ու յուսալի։
միւս կողմից՝ աշխարհն ա հիմա բարդացել։ ու գուցէ միայն ոլորտից չի՝ մենք առհասարակ չենք ջոկում ինչ ա կատարւում ու չենք կողմնորոշւում ինչ ա շուկան առաջարկում այս բարդ աշխարհում։
ինչն ա նաեւ սարսափելի՝ ջաւա սկրիպտ էքսփլոյթ կայ, ինչպէս եւ ինթելի նմանատիպ խնդիրների ժամանակ կար։ այսինքն՝ դիտարկչի մէջ կարող ա վնասակար կոդ աշխատել, իսկ դու չես էլ իմանայ։
ու ես տեսնում եմ որ արհեստական բանականութիւն ա օգտագործուելու որպէս quality assurance, որպէս թեստեր։ ու արդէն օգտագործւում ա։ ինչը մտահոգիչ ա, որովհետեւ ինքը կարող ա սխալուել, իսկ մենք կարող ա դա չջոկենք։
ու կարելի ա աւելի խորը գնալ ու նշել որ պետութեան կողմից ստանդարտիզացուած կրթութեան եւ թեստաւորման համակարգն ա բերում նրան որ բոլորը սովորում են մի ձեւով։ ու հիմա կը գայ արհեստական բանականութիւնը որը կը համարուի, որ աւելի լաւ ա իրան դրսեւորում, քան մարդիկ էդ նոյն ստանդարտիզացուած թեստերում։
#աբ #ապագայ #տէք #արհեստական_բանականութիւն #աբօ #մարդ #մարդիկ #երկաթ #պրոցեսոր #վրիպում #անվտանգութիւն #թեստաւորում #նախագծում #ծրագրաւորում #կրթութիւն #մրցակցութիւն #կապիտալիզմ #ազատութիւն #
սի ծրագրաւորողներն ասում են թէ պէտք չի ապահովութիւնը, զի դրա համար վճարոոմ ես արագագործութեամբ։
բայց գործ են անում իւնիքսում կամ ուինդոուսում, որոնցով հիանում են։ ոչ դօս֊ում ուր արագ ա՝ զի կարելի ա երկաթին անմիջապէս դիմել։
եւ չեն ձոներ նուիրում դօս֊ին՝ վերաբերւում են որպէս արքայիկ տէքի։
չեն ասում՝ պէտք ա դօս քշել ու դօսի տակ գրել զի ամէն ինչ կարող ենք ու էդպէս արագ ա։ ու այ իւնիքսն ու ուինը չեն թողնում։
#դօս #իւնիքս #ծրագրաւորում #անկապ
շատ հետաքրքիր վերլուծում ա ծրագրաւորման լեզուները, մտածում ա՝ ո՞րը կարող ա լինել ultimate լեզուն։
https://www.youtube.com/watch?v=P2yr-3F6PQo
#ծրագրաւորում #անգլերէն
>In the specific case of the ISO-2022-CN-EXT conversion, the buf array has a fixed size of 6 bytes. The problem is that the size of the converted character stored in buf might exceed the USHORT-aligned boundary. When this occurs, it can overwrite the nearby memory, causing potential crashes or unexpected behavior.
կրկին նոյն սիական խնդիր՝ դուրս ա գալիս զանգուածի սահմանից։
#անվտանգութիւն #ծրագրաւորման_լեզուներ #ծրագրաւորում
սա եմ կարդում՝ ադայի չաթում եմ գտել՝ https://gautiersblog.blogspot.com/2024/03/benchmarking-generic-image-decoder-gid.html?m=1
փայթընի կոդը արտագրել են ադայով՝ 500 անգամ արագացել ա։ սա իհարկէ էդքան ադայի արագագործութեան մասին չի, ինչքան փայթընի դանդաղ լինելու։
բայց մտքովս ի՞նչ անցաւ։ դէ ես կարող ա լինէի էն մարդը որ շատ ա սիրում փայթըն ու ամէնն դրանով ա անում։
ու երեւի իմ սերունդը կապ ունի՝ ինձնից չի էդքան, մեր ժամանակ պասկալն էր մոդա, իսկ երբ պասկալով իսկապէս գրում ես, ոչ թէ պոլիտէքի առաջադրանքները, այլ իսկապէս մի կիրառելի բան քեզ համար, իր մոդուլներն ու ուժեղ տիպաւորմանը նէնց ես կպնում որ յետոյ երկար չես հասկանում ոնց ա որ սի֊ում օրինակ մինչ էսօր տէնց չի։
ու էսօր համալսարաններում երբ սիից ու սի փլասից են սկսում, դրանից յետոյ փայթընը շատ լաւն ա թւում ու ուզում ես ամէնն իրանով անել։
ու դա լաւ ընտրութիւն չի՝ մարդիկ կան կպնում են սիին՝ ասում են էֆեկտիւ ա իրանով, մարդիկ էլ կան, զգում են դրա խնդիրները ու կպնում են փայթընին։
բայց էդ լաւ ընտրութիւն չի՝ սիի ու փայթընի մէջ։
#փայթըն #պիտոն #սի #ծրագրաւորում #կրթութիւն #տեք #տէք #ադա
ինձ միշտ անարդար ա թուացել, երբ ծրագրաւորողին փող են տալիս, ինքը ինչ֊որ բան ա գրում, յետոյ էդ բանը միշտ աշխատում ա, բայց ծրագրաւորողը դրանից էլ փող չի ստանում՝ նա մի գործ արեց, պրծաւ, գնաց։ նոր փող վաստակելու համար նա պիտի անի նոր գործ, բայց իրա աշխատատուն էդ նոյն գործից շարունակ փող կարող ա աշխատել։
ու վերջերս գիտակցել եմ որն ա հարցը։
բանն այն ա որ ծրագրաւորողի արածը՝ կապիտալ ներդրում ա։
ինքը էն 20֊րդ դարի բանուորը չի, որին խողովակաշարով բան ա հասնում, ինքը գայկա ա ձգում, ուղարկում ա յաջորդին՝ դա անում ա համակարգիչը։
իսկ այն ինչ ծրագրաւորողն ա անում՝ խողովակաշար սարքելն ա, այ դա կապիտալ ներդրում ա։
իսկ կապիտալ ներդրումից պէտք ա կարողանաս միշտ փող ստանալ։ ես էդպէս եմ կարծում որ արդար ա։
ու ես չեմ ուզում «տալ» կապիտալիստներին իմանալով որ անարդար պայմաններով եմ աշխատում։ ինձ խաբել են, ու ասել են որ իմ կապիտալ ներդրումն իրականում կապիտալ ներդրում չի, այլ համակարգչի գործ ա։
ու ես էդ գործարքի գնալիս հէչ երջանիկ ինձ չեմ զգում։ յուսամ էլ չեմ գնայ։
ու տէնց։
#ծրագրաւորում #կապիտալիզմ #կապիտալ #ներդրում #աշխատանք #գործարան #բանուոր #պատմութիւն #խողովակաշար #նախագծում
ասում ա՝ ուզում էինք պարալելլիզացնել, արդիւնքում՝ պարալիզացրինք։
#ծրագրաւորում #տէք #զուգահեռութիւն
ընկերներիցս մէկը շատ ոգեւորւում ա հէնց մասնաւորապէս յաւելուածների (այսինքն՝ ոչ կարգիչների համար ծրագրակազմի) ստեղծմամբ էն պատճառով, որ լրիւ տեսանելի ա, շօշափելի ա, որ մի հոգի կարող ա ստեղծել կիրառելի ծրագիր, եւ կունենայ մեծ շուկայ՝ մարդիկ աւելի շատ են օգտւում հեռախօսներից էսօր, քան կարգիչներից։
ինձ իր մտածողութեան մէջ հարազատ ա մենակ ունակ լինելու մասը։ էդ պատճառով ես ձգտում եմ կարողանալ շինել համակարգս, աւելի շատ օգտագործել էն ինչ ես կարող եմ ստեղծել, ու աւելի քիչ՝ էն ինչ չեմ կարող(պայմանական ջեմինի ընդդէմ պայմանական ֆայրֆոքսի)։
բայց ամենակարեւորը՝ ես զգում եմ էսօր, որ ծրագիր գրելու ունակութիւնը՝ ազատագրող արտօնութիւն ա։
նախ իհարկէ պէտք ա լինի զգացողութիւն, որ ազատ չես։ որ նորմա չի, որ օկէյ չի, երբ ծրագրակազմն ա (դրա հետեւում եղած մարդիկ) թելադրում կամ պարտադրում։
իսկ յետոյ՝ ազատագրող ունակութիւնը այդ ծրագրակազմը փոխարինելու։
օրինակ՝ էսօր իմ ձեռքի մէջ ընկել ա wifi sd card ադապտեր։ այն ստեղծում ա հոտսփոթ, որին կարող ես կպնել եւ… եւ պարզւում ա ոչ մի բան չես կարող անել առանց արտադրողի յաւելուածի։ այսինքն՝ կիրառելի չի կարգչից, կիրառելի չի սարքից որը մէյնսթրիմ մոբայլ օհ չունի։ բայց դա դեռ քիչ ա։ ծրագրակազմը բագոտ ա եւ յաճախ մեռնում ա, ֆայլերը յաճախ սխալներով են փոխանցւում, եւ այլն՝ եւ այդ ծրագրակազմը՝ մենաշնորհ ա։
ես, եթէ դեռ ուզեմ դրանով զբաղուել, երբ աւելի ազատ լինեմ մօտակայ ժամանակ, եւ եթէ կարողանամ (բայց ինչի՞ պիտի չկարողանամ) կը փորձեմ ռեւերս ճարտարագիտութիւն անել իրանց հաղորդակարգը, եւ բաց, ազատագրող մոդուլ որը իմպլեմենտ կանի հաղորդակարգը, եւ ծրագիր, որն այն օգտագործում ա։
եւ ինձ ամենաշատը յուզում ա ծրագրաւորելու հմտութիւն ունենալու մէջ այն որ դա թոյլ ա տալիս աւելի ազատ լինել։
եւ էս մտքերով երբ ընկայ, մտածեցի՝ դէ էսպէս ա ստեղծուել ամբողջ ծրագրակազմի շարանն, ինչ օգտագործում եմ՝ պայմանական «լինուքսը», եւ դրա հետ եկող ամէն բանը։ մարդիկ լուծում էին իրենց՝ աւելի ազատ լինելու խնդիրը։
ու իհարկէ տխուր ա, որ դա շատերը չեն հասկանում, եւ չեն գնահատում, եւ չեն ուզում օգտուել, զի կամ սովորութիւնները չեն ուզում փոխել, կամ «պրակտիկ» են, եւ համեմատում են ազատագրող ծրագրակազմը «ֆիչըրներով» սեփականատիրականի հետ։
#ազատութիւն #ազատ_ծա #ազատ_ծրագրակազմ #ծրագրակազմ #տէք #տեք #յաւելուած #առօրեայ #ծրագրաւորում
ժամանակ առ ժամանակ rust սիրող ակտիւ համայնքը բարձրացնում ա՝ ամէնը սի֊ից ռասթով արտագրելու հարցը։
freebsd-hackers ցանկում մի քանի օր առաջ յայտնուած շղթայից մի գրառում՝
https://lists.freebsd.org/archives/freebsd-hackers/2024-January/002849.html
openbsd-misc ցանկից այլ գրառում՝
https://marc.info/?l=openbsd-misc&m=151233345723889&w=2
այն յղւում ա այս զրոյցին։
ըստ որում՝ ես կողմ եմ ամէնը սի֊ից արտագրելուն։ բայց երեւի ռասթը ամենալաւ տարբերակը չի։
#անվտանգութիւն #ծրագրաւորման_լեզուներ #ծրագրաւորում #քննարկում #մէջբերում
ասում եմ՝ բա ի՞նչ էք սովորում, ասում ա՝ «վիժուալ բէյսիկ», յետոյ «սի շարպ» ու «ժաւել»։
ասում եմ՝ ժաւելը ո՞րն ա, ջաւա՞ն թէ՞ ջս֊ը։
ասում ա՝ ջաւան։ ջս֊ը՝ ժաւելսպիրտն ա։
#զրոյց #ծրագրաւորման_լեզուներ #ուսում #ծրագրաւորում
ծրագրաւորման աշարհն խանգարուածութեան եւ մոլորութեան մէջ է։ շատ չի առաջընթացը հաշուողական գիտութեան սկզբունքները հասկանալու հարցում։ չնայած բարդացուած լեզուների գոյութեանը, ծրագրաւորողների մեծ մասը դեռեւս աշխատում են ութական, տասնվեցական, կամ այլ խորհրդաւոր տուեալների հետ, jump֊երով ու condition code֊երով, եւ այլ քաոս տարածող ձեւերով, անհանգստանում են լոկ մէկ միտ այստեղ եւ լոկ մի շրջան այնտեղ խնայելու մասին, բայց որպէս կանոն չեն կարող անգամ մի փենիով գրազ գալ թէ իրենց ծրագիրը կը կատարի խոստումները թէ ոչ։
#ծրագրաւորում #գիտութիւն #ծրագրաւորման_լեզուներ #վիրտ #մէջբերում #յուսալիութիւն #1968
ուրեմն, փորձում էի «բարեւ աշխարհ» գրել oric atmos֊ի համար հէնց cc65֊ով։
նախ մտածեցի՝ պէտք ա գտնել իրա մինիմալ օհ֊ի ֆունկցիաների ցանկը։ ես այն ունէի pravetz-8d ֊ի հետ եկած, մատրիցային տպիչով արուած գրքի մէջ։
դա, ի դէպ խօսում ա բուլղարական արտադրութեան բարձր որակի մասին՝ սովէտական «միկրոշայի» ձեռնարկը պատճէն էր (քսէրոքս)՝ գրամեքենայով հաւաքուած տեքստի եւ այդ նոյն էջերում ձեռագիր տեքստի։
ֆունկցիաների ցանկը գտայ այստեղ։ iss֊ը լաւ մեկնաբանել ա յիշողութեան դամփը, եւ աւելացրել ա յղումներ — շատ լաւ գործ ա արել։
էստեղ գտայ ping ֊ի հասցէն, նախ դա արեցի։ տող տպելը չկարողացայ։
յետոյ այս գիրքն էի կարդում։ ու նա էնտեղ նկարագրում ա ինչպէս տպել տող՝ նիշ առ նիշ, զի տող տպելու հատուկ ֆունկցիա չկայ։
մի քիչ փոխեցի իր կոդը, էսպիսի տեսք ունեցաւ իմը՝
.segment "DATA"
msg: .asciiz "Hello world!"
.segment "STARTUP"
.segment "INIT"
.segment "ONCE"
.segment "CODE"
.export _main
_main:
output:
ldy 0
next:
ldx msg, y ; load a character to x from msg+y address
txa
cmp 0
beq outend
jsr $F77C ; print a character
iny
jmp next
outend:
rts
; jsr $FA9F ; ping
; rts
շինում եմ էսպէս՝
ca65 -o test.o test.s
cl65 -t atmos -o test.tap test.o
ու ստացուե՛ց՝
իրականում ահագին տառապեցի սրա համար, երկրորդ օրն ա ինչ փորձեր էի անում։
ու տէնց։
#էկրանահան #ասմ #մեքենայական_կոդ #cc65 #oric #oric_atmos #atmos #pravetz #pravetz-8d #ասեմբլեր #6502 #բարեւ_աշխարհ #oricutron #գիրք #ծրագրաւորում
ես շատ եմ նշել որ գօ֊ն՝ մէյնսթրիմի մէջ ինձ համար ամենալաւ լեզուն ու գործիքն ա։
բայց ես մէյնսթրիմի մէջ չեմ։ ու կարող եմ գօ֊ն նաեւ քննադատել։
ամենավատ բաներից ա՝ փաթեթային կառավարումը։ նախ՝ չի հաշւում ու ներկայացնում մեզ թէ ինչ կախուածութիւններ ա պատրաստւում բերել։
երկրորդը՝ ահա, էկրանահանի մէջ երեւում ա որ կախուածութիւնների զգալի մասը՝ գիտ֊ի ռեպօների որոշակի պիտակներ են։ իսկ գիտը բնաւ «immutable» չի։ ու էս պիտակով եղածը կարելի ա փոխել։
ու դու չգիտես թէ ինչ կոդ ես շինում։ ո՞նց վստահ լինես որ չարամիտ կոդ չես շինում։
ու տէնց։
#էկրանահան #գօ #փաթեթային_կառավարիչ #ծրագրաւորման_լեզուներ #անվտանգութիւն #ծրագրաւորում
էսօր ջեմինի աշխարհի մի պղպջակում մէկը հարցնում էր կա՞յ ժամանակակից ֆորթով գրած ծրագրի օրինակ։
ասացի որ gforth֊ի հետ գալիս են օրինակներ՝
#էկրանահան #ֆորթ #ծրագրաւորում #սոկոբան #խաղ
https://toobnix.org/w/8LZDeqAJpkcvQvshWjgcc7
ես չէի իմանում, որ կրիան իսկական էր, շարժիչներով էր ու իրական ծածկոյթի վրայ նկարում էր։
#կրիայ #լոգօ #ծրագրաւորում #ուսուցում #պատմութիւն
պարբերաբար ինչ֊որ մարդկանց հետ խօսում ենք, ես ինչ֊որ նեգատիւ բան եմ ասում «IDE»֊ների մասին, ու մէկը գտնւում, ասում ա՝ «դէ չէ, լաւ «IDE»֊ն գործն աւելի արդիւնաւէտ ա դարձնում»։
հիմա, մի քանի ամիս «IDE» քշելուց յետոյ պիտի ասեմ՝ աւելի հեշտ էր ինձ լինելու առանց դրա։ անհամեմատ աւելի հեշտ։ միայն դժուարացրել ա, ոչ մի օգուտ, ոչ մի «խեր» չի եղել դրանից։ միայն խնդիրներ։
ու տէնց։
#ծրագրաւորում #մշակոյթ
ես հէնց նոր ֆիքսեցի մի բագ իմ ֆրիլանսում, իմ արաց վրիպակ։
իրանք ունէին երկու ֆունկցիա՝ մէկը MqttOut որը վերցնում էր string ու մէկը MqttOut որը վերցնում ա json։
ֆունկցիայի անունը նոյնն ա։
սկզբից պահանջւում էր տող ուղարկել։ յետոյ պահանջը փոխուեց ու պէտք եղաւ ուղարկել ջսոններ։
ու ես ունէի երկու ֆունկցիա, որ տող էին ուղարկում Mqtt֊ով։
յետոյ պէտք եկաւ փոխել՝ ես ստեղծեմ ջսօն, ու էդ ջսօնն ուղարկեմ։
յետոյ լիքը դեբագներից եւ անքուն գիշերներից յետոյ յոգնած էի, ու երբ սկսեցի ջսոն ուղարկել, մի ֆունկցիայի մէջ ջսոնը սարքեցի, ուղարկեցի։
միւս ֆունկցիայի մէջ ջսոնը սարքեցի, բայց ուղարկեցի էլի տողը, չնկատեցի որ ջսոնի փոխարէն տող ա դեռ ուղարկւում։
իսկ որոշ ժամանակ անց երրորդ ֆունկցիան աւելացրի, քոփի փէյսթ եմ արել երկրորդից, փոխել եմ ջսոն սարքելու մասը։
հետեւաբար կրկին տող ա ուղարկւում փոխարէնը ջսոն ուղարկուի։
էդքան դեբիլ սխալ չէի անի, եթէ ունենայի MqttOutStr ու MqttOutJson տարբեր անուններով ֆունկցիաներ։
իսկ ես դրանք կունենայի եթէ պասկալը թոյլ չտար function overloading։
եւ կրկին՝ ես սիրում եմ երբ լեզուն չի թողնում, ոչ թէ երբ ունի հնարաւորութիւն։ ես սիրում եմ երբ չունի հնարաւորութիւն։ զի հնարաւորութիւնը՝ նաեւ սխալ անելու հնարաւորութիւն ա։
#ծրագրաւորում #ծրագրաւորման_լեզուներ #մօտեցում
հեադըրում գրածը ասնաւանի չի։
#տեք #ծրագրաւորում
գործընկերս բողոքում էր, որ իրենց շէնքում ինչ լինում ա՝ նա պիտի զանգի համապատասխան մարմիննեիրն, որ գան դզեն։
ասում ա՝ մի անգամ մի քանի օր կոյուղին էր պայթել, ամբողջ բակով հոսում էր, հոսում։
ասում ա՝ ասացի էս անգամ ես չզանգեմ, ինը յարկանի շէնք ա, մէկը չի՞ գտնուի որ կապուի։
տէնց, մի օր անցաւ, երկու օր, երրորդ օրը հարեւաններն իրեն մօտեցան, ասին՝ զանգի դու, ինչքան ա կարելի։
տէնց, զանգեց, նոյն օրը եկան, սարքեցին։
էն օրն էլ մտածեցի՝ չէ՞ որ ես բացատրում եմ «սիսթեմ քոլը» քաղաքապետարանի օրինակով։ որ գալիս ես, գտնում ես պատին քեզ պէտք եղած համարը , պատի հեռախօսը վերցնում ես, զանգում, էդ մարդն էլ իրա գործերի մէջ ա, եւ այլն։
էդ տրամաբանութեամբ հասկանալի ա՝ մարդիկ սովոր են userspace քոլլեր անել, system քոլլ անելուց վախենում են։
#ծրագրաւորում #օպերացիոն_համակարգեր #քաղաք #քաղաքապետարան
վերջերս (վերջե՞րս) ինչ֊որ մէկը գրել էր՝ «ինչի՞ քեզ սահմանափակես», ու ես գրել էի՝ «ես սիրում եմ սահմանափակումներ», ու ես վստահ չեմ որ հասկացուած եղայ, բայց իհարկէ, գիտենք, ուժեղ տիպաւորումն էլ ա սահմանափակում, ու ահա, էս մարդն էլ ասում ա, որ ֆունկցիոնալ ձեւով գրելն էլ ա սահմանափակում ու մարդիկ իրենց զգում են ոնց որ ձեռնաշղթաների մէջ, ու ասում ա՝ ձեռնաշղթաները վերածւում են հեծանուի, երբ սովորում ես։
ինչեւէ, ֆունկցիոնալ ծրագրաւորման մասին ամենալաւ ելոյթներից մէկն, ինչ ես տեսել եմ՝
https://www.youtube.com/watch?v=0if71HOyVjY
#ծրագրաւորում #սահմանափակում #ազատութիւն
ուրեմն, սէնց նախագիծ կայ՝ python4delphi, կարողանում ես, օրինակ, պասկալով փայթընի մոդուլներ գրել, տեսականօրէն պիտի աշխատէր freepascal֊ի հետ, բայց իրենք ըստ երեւոյթին չեն ստուգել վաղուց, ու չէր շինւում։
ահա, փոփոխութիւններ արի, pull request արի, ու ինձ մօտ աշխատեց՝
յէյ։
#էկրանահան #պասկալ #դելֆի #լազարուս #տէք #տեք #ծրագրաւորում
ես հասկացայ, ada
֊ն, չնայած ալգոլ֊պասկալի աւանդոյթների մէջ ա, ինչով ինձ դուր չի գալիս։ հա, չաղ ա, բայց փոխարէնը բաւական հետեւողական ա։ միշտ չէ, բայց բաւական։ հա, համայնք ունի, հա, շատ կոդ կայ գրուած, հա, ուժեղ մէջք ունի, կորպորացիաներն ու պն֊ն…
այ այստեղ հասնելիս ես զգում եմ, որ ուզում եմ հեռու մնալ նախագծերից, որ հզօր աջակիցներ ունեն։ զի ինձ զզուելի ա լոկ արդէն հզօր աջակից ունենալու պատճառով ուրախանալը։
ու այո, արդե՞օք դա մեզ պէտք ա։
մի բան էլ մինիմալիզմի մասին։ էսօր եւս մի անգամ մտածեցի, ինչքան կարեւոր են պիտակները՝ ֆայլային համակարգում։ զգացի, զի երբ փնտրում եմ ինչ֊որ բան, կամ գնում եմ էն պանակ, ուր պիտի լինի, ու անում եմ ls | grep ինչ֊որ բան կամ անում եմ find . | grep ինչ֊որ բան որը պիտի որ անուան մէջ լինէր։
ու իրականում ես անում եմ յայց, խնդրելով էս կամ էն պիտակը։ որն ինձ մօտ անուան մէջ ա։ էն ա ինչի՞ համար պանակներ, եթէ կարող են լինել պիտակներ։ գիրք պիտակը, նկար պիտակը լրիւ բաւական ա։ ըստ որում դրանք կարելի ա եւ աւտոմատ աւելացնել՝ ըստ ֆայլի ֆորմատի։
#մինիմալիզմ #թուանշային_մինիմալիզմ #ծրագրաւորման_լեզուներ #պիտակ #պիտակներ #ֆայլային_համակարգ #նախագծում #դիզայն #ծրագրաւորում
դեռ 19֊րդ դարում օգտագործւում էր մորզէ կոդը՝ տեղեկատւութիւն տեղափոխելու համար։ մորզէն տպւում էր ոչ թէ a4
թղթերի վրայ, այլ թղթէ ժապաւէնի։ եւ խնդիր կար տողերն առանձնացնելու։ այդ համար օգտագործւում էր BT
յաջորդականութիւնը։ նշանակում էր՝ breat text
։ այսպէս էլ գրում էին տեքստի մէջ՝ BT
՝ բնաւ ոչ անտեսանելի։
յետոյ, երբ եկաւ տելետայպների եւ թուանշային գրամեքենաների ժամանակը, այդ տեսակ նիշերը թաքցուեցին, դարձան անտեսանելի։
այսպիմի նիշերից մէկն ա cr
֊ն, որը նշանակում ա՝ carriage return
՝ կրողի վերադարձ։ եթէ տեսել էք տպագրական մեքենայ, գուցէ նկատել էք որ մեքենայի մի մասը կրում ա թուղթը։
տպելիս կրող մասը շարժւում ա աջից ձախ (քանի որ մենք գրում ենք ձախից աջ) որ ամէն նոր նիշը տպուած լինի թղթի նոր տեղում։
եւ երբ տողն աւարտուած ա լինում, պէտք ա վերադարձնել թուղթը ելքային դիրք։
թուանշային տպագրական մեքենաներում այդ համար մտածել են հատուկ անտեսանելի նշան, անունը՝ cr
, որ երբ մեքենան հանդիպի այն, կրողը կը վերադարձնի թուղթը ելքային դիրք։ այդ անտեսանելի նիշի համարը ascii
աղիւսակում տասականով 13 ա, իսկ տասնվեցականով՝ 0d։
windows
֊ում տողադարձը նշւում ա երկու անտեսանելի նիշով, cr
ու lf
։ վերջինը նշանակում ա՝ line feed
։ եթէ cr
֊ը վերադարձնում ա թուղթը աջ, կամ հետեւաբար կուրսորը՝ ձախ, ապա lf
֊ն բարձրացնում ա տողը, կամ կարգիչներում՝ իջեցնում կուրսորը։
այս անտեսանելի նիշի համարն ա, տասականով՝ 10, տասնվեցականով՝ 0a։
իսկ իւնիքս համակարգերում ձեւաւորուեց այլ աւանդոյթ՝ ամէն տողի վերջում երկու բայթ չզբաղեցնելու համար պարզապէս օգտագործուել ա lf
֊ն՝ որպէս տողադարձի նշան, տողի վերջի նշան։
գոյութիւն ունի եւ երրորդ աւանդոյթ՝ գրել միայն cr
եւ հասկանալ նոյնը՝ տողադարձ։
այդպէս էր ընդունուած անել commodore
, spectrum
դասական ութ բիթանի համակարգիչներում, ու գուցէ այդ պատճառոջ էլ այդպէս էր ընդունուած apple ][
֊ում, իսկ հետագայում՝ macintosh
համակարգում։ խօսքը հին, այսօր «դասական» կոչուած macos
֊ի մասին ա։ cr
֊ն նաեւ օգտագործւում էր այսպէս կոչուած «լիսպ մեքենաներում», եւ՝ «օբերոն» օպերացիոն համակարգում։
նոյնիսկ վերջին թարմացման ժամանակ, project oberon 2013
֊ում, վիրտը կրկին օգտագործել ա 0d
֊ն որպէս տողի աւարտի նշան։
ահա, այս նիշքի սկզբում գրուած ա՝
TAB = 9X; CR = 0DX;
TextTag = 0F1X;
replace* = 0; insert* = 1; delete* = 2; unmark* = 3; (*op-codes*)
եւ գրել ա յատուկ Tools.convert() ֆունկցիան, որպէսզի 0d
տողադարձով նիշքերը փոխակերպի հրապարակման համար։
մինչ այդ, lilith
համակարգիչներում, ըստ երեւոյթին օգտագործւում էր lfcr
յաջորդականութիւնը՝ 0d
յետոյ 0a
։ յամենայն դէպս օրիգինալ կոմպիլեատորի ելատեքստում այդպէս ա։
այսպիսի փախած կոդաւորում էր միայն առաջին arm
համակարգիչներից մէկում՝ acorn bbc
֊ում, որ աշխատում էր risc os
֊ով։ այսօր risc os
֊ը կարելի ա օգտագործել raspberry pi
֊երի վրայ, զի arm
ա։
իմ խնդիրն էր՝ ես ուզում էի խմբագրել, աշխատել օբերոն համակարգի ելատեքստերի վրայ եւ կարողանալ օգտագործել որեւէ control revision
կոդի համար։
օբերոն նիշքերն ունեն երկու հիմնական խնդիր՝
git
֊ն ընկալում ա ֆայլը որպէս բինարcr
ա։ի՞նչ եմ ուզում՝ ուզում եմ կարողանալ կոնսոլում անել git diff
ու համեմատել վարկածները։ որ github
֊ի, gitlab
֊ի, gitea
֊ի վեբ ինտերֆէյսները կը կարողանան ցոյց տալ ռեւիզիաների տարբերութիւնները՝ յոյս չէի փայփայում։ կոնսոլում աշխատի՝ լաւ ա։
git
֊ն ունի երկու մեզ հետաքրքիր հնարաւորութիւն՝ text
ու diff
։
text
֊ն այն մասին ա, ինչպէ՞ս պահել, ներմուծել նիշքը git
֊ի տուեալների բազա (այն որ .git
պանակի մէջ ա)։
diff
֊ն այն մասին՝ ինչպէս համեմատել տողեր։
ես սկզբից դա չէի հասկացել, ու փորձում էի աւելացնել .gitattributes
նիշքի մէջ՝
*.Mod text
*.Mod eol=cr
text eol=cr
առաջին տողով ուզում էի ասել, որ ֆայլը բինար չէ։ պարզուեց՝ անիմաստ, զի յետոյ հասկացայ, որ դա ընդամէնը կապ ունի նրա հետ, ինչպէս տեքստը լցնել տուեալների բազայի մէջ՝ կոնուերտե՞լ տողադարձը lf
թէ՞ չէ։ ըստ որում, պարզւում ա, cr
տարբերակը git
֊ը չի հասկանում։ կարելի ա ասել՝ crlf
, բայց մեր դէպքը ելատեքստում նախատեսուած չի։
նաեւ փորձեցի արդեօք կաշխատի diff
֊ը։ .gitattributes
֊ում այսպիսի տող փորձեցի՝
*.Mod diff eol=cr
ու չօգնեց, զի կրկին՝ cr
կարգաւորումը նախատեսուած չի, handle
չի լինում, ելատեքստում չկայ։
ահա այսպէս էր տարբերութիւնը ցոյց տալիս՝
ամբողջ ֆայլի պարունակութիւնը մի վարկածից ու մի տողով, ու յետոյ ամբողջ միւս ֆայլի պարունակութիւնը, մի տողով։
արդէն յուսահատուել էի։ git
֊ը կարգաւորում չունի։ մտածեցի՝ կարո՞ղ ա mercurial
֊ն ունենայ։
արագ գտայ, որ mercurial
֊ն ունի eol extension բայց, աւաղ՝
Older versions of Mac OS used CR (\r), but Mac OS X is Unix and uses LF. This extension does not support the old CR format.
չկպաւ։ :/
մտածեցի՝ բայց հին մակօսի կոդերի հետ մի ձեւ աշխատում են չէ՞։ ու սկսեցի փնտրել։ եւ գտայ այս շղթան։
այնտեղ առաջարկւում էր ստեղծել զտիչ՝ convert-cr
անունով, ու սահմանել այն։ նաեւ առանձին մեկնաբանութիւնը վերաբերում ա diff
֊ի համար կարգաւորմանը։
փորձում եմ, ինչպէս խորհուրդ ա տրւում, աւելացնել .git/config
նիշքում՝
[filter "convert-cr"]
clean = tr '\r' '\n'
smudge = tr '\n' '\r'
բայց ապա յետոյ git
֊ը չի աշխատում, ասում ա՝ կոնֆիգում սխալ կայ։
fatal: bad config line 13 in file .git/config
մտածում եմ, ո՞նց անել։
յետոյ ջոկեցի՝ աւելացրի հրամանային տողից այսպէս՝
git config filter.convert-cr.clean "tr '\r' '\n'"
git config filter.convert-cr.smudge "tr '\n' '\r'"
իսկ այս տողը շղթայում այսպէս էլ տուեցին՝
git config diff.cr.textconv "tr '\r' '\n' <"
դրանից ջոկեցի ինչպէս անել։
ահա, փաստօրէն .git/config
֊ում աւելացրել եմ՝
[diff "cr"]
textconv = tr '\\r' '\\n' <
[filter "convert-cr"]
clean = tr '\\r' '\\n'
smudge = tr '\\n' '\\r'
հետեւեալ հրամաններով՝
git config diff.cr.textconv "tr '\r' '\n' <"
git config filter.convert-cr.clean "tr '\r' '\n'"
git config filter.convert-cr.smudge "tr '\n' '\r'"
.gitattributes
֊ում գրեցի՝
*.Mod filter=convert-cr
*.Text filter=convert-cr
փորձեցի կրկին քոմիթ անել, ու համեմատել քոմիթը՝ չկպաւ։
ապա յիշեցի, այս անգամ աւելացրի .gitattributes
֊ում՝ *.Mod diff eol=cr
ու այն այսպիսի տեսք ունեցաւ՝
*.Mod filter=convert-cr
*.Text filter=convert-cr
*.Mod diff eol=cr
ու հա՛, աշխատե՛ց։
հիմա կարող եմ օբերոն ֆայլերի հետ գործ անել։
#օբերոն #էկրանահան #գիտ #ծրագրաւորում #պատմութիւն #հետազօտութիւն #տեք #կարգաւորում #ձեռնարկ #կարգիչ
«gary explains»֊ը եկել ա «մաստոդոն»։
իրա վիդեօների տակ հիմա գրւում ա՝
@garyexplains@hachyderm.io
— սա պատճէնէք փակցնէք կը գտնէք։
շատ լաւ, շատ լաւ։
համ էլ տեսէք իր վիդեօն, գօ լեզուի մասին, ամենամարդավարի լեզուի, իմ կարծիքով, մէյնսթրիմոտ լեզուներից։
#դաշնեզերք #գօ #ծրագրաւորում #տեք
անդրէ շտալցը շատ հետաքրքիր գրառում ա արել (նոր չի արել, ես եմ նոր կարդացել) այն մասին, ինչպէս էր փորձում իր js
֊ով գրուած secure scuttlebutt
֊ի յաւելուածի՝ manyverse
֊ի, կոդի հատուածները թարգմանել rust
֊ի։
ահա՝ https://staltz.com/rust-for-mobile-not-yet.html
հիմնականում լաւ նորութիւններն էին՝
js
֊ից rust
բարդ չէր, ահագին հեշտ թարգմանւում էր։չնայած նա գոհ էր, եւ աւելի շատ էի սպասում։
ինչը չի չափել, ու ինչն ինձ հետաքրքիր ա՝ օպերատիւ յիշողութեան օգտագործումը։ ինձ թւում ա՝ պիտի շաաատ աւելի քիչ լինէր։
իսկ վատ նորութիւնները, ինչի համար էլ հետարկեց իր փոփոխութիւնները՝
ասում ա՝ 3 րոպէ էր rust
քոմփայլերին պահանջւում մի պարզ գրադարան շինելու համար։
իսկ ամէն գրադարանը պէտք ա հաւաքէր մի քանի պրոցեսորի համար։ ու պարզւում ա որ պէտք ա երկար սպասել, որ ստանաս ու փորձարկես արդիւնքը։ սա յայտնի խնդիր ա, ու կան լուծումներ՝ տեսականօրէն rust
֊ը կարողանում ա «քեշ» անել շինելու արդիւնքները, բայց շտալցին չյաջողուեց այդ «քեշաւորումն» օգտագործել մոբայլ գործիքների հետ՝ nodejs-mobile
, Android Gradle
, ու դէ XCode
֊ի։
ասում ա՝ մեծ էր։
ասում ա, ստացւում էր, որ 100մբ֊ից մեծ apk
ա լինելու manyverse
֊ի մօտ, եթէ ամէնը rust
֊ի թարգմանեմ։
էստեղ ես չգիտեմ։ մի կողմից՝ 100մբ֊ն, հա, շատ ա։ ու էդ ամէնը օպերատիւ յիշողութեան մէջ ա լինելու։ միւս կողմից՝ js
կոդը չնայած փոքր ա աւելի՝ դէ տեքստ ա, բայց եւ ինտերպրետացիան անհամեմատ, իթ, աւելի շատ օպերատիւ յիշողութիւն ա պահանջելու։
էստեղ կարելի ա ասել, որ երեւի թէ, եթէ rust
չլինէր, այլ կներէք, «նորմալ» նատիւ կոդ գեներացնող լեզու, ամէն դէպքում էդքան մեծ կոդ չէր գեներացնի։ ու էդ խնդիրը չէր զգայ։
նաեւ, երկար չէր տեւի դա։
պլիւս դրան իր մօտ ստացւում էր, որ ամէն իր ռասթ մոդուլը պէտք ա ունենար նոյն կախուածութիւնները՝ «base64, byteorder, cfg-if, libc, memchr, rand, serde, thread_local» ու իր մօտ չէր ստացւում որ դրանք մէկ անգամ լինեն, այլ ոչ ամէն ռասթ մոդուլի համար։
ասում ա՝ գուցէ հնարաւոր ա որպէս դինամիկ գրադարան դրանք աւելացնել, բայց էլի՝ գաղափար չունեմ ինչպէս։
էստեղ կասեմ՝ գուցէ էլի ռասթից ա, որ յարմար միջոցներ չի տալիս դրա համար։
օրինակ, չնայած ես դա չեմ սիրում, բայց պասկալում շաաաատ հեշտացուած ա կրոսպլատֆորմ գրադարաններ գեներացնելը՝ մոդուլի վերնագիրը դնում ես ոչ թէ unit
այլ library
եւ քոմփայլերը գեներացնում ա քեզ so
, dll
կամ dylib
։
էստեղ էլ այլ խնդիր՝ apple
֊ի հետ կապուած, իրենք sdk
֊ից հանել են բոլոր dylib
֊երը, ու փոխարինել tbd
֊ներով։
եւ շաատ կարեւոր պահ՝ իր rust
֊ով գեներացուած բինարները չեն աշխատում՝ պայթում են android 5
֊ի տակ։ իսկ ի պատիւ իրան, նա մտածում ա այն մասին, որ հին անդրոիդների վրայ իր յաւելուածն աշխատի՝ զի մտահոգուած ա մեանմայի օգտատէրերի մասին։ իսկ իրենց զգալի մասը՝ անդրոիդ հինգի վրայ են։
բնօրինակն ունէք, թէ էլի մանրամասներ են հետաքրքրում։
ընդհանուր առմամբ, ինձ թւում ա, ռասթի մոլորեցնող հմայքը ստիպեց անդրէին այն փորձել, եւ հիասթափուել։ բայց եթէ նա նոյնը փորձէր անել ոչ էդքան մարկէտ արուած լեզուով, բայց նատիւ կոդ գեներացնող լեզուով՝ շատ հաւանական ա, աւելի լաւ արդիւնք ունենար։
ի դէպ, հէնց հիմա ռասթ ա շինում մեքենաս։ գիշերը թարմացումը չեղաւ, զի 13գբ տեղ չմնաց այն շինելու համար։ իսկ փայնբուքի վրայ լաւ զգում եմ՝ թէ ուզում եմ ֆայրֆոքս, պիտի շինեմ նաեւ ռասթ, իսկ այ դա տեւում ա աւելի երկար, քան ֆայրֆոքս շինելը՝ մի երկու֊երեք օր։
եւ այդպէս։
#անդրոիդ #այօս #սքաթլբաթ #յաւելուած #ծրագրաւորում #կազմարկիչ #կոմպիլեատոր #քոմփայլեր #ռասթ #ջս #մենիվերս #էփլ #պատմութիւն
ուրեմն մտնում եմ ես իրենց գրասենեակ, տեսնեմ նստած ա շինարարի հետ, խօսում ա, փայնբուքն ա իրենց մօտ, արագ արագ նախագիծը մեծացնում փոքրացնում ա, յետոյ տեղափոխւում ա նոյն նիշքի, նոյն հարթութեան մէջ գտնուող այլ գծագրի վրայ, մեծացնում փոքրացնում ա, ամէնը շատ արձագանքող ա։
այդ ամէնը pinebook pro
֊ի վրայ ու qcad
֊ով։
փայնբուքն ունի չորս գբ օպերատիւ յիշողութիւն, որ ում ասես՝ կասեն, թէ դրա տակ ապրելն անհնար ա։
qcad
֊ն էլ շատ արագ չի կարող աշխատել, զի q
տառը յղում ա qt
«ֆրէյմուորքին», որը բաւական շքեղ ա, ու դրա հաշուին՝ ծանր, ու շատ տեղափոխելի ա՝ ու դրա համար ունի աբստրակցիաների շատ շերտեր, ու դրա հաշուին նոյնպէս՝ ծանր։
բա որ այդ cad
ծրագիրը շատ օպտիմալ գրուած լինէր՝ ոչ qt
֊ով, այլ որեւէ պակաս շքեղ գրադարաններով։
#առօրեայ #փայնբուք #ծրագրակազմ #ծրագրաւորում #տեք
հիմա wordpress
չեմ օգտագործում, ու չեմ կարող համոզուել որ ուղղուեց։
բայց աստուած, եօ՜թ տարի տեւեց, մինչեւ ուղղեցին։
ու տէնց։
#էկրանահան #բլոգ #ուորդփրես #կայք #ծրագրաւորում
ինչո՞ւ ոչ git
՝ https://sqlite.org/whynotgit.html
#ծրագրաւորում #տեք
էհ։
https://words.filippo.io/dispatches/openssl-punycode/
heartbleed
֊ը այն պատճառով էր, որ սի֊ում կայ խնդիր՝ կարող ես զանգուածի յիշողութեան սահմաններից դուրս կարդալ։
իսկ այս խնդիրը հակառակն ա, զի սի֊ում կարող ես բուֆերի սահմաններից դուրս գրել։
ահա, անվտանգութեան եւ այլ սխալները շատ յաճախ իմպեմենտացիայի տեքնոլոգիայից են, օրինակ՝ լեզուից։
եւ հակառակը՝ ուզո՞ւմ էք անվտանգութիւն՝ գրէք յուսալի լեզուներով՝ ada, go, modula-2, modula-3, oberon, pascal, rust։
ու տէնց։
#ծրագրաւորում #տեք #ծրագրաւորման_լեզուներ #անվտանգութիւն #կրիպտօ #ցանց #համացանց
դիեգօն օբերոնի չաթում պատմեց այս դէպքի մասին՝ քսան տարի չէին նկատում որ փակագիծը սխալ տեղ են դրել, ու իմաստը փոխուել ա։
նա նշեց որ սա հնարաւոր ա հէնց սի֊ում։ ու մեր ծրագրաւազմի զգալի մասը սի֊ով ա գռուած։ աւելի ժամանակակից լեզուով, ու իհարկէ օբերոնով նման սխալ հնարաւոր չի։
#օբերոն #սի #վրիպակ #տեք #ծրագրաւորում #էկրանահան
ուրեմն էսպիսի ծրագիր կայ՝ flickcurl
— շատ գործ ա արուած, շատ հետաքրքիր նախագիծ ա։
c
֊ով ազատ ու լրիւ իմպլեմենտացիա ա flickr
֊ի api
֊ի։
ամէն ինչ կարող ես անել։ եւ փնտրել, եւ վերբեռնել եւ պիտակել, եւ աւելացնել ալբոմի մէջ։
վերջն ա։
միայն մի խնդիր ունի՝ չի աշխատում։ (:
ես յիշում եմ, դեռ շատ տարիներ առաջ այն փորձել էի, ու պայթում էր։
պայթում էր, ասում էր՝ free(): double free detected in tcache 2
։
այսօր էլ ա նոյն ձեւ պայթում։
ոնց որ քաղաքապետարանից հող ուզես, յետոյ վերադարձնես, զի չես օգտագործում, յետոյ խառնուես ու էլի վերադարձնես։ ու քաղաքը պայթի։ ա չէ, քաղաքը չի պայթում, բայց դու ես պայթում։ քո այլ հողերով յանդերձ։
ու մարդիկ չեն իմանում c
֊ն ինչ հին ու ահաւորն ա։ ես դեռ չեմ ասում որ անկանխատեսելի վարքագիծ կարող ա ունենալ ծրագիրդ։ ըստ ստանդարտի։
պարզապէս հմուտ ծրագրաւորողները գիտեն՝ սէնց բաներ գրել չի կարելի, զի յետոյ չգիտես ինչ ա լինելու։
բայց c
֊ն մէկ ա ունի այդ «լատիներէնի» հմայքը, այն դիւթում եւ կախարդում ա, ձգում ա մարդկանց։
չէ՞ որ իրանով են գրել unix
֊ը։ ախր այլ բան չունէին՝ դրանով են գրել։ հազիւ էլ դրանով են գրել, թէ չէ մինչ էդ մեքենայական կոդով էին գրում։ algol
֊ն ունէին, բայց դա էլ կեանքից հեռու մարդիկ էին ստեղծում։ կեանքին մօտ այն բերեցին հետագայ թարմացումներով, եւ տարբեր ուղղութիւններ վերցնելով՝ ժան իշբիան ու նիկլաուս վիրտը։ (գուցէ կարելի ա նաեւ նշել լուկա կարդելիի, գրեգ նելսոնի եւ այլ հաւէս մարդկանցով օլիվետտիի ու դեքի թիմը)։
իհարկէ, յետոյ եկած լեզուների դիզայնի կորպորացիաների ստեղծագործական փորձերը, չնայած c
֊ի շատ խնդիրներ լուծել են, բայց գուցէ եւ աւելի ահաւոր հրէշներ են ստեղծել։
(էսքան ասում եմ, բայց ես կը նախընտրեմ c
֊ով ծրագրաւորող աշխատել, քան շատ ու շատ լեզուներով։ չնայած ահաւոր, ահաւոր ա։)։
ու էդ flickcurl
֊ի հեղինակը չէր կարողանում խնդիրը լուծել տարիներ շարունակ։ իսկապէս բարդ ա շատ բան ֆիքսելը։ գուցէ էդքան կամք կամ ժամանակ չի տրամադրել, բայց՝ բարդ ա։ աւելի լաւ ա էդ խնդիրը ստեղծելու հնարաւորութիւն չունենալ ի սկզբանէ։
ինչեւէ։
ի դէպ, էս գիշեր կարողացայ այդ խնդիրը շրջանցել, տառապելով git
֊ի master
֊ի ելատեքստի վրայ։ ինձ դա պէտք ա որ մատեանից սինք անեմ նկարները ֆլիքր։ նախկինում այլ ծրագրով էի անում, որը չէր կարողանում պիտակել, օրինակ։ միայն վերբեռնում էր։
#տեք #ծրագրաւորում #արհեստ #արուեստ #ծրագրաւորման_լեզուներ #գրադարան #լատիներէն #իւնիքս #պատմութիւն #անկապ
փաստօրէն, xlockmore
֊ը վերցնում ա ~/.signature
նիշքի պարունակութիւնը, օգտագործում ա։
այնտեղ ինձ մօտ սա ա՝
There are two ways of constructing a software design. One way is to make it so simple that there are obviously no deficiencies. And the other way is to make it so complicated that there are no obvious deficiencies.
-- C.A.R. Hoare
ու տէնց։
#էկրանապահ #էկրանահան #ինքնանկար #ստորագրութիւն #մէջբերում #ծրագրաւորում #նկար
ուրեմն, դուրս եմ գալիս տանից, ինչպէս սովորաբար, լափթոփը ձեռքս։
(*
բանն այն ա, որ եթէ անջատուի կորպորատիւ ցանցից, յետոյ կպնելը տաս րոպէ ա տանում։
զի նորմալ թունել չեն տալիս։ տալիս են ինչ֊որ «վիպիէն»֊ի ծրագիր ուինդոուսի համար։
նաեւ տալիս են գրաֆիկական «աքսէս» մի այլ սեփականատիրական ծրագրի միջոցով, որը, բարեբախտաբար, լինուքսի վարկած ունի։
բայց միայն x86_64
բինարներ էին տալիս։ arm
֊ի համար հաւաքած տալիս էին, բայց՝ «քրոմօս»֊ի համար։
հիմա, վերջերս ստուգեցի, նաեւ տալիս են 32 բիթանի arm
֊ի համար ու լինուքսի։
փայնբուքի չիպսէթը aarch64
ա, որը կապ չունի 32 բիթանի տարբերակների հետ, ի տարբերութիւն ինթելի, դրա ընդլայնումը չի։ բայց այդ կոնկրէտ չիպսէթն ունի նաեւ armv7
հրամաններ, ես դա շուտ էի ջոկել, որ oberon linux revival
֊ը դրա վրայ ստարտ եղաւ, աշխատեց։
հիմա փորձեցի դեբեան chroot
ունենալ, ու իրա տակից աշխատեցնել այդ սեփականատիրական ծրագիրը՝ նատիւ արագութեամբ աշխատում ա փայնբուքի վրայ։
բայց սա ես շեղուեցի։
*)
սպասում եմ վերելակը գայ, մէկ էլ հարեւանի տղան ա դուրս գալիս, էլի մօտենում վերելակին։
վերելակի մէջ ասում ա՝ «ծրագրաւորո՞ղ էք»։ ասում եմ՝ «դէ հա»։ ասում ա՝ «ես տէնց էլ գիտէի»։ ու շարունակում ա՝ «իսկ ի՞նչ լեզուով»։ չիմացայ ինչ ասեմ, ասացի՝ «տարածուածներից գօ֊ն եմ համակրում»։ ասաց՝ «ես էլ ջաւա սկրիպտ եմ սովորում, որ անցնեմ գործի»։
ու լռեցինք։
ես չգիտէի ինչ ասել։
նախ ես չեմ զգում ինձ մեծ ու վեհ, որ ասեմ՝ ապրես, բան։ ո՞վ եմ որ գնահատական տամ։
իրականում ես կարծում եմ որ լաւ ա անում՝ զի ելք ա, ու պէտք ա դասակարգային ճեղքում անել աղքատութիւնից՝ միջինոտ տեղ։
բայց մէկ ա չգիտէի ինչ ասել։
տէնց շարունակեցինք լռել, մուտքի դուռը նա բացեց, ես դուրս թռայ, պարզուեց ինչ֊որ կին ա մտնում, նա մնաց, ես զգացի որ թռայ իրանից առանց բան ասելու, սպասեցի մօտենայ, ասացի՝ «դէ մինչ», ու գնացի դէպի մեքենայ։
հոգոց։
նա էլ երեւի մի քսան տարուց կը մտածի՝ «ահա թէ ինչի էր նա լռում»։ իսկ գուցէ եւ չէ։
#ծրագրաւորում #դասակարգ #ճեղքում #վերելակ #զրոյց #պատմութիւն
ո՛նց չասեմ՝ իսկ վիրտն այդ խնդիրը լուծել էր դեռ ութսունականների վերջի օբերոնում։
#օբերոն #տեք #ծրագրաւորում #իւնիքս #լոտուս #էկրանահան
https://www.youtube.com/watch?v=GPG6a__Q0Sg
աստուատ, մարդը հեռախօսի՝ ոչ դիւրակիր, բայց արդէն մի քիչ «սմարտ», համար դեմօ ա սարքել։
մանրամասներն այստեղ, անգլերէն։
#հեռախօս #պատմութիւն #դեմօ #ծրագրաւորում #արուեստ #արհեստ
#համակարգիչ #ծրագրաւորման_լեզուներ #համակարգչութիւն #ռետրոհամակարգչութիւն #կարգիչ #ֆորթ #սպեկտրում #ծրագրաւորում #էկրանահան #պատմութիւն
գօ֊ի թերացումներից, ռուսերէն՝ https://habr.com/ru/post/646073/
#գօ #գօլանգ #ռուսերէն #յօդուած #ծրագրաւորում
յէ՛յ։
irc_bot֊իս կախուածութիւնները ջոկում ա։ (:
#փաթեթների_կառավարում #փաթեթային_կառավարիչ #վիպակ #օբերոն #էկրանահան #կախուածութիւն #ծառ #վիշապ #ծրագրաւորում #էհ
հարիւր ճագարի հարցազրոյցի ձայնագրութիւնները՝
անցեալ շաբաթուայ՝
https://archives.anonradio.net/202201111600_gef.mp3
այսօրուայ ձայնագրութիւնը՝
https://archives.anonradio.net/202201181600_gef.mp3
#անոնռադիո #անոնռադիօ #հարցազրոյց #ռետրո_համակարգչութիւն #ռետրոհամակարգչութիւն #համակարգիչ #կարգիչ #գիրք #նաւարկութիւն #նաւ #ծրագրաւորում #երաժշտութիւն #արուեստ
ասում ա՝ «produced by John McCarthy»
https://toobnix.org/w/ryxeSERTbgNNF9y779acFU
նաեւ ֆիլմում նշւում ա «GOGOL» ծրագրաւորման լեզուն՝ ALGOL֊ի դիալեկտ։ ըստ ալգոլի վիքի յօդուածի այն իսկապէս աշխատում էր «ODIN time-sharing system»֊ի տակ, PDP-1 մեքենայի վրայ։
#կարգիչ #ֆիլմ #պատմութիւն #արուեստ #համակարգչութիւն #ծրագրաւորում #համակարգիչ #ալգոլ #գոգոլ #օդին
ով չի լսել հարցազրոյցը, ահա ձայնագրութիւնը՝
https://archives.anonradio.net/202201111600_gef.mp3
շարունակութիւնը միւս շաբաթ նոյն ժամին։
#հարցազրոյց #ռետրո_համակարգչութիւն #ռետրոհամակարգչութիւն #համակարգիչ #կարգիչ #գիրք #նաւարկութիւն #նաւ #ծրագրաւորում #երաժշտութիւն #արուեստ
ես արդէն գրել էի հարիւր ճագարի մասին՝ եւ դեւինը, եւ ռեկը յայտնի են մեզ իրենց դաշնեզերքի հաշիւներով՝
https://merveilles.town/@neauoire
https://merveilles.town/@rek
հարցազրոյցը լինելու ա անոնռադիօյի եթերում մեր ժամով՝ 20:00, յուսամ լայւ։
ես էլ կպնելու եմ com
չաթին, ու քաջալերում եմ կպնել, գուցէ լինի իրական ժամանակում խօսել։
մեզնից իմ յիշելով անդրանիկը, կօֆէն, տիգրանը, վաչագանը, վագագը էդ չաթին կպնելու հմտութիւններ ունեն՝ եկէ՛ք։
նաեւ էստեղ եմ փորձել իրենց մասին պատմել, ու իրենց գիրքն եմ խորհուրդ տուել ձեռք բերել։ շատ հաւէս ա կարդացւում, արդէն կարող եմ ասել, ու մասնագիտական չի՝ փոքր նաւով ովկիանոսի ճամփորդոթեան մասին ա։
#հարցազրոյց #ռադիօ #ռադիո #համակարգիչ #արուեստ #ռետրո_համակարչգութիւն #ծրագրաւորում #նաւ
բլոգ փոստ այն մասին, ինչու դու չես ուզում օգտագործել կախուածութիւններ՝
https://assoc.tumblr.com/post/75920732466/keep-it-simple-dont-be-framework-happy
#ծրագրաւորում
օօծ֊ի գինն ու առաւելութիւնները (costs and benefits of oop) լոյս ա տեսել որպէս առանձին թուղթ, ու այս գրքի 12֊րդ գլուխն ա, 215 էջում։
թուղթը բարդ ա ճարել, գիրքը ես առել եմ։ ռուսալեզու լսարանն արտօնեալ էր՝ վոլոգդայի համալսարանը, ուր սուերդլովն ա աշխատում, թարգմանում եւ հրապարակում էր շատ օբերոնին վերաբերող թղթեր, եւ կայ նաեւ այս յօդուածի ռուսերէն թարգմանութիւնը։
#օբերոն #օօծ #ծրագրաւորման_լեզուներ #ծրագրաւորում #թուղթ #գիրք
կան բարեռ, որոնց տակ ով ասես ինչ ասես չի հասկանում։ այդպիսին ա կոմպոնենտ բառը։ եւ այդպիսին ա փաթեթ բառը։
փաթեթ բառը պասկալում շատ տարբեր բաներ կարող ա նշանակել։ (բազմիցս ասել եմ, որ չափազանց բարդացրել են)։
այստեղ մանրամասն գրուած ա դելֆիի տեսակի լազարուսի փաթեթների մասին։
#փաթեթ #պասկալ #ծրագրաւորում #լազարուս #դելֆի
ֆունկցիոնալ ծրագրաւորում delphi֊ով՝ https://www.youtube.com/watch?v=HDhmUjzUNyQ
#պասկալ #դելֆի #ծրագրաւորում
աստուատ՝
https://beza1e1.tuxen.de/lore/crash_cows.html
#ծրագրաւորում #կով #կովեր #պատմութիւն #սովետ #սովէտ #խսհմ #տեք #գնացք #սուերդլովսկ #համակարգիչ #կարգիչ #SM-1800 #PDP-11 #ծրագրակազմ
մարդիկ աւելացրել են «tlp» անունով սերուիս, որի նպատակը մարտկոցի ռեսուրսները խնայելն ա, ծախսն օպտիմիզացնելը։
արդիւնքում այդ սերուիսն այնքան պրոցեսորի հզօրութիւն ա ծախսում, որ արագ նստեցնում, քամում ա մարտկոցը։
մանրամասներն այս հրապարակման մէջ, անգլերէն։
#ծրագրաւորում #օպերացիոն_համակարգեր #յօդուած #անգլերէն #լինուքս #փայնֆոն #օհ #տեք #տեքնոլոգիաներ #նախագծում
հէհ, նոր ձեւի յարձակում՝
https://github.com/nickboucher/trojan-source
#անվտանգութիւն #տեք #ծրագրաւորման_լեզուներ #ծրագրաւորում
մի չաթում տղայի հետ եմ ծանօթացել՝ շատ կրեատիւ ա, չի կարողանում հանգիստ նստել, քանի նախագիծ ունի գրած, ու յաճախ մտքեր ա գեներացնում թէ էլ ինչ ա ուզում գրել։
խելքը գլխին տղայ ա, ահագին բան գիտի, ահագին գործ արել ա, վատ ծրագրաւորող չի, այն պարագայում որ ահաւոր ծրագրաւորողների ամենուր կարելի ա տեսնել՝ եւ ոչ կրեատիւ են, եւ դախ են, եւ ոչ մի բանով չեն հետաքրքրւում, ես գործ անել չգիտեն։
սա իր կայքն ա որ սարքել էր երբ 12 տարեկան էր, եւ փորձում էր վաճառել իր գրած ծրագրերը՝
այս էջը գոյութիւն չունի, ես արքիւից եմ հանել էկրանահանը։ ու յղում հատուկ չեմ տալիս եւ որոշ տեղեկատւութիւն որ կարող ա մարդուն նոյնականացնել հատուկ թաքցրել եմ։
իսկ ահա որ պատկերացնէք ինչքան գործ էր արել իր ծրագրերից մէկի վրայ՝
կրկին, տիրոյթը թաքցրել եմ։
այսօր նա աշխատում ա առաքիչ՝ մեքենայ ա վարում, ազատ ժամանակ ծրագրեր ա գրում, կամ զբաղւում ա դստեր հետ՝ իր հետ միասին էլ են ծրագիր գրել, նախագիծ արել։
քանի որ նա այն ընտանիքից կամ դասակարգից չէր, որ իրեն կարողանային սատարել որ ընդունուի համալսարան, ձեռք բերի կապեր, սկսի աշխատել ծրագրաւորող, նա այնպէս էլ չկարողացաւ այդ դասակարգային ցատկն անել։ ինքն իրեն հեգնում ա, ասում ա՝ «վատ ընտրութիւններ», բայց չեմ կարծում որ միայն դրանք են պատճառը։
նա տաղանդաւոր երեխայ էր, որ ապրում էր միջավայրում, ուր հնարաւոր էր ունենալ համակարգիչ, ու նա կարողացաւ որոշ չափով զարգացնել որոշ հմտութիւններ, բայց ոչ միջավայրում, ուր միշտ իրատեսական էր ճեղքում անել եւ դուրս պրծնել դասակարգի հնարաւորութիւնների սահմաններից։
#ծրագրաւորում #դասակարգ #հանրութիւն #սոցիալական_անարդարութիւն #մերիտոկրատիա #արդարութիւն #էկրանահան #պատմութիւն #հնարաւորութիւններ #մարդիկ #չգիտեմ
էս տղան պասկալով գոֆեր դիտարկիչ ա գրել։ հաւէս միտք ա օգտագործել lcl֊ի TTreeView կլասը։ սա իհարկէ լինուքսի տակ վերցրած էկրանահան ա։
ունի էկրանահաններ տարբեր օհ֊երի տակ վերցուած, ներառեալ win98 ու winxp (((:
զի շատ տեղափոխելի ա լազարուսի ծրագիրը։
գրիր մի անգամ՝ շինիր ամէն տեղ։
սա էլ ելատեքստը։
իսկ ահա իր էջը գոֆերում, ինչպէս երեւում ա իմ սէյլֆիշի gopherette դիտարկչից՝
առաջարկեցի ջեմինի հաղորդակարգ աւելացնել։ չէր լսել դրա մասին։
եւ կրկին՝ համացանցը լոկ www չի, ու http չի։
շատ աւել ա։
ու տէնց։
#գոֆեր #ծրագրաւորում #պասկալ #լազարուս #էկրանահան #համացանց
այստեղ տպաւորիչ թղթեր կան։
#ադա #ծրագրաւորում #սպարկ #ոչ_ձեր_իմացածը #տեք #թուղթ
#ծրագրաւորում #սկսնակ
մէկն էսօր գրեց՝ երբ մաթ․ խնդիրներ չեմ լուծում, ինձ լիարժէք չեմ զգում, միւսը գրել էր՝ դեբիլանում եմ, գնամ մաթ․ անալիս կրկին սովորեմ։
ուզում եմ ասել որ ինձ շատ բարդ ա աբստրակտ բան սովորելը, երբ չեմ կիրառում։
ու ինձ շատ մօտ են էն մասնագիտութիւնները, ուր յստակ սահմանափակումներ կան ու տեսութեան կիրառութիւն։
պատկերաւոր օրինակ ա ճարտարապետութիւնը, բայց տեքի մէջ դա յաճախ ա նմանապէս՝
դու ունես էսքան հողակտոր, էս ֆորմայի։ քեզ իհարկէ անյարմար ա որ էս ֆորմայի ա, բայց էդ ա էդ մարդու ունեցածը։
մի մասն էլ էդ տարածքի լանջի վրայ ա։
պլիւս ինչ֊որ մի բան արդէն կառուցած ա, որի մեծ մասը չէր ուզի քանդել տէրը։
այ դա ինձ շատ հետաքրքիր ա, զի իրական կեանքում դու չես ասում՝ դիցուք մենք ունենք սէնց հողակտոր, դու ունես գործ իրական հողակտորի եւ իրական սահմանափակումների հետ։
եւ ապա մենք ունենք վերօգտագործում՝ կոդի մէջ էլ, եւ ունենք թափելու բաներ, եւ պիտի լաւ լուծման հասնենք եղած սահմանափակումներով յանդերձ։
այ դա ինձ շատ սիրուն ա թւում ու ոգեշնչող։
գուցէ էդ պատճառով էլ եմ սիրում ցածր մակարդակի մասին շատ իմանալ, ու ցածր մակարդակի կոդ, զի ինչքան էլ սիրուն աբստրակցիաներ չգրես՝ մէկ ա բախուելու ես երկաթի, մասնաւորապէս, սահմանափակումներին։ չի նշանակում որ աբստրակցիա չեմ սիրում, կամ պիտի միայն ասմ֊ով գրեմ՝ գրեթէ երբեք չեմ ընտրի ասմ֊ով գրել։ բայց չեմ կարող չուզել իմանալ էդ ցածր մակարդակի մանրուքները, զի սահմանափակումներով խնդիրներ լուծելիս դրանց հետ պէտք ա ծանօթ լինել։
#տեք #դիզայն #նախագծում #նախասիրութիւն #ճաշակ #դիզայն #ծրագրաւորում #ճարտարապետութիւն #մաթէմ #վերացարկում
լեզուներ կան, որ «spell»֊երի, կախարդանքների հետ։
պիտի սովորես էս արտայայտութիւնը, ձեւը, էն արտայայտութիւնը, ձեւը։
ու սթաքօվերֆլոյի զգալի մասն այդ մասին ա՝ մարդիկ հարցնում են ու կիսւում են «spell»֊երով։
ու կան այլ լեզուներ, ուր կարելի ա որոշակի մինիմում սովորել, ու յետոյ ամէնը կառուցել այդ մինիմումն օգտագործելով։
յօդուած էի կարդացել, որ չինարէն դասական ուղղագրութիւնն էլ ա էդպէս՝ որը թայուանում ու կանտոնեզում ա օգտագործւում։ իսկ չինական կոմունիստական ուղղագրութեամբ գրածները սովորել ա պէտք, ու բարդ ա։
#ծրագրաւորում #տեք
պարզւում ա, հնարաւոր չի էփլի ափսթոր լցնել որեւէ բան, որը շինած ա gcc֊ով, կամ դրա վրայ հիմնուած կազմարկիչով։
այդ պատճառով, օրինակ, չի կարելի ադայով գրուած յաւելուած վերբեռնել՝ ադա կազմարկիչն այս պահին հիմնուած ա ջիսիսիի վրայ։
էփլը տարօրինակ պահանջներ ունի, զի ջիսիսի֊ով կարելի ա շինել նաեւ սեփականատիրական ծրագրակազմ։
ու ես հասկանում եմ որ էփլը վաղուց պատկերացնում էր ինչ տեսակի սահմանափակումներ են ուզում ունենալ, այդ պատճառով էլ ֆինանսաւորում էր llvm նախագիծը՝ որը կը լինի ֆորմալ ազատ, բայց իրենց պահանջներին կը բաւարարի։
նախ, պէտք չի էփլի բարութեան մասին պատրանքներ ունենալ՝ llvm֊ը բնաւ էլ էփլի նուէրը չէր համայնքին, այլ ստեղծուած իրավիճակում, երբ ազատ ծրագրակազմի շարժումն արդէն ուժեղ էր ու նախագծողները սովոր են ազատ գործիքների, եւ gcc֊ին բաւական զարգացած էր ու վաղուց ունէր բազմաթիւ ֆրոնտէնդներ, էփլին պէտք էր կարողանալ առաջարկել նախագծողներին ընդունելի այլընտրանք։
երկրորդը՝ շնորհակալութիւն fsf֊ին ու rms֊ին՝ մենք արդէն ունէինք ազատ գործիքներ, եւ էփլը մրցունակ լինելու համար ստիպուած էր իրենց կազմարկիչների նախագիծը ազատ դարձնել՝ այլապէս ունենալու էինք ոչ ազատ llvm, որով գուցէ նոյնիսկ արգելուած լինէր, կամ հնարաւոր չլինէր ոչ էփլի հարթակների համար ծրագրեր կազմարկել։
երրորդը՝ ես չեմ կարող գրել այօսի համար շատ լաւ ու շատ տարբեր ազատ գործիքներով՝ զի ֆաշիստ են։
չեմ կարող նաեւ իմ քոմփայլերով։ ու չեմ կարող նաեւ վերբեռնել ազատ ծրագիր՝ պիտի փակեմ, որ ըստ իմ արտօնագրի նոյնպէս չլինի տարածել իմ ծրագիրը՝ որ համատեղելի լինի գուգլի կամ էփլի կանոնների հետ։
եւս մի պատճառ էփլը չսիրելու, ու bsd արտօնագրերը չսիրելու։
բաւական տհաճ էր նաեւ պատմութիւնը, երբ vlc նուագարկիչը չէր կարելի աւելացնել գուգլի «փլէյ սթոր»՝ զի ըստ gpl արտօնագրի չի լինի մարդուց խլել ստացած ծրագիրը տարածելու ազատութիւնը։ իսկ գուգլը ուզում էր չթողնել ներբեռնուած յաւելուածը նոյնիսկ պահել մօտդ, կամ այլ սարքի մէջ տեղակայել։ վճարե՛լ ես ծրագրի համար, ոնց որ քո՛նն ա, բայց մէկ ա պիտի կախուած լինես գուգլից։
նոյնիսկ ազա՛տ ա ծրագիրը՝ vlc֊ն ա, որ հազար տարի գիտենք՝ բայց պարզւում ա այն պէտք ա դարձնել անազատ՝ խանութում ձրի ներբեռնելու հնարաւորութեամբ տեղաւորելու համար։
ու նուագարկիչի թիմը ստիպուած եղաւ կապուել նախագծին աջակցած բոլոր֊բոլոր կոդի քոմիթերների հետ եւ համոզել ռելայսնսել կոդը bsd արտօնագրով։
եւ ո՞նց են դրանից յետոյ ասում, որ bsd֊ն աւելի ազատ արտօնագիր ա՝ դրա օգնութեամբ մարդկանց զրկեցին ձեռք բերուած եւ ազատ ծրագիրը տարածելու իրաւունքից, ազատութիւնից, պարտադրելով խոշոր ընկերութիւնից կախուածութիւն, ու փաստացի մենք ունենք իրավիճակ, երբ bsd արտօնագիրը սատարում ա մենաշնորհներին։
#ադա #ծրագրաւորում #կազմարկում #կազմարկիչ #արտօնագիր #մենաշնորհ #էկրանահան #էփլ #ֆաշիստներ #գուգլ #ազատութիւն
փաստօրէն մինուետը պասկալով էր գրուած։
իրականացրել էին բազմախնդիր միջուկ եւ դէ պատուհանները տուրբօ վիժնով էին նկարել։
#պասկալ #ծրագրաւորում #դօս #դիտարկիչ #պատմութիւն
ուրեմն… էսօր նոր բաներ իմացայ 42երեւան դպրոցի մասին։
վերջն ա, ժողովուրդ։ ես առհասարակ պէտք չեմ։ ամերիկեան կամ պոլիտեքնիկ պէտք չի։ @{https://xn–69aa8bzb.xn–y9a3aq/users/spectrum}
տեսէք ինչ են անում՝ տալիս են առաջադրանքներ։ ունես ժամանակ, պիտի լուծես։
ոնց ուզում ես։ սովորեցնող չկայ։ ունես առաջադրանք ու ժամանակ։
ու մակ կարգիչ։ զի իւնիքս ա։ զի քոնը, ենթադրւում ա որ ուինդոուս ա։ ու դու էնտեղ կարող ես լռուել, անել առաջադրանքներդ։ հետազօտութիւններդ, որ այդ առաջադրանքները հասկանաս ու անես։
քեզ ոչ մի յղում չեն տալիս, թէ ոնց անես կամ ոնց սովորես։ դու ունես համացանց՝ սովորի։
ու գիտէ՞ք, ուրեմն պատմում էին ինձ, ցոյց տալիս, ու ասացին որ արդէն շելլի առաջադրանքին հասան՝ պիտի minishell գրեն։ ասի՝ մի հատ ցոյց տուէք էլի ո՞րն են պահանջները։
պահանջները մանրամասն գրած են լինում՝ օգտագործելով միայն էս ու էս ու էս ֆունկցիաները, պէտք ա իմփլեմենթ անես սա ու սա ու սա։
ու աստուած, իրենց ՄԻՆԻ շելլը նէնց բարդ էր, որ եթէ ես օհ֊ի դասին, որ շելլ եմ տալիս գրել, տէնց պահանջներ դնեմ՝ ոչ մէկ չի անի։ իսկապէս, ոչ մէկ չի անի։
նաեւ ես պէտք չեմ, զի մոտիւացուած մարդիկ իսկապէս գնում են 42երեւան։ իսկ ես ստանում եմ ոչ էդքան մոտիւացուած մարդկանց, որ պիտի պարեմ իրենց առաջ, գլխի վրայ կանգնեմ, մի ձեւ հետաքրքրեմ որ սովորեն։
ու որ մի հատ էլ չբողոքեն թէ բարդ առաջադրանքներ ա տալիս, ո՞վ կարայ դա գրի։ այո, դուք չէք կարող, իսկ այ 42֊ի մարդիկ կարողանում են։ զի ուզում են։
հա, նախագիծը ֆրանսիական ա՝ 42.fr։ վերջն են։
կարճ ասած, ուզում էք բան սովորել՝ գնացէք էնտեղ։ ոչ մի տեղ էդպէս ու էդքան չէք սովորի։ ըստ որում ոչ մէկ ձեզ չի սովորեցնի։
պիտի լինէք նորմալ մարդ, սովորէք շփուել այլ ուսանողների հետ, գուցէ օգնեն։
#կրթութիւն #հաւէս #42երեւան #թումօ #ծրագրաւորում #ուսում #դասընթաց #օպերացիոն_համակարգեր
յ․ գ․ ես իհարկէ էդ դասընթացի հետ էլ խնդիրներ ունեմ։ բայց հասկանում եմ որ այլընտրանք չկար առանձնապէս։
զի սի են օգտագործում, ու հեդըրների հետ տառապում։ ու հեդըրը հիիիին գաղափար ա։ ու պէտք չի։
բայց դէ ի՞նչ այլընտրանք առաջարկեմ։ ասեմ՝ օբերոնո՞վ գրէին՝ հա, ո՞վ կը գնար։
ու տէնց։
մարդիկ SPARK֊ի կոդն էին թիրախաւորում, բայց արդիւնքում գտան խնդիր RISC-V ISA֊ի մէջ։
#ծրագրաւորում #տեք #ապահովութիւն #ծրագրաւորման_լեզուներ #ադա #սպարկ
պասկալ կոմպիլեատորի մասին գիրք՝
https://homepages.cwi.nl/~steven/pascal/book/pascalimplementation.html
#գիրք #պ4 #պասկալ #կոմպիլգատոր #կազմարկիչ #ծրագրաւորում #տեք
remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead.
ծանօ՞թ ա։
ի՞նչ անել github֊ի personal token
չստանալու համար։
իրականում այն, ինչ վատ չէր լինի միշտ անել՝ օգտագործել ssh
բանալի։
իրենք խրախուսում են դա օգտագործել, բայց հին բարի ssh
բանալին էլ ա կարելի օգտագործել։
ուրեմն՝
նախ դէ աւելացնել իրենց մօտ հանրային բանալին։ դա չեմ բացատրում։
~/.ssh/config
անունով նիշք ստեղծել (եթէ չկայ) ու աւելացնել՝
Host github.com
Hostname ssh.github.com
Port 443
User git
դեռ ամէնն արուած չի։
իւրաքանչիւր ռեպօն որ ունէք, եթէ փորձէք push անել, մէկ ա բողոքելու ա։
ենթադրում եմ որ եթէ այս խնդիրն եղաւ, https
ով էիք աշխատում, ու remote
֊ները https
֊ով են նշուած։
դա գրուած ա շտեմարանի (շտեմարանի՞) ~/.git/config
֊ում կայ կարելի ա հանել էսպէս՝
git remote -v
դէ մէկը push
֊ի ու մէկը fetch
֊ի համար են։
հիմա, եթէ դիցուք ձեր remote
֊ը էսպիպի տեսք ունէր՝
https://github.com/valod/coolprog
ապա անում ենք՝
git remote set-url git@github.com:valod/coolprog.git
այ հիմա արդէն
git push origin master
կամ որեւէ այլ ճիւղ կաշխատի։
#տեք #կրիպտօ #ծրագրաւորում #գիտ #գիտհաբ #գիտլաբ #համակարգ #ելատեքստ #ակնարկ #ուտէնց
այն, ինչ ես ուզում էի անել օբերոնի համար, ու իհարկէ չեմ ձգել՝ https://github.com/halturin/ergo
#էրգօ #գօ #էրլանգ #ծրագրաւորում #տեք
84 թուի «բայթ» հանդէսում կար յօդուած ֆորթի մասին, նաեւ հէնց վիտի եւ գուտքնեխտի տեքստերը՝ մոդուլա-2֊ի մասին։
#էկրանահան #հանդէս #համակարգիչ #կարգիչ #ծրագրաւորում #ծրագրաւորման_լեզուներ #ֆորթ #մոդուլա #մոդուլա-2 #ամսագիր #բայթ #1984 #պատմութիւն
մենք միշտ նկատում ենք։
#էկրանահան #պրոլոգ #ծրագրաւորում #տեք
ինչ լաւն են սկզբունքները՝ https://en.wikipedia.org/wiki/X_Window_System#Principles
#սկզբունք #տեք #ծրագրաւորում #նախագծում
էս մարդը էրեխայ ժամանակ սէնց բաներ ա գրել՝ https://github.com/ca98am79/my-first-programs
իսկ ինչի՞ ես հասել դու։
#պասկալ #ծրագրաւորում
ի դէպ, նա նաեւ ստերեօգրամներ էր գեներացրել։
եթէ չգիտէք ինչ ա, ահա, այստեղ կարող էք փորձել։
այստեղ գրեմ որ չմոռանամ։ վերջերս մէկն ասում էր որ մի նախագիծ չի ուզում սի֊ով գրի, զի տողերի հետ բարդ ա աշխատել, գօ֊ի փաթեթների կառավարումը չի սիրում, իսկ պասկալով կանէր, բայց սովորել ա արդէն որ ուր ուզես ինչ ուզես յայտարարում ես, իսկ պասկալը պահանջում ա որ դա լինի ֆունկցիայի վերեւում յատուկ տեղում։
ես էլ ասացի որ այդպէս սիրում եմ, բայց դելֆի պասկալում հիմա իր ուզածով ա։ ու որ ֆպց֊ի դեւերը որոշեցին այդ փոփոխութիւնը չիրականացնել։
նա յղուներ ուզեց, ես փնտրեցի որ նախկինում կարդացածս գտնեմ՝
https://blog.marcocantu.com/blog/2018-october-inline-variables-delphi.html — սա դելֆիի մասին։
սա էլ՝ https://forum.lazarus.freepascal.org/index.php?topic=43172.0 — ֆրիպասկալի համայնքի քննարկումը։
սա գրեցի որ #պասկալ պիտակով ապագայում հեշտ գտնեմ։
#դելֆի #ծրագրաւորման_լեզուներ #ծրագրաւորում
չեմ սիրում սէնց բաներ՝
{$define PUCUStrictUTF8}
{$ifdef fpc}
{$mode delphi}
{$ifdef cpui386}
{$define cpu386}
{$endif}
{$ifdef cpu386}
{$asmmode intel}
{$endif}
{$ifdef cpuamd64}
{$asmmode intel}
{$endif}
{$ifdef FPC_LITTLE_ENDIAN}
{$define LITTLE_ENDIAN}
{$else}
{$ifdef FPC_BIG_ENDIAN}
{$define BIG_ENDIAN}
{$endif}
{$endif}
{-$pic off}
{$define CanInline}
{$ifdef FPC_HAS_TYPE_EXTENDED}
{$define HAS_TYPE_EXTENDED}
{$else}
{$undef HAS_TYPE_EXTENDED}
{$endif}
{$ifdef FPC_HAS_TYPE_DOUBLE}
{$define HAS_TYPE_DOUBLE}
{$else}
{$undef HAS_TYPE_DOUBLE}
{$endif}
{$ifdef FPC_HAS_TYPE_SINGLE}
{$define HAS_TYPE_SINGLE}
{$else}
{$undef HAS_TYPE_SINGLE}
{$endif}
{$if declared(RawByteString)}
{$define HAS_TYPE_RAWBYTESTRING}
{$else}
{$undef HAS_TYPE_RAWBYTESTRING}
{$ifend}
{$if declared(UTF8String)}
{$define HAS_TYPE_UTF8STRING}
{$else}
{$undef HAS_TYPE_UTF8STRING}
{$ifend}
{$if declared(UnicodeString)}
{$define HAS_TYPE_UNICODESTRING}
{$else}
{$undef HAS_TYPE_UNICODESTRING}
{$ifend}
{$else}
{$realcompatibility off}
{$localsymbols on}
{$define LITTLE_ENDIAN}
{$ifndef cpu64}
{$define cpu32}
{$endif}
{$define HAS_TYPE_EXTENDED}
{$define HAS_TYPE_DOUBLE}
{$define HAS_TYPE_SINGLE}
{$ifdef conditionalexpressions}
{$if declared(RawByteString)}
{$define HAS_TYPE_RAWBYTESTRING}
{$else}
{$undef HAS_TYPE_RAWBYTESTRING}
{$ifend}
{$if declared(UTF8String)}
{$define HAS_TYPE_UTF8STRING}
{$else}
{$undef HAS_TYPE_UTF8STRING}
{$ifend}
{$if declared(UnicodeString)}
{$define HAS_TYPE_UNICODESTRING}
{$else}
{$undef HAS_TYPE_UNICODESTRING}
{$ifend}
{$else}
{$undef HAS_TYPE_RAWBYTESTRING}
{$undef HAS_TYPE_UTF8STRING}
{$undef HAS_TYPE_UNICODESTRING}
{$endif}
{$ifndef BCB}
{$ifdef ver120}
{$define Delphi4or5}
{$endif}
{$ifdef ver130}
{$define Delphi4or5}
{$endif}
{$ifdef ver140}
{$define Delphi6}
{$endif}
{$ifdef ver150}
{$define Delphi7}
{$endif}
{$ifdef ver170}
{$define Delphi2005}
{$endif}
{$else}
{$ifdef ver120}
{$define Delphi4or5}
{$define BCB4}
{$endif}
{$ifdef ver130}
{$define Delphi4or5}
{$endif}
{$endif}
{$ifdef conditionalexpressions}
{$if CompilerVersion>=24}
{$legacyifend on}
{$ifend}
{$if CompilerVersion>=14.0}
{$if CompilerVersion=14.0}
{$define Delphi6}
{$ifend}
{$define Delphi6AndUp}
{$ifend}
{$if CompilerVersion>=15.0}
{$if CompilerVersion=15.0}
{$define Delphi7}
{$ifend}
{$define Delphi7AndUp}
{$ifend}
{$if CompilerVersion>=17.0}
{$if CompilerVersion=17.0}
{$define Delphi2005}
{$ifend}
{$define Delphi2005AndUp}
{$ifend}
{$if CompilerVersion>=18.0}
{$if CompilerVersion=18.0}
{$define BDS2006}
{$define Delphi2006}
{$ifend}
{$define Delphi2006AndUp}
{$ifend}
{$if CompilerVersion>=18.5}
{$if CompilerVersion=18.5}
{$define Delphi2007}
{$ifend}
{$define Delphi2007AndUp}
{$ifend}
{$if CompilerVersion=19.0}
{$define Delphi2007Net}
{$ifend}
{$if CompilerVersion>=20.0}
{$if CompilerVersion=20.0}
{$define Delphi2009}
{$ifend}
{$define Delphi2009AndUp}
{$ifend}
{$if CompilerVersion>=21.0}
{$if CompilerVersion=21.0}
{$define Delphi2010}
{$ifend}
{$define Delphi2010AndUp}
{$ifend}
{$if CompilerVersion>=22.0}
{$if CompilerVersion=22.0}
{$define DelphiXE}
{$ifend}
{$define DelphiXEAndUp}
{$ifend}
{$if CompilerVersion>=23.0}
{$if CompilerVersion=23.0}
{$define DelphiXE2}
{$ifend}
{$define DelphiXE2AndUp}
{$ifend}
{$if CompilerVersion>=24.0}
{$if CompilerVersion=24.0}
{$define DelphiXE3}
{$ifend}
{$define DelphiXE3AndUp}
{$ifend}
{$if CompilerVersion>=25.0}
{$if CompilerVersion=25.0}
{$define DelphiXE4}
{$ifend}
{$define DelphiXE4AndUp}
{$ifend}
{$if CompilerVersion>=26.0}
{$if CompilerVersion=26.0}
{$define DelphiXE5}
{$ifend}
{$define DelphiXE5AndUp}
{$ifend}
{$if CompilerVersion>=27.0}
{$if CompilerVersion=27.0}
{$define DelphiXE6}
{$ifend}
{$define DelphiXE6AndUp}
{$ifend}
{$if CompilerVersion>=28.0}
{$if CompilerVersion=28.0}
{$define DelphiXE7}
{$ifend}
{$define DelphiXE7AndUp}
{$ifend}
{$if CompilerVersion>=29.0}
{$if CompilerVersion=29.0}
{$define DelphiXE8}
{$ifend}
{$define DelphiXE8AndUp}
{$ifend}
{$if CompilerVersion>=30.0}
{$if CompilerVersion=30.0}
{$define Delphi10Seattle}
{$ifend}
{$define Delphi10SeattleAndUp}
{$ifend}
{$if CompilerVersion>=31.0}
{$if CompilerVersion=31.0}
{$define Delphi10Berlin}
{$ifend}
{$define Delphi10BerlinAndUp}
{$ifend}
{$endif}
{$ifndef Delphi4or5}
{$ifndef BCB}
{$define Delphi6AndUp}
{$endif}
{$ifndef Delphi6}
{$define BCB6OrDelphi7AndUp}
{$ifndef BCB}
{$define Delphi7AndUp}
{$endif}
{$ifndef BCB}
{$ifndef Delphi7}
{$ifndef Delphi2005}
{$define BDS2006AndUp}
{$endif}
{$endif}
{$endif}
{$endif}
{$endif}
{$ifdef Delphi6AndUp}
{$warn symbol_platform off}
{$warn symbol_deprecated off}
{$endif}
{$endif}
{$ifdef win32}
{$define windows}
{$endif}
{$ifdef win64}
{$define windows}
{$endif}
{$ifdef wince}
{$define windows}
{$endif}
{$rangechecks off}
{$extendedsyntax on}
{$writeableconst on}
{$hints off}
{$booleval off}
{$typedaddress off}
{$stackframes off}
{$varstringchecks on}
{$typeinfo on}
{$overflowchecks off}
{$longstrings on}
{$openstrings on}
#անկապ #ծրագրաւորում
այստեղ լինուսն ասում ա որ սերուերային հարթակի ճարտարապետութիւնը պէտք ա լինի ծրագրաւորողի հարթակի ճարտարապետութեանը մօտ։
յիշեցի այս յօդուածը՝ zx spectrum ֊ի համար ծրագրաւորման մասին. նշում ա, որ օգտագործում էին նոյն ճարտարապետութեան իրական պրոցեսորներ՝ սերուերի վրայ։
Սպեկտրում ծրագրաւորելու բոլոր գործիքներն աշխատում էին CP/M֊ի տակ՝ դա ստանդարտ օպերացիոն համակարգ էր միկրոհամակարգիչների համար մինչեւ MS-DOS֊ի տարածումը։ CP/M֊ը նախագծուած էր 8080 եւ Z80 պրոեսորների համար, եւ երկու Z80֊ներով տպասալ ապրում էր VAX֊ի մէջ՝ օպերացիոն համակարգ աշխատեցնելու եւ օգտատէրերին սպասարկելու համար։ Եթէ երկու հոգի արդէն օգտագործում էին տպասալը, ապա ձեզ մնում էր Z80֊ի ծրագրային էմուլեատոր VAX֊ի պրոսեսորի վրայ — ինչը լրիւ քամում էր իր հզօրութիւնը, դանդաղեցնելով աշխատանքը բոլորի համար։
#պրոցեսոր #ճարտարապետութիւն #նախագծում #կազմարկում #ծրագրաւորում #վաքս #սպեկտրում #օպերեցիոն_համակարգեր #լինուս #պատմութիւն #ռետրո #ռետրոհամակարգչութիւն
յղում @{https://xn–69aa8bzb.xn–y9a3aq/users/spectrum}֊ից՝
https://www.youtube.com/watch?v=mRwHZTNGdoY
#տեք #ծրագրաւորում #ծրագրաւորման_լեզուներ #տտ #պատմութիւն
որովհետեւ դու ես վաղն այդ կոդի հետ աշխատելու։ ու եթէ որոշակի ապագայ կապում ես այդ ընկերութեան հետ, ու չես թռնելու քո իսկ թողած կոդից, որը ճիշտ ա, երբեմն ստիպել են արագ֊արագ մի կերպ գրել տալ, ապա բնական ա որ ուզում ես այն կառավարելի լինի, մէյնթէյնաբլ լինի վաղը։
ու մարդիկ որ չեն ուզում վաղը թռնել, իսկապէս ուղղում են կոդը երեկոյեան, գիշերները, իրենց ընտանիքների հաշուին, զի իրենց ոչ մէկ ռեֆակտորինգի ժամանակ չի տալիս։
նոյնիսկ երբ կարող ես աշխատանքն արագացնել, երբեմն պէտք ա մի ամբողջ կառավարիչների աստիճանը հաստատի, ժամանակ տայ որ անես, եւ երկրորդ անգամ դրանով չես ուզի անցնել։
#աշխատանք #ծրագրաւորում #չգիտեմ
այսօր դաշնեզերքի օգնութեամբ բացայայտեցի cppcast պոդքաստը։ լսեցի վերջին էպիզոդը՝ այն մասնաւորապէս ̶բ̶ո̶ր̶լ̶ա̶ն̶դ̶ի̶ էմբարկադերօյի c++ builder֊ի մասին էր։
հետաքրքիր ա որ
սա շատ կարեւոր թեմա ա ինձ համար, նշանակում ա c++֊ն այնքան արագ տեմպերով ա զարգանում, որ նոյնիսկ այդ, բաւական լուրջ, բաւական, թւում ա թէ, փող ունեցող ընկերութիւնը, չի հասցնում իր կազմարկիչը զարգացնել։
սա կարող էր ոգեւորիչ լինել․ ահա՛, ազատ ծրագրակազմը յաղթում ա, ոչ մի առանձին ընկերութիւն չի կարող հասնել, զի համայնքը զօրաւոր ա, եւ մարդկութիւնը իր ամբողջ ռեսուրսներով կարողանում ա աւելին անել, քան առանձին ընկերութիւնը։
ու մասամբ երեւի այդպէս ա։
մտահոգիչ մասն այն ա, որ լեզուն այնքան ա բարդացել, որ չի լինում առանձին ընկերութեան համար այն իրականացնելն այլեւս իրատեսական չի։ մօտաւորապէս նման պատմութիւն ա դիտարկիչների հետ՝ html֊ն ա այնքան բարդացել, որ առանձին ընկերութիւն այն իրականացնել չի կարող։
եւ մեր բախտից ա (դէ իրականում նախկինում տարուած պայքարից) որ գուգլն ու էփլը այսօր ազատ ծրագրակազմ են ֆինանսաւորում, ու կայ chromium֊ը, եւ llvm֊ն ա ազատ։
բայց եթէ մթնոլորթը փոխուի, մի պահ ա գալու, երբ chromium֊ի շարժիչը գուգլը կարող ա եւ փակել։ իսկ եղած ազատը համայնքը չի կարողանայ զարգացնել այնպէս որ արագ զարգացող ստանդարտներին հասնի։ այդ պատճառով էլ եմ ես ոգեւորւում աւելի պարզ համակարգերից, ինչպիսին են gemini֊ն, եւ oberon֊ը։
c լեզուն էլ ա բաւական պարզ (առանց ընդլայնումների) որ մի հոգի նստի եւ մի քանի ամսում իրականացնի կազմարկիչ։
շարունակեմ այն մասին, ինչ եմ յիշում զրոյցից։
ի՞նչ ընդլայնումներ են դրանք։
դէ դա ես գիտէի, ու կարելի ա պատկերացնել՝
c++ builder֊ը օգտագործում ա բորլանդի object pascal֊ով գրուած vcl (եւ արդէն fmx) գրադարանները։ իսկ գրադարանները նախատեսուած են gui ծրագրեր գրելու համար։ այդ պատճառով object pascal֊ն ունի properties՝ յատկութիւններ, որ կլասի դաշտեր են։ բայց երբ դու վերագրում ես յատկութեանը, իրականում տակից կանչւում ա setter մեթոդ, իսկ երբ կարդում ես դրանից, իրականում տակից կանչւում ա getter (fread) մեթոդ։ դրանք պէտք ա սահմանես, եթէ հատկութիւն ես աւելացնում։ յատկութիւններ նաեւ ունի բորլանդի c++ լեզուի դիալեկտը։
վարողը հարցրեց, արդե՞օք ընկերութիւնը փորձել ա լեզուի ընդլայնումներն աւելացնել c++ ստանդարտի մէջ։ ինչ֊որ գործ այդ առումով արուել ա, ու հիւրը մի քանի c++ կոմիտէի թղթերի յղուեց։ բայց վերջին թուղթը որին յղուել էր փաստարկներ էր անում ինչու յատկութիւններ լեզուի մէջ բերելը վատ միտք ա՝ զի կարող են ոչ տեղին օգտագործուել (misuse), երբ պէտք չի (իբր դա c++֊ի համար ամենակարեւոր խնդիրն ա՝ իբր c++֊ում արդէն չկան հնարաւորութիւններ որ կարող ա սխալ կամ ոչ տեղին օգտագործուեն), եւ այլ փաստարկն այն էր, որ թափանցիկ չի, մարդիկ կարող ա չիմանան, որ դաշտ չի այն, ինչը դաշտ ա երեւում։ սա շատ լաւ փաստարկ ա, բայց կրկին՝ c++֊ն արդէն ունի բազմաթիւ հնարաւորութիւններ որ սինտակտիկ շաքար են։ բայց ես ինքս նոյն կարծիքի են՝ ինձ դուր չեն գալիս յատկութիւններ, եթէ դրանք սովորական դաշտի տեսք ունեն, ու սինտաքսից պարզ չի, որ հատկութիւն են, եւ ոչ թէ սովորական դաշտ։
այլ ընդլայնումը վերաբերում էր, իհարկէ, event֊ներին՝ օրինակ, կտոցը կոճակին event ա, որ կապուած ա յատուկ ֆունկցիայի հետ։ այդ համար borland֊ը նախագծել էր closure կոչուող լեզուի յատկութիւն։ տես նաեւ սա։
ի դէպ քիւթը այլ ձեւերով ա լուծում նոյն խնդիրները, իրենք ունեն սիգնալ եւ սլոտ հասկացութիւններ, բայց ձեռք չեն տալիս c++ կազմարկիչը, փոխարէնը գրել են մի գործիք՝ moc, որը իրենց, քիւթին սպեցիֆիկ սիփլասփլասը թարգմանում ա ստանդարտ սիփլասփլասի։
abi֊ի հետ են շատ գործ անում, եւ pascal֊ական տիպերի հետ համատեղելի լինելու։ գիտենք, որ դելֆիի պասկալն ունի cow strings, իմացայ որ ունի նաեւ ինչ֊որ տարադրամի տիպ, ու այդ տիպերին, բնական ա, իրենց c++֊ն էլ պէտք ա սատարի։
դելֆիի պասկալի ֆունկցիայի քոլերն ունեն register կոչուող calling convention, այդ համար էլ ա գործ արւում։ abi֊ն ջանում են մի ստաբիլ վարկածի մէջ չփոխել, ու եթէ abi֊ի փոփոխութիւններ են նախատեսւում, ապա դրանք արւում են մէյջըր ռելիզների ժամանակ։ այդ փոփոխութիւնները ոչ միայն կարող են վերաբերուել հէնց ֆունկցիաներ կանչելու ձեւին, այլեւ նրան ինչպէս են տուեալները պահւում յիշողութեան մէջ։
ու գուցէ ios դեւելոփմենթն աւելի պարզ բան ա՝ կպնում ես objective c գրադարաններին, պէտք չի jni անել, պէտք չի լիքը այլ բան։ կամ գուցէ իսկապէս այօս դեւելոփմենթի պահանջարկ ունեն։
վախեցայ որ դելֆիից էլ են հանել անդրոիդի մասը, ստուգեցի, ու կայքում կարծես թէ գրուած ա որ ունեն անդրոիդ դեռ։ չգիտեմ։
որոշ չափով խօսուեց delphi֊ի մասին, զի builder֊ի delphi֊ի հետ սերտ կապեր ունի։ օրինակ, կարող ա ընդլայնել պասկալով գրած կլաս։ դէ բնական ա, զի կարող ա ուզես մի կոնտրոլի հիման վրայ մի այլ կոնտրոլ սարքել։ պատմեց, որ delphi֊ն կարողանում ա գեներացնել հեադեր նիշքեր որ իրենց c++ կազմարկիչը կը ճանաչի։ որ շատ հանգիստ լինկ են լինում pascal եւ c++ ծրագրերը։ ու որ աւելի բարդ ա պասկալից կպնել սիփլասական գրադարաններին, քան հակառակը, զի սիփլասփլասը կոնստրուկտներ ունի, որ պասկալը չունի։ իսկ այն կոնստրուկտները որ իրենց պասկալից պէտք էին՝ իրենք արդէն աւելացրել են իրենց սիփլասփլաս կազմարկչի մէջ, ու հետեւաբար պասկալ կոդ շատ հեշտ ա օգտագործել։
նշեց մի քանի նախագիծ, բայց առանց անունների, որ գրուել են սիփլասփլաս բիլդերով։ ու ես հասկացայ որն են իրենց մեծ պատուիրատուները, օրինակ կան ծրագրեր որ սպասարկում են էլեկտրակայաններ, ու քանի որ կոդն ի սկզբանէ գրուած ա եղել բորլանդի բիլդերով, այսօր էլ էմբարկադերօն պէտք ա, որ սպասարկի պրոդուկտ, որը կառնեն այդ էլեկտրակայանի ծրագրակազմ նախագծողները։
ես կարծում եմ որ իրենց գնային քաղաքականութիւնը խանգարում ա իրենց զարգանալ։ եւ այդ պատճառով էլ վարողը հարցրեց, արդեօք կան օփեն սորս դեւերի համար անվճար վերսիաներ։ պատասխանը՝ այո, բայց մի վերսիա հետ ընկած ա, աշխատում ենք թարմացնել։
ովքե՞ր են օգտագործում բիլդեր — հիմնականում ուինդոուս դեւելոփերներ։
ինձ թւում ա, դա բորլանդի, եւ յետոյ էմբարկադերօյի ամենամեծ խնդիրներից ա, որ չեն կարողացել հասցէագրել (այսպէս կարելի՞ ա ասել), չեն կարողացել այնպէս անել որ ոչ ուինդոուս ծրագրաւորողները հետաքրքրուեն նախագծով։ իհարկէ, շատ բարդ ա մրցել լինուքսի աշխարհում, ուր մարդիկ սովոր են ազատ լուծումների, ու սիփլափփլաս մարդիկ սովոր են քիւթին, եւ շատերն իրենց վճարում են։ բայց կարելի էր մրցել, կարելի էր լուրջ փորձեր անել շուկայ մտնելու։ ու բնաւ անիրատեսական չէր մակօսի շուկայ մտնել, կարծում եմ շատ շատերը կը նախընտրէին բիլդեր էքսկոդին, բայց բիլդերի (ինչպէս եւ դելֆիի) այդիին, նախագծման միջավայրը աշխատում ա միայն ուինդոուսում։ ինձ թւում ա դա ամենակարեւոր խնդիրներից ա որ իրենք չլուծեցին, զի մակօս դեւը չի ուզի ուինդոուսում գրել մակօս ծրագրեր։
ընդհանուր առմամբ զարմացած եմ, ինչքան անտեղեակ էր վարողը, որ սիփլասփլաս աշխարհից ա, բիլդերից։ ու դա այն մասին ա, ինչքան ա բիլդերը, որ բաւական լաւ նախագիծ ա, ու ոգեշնչուած ա դելֆիից, չգնահատուած, ինչպէս եւ ինքը դելֆին։
#ծրագրաւորում #ծրագրաւորման_լեզուներ #պասկալ #սիփլասփլաս #սի #բիլդեր #բորլանդ #էմբարկադերօ #նախագծում #ծրագրակազմ #հարցազրոյց #պոդքաստ #տտ #տեք #գործիք #գործիքներ
վաչագանը չափել ա տարբեր ծրագրաւորման լեզուների կոմպիլեատորների սարքած կոդի, ու ինտերպրետատորների արագագործութիւնը կոնկրետ խնդիրներում։
եւ ահա ինչ ա ստացել՝
փաստօրէն, voc֊ը համեմատելի ա c/c++/go֊ի հետ cpu usage֊ի առումով, եւ ամենաքիչ յիշողութիւնն ա վերցնում նոյն խնդիրները լուծելիս։
ու նա դեռ ծանօթ չի օբերոնի հետ, ու գուցէ օպտիմալ կոդ չի գրել, չեմ նայել։
նաեւ ուզում եմ պասկալ (fpc)֊ն էլ աւելացնել, տեսնենք ոնց ա իրան պահում։
#ծրագրաւորում #իրականացում #ծրագրաւորման_լեզուներ #արագագործութիւն #արդիւնաւէտութիւն #տեքնոլոգիաներ #տտ #տեք
ես սա շատ լաւ ընկալում եմ։
ու սա շատ կարեւոր ա նաեւ այսպէս կոչուած սոց․ ցանցերի, իսկ իրականում՝ ինտերնետի պարագայում։ զի ինտերնետը ստեղծուել ա որ մարդիկ կապ ունենան, ու արտայայտուեն, եւ ինքն ա իրենով սոց․ ցանց։ զի սոցիալական կենդանիների կողմից ստեղծած ցանց ա։
ես լրիւ գիտակցում եմ որ իմ գրածները զգալիօրէն սահմանւում են լսարանով։ դա էմփատիայից էլ ա գալիս։ մի իլիւստրացիա բերեմ ու շեղուեմ՝ օրինակ, ընկերս մի անվտանգութեան ոլորտի կոնֆերանսի ժամանակ, երբ քննարկում էին կայքի ծրագրային սխալ, որ առաջացել էր թոյլ տիպաւորուած լեզու օգտագործելու պատճառով, վեր կացաւ ես բարձրաձայն ասաց՝ «իսկ ինչի՞ էք դա օգտագործում։ պասկալո՛վ գրէիք տէնց սխալ չէիք կարողանայ անել»։
ու նա ճիշտ ա, ուժեղ տիպաւորուած լեզու օգտագործելով նման սխալ չէին անի։ բայց վեբի մշակոյթի մարդկանց իր ասածն անհասկանալի էր՝ իրենք սովոր են հէնց էդպիսի լեզուների, ու զարգացրել են հէնց էդ լեզուների շուրջ ֆրէյմուորքներ, էկոհամակարգեր։
դրանից էսօր մենք էլ ենք տուժում՝ դիասպորայի դեւելոփերը գրում ա այն մասին, որ չեն կարողանում բովանդակութեան զտիչներ իրականացնել՝ առանց այդ էլ ծանր ա, դանդաղ ա ծրագրակազմը, ու եթէ իրականացնեն՝ մեծ հանգոյցները կը դառնան ոչ կիրառելի։
զի այսօր կարեւոր համակարգային ծրագրեր, ինչպիսին ա ֆեդերացիայի հաղորդակարգերի իրականացումը՝ գրում են դինամիկ, ինտերպրետացուող, եւ յաճախ՝ ոչ լուրջ լեզուներով։ զի գրում են վեբի մարդիկ, իսկ վեբի մարդիկ էն աշխարհից չեն, որում, օրինակ գրում են օդանաւերի ծրագրակազմ, ու նոյնիսկ էն աշխարհից չեն, որում գրում են մէյլ սերուեր։ իսկ մէյլն ա այն, ինչն իր դիզայնով նման ա դաշնեզերքին։
յետոյ գարգրոնը՝ մաստոդոնի հիմնադիրը, կասի՝ մէկը լինէր, էս մասը ռասթով իրականացնէր՝ բայց մարդիկ որ վեբում են՝ էդ աշխարհից չեն։ ու առաւել եւս էն աշխարհից չեն, ուր fpc կոմպիլեատորով կարելի ա անել համակարգային ծրագրաւորում՝ ծրագրակազմ գրել, որ չի կիրառուելու ուղղակիօրէն՝ էնդ իւզերի կողմից։ օրինակ՝ գո֊ն՝ համակարգային լեզու ա, եւ այդպէս օգտագործւում ա, իրենով գրած դոքերը՝ այն չի ինչ տեսնում ա, կամ ինչի մասին պատկերացում ունի վերջնական սպառողը։
եթէ վերադառնանք կոնֆերանսին, ապա մարդիկ, որ լսել են ընկերոջս խօսքը, եթէ եւ ունեն պասկալի մասին պատկերացում՝ ապա այդ պատկերացումն ա՝ ms-dos օհ֊ը, tp֊ի կապոյտ ide֊ն, եւ 16 բիթանի սահմանափակումները։ երբ(եթէ) իրենք ունեցել են պասկալի հետ առնչութիւն՝ գրել են պարզ ալգորիթմ, օրինակ՝ մատրիցներ են բազմապատկել։ ու չեն իմացել, որ գործիքի հետ են աշխատում, որ, օրինակ ունի մոդուլներ։ մոդուլներ, որ աւելացուել են c++֊ում 2017֊ի ստանդարտում լոկ, եւ կարծես gcc֊ն դրանք դեռ չի սատարում, բայց clang֊ն արդէն սատարում ա։ քանի էսքան շեղուեցի, ասեմ որ մոդոլները c++֊ը չեն փրկի՝ զի այն «փրկելու», ըստ իս, համար, այն պէտք ա դառնայ լրիւ այլ լեզու, որը ոչ թէ ունի ամէն ինչ, այլ որը չունի իր հնարաւորութիւնների իննսուն տոկոսը։ բայց ինչեւէ։
ու ես աւելի մեծ էի, ու ես պատկերացնում էի այդ մարդկանց ընկալումը։ ու ես չէի ասի, երեւի, այն, ինչ ասաց ընկերս։ զի ես պատկերացնում էի որ իրենք չեն պատկերացնում։ համացանցը նաեւ լաւ ա սրանով՝ ես չպէտք ա վեր կենամ, եւ իրենց աչքը խցկեմ ինչ֊որ բան, որ իրենք չեն ընկալի։
ես ինձ համար էստեղ կը գրեմ, ու ում հետաքրքիր ա՝ կը գտնի։ կարելի ա նաեւ ասել, որ ես էստեղ էլ չեմ գրի, զի մէկ ա, ո՞ւմ գրեմ։ ինձ երեւի պակասում ա համախոհների համայնք, բայց դա նորմալ ա, ես չեմ բողոքում։ բայց կուզէի պատկերացնէիք մի բան, որ զգացի երբ ֆբ֊ն հայաստանում պոպուլար էր դառնում։ ես զգացի, որ կարող ա մի շաբաթ ծախսեմ ինչ֊որ բան աշխատեցնելու վրայ։ կուզեմ կիսուել՝ կանեմ գլամուր նկար՝ սարք, լափթոփի էկրան, վրան տերմինալ, եւ ինչ֊որ թուեր, որ սարքից ստացել եմ։
ես կը հաւաքեմ նոյն քանակի «լայքեր», ինչ կը հաւաքի տափակ կատակ անողը։ լաւագոյն դէպքում այդքան։ ես կը ստանամ իմ տասնհինգ լայքը, ու նա կը ստանայ իր տասնհինգ լայքը։ ըստ լայքերի արտարժոյթի փոխարժէքի անիմաստ ա մի շաբաթ տառապել, որ այդ արդիւնքը ստանաս։
նշանակում ա, պէտք ա այն կիսել այնտեղ, ուր դա աւելի գնահատուած կը լինի, քան վերոյիշեալ կատակը։ եթէ ես գտնեմ այդպիսի տեղ համացանցում՝ ապա պիտի գրեմ ոչ հայերէն, եւ հայալեզու համախոհը, կամ մարդը ում դա կը հետաքրքրէր, այն չի գտնի։ չի գտնի, զի ես չեմ լինի իր ծանօթի ծանօթը, ու մենք կապ չենք ունենայ, ու նա չի ոգեւորուի։ էս մի քիչ մեծամիտ ա ստացւում, զի թւում ա որ ես եմ ում գործից կարող ա ոգեորուեն, բայց նոյն ձեւ ես եմ փնտրում ոգեշնչում։ նոյն ձեւ ես եմ փնտրում համայնք։
եթէ արտայայտեմ ֆրուստրացիաս տեղական տտ համայնքներից, կը բերեմ օրինակ՝ ինձ հրաւիրել էին նմանատիպ «սլեքի» ալիք։ այն ժամանակ, երբ սլեքին կարելի էր կպնել ջաբերից, ու ես այնքան չէի զզւում իրենց բիզնէս մոդելից։ եւ այդ հաւաքուած մարդիկ՝ լռում էին։ մի քանի անգամ ես ու ընկերս խօսեցինք, մեզ հետաքրքրող բաներից՝ բայց դա մարդկանց չհետաքրքրեց։ եւ մենք լռեցինք, չունենալով ֆիդբեք։ եւ իրենք չէին լռում, երբ ինչ֊որ մէկը գալիս ու հարցնում էր՝ «մարդ կա՞յ որ էսինչ մեթոդը (երկար երկար անունով) օգտագործել ա»։ զի իրան գործի տեղում ասել են՝ սա գրի, էս գրադարանով, նա էլ փորձում ա համայնքից օգնութիւն գտնել։ բայց դա հետաքրքրուած լինելու մասին չի՝ վզին դրած գործն անելու մասին ա։
ու ես ինձ դուր չեմ գալիս այնպիսին, ինչպիսին ինձ ընկալւում են։ ես պատկերացնում եմ ինչպէս են ինձ ընկալում ուսանողներս, պատկերացնում եմ, ինչպէս էք ընկալում դուք, ու պատկերացնում եմ ինչպէս են ընկալում տտ համայնքի շատ մարդիկ։
էդ չի սատարում իմ զարգացմանը։ մեկուսացումն էլ ելք չի։ ես մեկուսացողը չեմ։
ու չգիտեմ ինչի եմ էսքանը գրել՝ եկէք չմոռանանք որ բոլորն էլ մարդիկ են, ու ուզում են իրենց լաւ տարբերակը լինեն։ ու եթէ համայնք ենք, փորձենք իրար կեանքերը չբարդացնել, զի դու չես ուզում քեզ ատեն նրանք, ում հետ կապի մէջ ես։
հէհ, սա շատ բարդ ա՝ զի մարդիկ, որ գալիս են ապակենտրոն ցանցեր՝ յաճախ նրանք են, որ չունեն սոցիալական հմտութիւններ՝ մէկը ես։ ու ես շատ անգամ նկատել եմ ինչ բարդ ա, ահաւոր ջանք ա պահանջում օնլայն յարաբերութիւններ պահելը՝ յաճախ սխալ կը հասկանան, յաճախ կը վիրաւորուեն, ինչը իրական շփման մէջ չէր լինի։ նաեւ, հանրային շփումն ա շատ բարդ՝ ես դրա կողմնակիցն եմ, բայց մարդկանց բարդ ա՝ եթէ արտայայտել են մտահոգութիւն ինչ֊որ հարցի վերաբերեալ, ու ռադիկալ լուծում առաջարկեն՝ իսկ ռադիկալանում են չլսուած, ընդհատակի մարդիկ, իսկ հէնց էդ մարդիկ են փնտրում այլընտրանք եւ գտնում դաշնեզերքի հանգոյցներից մէկը, ու եթէ այդ ռադիկալացուած գրառմանը շատ զգոյշ արձագանքես ու ցոյց տաս, որ գուցէ դա չի լաւ լուծումը, ու գուցէ գտնենք այլ լաւ լուծում, ու գուցէ էդքան սուր պէտք չի ընկալել՝ ապա շատ հաւանական ա անրֆենդ, անֆոլոու, չհասկացուած լինելու զգացմունքից խորը ֆրուստրացիա։ ու դրան նպաստում ա հանրայինը։
իսկ չհասկացուածը բոլորս ենք, եւ իմ կարծիքն ա՝ որ պէտք չի համեմատուել՝ ով աւելի ուժեղ ա չհասկացուած, դրան չենք ի վերջոյ ձգտում, որ իրար մօտ պարծենանք, թէ ով ա աւելի շատ չհասկացուած։ ու … յոգնեցի էս տեքստից։ յուսամ այն ոչ մէկ, բացի ապագայում՝ մեքենաներից, չի կարդայ։ տեքնոլոգիայի անկատար լինելու պատճառով՝ մի մասը դիասպորա չի հասնելու։
իսկ հիմա ես պիտի շեղուեմ, գործ ունեմ։ կներէք, եթէ կարդացել էք սա, անկախ նրանից՝ մեքենայ էք, թէ մարդ։
մինչ։
#ընկալում #պասկալ #տեքնոլոգիաներ #տեք #ծրագրաւորում #էկրանահան #անկապ #պատմութիւն #հոսք ############
կիսուել էրիկ էնգհայմի երկու յօդուածով՝
Go Observations A Julia developer returns to Golang and is impressed by the simplicity and speed of the Go toolchain.
եւ
Is Go a Systems Programming Language? With automatic garbage collection, is Go really suitable as a systems programming language?
#ծրագրաւորում
կիսուեմ երկու վիդեօյով,
մէկը՝ https://www.youtube.com/watch?v=kV8v2GKC8WA արուեստագէտի մասին ա, որ այլընտրանքային հայելիներ ա պատրաստում։ դրա համար սովորել ա էլեկտրոնիկա ու ծրագրաւորում ա արդուինօ։
միւսը՝ յաջորդ գրառման մէջ։
#հայելի #ծրագրաւորում #արուեստ
պատմեմ ձեզ ինչ ահաւոր սխալ եմ արել վերջերս։
ուրեմն, մեծ ընկերութիւնները հակուած են պահել իրենց դատա֊սենթրները, ուր պիտի տարբեր խնդիրներ լուծեն՝ հովացման, սնուցման կայուն լինելու, նաեւ պիտի անձնակազմ ունենան, որ էդ ամէնի հետ կարողանայ աշխատել։ հաճոյքը թանկ ա, ու միտում կայ հնարաւորը տանել ամպեր, աութսորս անել, եւ գլխացաւանքից ազատուել։ սակայն ամէն֊ամէնը չի լինի տանել, բացի գաղտնիութիւնից կան նաեւ ֆիզիկայի եւ տարածութեան սահմանափակումներ՝ օրինակ mount արածդ հեռակայ դիսկի հետ չես ուզում դանդաղ աշխատել։
ինչեւէ, էդ մեծ սերուերնոցները պահելիս ժամանակ առ ժամանակ լինում ա որ պէտք ա դրանք անջատուեն։ լրիւ։ ու գործը կանգնի։ կարելի ա, իհարկէ, եւ առանց անջատուելու, բայց անհամեմատ աւելի թանկ ա որ նոյնիսկ այդ մեծ ընկերութիւններն իրենց թոյլ տալ չեն կարող։ իսկ անջատելը բովանդակալից ու ժամանակատար պրոցես ա, ու այդ մասին չեմ ուզում գրել, այլ իմ սխալի մասին։
սերուերնոցից դուրս կան մարդկանց workstation մեքենաներ, որոնց վրայ լինուքս ա եւ մասնագիտական ծրագրակազմ։ տան պանակը, ինչպէս եւ այլ գործ անելու պանակները՝ հեռակայ են, կպնում են աւտոմատ, ըստ անհրաժեշտութեան։ մո՞ւտք ես գործում օհ՝ քեզ տան պանակ ա պէտք՝ այդ պահին էլ օհ֊ն այն կը կպցնի հեռաւոր ռեսուրսից։
հիմա, եթէ դատա ցենտրը, եւ storage անջատելու հարց ա լինում՝ user workstation֊ները, մեծ հաւանականութեամբ, կախուած վիճակում են լինելու՝ nfs share֊եր չգտնելու պատճառով։ ու չի էլ լինի դրանք հեռավար վերամեկնարկել, զի դրանց վրայ reboot
մեծ մասամբ չի աշխատի։ օհը֊ կը փորձի անջատել սերուիսներ, բայց կան պրոցեսներ, որ հնարաւոր չի լինի անջատել՝ ըստ դիզայնի։
այդ պատճառով մտածեցի էս անգամ սէնց բան անել՝ սիրում եմ at
հրամանը։ կարող ես ասել՝ վաղը, էս ժամին, սէնց բան արա։ մտածեցի՝ պատրաստեմ վաղը, էս ժամին, երբ ենթակառուցուածքների ծառայութիւնները վերադարձուած լինեն՝ մեքենաները վերբեռնելու հրաման։
հարցն այն ա, որ ինչպէս ասացի՝ վերբեռելու սովորական հրամանը, որ համակարգի տարբեր ծառայութիւնները կանգնեցնում ա՝ դժուար աշխատէր մեքենաների մեծ մասի վրայ՝ համարեա գրեթէ անջատուած վիճակում էին մնալու։ ու ապա պէտք կը լինէր հատ հատ մօտենալ, ձեռքով վերբեռնել։
այդ պատճառով մտածեցի օգտագործել լինուքս միջուկի հնարաւորութիւնը՝ /proc ֊ն օգտագործելով ստիպել միջուկին անջատել եւ միացնել համակարգիչը, ինչպէս կանէիք «ռիսեթի» կոճակը սեղմելով։ էդ կոպտութիւնը մեղմելու համար նաեւ կարելի ա միջուկին նոյն միջոցներով ստիպել ֆայլային համակարգի բուֆերները նախապէս գրել, որ այդ ֆայլային համակարգը մինիմալ վնասուածքներ ստանայ, կամ չստանայ։
այսպէս, ես մտածեցի որ at֊ն կը կանչի էդ լինուքսի հնարաւորուիթւը՝ հարդուեր ռիսեթ անելու։
ինչ եղաւ իրականում՝ շատ բան չփոխեց, բայց աւելի հետաքրքիր դարձրեց եղածը՝ թիմից մէկը անտեղեակ լինելով իմ լուծման մասին, որոշեց անջատել բոլոր workstation֊ները ձեռքով։ քայլեց, բոլորը֊բոլորը գտաւ եւ անջատեց։ մինչեւ սերուերնոց անջատելը։ ու պատրաստւում էր յետոյ հատ հատ միացնել։
իսկ միացրեց աւելի ուշ, քան իմ at֊ին ասած ժամանակն էր։ ես ենթադրել էի, որ at֊ն ստարտ լինի, կը մտածի՝ լաւ, ժամն անցել ա, երեւի էլ չանեմ, էն ժամին պիտի անէի։
բայց պարզուեց, մեքենաների ուղիղ կէսը (հետաքրքիր ա, որ էդպէս եղաւ բաշխումը), ընկան ռեբութ լուփի մէջ։ միանում էին, միանում էր at դեմոնը, at֊ն տեսնում էր որ քանի ժամ առաջ թասկ ունի դրուած, ու այն դե՛ռ չի կատարուել, պանիկո՛ւմ էր, ու սկսում էր շտապ էդ թասքը կատարել։
իսկ թասքը՝ իմ մեղքի մասը՝ կտրուկ թասք ա՝ անջատում էր կարգիչն աւելի արագ, քան at֊ն հասցնում էր իր մատեանում գրել, որ գործն արուած ա։ յաջորդ անգամ միանում էր՝ տեսնում էր՝ ուշ ա, ժամը ժաիցմ անցել ա, իսկ գործն արուած չի՝ պանիկած էլի ընկնում էր կատարելուն՝ իսկ կատարելով չէր հասցնում նշել որպէս կատարուած։ (:
էսպէս, անասելու տառապել եմ 80 մեքենայի մօտենալով, եւ at֊ի հերթը մաքրելով։ հիւանդ գլխից, ինչպէս ասում են ռուսները՝ ոտքերն են ցաւում։ ինձ մօտ այդ ամէնից ոտքերը չցաւեցին, բայց գլուխը ցաւաց։
ինչպէս գիտենք, ճգնաժամային վիճակներում ամէնն ա աւելի բարդանում։ օրինակ՝ համավարակի պարագայում։
ու յիշեցի, որ նախկինում էլ ես կամ ինչ֊որ մէկը սխալներ անում էինք, ու տաս տարուայ մէջ մի երկու անգամ յիշում եմ, որ պէտք էր եղել բոլոր workstation֊ներին մօտենալ, մի երկու տող բան գրել։ ու դա ինձ նախկինում թւում էր շաաատ բարդ։
իսկ էսօր՝ գրեթէ ոչ մի մեքենայի մոնիտոր միացուած չէր։ ընդհանրապէս, գործի տեղը բաւական հետապոկալիպտիկ տպաւորութիւն էր թողնում։ մարդիկ կտրուկ վերցրել են մոնիտորները, ու թողելով ամէնը, ոնց կայ՝ հեռացել։ սեղաններին կային մարտ ցոյց տուող օրացոյցներ։ սեղաններին եւ լքուած ստեղնաշարերին փոշի էր նստել։ իսկ երբ դու չունես մոնիտոր՝ դա էն չի, որ մօտենում ես կարգչին, նստում բազկաթոռի մէջ, խելացի տեսքով գրում երկու հրաման, կարգիչը սկսում ա աշխատել, եւ շուրջդ ծապահարութիւններ են՝ փրկեցիր մարդկանց եւ վայելում ես փառքը։
չէ, մոնիտոր չկայ, եւ օգտատէր չկայ՝ քարշ տաս մոնիտորը հետդ, մի հատ էլ ստեղնաշար, եւ լարեր՝ այդ մոնիտորը միացնելու համար։ նաեւ տարբեր կարգիչներ ունեն տարբեր ձեւի վիդեօ քարտերի ելքեր՝ հետեւաբար՝ նաեւ մի քանի լար։ յետոյ մտնել սեղանի տակ, նայել ինչ ելքեր են, փոխել մոնիտորի լարը, միացնել այն, յետոյ անել գործդ, անջատել, անցնել յաջորդին։ առանց ծափահարութիւնների։
այդ ամէնը, ի դէպ, մի ուիք֊էնդ, որը… էս բարդ տարին ընկերութիւնը որոշեց մեղմել իր աշխատողներին պարգեւելով ազատ մի օր։ եւ փաստացի՝ լոնգ ուիքէնդ։ իսկ թարսի պէս, հէնց այդ գործը, մինչեւ նուիրատւութիւնն արդէն նախատեսուել էր անց կացնել հէնց այդ ուրբաթ օրուանից սկսած։ այսպիսով, երբ ողջ անձնակազմը ոչ միայն տանն էր, այլեւ վայելում էր երկար ուիքէնդ, երբ ընկերներս հաւաքուեցին դարգէթում պուտին ուտելու (դէ we bare bears֊ն եմ բացայայտել, իսկ էնտեղից իմացել կանադական պուտին ուտելիքի մասին, նաեւ կարճ հետազօտութիւնը բացայայտել ա որ այն կարելի ա պատուիրել դարգէթում), ես անց եմ կացրել փոշոտ սեղանների տակ։
իհարկէ, իմ խելքից։ բայց եւ նման սխալներ գրեթէ անխուսափելի են մեր գործում։ իսկ երբ երեւակում ես ժապաւէն՝ երբեմն կը սխալուես։ իսկ երբ կոդ ես գրում՝ երբեմն կը պայթեցնես։ կարճ ասած, ահա ձեզ իմ սխալը, որ իմանաք, ինչ ձեւ սխալներից կարելի ա խուսափել։
#սխալ #իւնիքս #ծրագրաւորում #տեքնոլոգիաներ #օպերացիոն_համակարգեր #պատմութիւն #անկապ
իւնիքս պրոցեսները ունենում են վիճակ։ օրինակ, կարող են լինել կանգնեցուած, կամ տուեալ պահին գործող։ կարող են լինել վրիպազէրծուող։
իսկ կարող են ունենալ պրոցեսների աղիւսակի մէջ որպէս D
նշուած վիճակ, որի մասին ձեռնարկում ասւում ա՝ uninterraptible I/O wait
։
ու uninterraptible ա այն բառացիօրէն՝ այն չի լինում ընդհատել։
հարցն այն ա, որ պրոցեսը՝ որը ծրագիր ա կատարման ընթացքում, անում ա տարբեր գործողութիւններ՝ օրինակ ինչ֊որ տուեալներ ա ստանում եւ մշակում։ մշակելու ալգորիթմը ձեւակերպում ա ծրագրաւորողը, իսկ ինչպէ՞ս ա տուեալներ ստանում՝ օրինակ դիսկից, կամ համացանցից։
դիսկից կամ համացանցից կարդալ ամէն ծրագիրը չպիտի կարողանայ՝ էդ օհ֊ի պարտականութիւնն ա՝ դիսկից մի բան կարդալ ու տալ ծրագրին։
այդ պատճառով ծրագիրը կանչում ա, դիցուք read() օհ֊ի API֊ի կանչ, ու երբ այն կանչում ա այդ ֆունկցիան, բնական ա, պիտի սպասի, մինչեւ օհ֊ը կարդայ, դիցուք մի բայթ, դիսկի որեւէ ֆայլից, ու տայ ծրագրին։ այս պահին արդէն ծրագիրը գործ չի անում՝ անում ա գործ կերնելը՝ միջուկը։
զի ժամանակակից օպերացիոն համակարգերը պետութեան կամ լուրջ կազմակերպութեան պէս են՝ ծրագիրը չի կարող ցանկացած ռեսուրսի դիմել, ինչպէս ընկերութեան աշխատողը չի կարող տեսնել HR֊ի կամ հաշուապահութեան տուեալները, իսկ ոստիկանութեան աշխատողը չի կարող առանց հատուկ հայցի դիմել փողոցային խցիկներից տուեալներ ստանալու համար։
այսպէս, DOS֊ի ծրագիրը փաստացի կարող էր օգտագործել համակարգի բոլոր հնարաւոր ռեսուրսները։ դա ծրագրին սովորաբար сходило с рук/it could get away with it հաջողւում էր առանց շատ խնդիրների, շնորհիւ նրա, որ այն միակ կատարուող ծրագիրն էր։
աւելի բեթար բարդ վիճակ էր windows95֊ոտ համակարգերում, ուր եւ ակտուալ էին BSOD֊ն ու viral դարձան վիրուսները։
բայց եւ աւելի հին, Unix համակարգերում, նման հարցերը վաղուց ինչ֊որ ձեւ լուծուած էին եւ էդ լուծումները դարձան մէյնսթրիմ այսօր (այլ հարց ա որ դրանք լուծելու այլ ժամանակակից տեսակէտներ կան)։
էսօր սովորական լուծումն այն ա, որ ծրագիրը չի կարող օգտագործել որեւէ ռեսուրս առանց օհ֊ի թոյլտւութեան, զի բոլոր ռեսուրսները՝ ֆայլերը, յիշողութիւնը, նկարչութիւնը (վիդեօ յիշողութիւնը), ցանցը՝ տրամադրում ա միջուկը, հաւանութիւն տալով ծրագրի հայտին, կամ մերժում ա, չի տրամադրում՝ համարելով որ այդ պրոցեսը (որն աշխատում այդ օգտատիրոջ անունից) չի կարող դիմել ռեսուրսի համար, կամ որ աւել ռեսուրս իրան չի հասնում՝ չափազանց շատ ա արդէն օգտագործել, եւ այլն։
այսպէս, նիշքից կարդալու համար, նախ պէտք ա օհ֊ին խնդրել այդ նիշքը տրամադրել, իսկ երբ այն թոյլ տայ՝ օկ, բացիր նիշքը, պիտի ամէն անգամ խնդրես օհ֊ին որ կարդայ, ու քեզ ասի ինչ ա մէջը գրուած։ ինքնուրոյն քիթդ խոթել դրա մէջ չես կարող՝ ամէնն արւում ա օհ֊ի միջոցով։
(windows֊ի աշխարհում դա սկսուեց windows nt֊ից, որն աւելի մասնագիտական, ոչ մէյնսթրիմ մայքրոսոֆթի օհ էր։։ իննսունականներին nt օգտագործող ծրագրաւորողները հպարտանում էին որ իրենց կարգիչներն անհամեմատ աւելի անխոցելի էին զանազան վիրուսների հանդէպ, իսկ windows 2000֊ից նոյն մօտեցումը կիրառուեց աւելի մէյնսթրիմ՝ ոչ միայն մասնագէտների համար։ իսկապէս, win{95,98} ընտանիքի օհ֊ի համար վիրուս գրելն առանձնապէս բարդ չէր՝ արա ինչ ուզում ես, ոչ ոք ձեռքերիդ չի խփի։ nt ընտանիքի օհ֊երի համար վիրուս գրելն արդէն էդքան տրիւիալ գործ չէր, բայց ինչպէս տեսնում ենք մինչ այսօր՝ լրիւ իրատեսական։)
հիմա հասանք այն պահին, որ խնդրում ենք օհ֊ից կարդալ բայթ՝ նիշքից։ ասացինք՝ read(), մեր ծրագիրն էս պահին այլեւս սպասում ա։ եթէ սպասելը երկար ա՝ դուք դա նկատում էք՝ ինտերֆէյսը սառում ա, երբ ծրագրաւորողը multithreaded ձեւով չի գրում։ սկսում էք կտացնել տարբեր տեղեր, եւ գիտէք, ձեր կտոցները պահւում են հատուկ բուֆերի մէջ, որը կոչւում ա message queue, որ յետոյ, երբ ծրագիրն վերսկսի աշխատանքը, էդ ձեր message֊ները պրոցես անի։
արեցինք read() ու այս պահին արդէն գնդակը միջուկի դաշտում ա, պիտի սպասենք մինչեւ մի բան վերադարձնի։ իսկ ի՞նչ անի էդ խեղճ միջուկը, եթէ էս պահին ֆայլը հասանելի չի՝ օրինակ դիսկն ա վատացել, ու չի պատասխանում, կամ դիսկը հեռավար ա, ու կապն ա անջատուել, եւ նիշքը չի երեւում։ կամ ցանցային այլ ռեսուրսից ենք օգտւում, ինտերնետ սոքեթից ենք բան կարդում։
էս էն պահն ա, երբ պրոցեսն ընդունում ա uninterraptible I/O wait կարգավիճակ։ ինչի՞ ա uninterraptible՝ հարցն այն ա, որ էդ պրոցեսը սպանել չի լինի, զի միջուկի ներսի կարդացող պրոցեսը, ըստ միջուկի ծրագրաւորողների սպանել չի կարելի։ այդ դէպքում՝ միջուկի պրոցեսի ընդհատումը կը բերի միջուկի յիշողութեան անկանխատեսելի վիճակին, որը կարող ա բերել ընդհանուր օպերացիոն համակարգի անկանխատեսելի վիճակին։ եւ միջուկի նախագծողները համարեցին (բնականաբար) որ աւելի լաւ ա թոյլ չտալ որոշ պրոցեսներ ընդհատել, կամ այդ ընդհատումը կարող ա բերել այն աղէտալի վիճակի, որ աւելի լաւ ա մարդը, եթէ իրան իսկապէս պէտք ա՝ կոճակը սեղմելով կարգիչը վերամեկնարկի։
ինչի՞ կոճակը սեղմելով՝ զի միջուկը ինքը չի կարող ազատուել, հիմնականում, այդ իր միջի չարաբաստիկ պրոցեսից՝ զի միջուկը չի կարող շարունակել նորմալ աշխատանք եթէ ընթերցող պրոցեսն ընդհատի։
հետեւաբար նման համակարգ չի էլ լինի հրամանով(shutdown, poweroff, halt) անջատել։
իրականում ֆուտբոլը կարող ա իսկապէս լինել լաւ մետաֆորա՝ պատկերացրէք, գնդակը միջուկի՝ այլ թիմի խաղացողների մօտ ա։ պիտի հետը մի բան անեն, նոր տշեն քեզ հետ։ եթէ ընդհատես սպասելդ, ասես՝ չէ, գնդակը պիտի հէնց հիմա յայտնուի ինձ մօտ, ապա էն խաղացողները, որ գնդակ էին տշում, կարող ա իրար խփեն, ընկնեն, վնասուեն՝ անկանխատեսելի ձեւով։ եւ տէնց վնասուած օհ ունենալ աւելի վտանգաւոր ա, քան կախած պրոցես։ այլընտրանքը՝ ձեռքով կոճակ սեղմելն՝ աւելի անվտանգ ա։
ծրագրաւորման ու տտ աշխարհի հետ, իրականում շատ լաւ բռնում են իրական կեանքի, կամ գրքերի սցենարները։ պատկերացրէք, գիքորը բերում ա սամովարը դնի տիրոջ սեղանին, զի պիտի սցենարով առաջնորդուի, բայց պարզւում ա՝ սեղան չկայ, սամովարի միջի տաք ջուրը թափւում ա՝ բոլորն այրուածքներ են ստանում։ ահա ձեզ զուգահեռ ծրագրաւորման օրինակ։
դէ մինչ։
#ծրագրաւորում #տեքնոլոգիաներ #գիքոր #սամովար #զուգահեռութիւն #միջուկ #կերնել #իւնիքս #օպերացիոն_համակարգեր #օհ #ծրագրակազմ
https://www.youtube.com/watch?v=FyCYva9DhsI
#ծրագրաւորում
այլ խօսքերով՝ եթէ համակարգում պտտւում են անորոշ քանակի խնդիրներ, դժուար թէ ստացուի ապահովել համակարգի բոլոր գործառոյթների կատարման որոշակիութիւնը։ այդ պատճառով համակարգի կանխատեսելիութիւնը բարձրացնելու ամենապարզ լուծումն ա՝ դրա ֆունկցիոնալի սահմանափակումը։
#տեքնոլոգիաներ #դիզայն #օպերացիոն_համակարգեր #նախագծում #ռուսերէն #որոշակիութիւն #ծրագրաւորում
շատ երկար ա rust֊ը քոմփայլ լինում մի թրեդով, իսկ ֆֆ֊ի թարմացումը իր հետ ռասթի թարմացում ա պահանջում։
մի թրեդով եմ անում որ ուրիշ գործեր անեմ կողքից, ու կարգիչը շատ չտանջուի։
ու մտածում եմ՝ էսա ֆֆ֊ն չլինի, ի՞նչ եմ անելու։
գտնելու եմ ինչ֊որ շատ թեթեւ բան՝ midori֊ի պէս, ու դէ այն կայքերի մեծ մասը չի բացի, դէ ես էլ չեմ մտնի էդ կայքերը։
երեւի տէնց։
առհասարակ, դա վատ մօտեցում չի։
ես ջս չեմ սիրում, ու ատում եմ երբ տաքանում են կարգիչները, ֆաներն են պտտում, ինչ ա թէ վեբ էջ են բացել։ ահաւոր հզօր կարգիչներ ունենք՝ ու վատնում են իրենց հզօրութիւնը էդ ձեւ ինտերպրետացուող կոդի վրայ։ էնպէս չի որ դանդաղ են կամ դանդաղում են։ վատ ա ամէնը։ ահաւոր։
ու տէնց։
#ոստայն #սարդոստայն #համացանց #ծրագրաւորման_լեզուներ #ծրագրաւորում #տեքնոլոգիաներ #կարիգչ #դիտարկիչ #զննիչ #ֆայրֆոքս #ինտերնետ
հաւէս յօդուած ա սա շատ՝ https://www.joelonsoftware.com/2001/12/11/back-to-basics/
իսկ օբերոնում վիրտը որոշել ա հրաժարուել պասկալական տողերից, ու կիրառել զրօյով աւարտուող տողեր։
սակայն, էդ տողերով կարիք չկայ միշտ վազել չափն իմանալու համար։ առանձին դաշտ էլ պէտք չի օգտագործել ու յիշողութեան մէջ մի տեղ պահել չափսը՝ քոմփայլերը գիտի տողի երկարութիւնը։
ու քոմփայլ թայմ թեստ կարող ա անել։ դիցուք վերցնենք էս ելատեքստը՝
MODULE tst;
IMPORT Out;
VAR i: SHORTINT;
str: ARRAY 1024 OF CHAR;
BEGIN
FOR i := 0 TO LEN(str) DO
Out.Int(i, 0); Out.Ln
END;
END tst.
այն քոմփայլ չի լինի՝
[2020-09-02 16:00:20] $ voc -m tst.Mod
tst.Mod Compiling tst.
9: FOR i := 0 TO LEN(str) DO
^
pos 102 err 113 incompatible assignment
Module compilation failed.
[2020-09-02 16:00:21] $
voc֊ը որ դէպի C ա թարգմանում սորսը, շատ լաւ ա պատկերելու համար։ եթէ մենք ունենք՝
str: ARRAY 16 OF CHAR;
ապա ելքային C կոդը կը լինի՝
static CHAR tst_str[16];
միայն դա։
իսկ
FOR i := 0 TO LEN(str) DO
կը թարգմանուի որպէս՝
tst_i = 0;
while (tst_i <= 16) {
Երբ մենք գրում ենք տողի հետ աշխատող ֆունկցիա, մենք կարող ենք չիմանալ փոխանցուող տողի երկարութիւնը՝
MODULE tst2;
PROCEDURE addStrs(VAR a, b: ARRAY OF CHAR);
BEGIN
(* do smth useful here *)
END addStrs;
PROCEDURE test*;
VAR
s0: ARRAY 32 OF CHAR;
s1: ARRAY 64 OF CHAR;
BEGIN
addStrs(s0, s1);
END test;
END tst2.
եւ ապա սի կոդը կը լինի՝
static void tst2_addStrs (CHAR *a, ADDRESS a__len, CHAR *b, ADDRESS b__len)
{
/* here we think we can do smth useful */
}
void tst2_test (void)
{
CHAR s0[32];
CHAR s1[64];
tst2_addStrs((void*)s0, 32, (void*)s1, 64);
}
այսինքն՝ ֆունկցիան ստանում ա նաեւ տողի երկարութիւնը։ ու եթէ անել LEN(a)
անմիջապէս՝ առանց ոչ մի հաշուարկ՝ ստանում ես տողի երկարութիւնը։
ապա ինչպէ՞ս են աշխատում դինամիկ տողերը։
MODULE tst3;
PROCEDURE addStrs(VAR a, b: ARRAY OF CHAR);
BEGIN
(* do smth useful here *)
END addStrs;
PROCEDURE test*(i: INTEGER);
VAR
s: ARRAY 32 OF CHAR;
ps: POINTER TO ARRAY OF CHAR;
BEGIN
NEW(ps, i);
addStrs(s, ps^);
END test;
END tst3.
ունենք մի հատ ստատիկ տող՝ s
ու մի հատ դինամիկ տողի ցուցիչ՝ ps
։
ps
֊ի չափսը կը ստանանք որպէս ֆունկցիայի արգումենտ՝ էս պահին մեզ անյայտ ա։
առաջին ֆունկցիան մնում ա անփոփոխ, երկրորդը թարգմանւում ա սէնց՝
static void tst3_addStrs (CHAR *a, ADDRESS a__len, CHAR *b, ADDRESS b__len)
{
/* do smth useful here */
}
void tst3_test (INT16 i)
{
CHAR s[32];
struct {
ADDRESS len[1];
CHAR data[1];
} *ps = NIL;
ps = __NEWARR(NIL, 1, 1, 1, 1, ((ADDRESS)(i)));
tst3_addStrs((void*)s, 32, (void*)ps->data, ps->len[0]);
}
_NEWARR
֊ն արդէն մի քիչ բարդ ֆունկցիա ա, որը ռանթայմի մաս ա։
բայց ընդհանուր առմամբ պարզ ա ինչ ա անում՝ հիփ֊ի մէջ ալոքէյթ ա անելու տող, եւ մեր ստացած ցուցիչն արդէն struct֊ի ա, որն ունի data դաշտ եւ len դաշտ։
սա ռանթայմ տեղեկատւութիւն ա, ու այս դէպքում արդէն մեզ պէտք ա պահել առանձին դաշտ տողի երկարութեան համար։
ու տէնց։
#օբերոն #ծրագրաւորում #տող #տողեր #պասկալ #սի #վիշապ #իրականացում #կազմարկում #կոմպիլյատոր #կոմպիլեատոր #կազմարկիչ
torchat֊ը առաջ գրուած էր փայթընով, իսկ հիմա արտագրել են պասկալով՝
https://github.com/prof7bit/TorChat/tree/torchat2/src/core
#չաթ #փայթըն #պասկալ #ծրագրաւորում
մտածում եմ, որ իւնիքսները գուցէ չեն հասցրել ուինդոուսի պէս խառը ու վատ դիզայն ունենալ, հէնց էն պատճառով, որ դանդաղ էին զարգանում։ իսկ հիմա լինուքսի դեսքթոփը, սիսթեմդի, վէյլանդ, պուլսաուդիօ, էնքան արագ են զարգանում ու երբեմն ոչ մտացուած քայլեր անում, կամ քայլեր անում, որ շատերը կը զգուշանային անել, ինչի պատճառով մարդիկ բնութագրում են վիճակը որպէս «լինուքսը ուինդոուս ա դառնում», ու փախնում էն համակարգեր, ուր տէնց արագ զարգացումներ չեն արձանագրուում։
#նախագծում #իւնիքս #ուինդոուս #ծրագրաւորում #օպերացիոն_համակարգեր #դիզայն
@{ssinanyan@spyurk.am; ssinanyan@spyurk.am}, @{karp@spyurk.am; karp@spyurk.am}, սէնց մի քանի տեղ պատճէնած փակցրած ֆունկցիայի մասին դուք էիք պատմում։
#ծրագրաւորում
մարդիկ ունեն մի շատ կարեւոր սահմանափակ ռեսուրս՝ ժամանակ։ ու իթ աւելի լաւ ա ծրագիրն արագ աշխատի, ու կարգչից օգտուելը լինի կոմֆորտ (ու կարգիչը կարող ա ապա մի հինգ անգամ աւելի թոյլ լինել, եթէ ջս չի քշում), քան դեբիլ դեւը արագ մի բան թքի կպցնի իրար, ու յետոյ էդ ամէնը ճռռալով աշխատի ու կարգիչների ֆաները հա փչեն։
իմ ռանթից [այս թելում] (։
#տեքնոլոգիաներ #կարգիչ #ծրագրաւորում
դէ զգացողութիւն ունեմ, որ շատ յաճախ «էնտերպրայս», «կորպորատիւ» ծրագրակազմը՝ դախ ա։ ու դէ էնտեղ աշխատող մարդիկ են դախ։
բայց եւ տեսնում եմ որ շատ հաւէս ու կիրառելի ծրագրակազմ կայ, որը կորպորացիաների կողմից ա նախագծած, ու ազատ ա։
ու մտածում եմ՝ ինչ հետաքրքիր ա, կարող ա ազատութիւնը տէնց քաղաքակրթող, սանրող, բարելաւող ազդեցութիւն ունի ծրագրակազմի վրայ։ ու դէ նաեւ բարոյականացնող, զի երբ ազատ ա, արդէն աւելի քիչ հաւանական ա որ տհաճ բաներ անի, ուր օգտատէրը չի վերայսկող, այլ ինքը՝ ծրագրակազմը եւ իր ետեւում կանգնած ընկերութիւնը։
#ազատ_ծա #ծրագրակազմ #ծրագրաւորում #տեքնոլոգիաներ #ազատութիւն
որ ասում են՝ կարո՞ղ ա վիրտուալ իրականութեան մէջ ենք ապրում՝ մտածում եմ՝ դէ նայած որը սահմանենք կարծական, կամ իրական։
օրինակ, այսօր մենք գիտենք որ ամենատակի շերտում ունենք դաշտեր։
մասնիկներն արդէն՝ այլ աբստրակցիայի շերտում են։
մենք ապրում ենք լրիւ այլ շերտում՝ ոնց որ qt֊ով գրած միջավայր, որից լիքը լէյերներ կան մինչեւ մեքենայական կոդ ու թուանշային դիզայն։
ու դէ մեզ համար սա իրական եւ կարեւոր ա՝ նոյն ձեւ, ինչպէս մարիօյի համար իր աշխարհն ա իրական՝ պիքսելէյթդ եւ երկչափանի, բայց միեւնոյն ա՝ կարեւոր, եւ իր աշխարհի շրջանակներում եթէ կպնի վնասող էակներին, կամ ընկնի փոսի մէջ՝ կը մեռնի։ ու դէ ունի էնքան կեանք։
իսկ մեր աբստրակցիայի շերտում՝ մեզ պէտք ա օրինակ տուն, որը հա, էլի դաշտեր են, բայց դէ էդ չի նշանակում որ պէտք չի։ ու եթէ ինչ֊որ գիշատիչ գայ ոտքդ բռնի՝ չես ասի՝ դաշտեր են՝ աւելի լաւ ա չբռնի։ զի մեր վերացարկման շերտում ա։
#իրականութիւն #դաշտեր #աբստրակցիա #վերացարկում #կեանք #տիեզերք #աշխարհ #ծրագրաւորում
ուրեմն լապշինը իր ֆբ֊ում գրել ա թէ՝
- В 2019 году в Италии скончались 579 тысяч человек, то есть при населении в 60 миллионов это 1586 человек в сутки.
20019 թուին իտալիայում մահացել է 579 հազար մարդ՝ 1586 օրը։
- В 2020 году в Италии в разгар коронавируса скончались 127 тысяч человек, что соответствует 1588 человек в сутки.
2020 թուին՝ կորոնավիրուսի բռնկման ժամանակ իտալիայում մահացել է 127 հազար մարդ՝ 1588 օրը։
Иными словами, в прошлом году без всякого коронавируса в Италии умирало столько же людей, сколько и при пандемии коронавируса в 2020. Но год назад все было нормально и никто не считал это катастрофой.
У вас есть этому обьяснение?
այլ խօսքերով անցեալ տարի եւ առանց կորոնավիրուսի իտալիայում մահանում էր նոյն քանակի մարդ ինչ 2020֊ի համավարակի ժամանակ, բայց դա նորմալ էր եւ ոչ ոք դա աղէտ չէր համարել։
ունէ՞ք բացատրութիւն։
այո, ունենք։ նա տիպերի սխալ ա անում՝
VAR d0 : deaths2019;
d1 : deathsFromCovid2020;
b : BOOLEAN;
...
b := d1 > d0;
եթէ կալմարկենք կը ստացուի՝
pos 123 err 100 incompatible operands of dyadic operator
նա համեմատում ա անցեալ տարուայ ընդհանուր մահերի թիւն այս տարուայ միայն կորոնավիրուսի հետեւանքով մահերի թուի հետ։ այս տարուայ ընդհանուր մահերի թիւն աւելի մեծ ա։
բնօրինակ գրառումը չեմ տեսել եւ դրա յղումը խնդրել եմ, բայց կարողացայ ստնալ միայն բովանդակութեան պատճէնը։
#կորոնավիրուս #լապշին #իտալիա #ծրագրաւորում #համաճարակ #համավարակ
այ միկան գրում ա ուժեղ տիպաւորուած լեզուների մասին։
եթէ ունենք ֆունկցիա
PROCEDURE smth(d: dog);
BEGIN
d.bark();
END smth;
ու d֊ն իրականում շուն կամ դրա ժառանգը չեղաւ, ապա էդ ծրագիրը պայթելու ա։ ու օբերոնը որպէս ուժեղ տիպաւորուած լեզու այդ ստուգումը անում ա։ դինամիկ լեզւում ինքդ պիտի մտածես՝ կը պայթի թէ չէ՝ ու քո վրայ լոադն աւելի շատ ա։ զի նէնց չի որ դինամիկ լեզւում չի պայթի։ էլի պայթելու ա։
հիմա մտածում եմ, մենք էլ ենք իրականում փորձում մեր կեանքերը չպայթեցնել։ ու զարգանալով դառնում ենք աւելի ուժեղ տիպաւորուած։ ինքներս մեզ ենք աւելի լաւ հասկանում, ու ձեռք ենք բերում ուրիշներին աւելի լաւ հասկանալու ունակութիւն։
եւ ապա չենք թողնում մեր ֆունկցիան ընդունի մի բան, որը պայթիւն ա առաջացնելու։
այնպէս որ զգօն եղէք դինամիկ լեզուներից օգտուելիս, կամ այլ մարդկանց նոյնականացնելիս։
#ծրագրաւորում #յարաբերութիւններ #զգօն #մարդիկ
ես ասում եմ, որ օբերոնով գրուած ծրագիրը (եթէ SYSTEM օգտագործուած չի) ունի միայն երեք պայթելու ձեւ։
երէկ rust֊ի մասին էի նիւթեր կարդում։ մի ձեւ ասին ծրագիր սպանելու, որ սի֊ում աշխատում ա, ռաստ֊ում չի աշխատի։ դա սթեքի մէջ օբյեկտ ստեղծելն ա, ու յետոյ դրա փոյնթերը վերադարձնելն ա որպէս ֆունկցիայի արդիւնք։ բնական ա, որ սթեքը կը մաքրուի, ու այն ցոյց ա տալու ոչ էն բանի վրայ, ինչի վրայ նախատեսուած ա։
ու ապա մտածեցի՝ իսկ օբերոնում ո՞նց կը լինի։ սկսեցի գրել, ու մտքովս անցաւ՝ բայց չէ՞ որ օբերոնում հէնց NEW անեմ՝ հիփ֊ում ա օբյեկտ ստեղծուելու։ ու ապա էլ էդ խնդիրը չի լինի։ յետոյ մտքովս անցաւ, որ ախր՝ կարող եմ չէ՞ սթեքին ցոյց տուող փոյնթեր սարքել այսպէս՝
MODULE test;
IMPORT Out;
TYPE
arr = ARRAY 16 OF CHAR;
string = POINTER TO arr;
PROCEDURE str(): string;
VAR
a: arr;
s: string;
BEGIN
a := "aaa";
s^ := a;
RETURN s;
END str;
PROCEDURE main;
VAR st: string;
BEGIN
st := str();
Out.String(st^); Out.Ln;
END main;
BEGIN
main;
END test.
ահա այս ծրագիրը պայթելու ա։ բնականաբար։ բայց մտածում եմ, լրիւ կարելի ա դա քոմփայլ թայմ բռնել ու մարդուն գոնէ զգուշացնել, եթէ ոչ՝ սխալով դուրս թռնել կազմարկելու ընթացքում։
#ծրագրաւորում #օբերոն #rust #տեքնոլոգիա #դիզայն #նախագծում #լեզու
կօաֆում էինք, խոհարարի հետ էինք զրուցում, ու՝ «իսկ խմելո՞ւ» հարցին պատասխանեցինք որ չենք ուզում։ յետոյ յայտնուեց այլ մարդ, որ բերեց եւ սեղանին տեղաւորեց ափսէներն ու բաժակները։
— տեսնես ինչի՞ ա բաժակները բերել։ — որովհետեւ էդպէս ա իր ծրագիրը գրուած։ արի ես պատմեմ քեզ ծրագրաւորումից՝ իրենք որոշել են (գուցէ այդպէս էֆեկտի՞ւ ա՝ գալուց մի անգամից բաժակներն էլ բերել) այդ ստուգումը չանել։ եթէ խմելիք ա պահանջուած, ապա կը յայտնուի մի այլ մարդ, որ կը բերի կուժ ու կը լցնի հեղուկ մեր բաժակների մէջ։ եթէ բաժակները չկան՝ ապա… — կը թափուի սեղանի՞ն։ — ապա այս պահին ծրագիրը կը պայթի։
#ծրագրաւորում #զրոյց
mutex սիսթեմ քոլը շատ ծանր գործողութիւն ա։ այսօր (բաւական վաղո՞ւց) թրենդ ա մուտէքսի օգտագործումից խուսափել։ աւելի լաւ ա, չնայած տգեղ կարող ա թուալ, սպասող թելում while լուփ անել, ստուգելով ատոմիկ փոփոխական, քան դիմել մուտէքս մեքանիզմին։
երբ լինեն գոնէ քաղաքի հատուածներ, ուր միայն ինքնավար մեքենաներ են լինելու, լուսակիրների կարիք այնտեղ չի լինի։ այս սիմուլեացիան ցոյց ա տալիս ինչ էֆեկտիւ ա լինելու մեքենաների շարժումը խաչմերուկում։
որովհետեւ այսօր մենք ունենք մուտէքս՝ հէնց այս լուսակիրներով համակարգը, երբ մի հոսքը սպասում ա միւսի։ յետոյ միւս հոսքը դանդաղ արթնանում ա, ոմանք նոյնիսկ բենզին խնայելու համար հանգցնում են մեքենան խաչմերուկներում կարմիրի տակ ու պիտի «խոդ» տան, հայերն էլ ընթացքում իրար սիգնալ են տալիս, զի անհամբեր են, բայց այլ ձեւ չկայ՝ հոսքի արթնանալը երկար ա եւ ծախսատար՝ վառելիք էլ ա քաղաքում այդ պատճառով աւելի շատ ծախսւում, քան մայրուղու վրայ։
ինքնավար մեքենաները կարող են անել այդ աւելի ժամանակակից՝ ատոմիկ փոփոխականով լուփը, ու էդպէս անհամեմատ արդիւնաւէտ ա ծրագիրն աշխատում։
եթէ, իհարկէ, դիտարկենք shared memory մոդելը, որն էսօր մէյնսթրիմ ա ու համարեա գրեթէ ամենուր։
#ծրագրաւորում #տտ #տեքնոլոգիաներ #տեքնոլոգիա #դիզայն #նախագծում #քաղաք
շատ լաւ թել ա՝ https://softwareengineering.stackexchange.com/questions/246762/is-there-a-real-advantage-to-dynamic-languages
#ծրագրաւորում #մօտեցում #ծրագրաւորման_լեզուներ #տեքնոլոգիա
ֆունկցիոնալը մկանների պէս ա։ հէնց ունեցար, մենթէյն անելու վրայ ռեսուրս պիտի ծախսես։
այնպէս որ զգօն եղէք ֆիչըրներ ֆունկցիոնալ աւելացնելիս։
#մետաբոլիզմ #ծրագրաւորում #դիզայն #մետաբոլիզմ #նախագծում
գիտէ՞ք էն որ նիկոլին նամակ հասաւ, ոնց կանադահայերի ընտանիք չի կարողանում էստեղ քաղաքացիութիւն ստանայ։
ես կարծում եմ, որ նախ էդ ինտերֆէյսների եւ էյփիայների մասին ա։ եթէ մեզ մօտ քիչ թէ շատ ինտերֆէյսները սահմանուած են, ու մի ձեւ աշխատում են, կարող ա մի ֆունկցիայի կանչ երկար տեւի, զի մի տաս տեղ պիտի գնայ գայ, բայց մի ձեւ աշխատում ա։
իսկ այ երբ հարց ա լինում կանադային կանչ անել, իսկ իրենք էդ ֆունկցիան կամ մեթոդը չունեն, ապա ստեղ կախում ա։ ու տէնց կախած մնացել էր, մինչեւ վարչապետին նամակը չհասաւ։
դէ հիմա հասաւ, որտեղ նաեւ գրուած էր, թէ էսինչ պաշտօնեան մեզ ասել ա՝ հո դուք չէք գժուել, ինչի՞ էք գալիս հայաստան, բան, ու նիկոլն էլ ցնդել էր, ասում էր՝ գտէք էդ պաշտօնեային, տեսնենք էդ ով ա տէնց բաներ ասել։
ու դէ էս մարդկանց հարցը կը լուծուի, զի նա իմացել ա։
հիմա ինձ թւում ա նիկոլը մի բան չի հասկանում։ նա հաւատում ա որ առանց համակարգը, ծրագիրը ձեռք տալու, կարելի ա որ եղած մարդիկ ջանասէր գործ անեն։ ինձ թւում ա էդ հնարաւոր չի, ու էն պատճառով որ էդ մարդիկ սովոր չեն, ու էն պատճառով որ եթէ մարդը հնարաւորութիւն ունի մատը մատին չխփելու, էդ իր համար լռելեայն լուծումն ա։
ու հիմա, ասենք գտան էս կամ էն մարդուն, որ չի աջակցել, որ զոյգը քաղաքացիութիւն ստանայ։ էս մարդիկ ասելու են՝ հա, բա ո՞րտեղ ա գրուած, որ պարտաւոր էինք էս կամ էն անել։ մի հատ էլ անէինք, կարող ա պատժէիք։
ես յիշում եմ, նիկոլի մօտ մարդիկ ասում էին, թէ քաղաքական կամք, բան։ բայց դու չես կարող ամէն ինչ կամքով լուծել, պէտք ա ծրագիրը նէնց գրուած լինի որ աշխատի։
ու այո, մենք երիտասարդ պետութիւն ենք, ու լիքը քէյսեր հաշուի առած չեն առանց այդ էլ վատ աշխատող ծրագրի մէջ, ամն֊ում քանի բացառութիւն ու աւելացում են արել ամէն տեղ, երեւի չեք լիստեր էլ են սարքել, ու համարեա գրեթէ բոլոր հնարաւոր դէպքերը ծածկած են։
#քաղաքականութիւն #ալգորիթմ #ծրագրաւորում #հայաստան #հայք #քաղաքացիուիւն #նիկոլ #բիւրոկրատիա #նամակ
#կոտրուած_ապակիների_տեսութիւն ֊ը ծրագրաւորման մէջ էլ ա գործում՝ երբ կեղտոտ կոդ ա, շատ չեն ջանում սիրուն գրել՝ ասում են՝ մէկ ա արդէն կեղտոտ ա։ #ծրագրաւորում
այո, ինձ թւում ա սկսնակի խցիկը պէտք ա ունենայ անիւներով՝ պահաժամի եւ դիաֆրագմայի կարգաւորումներ։ նաեւ լաւ կը լինի որ ոսպնեակի վրայի էն գծերը լինեն, որ ցոյց են տալիս որտեղ ա ֆոկուս կամ չֆոկուս լինելու։ դա, պէտք ա նշել, ահագին լաւ որոշ թուանշայիններում մենիւ֊ից երեւում ա, բայց դէ էդ թուանշայինները չունեն առանձին անիւով պահաժամի կարգաւորում։
եւ նմանապէս, սկսնակի ծրագրաւորման լեզուն էն չի, որով առանց հասկանալու ինչ ա տակից կատարւում՝ գրում ես։ ամենակարեւոր բաները մարդը պէտք ա հասկանայ, որ կարողանայ արդէն ծրագրաւորում սովորել, եւ ոչ թէ լեզու, ու դրանք են՝ ծրագրի մեմորի լէյաութը, որտեղ ա (եւ ինչքան) յիշողութիւն յատկացւում որ տուեալների համար, որն ա ցուցիչը, ոնց ա ֆունկցիայի կանչը կատարւում։ ու ինչպիսի տուեալներ ես կարողանում ունենալ, որ դրանցով աւելի բարդ ստրուկտուրաներ կառուցես։
լինուսը մի տեղ ասել էր՝ գրելիս պատկերացնում եմ ինչ ասմ ա գեներացուելու՝ դա եթէ ասեմ, մի քիչ շատ բան կուզեմ, բայց լրիւ կարծում եմ որ էդ լաւ միտք ա։ #ֆոտո #ծրագրաւորում #խցիկ #գործիք
@{ fstoppers (unofficial) ; fstoppers@spyurk.am} 04/01/2020, 04:03:25
Why the Best Camera for Beginners Isn’t Their Phone
#fstoppersoriginals #gear #opinion posted by pod_feeder_v2
մի տղայ կայ, ալգորիթմներ ա գրում։
ու չի ջոկում ինչ ա նշանակում աբստրակցիա, ինչի համար վերացարկման շերտեր ունենալ, ուր ամէն մի շերտում իր գործն ա արւում։
#ծրագրաւորում
իթ սրանով արդէն կիսուել եմ անցեալ անգամ, երբ կարդում էի։
#էկրանահան #պլան9 #ծրագրաւորում #տերմինալ
https://sourceforge.net/p/predef/wiki/Compilers/ այստեղ հաւաքած ա, թէ որ կազմարկիչը ինչպէս ա դիֆայն լինում, որ լինի պարզել թէ որ կազմարկիչով ես հաւաքում իֆդեֆ անելով։
#վիքի #կազմարկիչ #ծրագրաւորում
ես դէ ասել եմ, ես «ֆրի սոֆթուեր» եզրի կողմնակից եմ։ բայց նայած թէ ում հետ եմ խօսում։ եթէ ես խօսում եմ հեռու մարդկանց հետ՝ ես կասեմ՝ օփեն սորս, որովհետեւ մինչեւ բացատրեմ որ իմ ասած ազատ ծա֊ն էդ իր ձրի քաշելիքները չեն բնաւ, նա արդէն կը յոգնի, ու չի ընկալի էլ ոչ մի բան։
ու ես ասում եմ «օփեն֊սորս» հաշուելով մարդու ունակութիւնները, ու իր հեռու լինելը այս ամէն ինչից։
դա գոնէ լսել ա, ու դա գոնէ ինքնաբացատրող ա։ իսկ «ֆրի»֊ն մոլորեցնող ա, ու նոյնիսկ սթոլմանը ստիպուած էր բացատրել, որ not as in free beer but as in free speech. այսինքն՝ բացատրելու կարիք ունի։
ու դէ իհարկէ, ես նախընտրում եմ ազատ ծա, որովհետեւ այն ազատութեան մասին ա, իսկ ելատեքստի հասանելի լինելը գրեթէ ընդամէնը կողմնակի արդիւնք ա։ բայց դէ, շնորհակալութիւն, քամի։ #ազատ_ծա #եզր #լեզու #եզրաբանութիւն #ազատութիւն
@{ քամի ; o_o@spyurk.am} 9/29/2019, 2:22:22 PM
free software, թէ՞ open source եզրերի հարցում ես խնդիր չէի տեսնի, եթէ հարցը վերաբերէր զուտ եզրերին, բայց տուեալ պարագայում եզրերի մէջ առանցքային տարբերութիւն կայ։ ու եթէ զիջենք եզրը՝ գաղափարական տարբերութիւնը կորելու ա։ էդ դէպքում, եթէ խնդիրը միայն source֊ին ա վերաբերում, ապա մենք ունե՞նք խնդիր գուգլական օփէն սոուրսի հետ, թէ՞ ոչ։ եթէ չունէք, ապա՝ օքէյ, եթէ ունէք՝ ապա ո՞նց էք բացատրում խնդիրը։ ու եզրը հասկացւում եւ տարածւում ա, երբ կիրառւում ա։ ու եթէ առաջին պարագայում բացատրելու ենք, որ free-ն նախ ազատն ա, եւ եթէ ազատ չի, ապա իր բաց լինելն այդքան էլ կարեւոր չի, ապա երկրորդ պարագայում, գաղափարական շերտը լղոզւում ու խառնաշփոթն աւելի մեծացնում ա։
#ազատութիւն #գաղափար #ծրագրաւորում
օբերոնը պետերսոնեան կարելի ա մեկնաբանել՝ աշխարհը քաօտիկ ա, ու մարդիկ ջանում են կարգաւորել այն։
ու օբերոնը այն ջանքն ա, որ վիրտն իր կողմից արել ա, որ աշխարհը շատ քաօտիկ չլինի։ ու դէ գոութուն էլ ստեղ անտեղին ա։
գոութուն՝ քաօսն ա։
մենք էլ ձգտում ենք որ, ինչպէս եւրոպայում, ամէնը սիրուն դիզայն արուած լինի ու կարգաւորուած։
#ծրագրաւորում #մարդիկ
այնտեղ ամերիկացի էր, որ շատ հպարտ էր իր նուաճմամբ՝ որ նա գրել է ալգեբրայիկ կազմակրիչ, թէ՞ ալգեբրաիկ թարգմանիչ էր դրա անունը, ու նա շատ հպարտ էր, որ ծրագիրը կազմում ա 55.000 ինստրուկցիա։
եւ անմիջապէս իրան անցաւ իր հայրենակիցներից մէկը, որ հպարտօրէն ասաւ, թէ իր կազմարկիչը զբաղեցնում ա 80.000 ինստրուկցիա։
ու եկաւ իմ հերթն եւ ես ասացի՝ իմն ընդամէնը 27.000 տող ա։
հպարտութիւնը ուղղուած ա տարբեր կողմեր ատլանտիկ ովկիանոսի տարբեր ափերում։
https://www.youtube.com/watch?v=QVIwT1Cuzsc
#դէյքստրա #ծրագրաւորում #դիզայն #եւրոպա #մշակոյթ
լրիւ նորմալ էր գրել ծրագիր դեռ գոյութիւն չունեցած մեքենայի համար։
#դէյքստրա #ծրագրաւորում
աշխարհը գժուել ա՝ ամն֊ում թրամփ ա, ռդ֊ում պուտին, իսկ մատրիքսը հտտպ֊ով ա աշխատում։
#աստուատ #էկրանահան #ծրագրաւորում #տեքնոլոգիա #մատրիքս #խի #փաստօրէն #կազմարկում
ուզում եմ ասել, ինչքա՜ն կարեւոր ա կուլտուրան, ու ինչքան մենք չունենք լիքը բանի կուլտուրա։
ասենք, ես ասել եմ, որ գիտեմ ինչ լա՛ւ ա սարքած քարֆուրի համակարգը, ու մասնաւորապէս հակահրդեհային համակարգերը։ ու նոյնիսկ իմանալ պէտք չի, պարզապէս կարելի ա զբօսնել, ու նայել վերեւ՝ որ ամէն տեղ էդ ջուր պզզիչները դրուած են, լրիւ ընդունուած ստանդարտներով, ու եթէ նոյնիսկ չհերիքի մի տեղում յանգցնելու կրակը, ապա մէկ ա, չի թողնի այլ տեղեր տարածուի։
ու բոլոր սցենարները կանխատեսուած են, թէ որտեղ ա կրակ, որտեղ ջուր գնայ, որ դուռը բացուի, որ չտարածուի, որտեղով մարդիկ դուրս գան, ո՞նց իմանան ինչպէս դուրս գալ՝ ձայն ա միանալու աւտոմատ, ասի այդ ամէնը։
հիմա արդե՞օք սիթի֊ներում էդ համակարգը կայ։ կասկածում եմ։
ինչի՞՝ որովհետեւ կուլտուրա չունեն։ չգիտեն էլ որ տէնց բան կայ։
ու էդ պատճառով էլ, որ քարֆուրը այլ հարցերին ա մօտենում՝ յատուկ դիզայն ա անում ասենք հայերէն տաբլիչկաներ, որոնց վրայ գրուած ա՝ «կարող էք նստել», կամ էն փայտիկները, որ դրամարկղի ժապաւէնում բաժանում են ձեր ու կողքինի ապրանքը, դրանց վրայ հայերէն ա գրուած։ զի կուլտուրա ունեն գործ անելու։
ու դէ սիթի֊ներում պատկերացնում եմ ոնց ա եղել, տիպա վայ, բա հիմա ո՞նց ենք փող գանձելու, տեսնենք, ի՞նչ լուծում կայ, հա, դէ ռուսներից՝ ով մօտ ա, մի բան առնում են պատրաստի, ու դէ չեն էլ մտածում լոկալիզացիայի մասին։
այս երկուսը կապուած են՝ եւ չլոկալիզացուած գրուածքները, եւ հրդեհներից պաշտպանուածութիւնը։
երկուսն էլ աշխատելու կուլտուրայի մասին են։
ու վատ չի, գիտէք, որ մենք քարֆուր ունենք, զի մարդը որ աշխատում ա սիթի֊ում կը նայի վերեւ, ու կը հասկանայ ինչքան բան նա չգիտի, ու մարդը, որ աշխատում ա այլ տեղ, բայց աշխատել ա սինոփսիսում, արդէն կիմանայ որ ասենք կոդ ռեւիւն լաւ բան ա, եթէ այնուամենայնիւ հասնի իրան էդ միտքը։
ու տէնց։
#կուլտուրա #ծրագրաւորում #տեքնոլոգիա
փնտրում էի վեկտորային գուի լիբեր, ու ուզում եմ հասկանալ, արդեօք դա լաւ միտք ա, էսօր, ու գտայ սա՝ https://littlevgl.com/, լրիւ այլ բան, բայց ահաւոր հաւէս ու հետաքրքիր նախագիծ։
#ծրագրաւորում #միկրոկոնտրոլեր #գրադարան #գիֆ #ներդրուած_համակարգեր #գրաֆիկա
հետաքրքիր ա, որ կերնելի դեւելոփերները չեն մտածել, թէ ինչ կը լինի, եթէ տաս տարի անց մէկը փորձի կազմարկել իրենց միջուկը, չէ՞ որ տաս տարի անց այլ քարտեր են լինելու ալֆա վիճակում։
ու դա այն մասին ա, որ այսօր մենք շատ լաւ գիտենք, որ այսօր գրուած ծա֊ն, վաղը չի աշխատելու, ինչպէս կայ՝ օրինակ՝ չի կազմարկուի վաղուայ կազմարկիչով, ու այսօր այս միջուկն ա, ու այսօր այսպէս ա ասում։ իսկ վաղը այն ակտուալ չի լինի, զի կը լինի նոր միջուկ, նոր կազմարկիչ, նոր երկաթ, եւ ամէնը այլ ձեւ ա լինելու։
ու ծրագրաւորում էլ ժամանակից դուրս չկայ։
#միջուկ #կերնել #ծա #տտ #ծրագրաւորում
ֆայրֆոքսում առաջ էջանիշները ընթերնելի xml նիշքի տեսքով էին։ ու կարելի էր այդ նիշքը տեղափոխել այլ ֆայրֆոքս։ իսկ ինչքա՜ն էի զարմացել, որ թանըրբրդը չի պահում մէյլերը ինչ֊որ իր ֆորմատով, այլ հէնց mbox ֆորմատով։ որը գիտենք ինչ ա։ ու որ էդ ֆայլերը կարելի ա վերնցել տանել այլ տեղ դնել։
#ֆայրֆոքս #թանդըրբըրդ #դիզայն #նախագծում #ստանդարտ #ծրագրաւորում
գիտհաբը ընկալում եմ որպէս յեղինակային կոդի պահարան։ ոչ թէ անկապ դեբիլ տնայինների, երեւի թէ։ ու յեղինակայինը նշանակում ա, որ դու ոչ միայն տեքնիկա ունես գրելու, այլեւ միտք ունես թէ ինչ ես ուզում գրել։
#ծրագրաւորում
քամին տարածել էր ադոբի ելատեքստը, ու ես ուզեցի մեկնաբանել, ինչպէս ա տարբերուում ադոբի ու բորլանդի պասկալի ֆորմատինգի ստանդարտը։
#պասկալ #էկրանահան #կոդ #ծրագրաւորում #մշակոյթ
ստեղ էլ փակցնեմ՝
ադոբի՝
PROCEDURE AddCode (node: PNode; code: INTEGER; VAR word: Str255);
VAR
branch: INTEGER;
BEGIN
IF LENGTH (word) = 0 THEN
BEGIN
IF node^.leaf OR (node^.branch [0] <> NIL) OR
(node^.branch [1] <> NIL) THEN
BEGIN
WRITELN ('? Conflict for code ', code:1);
EXIT (PROGRAM)
END;
node^.leaf := TRUE;
node^.code := code
END
ELSE
BEGIN
IF word [1] = '0' THEN
branch := 0
ELSE IF word [1] = '1' THEN
branch := 1
ELSE
BEGIN
WRITELN ('? Invalid word for code ', code:1);
EXIT (PROGRAM)
END;
DELETE (word, 1, 1);
IF node^.branch [branch] = NIL THEN
BEGIN
NEW (node^.branch [branch]);
node^.branch [branch]^.leaf := FALSE;
node^.branch [branch]^.branch [0] := NIL;
node^.branch [branch]^.branch [1] := NIL
END;
AddCode (node^.branch [branch], code, word)
END
END;
բորլանդի՝
procedure AddCode(node: PNode; code: INTEGER; var word: Str255);
var branch: integer;
begin
if length(word) = 0 then
begin
if node^.leaf or
(node^.branch[0] <> nil) or
(node^.branch[1] <> nil) then
begin
WriteLn('? Conflict for code ', code:1);
Halt //ստեղ նաեւ փոխել եմ Exit ֆունկցիան
end;
node^.leaf := true;
node^.code := code
end
else
begin
if word[1] = '0' then
branch := 0
else
if word[1] = '1' then
branch := 1
else
begin
WriteLn('? Invalid word for code ', code:1);
Halt
end;
delete(word, 1, 1);
if node^.branch[branch] = nil then
begin
new (node^.branch[branch]);
node^.branch[branch]^.leaf := false;
node^.branch[branch]^.branch[0] := nil;
node^.branch[branch]^.branch[1] := nil
end;
AddCode (node^.branch [branch], code, word)
end
end;
օբերոնի փաթեթնեկի կառավարիչ։
#օբերոն #տտ #ծրագրաւորում
@{ Րուփեն ; shekspir55@spyurk.am} 12.05.2019, 12:54:32
Sneak peek
The fastest package manager ever yet created :D @{inky, from the tape; tanakian@spyurk.am} զգա մի հատ։Դ
#ծրագրաւորում #տտ #հարցազրոյց #օբերոն
@{ քամի ; o_o@spyurk.am} 30.04.2019, 10:09:18
վիրտի հարցազրոյցից ա։ առաջին մասում հետաքրքիր ա, թէ ոնց ա խօսում մարդու մասին, որն իր վրայ ազդել ա ու որպէս դրական յատկանիշ նշում պարզ մտածելը։ ու դա էլ, իր տրամաբանութիւնն ա։ երրորդ մասում խօսում են քըմփայլերներից, լեզուներից եւ այլն։ ջաւային չեն տշում, ուրախ եմ, իսկ սիին ու սիպպ֊ին տաշըմ ա։ ինչեւէ, հետաքրքիր ա,
ու նա, որ ասում ա՝ համալսարանները չեն ստեղծում նորը, այլ հին զիբիլի՝ սիի, սիպպի վրայ են հիմնւում, սրա հիմնական պատճառն այն ա, որ համալսարանները, ոչ միայն հայաստանում՝ ամէնուր, հիմնւում են շուկայի վրայ։ իսկ շուկայի վրայ հիմնուելով դու չես ստեղծում նոր բան, դու զուտ եղած ռեսուրսներով խոշոր ընկերութիւն կարող ես ունենալ, որոնց արտադրանքը միեւնոյն ա մեծ ազդեցութիւն չի ունենալու ու շեշտը դնելու ա սպառման վրայ։ միւս կողմից էլ ուղեղս չի ձգում, թէ այսուհետ ոնց ա հնարաւոր շտկել, գուցէ ճիշտը զուգահեռ նոր բան անելն ա։ ու նա, որ ասում ա, պէտք չի զրոյից սկսել, հիմքը կայ, աշխատանքը գնահատել ա պէտք։ մտածում եմ, որ իրօք, նա թողել ա օբերոն օհ֊ը, որն իրօք նոր ա, նոր միտք, բայց իմացողները նոյնիսկ չաշխատելով դրա վրայ նպաստում են հետընթացին։ ու նոյնիսկ ես, որ քննադատում եմ շուկան, ես չեմ սկսում օբերոն նայել՝ զուտ նայել, որովհետեւ հասկանում եմ, որ եթէ նայեմ օրինակ գոուն, ես յետագայում աւելի մեծ շանս եմ ունենալու աշխատելու, քան օբերոնով/մոդուլայով։ ու սա նաեւ մտքի շուկայի վրայ հիմնուելու մասին ա։ իսկ վերջին մասը, գժուելու լաւն ա, ու հա, էն ինչը հիմա կատարւում ա՝ գիտութիւն չի, ինժեներիա չի։
կողքինն ասում ա, եթէ գոնէ ստիպուած էք անել բաներ, որոնք չէք հասկանում, գոնէ մի խօսէք բաներ, որոնք չէք հասկանում։
#ծրագրաւորում #օբերոն #համալսարան #շուկա #գիտութիւն
#պասկալ #մոդուլա #օբերոն #տտ #տեքնոլոգիա #գրականութիւն #մարդիկ
@{ քամի ; o_o@spyurk.am} 30.04.2019, 11:23:40
Reviving a computer system of 25 years ago - Wirth, 2014
ինձ վիրտի մէջ ամէնաշատն իր խնդիր֊կողմնորոշուած լինելն ա դուր գալիս։ ու պարզ մտածելը։
ասումա, ծրագիր գրելը բարդ ա՝ ինչքան էլ առեւտրականները հակառակը քարոզեն։ ճիշտ ծրագիր գրելն՝ առաւել եւս։
ասում ա, ծրագիրը կոդ չի համակարգչի համար, գրականութիւն ա մարդկանց համար։
#ծրագրաւորում #վիրտ
իրենք էլ են գրում որ հիերարխիկ ֆայլային համակարգերը լաւ միտք չեն՝ http://metamodular.com/Common-Lisp/lispos.html
#լիսպ #տտ #օհ #ծրագրաւորում
մարդիկ տարբեր են, ու իրանց տարբեր ծրագրաւորման լեզուներ են դուր գալիս։
#ծրագրաւորում #մարդիկ
Ես Ինստագրամում տեսայ, որ ամէն մէկն անուան դիմաց իր ով լինելը գրում է․ մէկը՝ «փեյնթըր», միւսը՝ «մամմի», ու ես առանց յապաղելու գրեցի՝ «ոչ ոք» (no one): Յետոյ երկար մտածում էի դրա մասին․ մարդը ստեղծագործող էակ է․ ինքը մէկը չի։
Հիմա ես երեսունն անց կի՞ն եմ, երեւանցի՞, մէկի ընկե՞րը, յոգայի դասատու՞, թէ՞ գրող եմ, ով քեզ հետ այստեղ խօսում է։ Ես հիմա դրանցից ոչ մեկն եմ, ու, երբ յոգայի դասի գնամ, դառնալու եմ յոգայի դասատու, երբ ընկերոջս հետ զրուցեմ, դառնալու եմ ընկեր․․․
այո, ոչ մէկ՝ պարտադիր չի, որ նշանակի զրօ։
ոչ TRUE֊ն, պարտադիր կը նշանակի՝ FALSE։
իսկ ոչ մէկ՝ բնաւ պարտադիր չի, որ լինի զրօ։ դա նաեւ սի֊ի խնդիրն ա, իսկ աւելի ժամանակակից լեզուներում, ասենք օբերոնում՝ բուլեան տիպն ուրիշ ա, ամբողջ թուերի տիպն՝ ուրիշ։ ու հնարաւոր չի համեմատել բուլեան տիպն ու թիւը։ զի համեմատելի չեն բնաւ։
իսկ ոչ մէկը կարող ա լինել -1, կարող ա լինել 101, կարող ա՝ af, իսկ կարող ա՝ 17։ այո։ ինչ ասես կարող ա լինել։
#մէջբերում #համացանց #մարդիկ #ծրագրաւորում
պասկալը 16֊րդ տեղից բարձրացաւ 11֊երրորդ, մի տարում։
https://www.tiobe.com/tiobe-index/
#պասկալ #ծրագրաւորում
https://www.youtube.com/watch?v=QM1iUe6IofM #ծրագրաւորում
շատ կարեւոր քննարկում՝
https://github.com/modula3/cm3/issues/42
ես աջակցում եմ հարց բարձրացնողին։ գուցէ ինձ պէտք ա ինիցիալիզացնել զանգուածը այլ թուերով, ինչի՞ համար ժամանակ ծախսել ու զրօներ գրել դրա մէջ։
ու նախագծողները դեբիլ չէին, որ յատուկ նշել են, թէ ինչ պատահի կարող ա լինել, որ կազմարկիչը չպէտք ա ինիցիալիզացնի։
#մոդուլա #մոդուլա֊3 #ծրագրաւորում #ծրագրաւորման_լեզուներ #նախագծում
եթէ ինձ հարցնէին, ի՞նչ խորհուրդ կը տայիր սկսնակ ծրագրաւորողներին (իսկ ինձ պէտք չի հարցնել գոնէ հետեւեալ երեք պատճառով՝ ա — թող ինչ ուզում են անեն; բ — իմ խորհուրդները կարող են տալնել մարգինալացման, իսկ ես չեմ ուզում մարդիկ մարգինալանան; գ — ո՞վ եմ ես որ հարցնէք) ես կասէի՝
ա — տեսէք ի՞նչ խնդիր ունէք, ու փորձէք լուծել այն, ու սարքել այդ բանը լուծող գործիք։ բ — գտէք հին, մոռացուած կոդ, մի ծրագիր որը ձեզ դուր ա գալիս, ու փորձէք այն կենդանացնել․ անել այնպէս, որ կազմարկուի (քոմփայլ լինի) ժամանակակից կոմպիլեատորով, ժամանակակից գրադարաններով, ժամանակակից պրոցեսորների վրայ։ գ — (ԶԳՈՅՇ, ՄԱՐԳԻՆԱԼԱՑՈՒՄ) թարգմանէք այդ կոդը օբերոնի, գոուի, ռասթի՝ որեւէ ժամանակակից դիզայնով ապահով լեզուի, ու ընթացքում կը տեսնէք քանի վրիպակ էք գտնում ընդամէնը թարգմանելով։ #ծրագրաւորում
ասում եմ՝
— պէտք ա երկար նայես չաշխատող կոդիդ։ նա էլ քեզ նայի։ ու տէնց դուք իրար նայէք։ մինչեւ չջոկես։ ու պէտք ա տառապես։ ես հաւատում եմ տառապանքին։ առանց տառապել չես կարող սովորել։
#ծրագրաւորում #զրոյց
First things first: printf is expecting a valid (i.e. non-NULL) pointer for its %s argument so passing it a NULL is officially undefined. It may print “(null)” or it may delete all files on your hard drive–either is correct behavior as far as ANSI is concerned (at least, that’s what Harbison and Steele tells me.)
#ծրագրաւորում #ահաւոր_ա #սի
սպանիչ միտք ա՝ եռաչափ գոյնի ընտրիչ՝ https://d3x0r.org:444/javascript/colorPicker/index4.html
այառսիի d3x0r֊ից։ ահա։
#գոյն #ծրագրաւորում #կայք #տեքնոլոգիաներ
աաա՝ http://cocoamine.net/blog/2015/03/20/replacing-photoshop-with-nsstring/ #ծրագրաւորում #գրաֆիկա #անգլերէն
պատկերացրէք, դուք ստանում մեծ նախագծի ելատեքստ, որի վրայ նախկին երեսուն տարուայ մէջ այլ թիմեր են աշխատել։ գրած ա՝ ահաւոր, աշխատում ա՝ մի կերպ։ ու դուլ պէտք ա նէնց անէք, որ լաւ աշխատի։
պա խարոշեմու պէտք ա էդ կոդը ջնջել, զրոյից գրել։ բայց հնարաւոր չի։
այ տէնց խնդիր ա հիմա կանգնած նիկոլենց թիմի առջեւ։
պէտք ա կարողանան ռեֆակտոր անել լիքը կոդ։ ու ով դրանով զբաղուել ա, գիտի, որ ահաւոր կարեւոր ա կոդ կտրել, թափել։ այդ մասին մի քիչ ակնարկեց 100 օրուայ հաւաքին։
#քաղաքականութիւն #ծրագրաւորում
Ես գուցէ ասել եմ, որ սեթը, այսօր իմ հասկանալով, վաւերագրական նկարի պէս ա, փողոցային լուսանկարի պէս ա, այն այն մասին ա թէ ովքեր են հաւաքուել այդ օրը այդ վայրում՝ ես այդ ժամանակաշրջանում ինչ երաժշտութիւն եմ լսել, ինչպէս եմ ինձ զգում, ով են մարդիկ ով գալիս են, ու ոնց են արձագանքում իմ դրած գործերին, մենք ծանօթանում ենք, ու փորձում ենք ընդհանուր հայտարարի գալ, նոր մարդիկ են աւելանում ընթացքում, տեղի աշխատողները կարող ա գնան գան, հազար ու մի բան ա կատարւում, լիքը անկանխատեսելի բաներ են պատահում, ու սեթն էլ այդ ամէնից ձեւաւորւում ա։
Սեթերիցս մէկը տեխնիկական պատճառներով չի ձայնագրուել։ Ու մի աղջիկ ասաց՝ «տանը մի հատ էլ նուագի նոյնը, ձայնագրի ու հրապարակի»։ Ես փորձեցի իրան բացատրել, որ տանը ձայնագրած սեթը, թէեւ հնարաւորինս մօտ փորձեմ անել նրան, ինչ եղել ա ակումբում՝ նոյն սեթը չի լինի։ Կը լինի այլ սեթ։ Փորձեմ բացատրել։
Անցնենք ծրագրաւորմանը։ Գոյութիւն ունի structural equivalence ու name equivalence։ Ասենք թէ ունենք տիպ human՝ այն ունի դաշտեր՝ name, weight, height, age։ ու ունենք տիպ alien, ով նոյնպէս ունի դաշտեր՝ name, weight, height, age։
TYPE
human = RECORD
name : ARRAY 64 OF CHAR;
weight, height, age: INTEGER
END;
alien = RECORD
name : ARRAY 64 OF CHAR;
weight, height, age: INTEGER
END;
Ապա մենք կարող ենք ունենալ փոփոխական Valod՝ human տիպի, ու փոփոխական FordPrefect՝ alien տիպի։
VAR
Valod: human;
FordPrefect: alien;
Եթէ ծրագրաւորման լեզուն չի պարտադրում name equivalence, մենք կարող ենք վերագրել FordPrefect֊ը Valod֊ին՝
Valod := FordPrefect;
Սա լրիւ վալիդ կոդ ա Modula-3֊ում, բայց ոչ՝ Oberon֊ում։
Եթէ կազմարկումն անցաւ, ապա թւում ա թէ, ծրագիրը պէտք ա որ չպայթի, գոնէ վերագրման ժամանակ։
Բայց արդե՞օք մենք այլ տեսակի սխալ չենք անում, ու ի՞նչ հետեւանքների ա բերելու այդ սխալը, ո՞նց ա պահելու իրան ծրագիրը, դա արդէն աւելի դժուար ա կանխատեսել։
Վերադառնանք սեթին։ Տանը նուագած ու ձայնագրած սեթը որը ձտգում ա կրկնել մի այլ, իսկական լայւ նուագած սեթ նման ա փողոցային լուսանկար բեմադրելու փորձի, իսկ այդ ժամանակ նոյնիսկ եթէ դու կարողանաս ամէնն անել նոյն կերպ (ինչը ակնյայտ չի որ հնարաւոր ա կամ հեշտ ա), դա միեւնոյն ա կը լինի փողոցային լուսնկարի պէս մի բանի բեմադրութեան փորձ, ոչ թէ փողոցային լուսանկար։
Ու եթէ տանը՝ ստուդիայում անել սեթ՝ ապա անել կարգչով, սիրուն, մտածուած, բոլոր մանրուքները հաշուի առած սեթ յստակ յաջորդականութեամբ։ Բեմադրուած լուսանկարի պէս։ Բայց ես բեմադրուած լուսանկարներ սովորաբար չեմ անում, այդ պատճառով ա գուցէ, որ դեռ չեմ վառւում ցանկութեամբ հանգիստ նախապէս մոնտաժած սեթ պատրաստելու։ Ինձ դուր ա գալիս փողոցի անկանխատեսելիութիւնը, ինձ դուր ա գալիս փողոցի ոչ կատարեալ լինելը, կադրի ոչ կատարեալ լինելը՝ բազմազան պատճառներով՝ եսիմով մտաւ կադրի մէջ, կոմպոզիցիան փչացրեց, լոյսը խաղաց, անցաւ կամ գնաց, ժապաւէնի վրայ անկապ կէտ եղաւ, մութ էր, լուսազգայունութիւնը չհերիքեց, ու երկար պահաժամի պատճառով լղոզուեց շարժումը։ Այդ ամէնը ահաւոր սիրուն ա, թէկուզ եւ «սխալ» կոմպոզիցիա արած կամ այլ «թերութիւններով» ու կեանքն ա անկատար, ու ինձ դուր ա գալիս որ լուսանկարներս ու սեթերս կատարեալ չեն։
ու տէնց։
ամենա անորակ սոֆթն այն ա որ գրուած ա կորպորացիայի ներսում օգտագործելու համար՝ ադմինների, ծրագրաւորողների, հաշուապահների ծա֊ն ա։ որովհետեւ այդ մարդկանց ըստ աշխատանքի պայմանների պարտադրւում ա այդ ծա֊ն օգտագործել։ ու էլ այնքան հետաքրքիր չի ինչքանով ա այն հարմարաւէտ, կամ դանդաղ, կամ բագոտ, կամ կիրառելի։ պարտադրում ենք՝ մի ձեւ օգտագործէք։
պատկերացնո՞ւմ էք, ինչպիսին պէտք ա լինէր կոմունիստական ծրագրակազմը՝ կուսակցութիւնը պատուիրել ա՝ դուք պիտի օգտուէք։ ու բնական ա որ շատ վատ ա գրուած լինելու։ դէ, ի դէպ, ռդ֊ի էն դալնոբոյշիկների «պլատոնի» ծրագրակազմն էլ չէր փայլում, հա անկապ էր աշխատում՝ պետ․ պատուեր ա, ու պարտադրուած ա օգտագործողներին։ ո՞րտեղից որակ։
#ծրագրակազմ #սոֆթ #որակ #ծրագրաւորում
մենք բոլորս զուգահեռ ծրագրաւորում կեանքում օգտագործում ենք՝ ասենք ես նախ ջուրն եմ դնում եռալու, յետոյ բաժակն եմ ընթացքում լուանում, մինչեւ ջուրն առանձին թելում (թրեդում) պատրաստուի։ #ծրագրաւորում
#մշակոյթ #ծրագրաւորում #գողական
սա շատ լաւ յօդուած ա՝ https://talks.golang.org/2012/splash.article #ռոբ_փայք #գոու #ծրագրաւորում #անգլերէն #թուղթ
գարուն 2016։
ֆիչըրինգ ռայմոն դեպարդոնս ֆոտո։
#սպանիչ #ռոբոտ #ծրագրաւորում
շնայդեր ֆիրմայի փիէլսի֊ների նախագծման միջավայրը թոյլ չի տալիս պատճէնել կոդ, փակցնել ասենք ինչ֊որ այլ տեղ, ու համեմատել երկու կոդի կտոր։ դու ունես մէկ միջավայր, ծանր, դանդաղաշարժ, ու ամէնը պիտի անես միմիայն դրա միջոցներով՝ եւ լցնես սարքի մէջ, եւ կարդաս սարքից, եւ գրես, եւ կարգաւորես սարքին միանալու ձեւը։
այսինքն դա բնաւ իւնիքս չի, անում է ամէն ինչ, ու անում է՝ վատ։
մտածում եմ, երեւի թէ նրանից է, որ օգտուողները հիմնականում էլեկտրոնիկայի մասնագէտներ են, ոչ թէ ծրագրաւորողներ, թէ չէ ոչ կը հանդուրժէին STL֊ով կոդ գրելը (էդ ձեր իմացած սի պլիւսներինը չի, ասմ֊ի պէս բան է), քանի որ ակնյայտ է ինչքան սխալ կարելի է դրանով անել, ոչ էլ հանդուրժելու էին որ հնարաւորութիւն չունեն իրենց ուզած գործիքներով ասենք diff անել։
առհասարակ, էս փիէլսի֊ների շուկան շատ լաւ տեղ է, մի քանի արտադրող կայ, բոլորն էլ շատ վատ են աշխատում, ժանգոտել են։ ու մրցակցութիւն չունեն։ բարդ մտնելու շուկայ է, միւս կողմից, քանի որ բոլոր լուրջ պատուիրատուները պահանջում են ճանաչուած ու «լուրջ» սարքի ու միջավայրի արտադրողների, սերտիֆիկացիա անցած եւ այլն։ բայց մտնելու տեղ է, լաւ տեղ է ու հետաքրքիր։
#ծրագրաւորում #փիէլսի #շնայդեր #աւտոմատացում #արտադրութիւն #իւնիքս
փաստօրէն, փիէլսի֊ների կամ նոյնիսկ միկրոկոնտրոլերների ծրագրաւորման լաւ ոճի համապատասխան, պէտք չի ուղիղ պորտերի մէջ գրել, այլ փոխարէնը ֆլագեր շարել։ յետոյ առանձին, ու մի հատ ֆունկցիայի միջից ստուգել ֆլագերը ու սեթ անել պորտերը։ #ծրագրաւորում
— լոգիկա գրելիս, դէ լոգիկա է, գրում ես՝ աշխատում է, աւելի հեշտ է կեանքը, իսկ երբ գուի ես գրում, բոլորն այդ ինտերֆէյսի մասին կարծիք ունեն, ու հոգիդ հանում են։
#ծրագրաւորում
այս մոդուլա֊3 ֊ը ամենալաւ ընդհանուր կիրառութեան (general purpose) լեզուն է։ օբերոնը փայլուն է նախագծուած, բայց վիճելի մօտեցումներով (յիշողութեան կառավարում, ընդհանրացուած ծրագրաւորման կամ թուարկումների բացակայութիւն), իսկ մոդուլա֊3 ֊ը ամենալաւ դիզայնն է ինչ տեսել եմ նրանցից որ այսօր կան ու երբեւէ նախագծուել են։ ու այո, հիմա սամուէլ հարբիսոնի գիրքն եմ կարդում։ ու տենց։ #մոդուլա-3 #ծրագրաւորում
ասում է՝ — ձախական մօտեցումը՝ երբ ունես մի մեծ չաղ ծրագիր որ ամէն ինչ անում է՝ դա չես կարողանում այն լաւ գրել, տակից դուրս գալ, աջականը՝ երբ ունես փոքր մոդուլներ, որոնց վրայ դրսից ազդեցութիւնը (պետութեան) մինիմալ է (encapsulation) ու իրատեսական է դրանք իրականացնելը։ #ծրագրաւորում #զրոյց
գրիր քո լիսպը՝ լաւ գիրք առցանց՝ http://www.buildyourownlisp.com/ #ծրագրաւորում #լիսպ #սի #կոմպիլյատոր #գիրք
տիպերի ապահովութիւնն ու դրա խիստ հարկադրումը մեր կրօնն է։ Խնդրում ենք շփուել առանց սրբապղծութեան։
#ծրագրաւորում #սրբապղծութիւն #կրօն #էկրանահան #սենեակ
մէկը միւսից լաւը։
— մինչեւ ինտերֆեյսը չբիւրեղանայ, չես կարող նման բան պահանջել։
#ծրագրաւորում #բիւրեղացում
այս մասին՝
(05:01:57 ) tmartiro: @antranigv (1,2) մասին - ցանկացած լեզվում կա ըստ լռելայն սահմանված օպերատորներ, օրինակ +, -, / … Հիմա, Նորայրի օրինակում , կա 2 տիպի օպերատոր , դա փակագծերն են () և ստորակետը , Փակագծերը նրա համար են, որպեսզի priority տան արտահայտություններին, իսկ ստորակետը սահմանում է արտահայտությունների հերթականություն ։ Ցանկացած օպերատոր կիռարելով պետք է արդյունք ստանանք։ Հիմա տվյալ օրինակում, փակագծում հերթականությամբ կկատարի արտահայտությունները ՝ 1 , որը կվերադարձնի 1, այնուհետև կկատարի 2 , որը իր հերթին կվերադարձնի 2, իսկ փակագծերը կվերադարձնեն վերջի արդյունքը փակագծերում կատարվածից, այսինք 2 ։
#ծրագրաւորում
պատմութիւն օրինազանց թուերի մասին՝ http://norayr.am/weblog/2016/08/20/պատմութիւն-օրինազանց-թուերի-մասին/ #դիւիդի #օրէնք #խօսք #խօսքի_ազատութիւն #ազատ_խօսք #թուեր #ծրագրաւորում #վերահսկողութիւն #ազատութիւն
ինչո՞ւ պայթեց Արիան֊5֊ը։
https://habrahabr.ru/company/pvs-studio/blog/306748/
#ադա #ծրագրաւորում #արիան #արիան-5 #տիեզերք
Զաւինսկին նաեւ ասում էր՝
Գիտեմ, որ կլիշէ է, բայց սա բերում է «վատն աւելի լաւ է» մտքին։ Եթէ ծախէք բաւական ժամանակ եւ պատրաստէք կոդի կատարեալ հիմք, որն անելու է այն ինչ ձեզ պէտք է, ու տանելու է ձեզ 1.0 վարկածից մինչեւ 5.0֊ն, ու ամէնը հիանալի կը լինի… դէ, գիտէ՞ք՝ 1.0 վարկածը պահանջելու է երեք տարի շուկայ հանելու համար, իսկ ձեր մրցակիցը հանելու է իր 1.0֊ն վեց ամսից, եւ հիմա դուք խաղից դուրս էք։ Դուք երբեք չէք հրապարակի ձեր 1.0֊ն, քանի որ ինչ֊որ մէկն արդեն կերել է ձեր ճաշը։
Ձեր մրցակցի 1.0֊ն ունի աղբ կոդ, ու նրանք պէտք է արտագրեն դա երկու տարում, բայց գիտէ՞ք ինչ՝ նրանք կարող են արտագրել այն, քանի որ դուք արդէն չունէք աշխատանք։
Սա այն խնդիրներից է (ես յոգնել եմ վատ գրած ծրագրերից, ու ճիշտ է, ազատ ծա֊ի մէջ աւելի շատ է լաւ դիզայն արած ծա, բայց միեւնոյնն է, սա խնդիր է՝ բազմաթիւ աւելի դանդաղ, քան կարող էին լինել, եւ ոչ հուսալի ծրագրերը), որ ես չգիտեմ ինչպիսի այլ լուծում կարող է ունենալ։ Նախ միշտ չէ, որ մրցակիցը կոդը արտագրելու է եւ լաւացնելու է՝ եթէ դրա խիստ, խեղդող անհրաժեշտութիւն չի լինի։ Նաեւ՝ մրցակիցը միշտ էլ ունենալու է այլ մրցակիցներ, եւ աշխատելու է լարուած։ Ու գուցէ լուծումը կը լինէր օգտո՞ւողը, ով երեք տարի անց կը նախընտրէր ձեր 1.0֊ն մրցակցի 5.0֊ի՞ն, քանի որ ձեր 1.0֊ն աւելի արա՞գ է աշխատում եւ անկապ չի՞ պայթում։ Կամ գուցէ այն պատճառով, որ բաց ստանդարտների պարագայում (օրինակ՝ նոյն html֊ի հետ է աշխատում ծրագիրը, զննիչ է, եւ բաց ստանդարտը տալիս է մրցակցութեան հաւասար հնարաւորութիւն) աւելի հե՞շտ կը լինէր անցում կատարել մրցակցի ծրագրից՝ ձեր ծրագիր։
#Զաւինսկի #շուկայ #մրցակցութիւն #ծրագրաւորում #մէջբերում #քաղուածք
այս խօսքը ես եմ խնդրել որ Լեո֊ն անի, հենց այս թեմայով՝
ձեռքի հետ էլ ստուգեցի, ինչպէս է հասարակ պասկալական TList֊ը ռեալոքեյթ անում յիշողութիւնը (պասկալի լիստը բնաւ լինկեդ լիստ չի), ու հետաքրքիր էր նկատել որ fpc֊ն մեծացնում է երկու անգամ չափսը, իսկ դելֆի բեռլինը՝ քառորդ չափսով՝
ֆպց՝
իսկ դելֆի֊ում՝
ու տենց։
Նոյնիսկ “FBFeedAwesomeizer”֊ն որ պարունակում է 74 դասերից եւ հաղորդակարգերից բաղկացած հաւաքածու։
Ահա թէ ինչու ծրագրի բինար մասի չափն է 114մբ։
ֆեյսբուք «ափ»֊ի ռեւերս ինժիներինգ֊ի մասին՝ http://quellish.tumblr.com/post/126712999812/how-on-earth-the-facebook-ios-application-is-so (անգլերէն)
#անգլերէն #ֆեյսբուք #ծրագրաւորում
այսօր գիտհաբն առաջարկում է սա կարդալ՝ https://guides.github.com/activities/hello-world/
#գիտհաբ #գիտ #ձեռնարկ #ծրագրաւորում
օբերոնի եւ մոդուլայի թրենդերի մասին՝ http://norayr.arnet.am/weblog/թրենդային
#օբերոն #մոդուլա-2 #մոդուլա #ծրագրաւորում #ծրագրաւորման_լեզուներ
Փաստօրէն, Օբերոնը երբեք չէր վայելում համայնքի բաւականաչափ ուշադրութիւն, նոյնիսկ համեմատած Մոդուլա֊2֊ի հետ։
Նոյնիսկ բաւական տուեալ չկայ, որպէսզի պարզ լինի, թէ որ երկրներում էր այն աւելի տարածուած։ Զարմանալի է, որ Մոդուլա֊2 ֊ով աւելի շատ հետաքրքրւել են Իսպանիայում, քան Գերմանիայում։
Ինչն է նաեւ զարմանալի, Օբերոնով երբեք այնքան հետաքրքրուած չէին, ինչպէս այսօր։
Նոյնիսկ ոչ այն ժամանակ, երբ Oberon S3֊ը կամ V4֊ը ակտիւ զարգանում էին, ի տարբերութիւն այսօրուայ PO֊ին։
Հաւանաբար, դա կարելի է բացատրել նրանով, որ վերջերս մարդիկ աւելի են հետաքրքրուած ծրագրաւորման լեզուներով, քան երբեւէ առաջ, եւ Վիրտի նոր գիրքը հրապարակուել է ճիշտ այն ժամանակին, երբ ծրագրաւորման լեզուները վայելում են բարենպաստ պայմաններ։
Վերջերս դրա վառ օրինակն է հանդիսացել Ադա֊ն։ Եթէ Ադա֊ն պէտք է ունենայ ստանդարտ, աւելի լաւ է որ այդ ստանդարտը լինի աներկբայ։ Առնուազն երկու նախաձեռնութիւն եղաւ․ երկուսի արդնիւնք էր մօտ 600 էջ կազմող ֆորմալ տեքստ, այսինքն անգամներ շատ, քան անհրաժեշտ է համոզուելու համար, որ երկու թուղթն էլ սահմանում են նոյն լեզուն։ Այդ երկու փաստաթղթերի ակնյայտ անկառավարելիութեան պատճառն երկու խմբից ոչ մէկն էլ չէ, ոչ էլ այն ֆորմալ ձեւն է, որ իրենք կիրառել են, այլ ինքը լեզուն․ արդեօք չներկայացնելով ֆորմալ ձեւակերպում, լեզուի նախագծողները կարող են թաքցնել, որ առաջարկում են անկառավարելի հրէշ։ Այն, որ Ադա֊ն կը թեթեւացնի ծրագրաւորման խնդիրները եւ կաւելացնի մեր ջանքերի արդիւնաւէտութիւնը՝ այն հեքիաթներից է, որոնց հաւատալու համար պէտք է ունենալ զինուորական կրթութիւն։
գիտական ֆանտաստիկան եւ գիտական իրականութիւնը յօդուածից, Էդսգեր Վիբե Դեյքստրա։
Վերջերս դրա վառ օրինակն է հանդիսացել Ադա֊ն։ Եթէ Ադա֊ն պէտք է ունենայ ստանդարտ, աւելի լաւ է որ այդ ստանդարտը լինի աներկբայ։ Առնուազն երկու նախաձեռնութիւն եղաւ․ երկուսի արդնիւնք էր մօտ 600 էջ կազմող ֆորմալ տեքստ, այսինքն անգամներ շատ, քան անհրաժեշտ է համոզուելու համար, որ երկու թուղթն էլ սահմանում են նոյն լեզուն։ Այդ երկու փաստաթղթերի ակնյայտ անկառավարելիութեան պատճառն երկու խմբից ոչ մէկն էլ չէ, ոչ էլ այն ֆորմալ ձեւն է, որ իրենք կիրառել են, այլ ինքը լեզուն․ արդեօք չներկայացնելով ֆորմալ ձեւակերպում, լեզուի նախագծողները կարող են թաքցնել, որ առաջարկում են անկառավարելի հրէշ։ Այն, որ Ադա֊ն կը թեթեւացնի ծրագրաւորման խնդիրները եւ կաւելացնի մեր ջանքերի արդիւնաւէտութիւնը՝ այն հեքիաթներից է, որոնց հաւատալու համար պէտք է ունենալ զինուորական կրթութիւն։
գիտական ֆանտաստիկան եւ գիտական իրականութիւնը յօդուածից, Էդսգեր Վիբե Դեյքստրա։
#ադա #ծրագրաւորման_լեզուներ #դեյքստրա #յօդուած #քաղուածք #մէջբերում #ծրագրաւորում #կրթութիւն #հեքիաթ
կոմպիլյատորի լաւ կայքը ինչ տեսք ունի։
#կայք #կոմպիլյատոր #էկրանահան #օդապարիկ #ամրոց #սքուիք #սմոլթոք #ծրագրաւորում
ինչ հետաքրքիր է։ հասքելի եւ պասկալի հանդէպ հետաքրքրութիւնը աճում եւ նուազում է ուսումնական սեմեստրերի պարբերութիւններով։ (:
համոզուել ինքնուրոյն։
#էկրանահան #ծրագրաւորման_լեզուներ #ադա #պասկալ #հասքել #ծրագրաւորում
— ծրագրերի յարաբերութիւնների լաւագոյն մտածած մոդելը՝ քօմ֊ն էր։
— եւ լինուքս աշխարհում, ասենք գնոմի դեւերը դրանից հրաժարուեցին։
— որովհետեւ գնոմ֊ի դեւերը որոշեցին գրել «ով բան չի հասկանում» շուկայի համար։ իսկ ում համար դու նախագծում ես, դրանց էլ նմանւում ես։
#զրոյց #տեխնոլոգիաներ #գնոմ #լինուքս #քօմ #ծրագրաւորում #նախագծում
c եւ c++ պատմութիւն՝ https://vimeo.com/132192250
#ծրագրաւորում #կոմպիլյատոր #սի #ծրագրաւորման_լեզուներ #լեզու
սպանիչ պատմութիւն է, ինչպէս մարդը գրել է սի կոմպիլյատոր քառասուն օրուայ մէջ՝ http://www.sigbus.info/how-i-wrote-a-self-hosting-c-compiler-in-40-days.html
#ծրագրաւորում #կոմպիլյատոր #սի #ծրագրաւորման_լեզուներ #լեզու
փաստօրէն այսօր ծա պրոդուկտը մրունակ լինելու համար պէտք է լաւը լինելուց բացի, լինի նաեւ ազատ։ դա իւրացրել է եւ մայքրոսոֆթը, եւ էփլը, որ բացել են c#֊ն ու swift֊ը համապատասխանաբար։
նախագծողի համար մրցունակ։
«հասարակ օգտագործողի» համար գրուած ծրագիրը բնաւ չի տուժի մրցունակ լինելու առումով, եթէ ազատ չէ։ այսօր։
քանի որ նախագծողները զարգացան եւ այսօր ունեն պահանջներ, որ առաջ չունէին։ բայց արդե՞օք կը գայ մի օր, երբ սովորական օգտագործողը կունենայ այդ պահանջը։
#ծրագրաւորում #նախագծող #պահանջ #մրցակցութիւն #ազատ_ծա #ծա #ազատութիւն
գոու֊ն ընչդէմ ռասթ֊ի ընդդէմ սուիֆթ֊ի՝ https://grigio.org/go-vs-node-vs-rust-vs-swift/
#հետազօտութիւն #ծրագրաւորում #կոմպիլյատոր #թեստ #ծրագրաւորման_լեզուներ #գոու #ռասթ #սուիֆթ
շատ հետաքրքիր թուղթ եմ կարդում, այն մասին ինչպէս Ա2 համակարգի միջուկը փոխել են, որ այն աշխատի կոոպերատիւ մալտիթասկինգով։ սակայն դեռ լաւ չեմ հասկանում, թէ արդեօք Ա2֊ի միջուկը հիմա այդ նոր միջուն է ու արդեօք այն հիմա դարձել է «լոք ֆրի» համակարգ թէ ոչ։
#Ա2 #օբերոն #զուգահեռութիւն #ակտիւ_օբերոն #ծրագրաւորում #օպերացիոն_համակարգեր #ծրագրաւորում #թուղթ
— կարո՞ղ էք բացատրել ինչով է տարբերւում օբյեկտ կողմնորոշուած ծրագրաւորումը հնաոճ պրոցեդուրալ ծրագրաւորումից։
— իհարկէ։ Նախ, դու կարող ես ստեղծել ծրագիր առանց իմանալու ինչպէս գրել կոդ։ երկրորդը, կարող ես նախագծել գրաֆիկական միջավայրում։ երրորդը, հեշտութեամբ կարող ես փոփոխել կամ վրիպազերծել քո կոդը։
Պարզւում է, որ օկծ֊ն նշանակում է որ դու կարող ես ստեղծել ծրագիր առանց կոդ գրել իմանալու։ Որ չես կարող գրել օկծ կոդ առանց գրաֆիկական միջավայրի։ ու չես կարող հեշտութեամբ փոխել կամ վրիպազերծել գրածդ եթէ օկծ ոճով չես գրել։ երբեք ուշ չէ սովորել։
#ծրագրաւորում #ջէն_լիւյիս #օբյեկտ_կողմնորոշուած_ծրագրաւորում #օկծ #ծրագրաւորում #պարզ_բացատրութիւն #բացատրութիւն
ինչպէս է մայքրոսոֆթը խաղից հանել ոչ իր կոմպիլյատորները՝
մենք շատ նպատակաուղղուած էինք որպէսզի մեր Delphi եւ C++ կոմպիլյատորներով ստանանք WinRT֊ի համար կոդ։ Այս պահին խնդիրն այն է, որ այն ՕՀ API֊ները, որ անհրաժեշտ են քո լեզուի RTL֊ն իրականացնելու համար թոյլատրուած չեն։ Գիտէք, ասենք RtlUnwind֊ը բացառութիւնների մշակման կամ VirtualAlloc֊ն յիշողութեան կառաւարման համար… Այդ եւ նման ֆունկցիաներին դիմելը աւտոմատ որակազրկում է ձեր ծրագիրը․ այն չի կարող լինել «պաշտօնական» WinRT ծրագիր եւ տեղակայւել մայքրոսոֆթի խանութից։
աղբիւր (անգլերէն)
երբ նման բաներ եմ կարդում, զգում եմ, ինչքան չեմ ուզում գործ ունենալ այդ փակ էկոհամակարգերի հետ, ու ինչ հաւէս է ծրագիր գրել ազատ միջավայրերում՝ ազատ հարթակների համար։
#ծրագրաւորում #մայքրոսոֆթ #կոմպիլյատորներ #ծրագրաւորման_լեզուներ #մրցակցութիւն
ահա, Վիրտի PICL լեզուի կոմպիլյատորը, որ նախատեսուած է PIC16F84 միկրոկոնտրոլերներ ծրագրաւորելու համար, կարողացայ տեղափոխել Լինուքս, աշխատեցնել, եւ կոմպիլյացիա անել մի քանի թեստ։
ահա կոդը եւ գրառում վիշապ օբերոնի կայքում։
մինչ
ահա, Վիրտի PICL լեզուի կոմպիլյատորը, որ նախատեսուած է PI16F84 միկրոկոնտրոլերներ ծրագրաւորելու համար, կարողացայ տեղափոխել Լինուքս, աշխատեցնել, եւ կոմպիլյացիա անել մի քանի թեստ։
#կոմպիլյատոր #էկրանահան #ծրագրաւորում #լինուքս #երկաթ #ծրագրաւորման_լեզուներ #միկրոկոնտրոլեր
նա նկատեց որ մի խաղ կարողանում էր իր ամիգա֊500֊ի սնուցման լուսադիոդը անջատել։ կարգչի վրայ երկու լուսադիոդ կար։ միւսն աիջատել լինում էր, բայց իա չգտտէր, որ լինում է ըառաւարել այն մէկը, որ ցոյց է տալիս սնուցումը։ ու չհանգստացաւ մինչեւ չհասկացաւ ինչպէս դա անել։ պատկերացնո՞ւմ էք ինչպէս էր ուրախացել որ գտել էր։ աշխարհն իրենն էր։ լրիւ։
#ծրագրաւորում #ամիգա֊500 #լուսադիոդ #պատմութիւն #ազատութիւն
ռասփբերի փայը նաեւ վատ գործ արեց։ այն է, որ հիմա երեխաները դրանով են խաղ անելու, եւ փայթոնով են գրելու՝ բարձր մակարդակի կոդ։ երբ իրենք զբաղւում էին արդուինո֊ի պէս գործիքների հետ, իրենք շատ աւելի շանսեր ունէին ծանօթանալու ցածր մակարդակի հետ, հասկանալու այն։ նոյնիսկ երեւի ստիպուած էին, եթէ արդուինո ստուդիոն այդ պատկերը չփչացնի։
ինչեւէ, բայց ինդուստրիան չի փոխւում։ այսինքն առաջ է գնում, բայց պահանջ ունի ցածր մակարդակի մասնագէտների․ մենք ունենք այո, արդեն 32բիթանի չիպեր, որ ասենք 2մմx2մմ չափս ունեն, իսկ բարձրութիւնը՝ 1.6 մմ է։ ու 16 բայթ յիշողութիւն։ ու այն համ քիչ է էներգիա ծախսում, համ էժան է։ էլ չեմ ասում որ շատ գործ կայ ինչի համար ութ բիթն էլ է շատ։ ինչի՞ վերցնես երեսուներկու բիթանի պրոցեսոր։ ամէն սենթը մեծածաւալ արտադրութեան դէպքում դառնում է լուրջ խնայողութիւն։ եւ աշխարհում էլ աւելի քիչ էներգիա է ծախսւում։
այսինքն պահանջը լինելու է, իսկ սովորելու աւելի քիչ հնարաւորութիւն, միջավայր կայ սովորական երեխայի մօտ։ #տեխնոլոգիաներ #ռասփբերի_փայ #արդուինո #ծրագրաւորում #միջավայր
թուային սարքերը շերտաւոր են։ առաջ բոլորն օգտագործում էին, նոյն «սքայփով» խօսելու համար համակարգիչներ, իսկ հիմա խելախօսը կարծես ծածկում է «սովորական» մարդու լրիւ պահանջները։ որոնք, որպէս կանոն՝ սպառելու մասին են, կամ երբեմն ոչ շատ լուրջ ստեղծագործելու։
Ընդհանուր առմամբ բան չի փոխուել՝ առաջ էլ համակարգչով էին սպառում, հիմա աւելի հարմար գործիքներ կան սպառելու համար։ Բայց, եթէ մէկը, ով փորփրող է, ով հետաքրքրուող է, ուզեր խորանալ, նա կարողանում էր։ Թէկուզ եթէ իր օպերացիոն համակարգը ուինդոուս էր։
հիմա նա, ով գուցէ հազարից մէկն է, իսկ գուցէ միլիոնից, ով գուցէ ուզի խորանալ, եթէ նա չունի համակարգիչ, այլ ունի խելախօս, նա չի կարող։ պարզապէս չի կարող։ ի՞նչ պէտք է անի, ասենք քաշի անդրոիդում տերմինալ։ եւ ի՞նչ է նա անելու այդ տերմինալի մէջ, բացի ձեւական լս֊ի՞ց։ ոչ մի բան։ նոյն էն 810֊ը, որ դեբիան էր, անհամեմատ աւելի շատ խորանալու հնարաւորութիւն էր տալիս։ գրեթէ համակարգիչ էր։
չէ, ինձ սխալ չհասկանաք, ես սիրում եմ դիւրակիր սարքեր։ ու շատ յաճախ եւ չաթի, եւ փոստ ստուգելու համար չեմ մօտենայ կարգչին։ պարզապէս ասում եմ, որ շատ շատերը ձեռքի տակ չեն ունենալու գործիք, որով կարող էին սովորել անել լուրջ գործ, լինի դա դիզայն, անիմացիա, թէ ինչ֊որ մի ծրագրաւորում։ #տեխնոլոգիաներ #դիւրակիր #աշխատանք #ստեղծարարութիւն #ծրագրաւորում
ահա եւ ելատեքստը
ու տենց
դիւրակիր սարքեր արտադրողները փորձում են դրանք ներկայացնել որպէս ստեղծագործելու գործիք։ ոչ միայն՝ սպառելու։ դա շատ հաւէս է, որ իրենք ուզում են այդպէս ներկայացնել իրենց ապրանքը, դա նաեւ մեր մասին է, որ մենք ուզում ենք ստեղծագործող լինել, ոչ միայն սպառող։
սակայն ուզում եմ ասել, կայ շատ լաւ սարք ստեղծագործելու համար, այն մեր քթի տակ է։ ու դրանից լաւ թուային գործիք չկայ։ ու այն անտեսուած է։
այդ սարքը՝ հասարակ դեսքթոփ համակարգիչն է։ այն ունի սպանիչ զարգացած օպերացիոն համակարգեր, սպանիչ զարգացած թուլքիթներ ծրագրեր գրելու համար, ունի զանազան գործիքներ ստեղծագործելու համար, եւ այդ գործիքների որակի, ճկունութեան եւ հնարաւորութիւնների հետ չի կարող համեմատուել ոչ մի դիւրակիր սարքի գործիք։
դրանք են՝ իլիւստրատորը, ինքսքեյփը, ֆոտոշոփն ու գիմփը, զանազան նախագծման ծրագրեր՝ ճարտարապետների ու ճարտարագէտների համար, կինո եւ անիմացիայի ստեղծման հզօր գործիքներ։
ինչն է շատ սիմպտոմատիկ, դա այն է, որ gtk ֆրեյմուողքը ստեղծուել է ստեղծագործելու համար ծրագիր գրելու համար՝ gimp գրելու համար։
այսինքն, եթէ դու ունես այդքան գործիքներ ստեղծագործելու համար, ապա անկասկած է որ դու ունես շատ լաւ գործիքներ ծրագրեր գրելու համար։
ու այդ ամէնը հիմա անտեսուած է ոչ միայն սովորական օգտագործողների կողմից, այլ նոյնիսկ ծրագրաւորողների։
#տեխնոլոգիաներ #դիւրակիր #աշխատանք #ստեղծարարութիւն #ծրագրաւորում
Իրենք գրում են ֆունկցիոնալ ծրագրեր վճռականօրէն ոչ ֆունկցիոնալ խնդիրների լուծման համար, կիրառելով մոնադ կոչուող հնարք, որը ես չեմ բացատրի, ու մէկ է ոչ մէկ չի հասկանում, բայց կարեւորն այն է, որ շատ խելացի ծրագրաւորողի ձեռքերում, ֆունկցիոնալ ծրագրաւորումը «կարող է» օգտագործուել շատ աւելի տեղերում, քան կարող ես միամտօրէն ենթադրել։
Ու ահա թէ որն է իրական խնդիրը։ Սա աշխատում է սկզբից, յետոյ շարունակում է աշխատել մինչեւ հանկարծակի չաշխատի։ Ու այս կոմունիզմը ֆունկցիոնալիզմը տարածւում է գաղափարախօսութիւնը մինչեւ ձեր երկիրը կոդը ծանրաբեռնուած է պարտքերով եւ ոչ մէկ չի կարող հանել ձեզ այս վիճակից, քանի որ դուք ունէք զանազան մոնադներ եւ ոչ մէկ չի հասկանում դրանք։
#ծրագրաւորում #ֆունկցիոնալ_ծրագրաւորում #իմպերատիւ_ծրագրաւորում #մոնադներ #ծրագրեր #ծրագրաւորման_լեզուներ #նախագծում #էփլ #սուիֆթ #դիզայն #արուեստ
այն, որ մոդուլը մնում է յիշողութեան մէջ ու պահում է իր վիճակը, իսկ կարող է մանիպուլացուել կողքի շելլից, հրամաններով։ սա շատ սիրուն նախագիծ է։
https://www.youtube.com/watch?v=byC98PHZR2Y
#օբերոն #նկարչութիւն #ծրագրաւորում #դեմո #էկրանահան #դիզայն #նախագծում
— Ա֊ն ինչ ներդ է։ ու միշտ մենակ է։ … հինգ րոպէ անց — տես է, ինչ է գրուած այս հդմ կտրօնի վրայ՝ 4.000 հատ։ (մենք չորս տոմս էինք գնել) — հա, այսինքն կարող ես 4.001 տոմս առնել։ — սա իրականում մեծացնում է էնտրոպիան աշխարհում։ — հմ՞։ — որովհետեւ նա անում է սահող ստորակէտով հաշուարկ այնտեղ, ուր պէտք չէ, եւ ծախսում է աւելի շատ ժամանակ եւ էներգիա։ — լաւ էլի։ — իսկ եթէ սարքը չունի այդ հաշուարկի երկաթ ու նմանակում է… — ե՞ւ։ — պատկերացրու միլիոններ այդ սարքերի, ու բոլորն իզուր էներգիա են վառում։ — լսի, դու գիտե՞ս, ինչի Ա֊ն միշտ մենակ է, փորձիր մտածել այդ մասին։
#մենակութիւն #էնտրոպիա #զրոյց #ծրագրաւորում
ահագին հաւանում եմ Փիթեր Մաթիասի Օբերոն/Լինուքս Ռիւայւալ նախագիծը։
այսօր աւելացրի իրա քոմփայլերին մի փաթչ, որը նախկինում աւելացրել եմ վիշապի մէջ։
Եթէ ունենք CASE, որը չի աւարտւում ELSE֊ով իսկ եղած վարկածներից ոչ մէկը չէ, ապա տեղի է ունենալու այսպէս կոչուած թռափ։ Սա ինձ ահագին գլխացաւանք է պատճառել նախկինում, երբ ես տարբեր կոդի հետ գործ ունենալիս փորձում էի հասկանալ, ինչու է այն մեռնում։
Ու քանի վիշապը փաթչ եմ արել, նոյն փաթչը որոշեցի այդ նախագծին էլ տալ։
Սա Վիշապի զգուշացման տեսքն է՝
Իսկ այսպէս է մեռնում ծրագիրը Օբերոն համակարգում՝
Ահա եւ ուղղումը՝
եւ այդպէս։ ։Ճ
գրառում նոր նախազգուշացման մասին։
#օբերոն #վօկ #ծրագրաւորում
աաա, իմ փուլ ռեքուեսթը հաստատուեց՝ https://github.com/devi/uxmpp/pull/2#event-293939170
#ջաբեր #ծրագրաւորում #գիտհաբ #գիտ #պասկալ
— … վիրտուալ ռոբոտիքսի մրցոյթ
— ինչի՞ համար վիրտուալ։
— նրանց համար, ով ռոբոթ հաւաքել ՝ էլեկտրոնիկա, մեքատրոնիկա, ցածր մակարդակի ծրագրաւորում չգիտի։
— ապա դա ոնց որ ինստագրամը լինի՝ նրանց համար ով ֆոտո անել չգիտի։
#զրոյց #ռոբոտներ #ռոբոտիքս #էլեկտրոնիկա #ինստագրամ #ֆոտո #ծրագրաւորում
առաջին կարգի դոմենը։ ։Ճ
#ադա #փաստօրէն #այո #ծրագրաւորում
ընկերս իր միջուկի մոդուլն է գրել ցանցային տրաֆիկը հաշուելու համար։ https://github.com/edwardoid/nc_mod #ծրագրաւորում #ցանց #տրաֆիկ #հաշուիչ
ի դէպ, լեզուների մասին, հիմա ծրագրաւորման։ այստեղ էլ կան «իպպերիալիստական», պարտադրուած լեզուներ, բայց այս համատեքստում դրանք կոչւում են՝ «էնթերփրայս» կամ «կորպորատիւ»։ բարդ չէ գուշակել, որ խօսքը սի շարփի եւ ջաւայի մասին է։ այս լեզուները դառնում են օգտագործելի ոչ այն պատճառով որ լաւն են (ասենք վիժուալ բեյսիկը հաստատ լաւը չէր, բայց ամենատարածուածն էր), այլ որովհետեւ առաջ են բերուել հզօր կորպորացիաների կողմից, մարկետինգի, կասծիւմ֊շլուարներով մենեջերի վրայ շատ գումար է ծախսելու միջոցով։
կորպոպատիւ գործիքների մրցակցութեան եւ տարածման գործընթացի մէջ նաեւ կարեւոր դեր են խաղում կորպորատիւ ճնշման գործիքները՝ ասենք պատենտները։
ազատ համայնքի լեզուները դառնում են կիրառելի, կամ ոչ, այն պատճառով ինչքանով են լաւը, կամ ինչքանով են համապատասխանում ծրագրաւորողների ճաշակին։ սա արդեն փայթընն է, որին Փոլ Գրեմը նուիրել է՝ «հաքերների վրէժը» էսսեն։ իհարկէ, էսթեթների լեզու չէ, բայց լաւն է, ու զարգանալիս լաւանում է, ոչ թէ փչանում, փտում։
կան իհարկէ նաեւ էսթեթների լեզուներ՝ ադան, ռասթը, գոուն, հասքելը։ բայց սա արդեն այլ պատմութիւն է։ ու նոյն գոուն չէր ունենայ այնքան համակիրներ, եթէ առաջ տարուած չլիներ գուգլի կողմից։ նկատի ունենալով, որ օբերոն֊2֊ին ահաւոր նման է, ու համեմատելով օբերոնի եւ գոուի համակիրների թիւը կարելի է ենթադրել, որ գոուի համակիրների մեծ մասը գոուի համակիր չէին լինի, եթէ այն գուգլի լեզուն չլիներ։ չէին էլ իմանայ այդ լեզուի մասին։ սակայն ամէն դէպքում գոուն ազատ համայնքի լեզու է։ ու գիտական համայնքի՝ բաւական ազատ համայնքի կողմից ստեղծուած։ ըստ որում գիտական համայնքն էլ լրիւ ազատ չէ։ իրենք էլ ումի՞ց պիտի հետազօտութեան գրանտ ստանան՝ ասենք մայքրոսոֆթից։ իսկ ապա պէտք է օրինակ դոթնեթին վերաբերող հետազօտութիւն անեն որպէսզի կորպորացիայի շահը՝ հարթակի տարածմանը աջակցեն։ ինչեւէ։ կրկին չի լինում չքաղաքականացնել։
այո։
#քաղաքականացնել #ծրագրաւորում #լեզու #ծրագրաւորման֊լեզուներ #ճաշակ #պատենտներ #քաղաքականութիւն #ազատութիւն
մոդուլա֊3 ֊ի համար գրաֆիկական ինտերֆեյսներ կառուցելու գրադարան, կոչւում է՝ «trestle»՝ ցցակամուրջ։ հետաքրքիր մօտեցում է, շատ պարզ։
#մոդուլա֊3 #մոդուլա #գուի #գրաֆիկական֊ինտերֆեյս #գրաֆիկա #ծրագրաւորում
օքսֆորդում «քոմփիւթը սայնս ընդ ֆիլոսոֆի» կուրս կայ։ https://www.youtube.com/watch?v=NqwFs8EUXyc
#փիլիսոփայութիւն #ծրագրաւորում
ճաշողը փոխել է իր նկարը։ ահա։
#նկար #դինո #ծրագրաւորում
ռանթայմ օվերֆլոու ստուգման գինը՝ http://danluu.com/integer-overflow/
#ծրագրաւորում
«քիփ մուվին օն»
#էկրանահան #կեանք #ծրագրաւորում #ուտենց #կոդ
ինչ է իւենթը ու ինչով են այն ուտում։ աւելի ճիշտ ինչպէս պատրաստել քոլբեք ֆունկցիա։
https://github.com/norayr/events_in_oberon/
#օբերոն #քոլբեք #ծրագրաւորում #թեստ
կայ #callback եւ կայ #teaseback
#յարաբերութիւններ #հարաբերություններ #սէր #ուտենց #ծրագրաւորում
պարզւում է, քիւթի փրոփերթիները դինամիկ են։ իրանց կարող ես ռանթայմ աւելացնել QObject::setProperty()֊ով ։
ու իրանք տողով են իդենտիֆիկացւում, գնում է, ստրինգով լուքափ է անում թեյբլի մէջ, որ գտնի։ քանի որ լեզուի մէջ փրոփերթի չկայ, դա արդեն կոմպիլյատորի գործը չէ։
բացի դրանից, սիգնալն ու սլոտը առանձին ես նկարագրում, ու եթէ մէկի դէպքում տաս տող, իսկ միւսի՝ թիւ ու քոնեքտ անես իրանց, քոմփայլ թայմ ոչ մի սխալ չի լինի։ միայն ռանթայմ։ իսկ հինգում ինչ֊որ ձեւ են արել, որ արդեն քոմփայլ թայմ լինի սխալը բռնել։
#փաստօրէն #կոստիլ #անկապ #ծրագրաւորում #ուտենց
իսկ ո՞նց են պահում գաղտնագրերը, եթէ ոչ բաց տեքստով։
— եթէ գաղտնագրով կրիպտաւորեմ, ապա մարդը մէկ է պէտք է գաղտնագիր հաւաքի։
— եթէ բանալիով, ապա ո՞րտեղ պահել բանալին։ եթէ ծրագրի հետ է գալիս, կարելի է այն հանել ծրագրից, եթէ ծրագիրը ասենք առաջին անգամ միանալիս գեներացնի բանալի, մէկ է որտե՞ղ պահել։
— եթէ ինքս մի ձեւ իրականացնեմ, կոդից երեւում է, քանի որ ազատ ծա է գրածս։
այլ վարկածնե՞ր։ մտածում եմ, երեւի անկապ չէ որ փիջինը բաց տեքստով է պահում։
#ծրագրաւորում #հարց
պատահաբար լսեցի պայթած խողովակի մասին խօսք, ու յիշեցի «Մայրաքաղաք» ծրագիրը։ Այն գնում էր Հ2֊ով իննսունականների սկզբին։ Այո, պետականի երկրորդ ալիք կար, այն Ռոբերտի ժամանակ աննկատ դարձաւ «Պրոմեթեւս» եւ ցնդեց։ Ինչեւէ։ Յիշեցի, քանի որ այդ ծրագրով գրեթէ ամէն օր ինչ֊որ մի պայթած խողովակի մասին ռեպորտաժ էին անում։ ։Ճ
Այդ ծրագրի հետ իմ ամենավառ ասոցիացիան՝ շապիկն էր։
Սովորաբար, դեռ սովետի ժամանակներից, հայկական հեռուստատեսութեան ծրագրերի շապիկները, այն որ հիմա կոմպոզիտինգով հեռուստադիզայն են արւում, այդ շապիկները պարզապէս նկարչի պատրաստած պաստառներ էին։ Խցիկը նկարում էր այդ պաստառը մի երեսուն վայրկեան, կամ մէկ րոպէ, երաժշտութիւն էր հնչում, եւ հաղորդումը սկսւում էր։
Իսկ «Մայրաքաղաք»֊ը նորաձեւ էր, քայլում էր ժամանակի հետ համընթաց։ ։Ճ
Իրենց շապիկը էլի նկար էր։ Օպերայի շէնքն էր, եւ հետեւից մեծ կարմիր արեւ։ Բայց համակարգչով նկարուած։
Այն էլ շապիկը իրականում նկարելու պրոցեսն էր ցոյց տալիս։ Յայտնւում է այս գիծը, յետոյ այն, յետոյ այս շրջանը, եւ յետոյ կարմիր գոյնով դանդաղ դանդաղ, տող տողի ետեւից լցւում է գոյնով։
Իհարկէ, սա անիմացիա չէր։ Անիմացիան այն է, երբ արդեն լցուած պատկերը կարողանում ես տեղափոխել։ Իսկ իրենք նոյնիսկ չէին կարողանում արագ լցնել այն։ Զարմանալի չէ, հիմա կը բացատրեմ։
Ես անմիջապէս ճանաչել էի, որ սա արուած է ԲԿ֊0010 համակարգչով։ Եւ գոյներից, եւ այդ լցնելու ալգորիթմից։
Վիլնիւս Բեյսիկը ուներ կարծես PAINT հրաման, ու այն շատ դանդաղ էր աշխատում։ Օղակը գոյնով լցնելը կարող էր տեւել րոպէներ։ Օղակի կենտրոնական առանցքից ձախ էր գնում, մինչեւ պիքսել գտնի, գիծ էր քաշում, յետոյ աջ էր գնում, գիծ քաշում, իսկ յետոյ նոյնը անում յաջորդ տողում։
Իսկ ես արդեն յայտնաբերել էի նկարելու, լցնելու արագ ձեւեր։ Նախ, պէտք էր աշխատել ոչ թէ բեյսիկի հրամաններով, ու/կամ իր սուբռուտինաները օգտագործելով, այլ ուղիղ վիդեո յիշողութեան հետ։ Ու իրականացնել սեփական ռուտինաներ։
Մի անգամ պատահաբար յայտնաբերել էի z80֊ի LDIR ինստրուկցիան որը կարողանում էր ակնթարթօրէն տեղափոխել յիշողութեան բլոկեր։ Իհարկէ, դոկումենտացիա չունէի։ Յայտնաբերել էի խաղերի մեքենայական կոդերը զննելով։ (դիզասմ էլ շատ աւելի ուշ ունեցայ ու իմացայ որ մնեմոնիկան LDIR է կոչւում)։ Փորձարկել էի, ինձ մօտ ստացւում էր արագ էկրանով շարժել, ինչպէս հիմա ասում են, սպրայտեր, կամ այնպէս անել, որ էկրանին մի ամբողջ հատուած յայտնուի ակնթարթօրէն։ Նաեւ, իրականացրել էի լցնելու իմ վարկածը։
Որն արագ էր։
Ու ես հասկանում էի, որ ես այդ շապիկը աւելի լաւ կանէի։ Որ մարդիկ փոխարէնը դիտեն, ինչպէս է նկարը նկարւում, ասենք մէկ րոպէ, դիտեն ինչպէս է արեւը շարժւում, օրինակ, այսինքն ինչ֊որ անիմացիա, ոչ թէ նկարուելու պրոցեսը։ Նաեւ ինձ թւում էր, որ աւելի սիրուն բան կարելի էր նկարել։ Շէնքը մեծ էր, արեւը՝ մեծ էր, պատկերը խեղդում էր։ Իսկ ես տեսել էի որ խաղերի շապիկները շատ սիրուն էին արւում, ու ոչ այդպէս։
Բայց ո՞վ ինձ գիտեր։ Ես ընդամէնը դպրոցական էի, ով իր սենեակում փորձեր էր անում, ու անչափ ուրախանում էր ինչ֊որ բան բացայայտելով։ Ես չէի կարողանում նոյնիսկ կիսել այդ ուրախութիւնը այլ մարդկանց հետ։
Հիմա, երբ կայ ինտերնետ, ես կարող եմ գրել այդ մասին։ Յայտնել աշխարհին։ Բարեւ, աշխարհ։ Այդ պատճառով ոմանք ինձ գիտեն՝ նա այսպիսի բաներ է անում։ Բայց միեւնոյն է, ոչ մէկ չի կիսում իմ ուրախութիւնը։
Հիմա շատ լաւ գիտակցում եմ, որ ինձ պէտք չեն մարդիկ, ընկերներ, յարաբերութիւններ, որպէսզի ես լաւ լինեմ, օկ լինեմ, երջանիկ լինեմ։
Ինձ պէտքք են մարդիկ, ում հետ ես կարող եմ կիսել իմ ուրախութիւնը, երջանիկ լինելը։ Օրինակ, թէկուզ փոքր բացայայտումներից, կամ իմ արած գործից։ Մարդուն հասկանալը այդ մասին է, երբ կարողանում ես կիսել իր ուրախութիւնը կամ տխրութիւնը։
եւ այդպէս
ինտերֆեյսի դիզայնը ահաւոր մանրակրկիտ գործ է։ ու պարզւում է հաւէս կարող է լինել։ ։Ճ առաւել եւս եթէ նոյնիսկ կոճակները ինքդ ես նախընտրում նկարել, բոլոր մանրուքները հաշուի ես առնում, ասենք ստուերը, վարքագիծը, որ ամէնը կենդանի լինի։ այնքան փորձ եմ արել, այնքան բան է կուտակուել, որ երեւի ժամանակ չեմ ունենայ գրի առնելու, աւելի հետաքրքիր է շարունակել գործը, քան այդ մասին գրել։
#դիզայն #ծրագրաւորում #հաւէս ###
էն հաւէս պահը, երբ գիտես․ միեւնոյն է մի քիչ յետոյ սիրուն լուծում ես գտնելու։ ։Ճ
#ծրագրաւորում
ութ ակնարկ, ինչպէս արագացնել անդրոիդ էմուլյատորը յօդուածի առաջին կէտն է.
— օգտագործէք իրական սարք։
#մէջբերում #քաղուածք #ծրագրաւորում #հետազօտութիւն
Անգլերէնը՝ ծրագրաւորման մասին խօսելու ընդունուած լեզու է, բայց ոչ՝ ծրագրաւորելու։ «BEGIN», «END» «THEN» բառերը՝ մաթեմատիկական նշաններ են։
Շատ լաւ է, երբ գերմանացին գիտի երկու լեզու՝ գերմաներէն եւ անգլերէն։ Վատ է, երբ մոռանում է, թէ որ լեզւով է այս պահին խօսում։
Եւրոպան այն տեղն է, ուր մարդիկ ոգեւորւում են գաղափարներից։ Ամերիկեան ազդեցութիւնը բերում է նրան որ միակ մոտիւացիան դառնում է փողը։
Նիկլաուս Վիրտ
#գերմաներէն #անգլերէն #ծրագրաւորում #մաթեմատիկա #լեզու #մոտիւացիա #վիրտ #եւրոպա
սի պլիւս պլիւսը ստանդարտ, մեծ ծիծիկներով, լայն շրթունքներով ծիտ է, էն որ համարւում է տղամարդու իդեալ, ու եթէ դու իրա պէս աղջիկ չունես, դու լուզեր ես, ու դու չես ձգել։ նա նաեւ ունի հարուստ ծնողներ, ժառանգութիւն, կապեր։
իսկ ես, եթէ եւ մի քանի գայթակղութիւն ունեցել եմ դրա մէջ խորանալու, ծանօթացել եմ, բայց մէկ է․
սիրում եմ եւ շարունակում եմ խորանալ իմ նիհար ու կոկիկ, զանգուածների կողմից չգնահատուած, ոչ շատ բարձրահասակ, բայց երբեք կրունկներով (հենակներով) եւ երբեք վուլգար, միշտ ճաշակով հագնուող, հմայիչ ու հարազատ օբերոնի մէջ։
#ծրագրաւորում #օբերոն #աղջիկ #յարաբերութիւն #սէր
#փաստօրէն, այստեղ՝ https://www.cs.utexas.edu/users/EWD/transcriptions/EWD08xx/EWD888.html Դեյքստրան գրում է այն մասին, ինչպէս է նա ապրել Վիրտի տանը, ու հիացել Վիրտի գործերով։
#դեյքստրա #վիրտ #ծրագրաւորում
Ժապաւէնով լուսանկարելը նման է թղթի վրայ ծրագիր գրելուն։ Չես կարողանում նոյն պահին աշխատեցնել, համոզուել, ճիշտ է աշխատո՞ւմ թէ՞ ոչ։ Որպէս կանոն սխալ է չէ՞ լինում։ Դէ մեզ մօտ, ոչ թէ ասենք Վիրտի։ Քանի որ ինչ֊որ մանրուք միշտ հաշուի չես առնում։ Այնպէս էլ լուսանկարում՝ կամ մի բան այնպէս կտրած չէ, կամ պէտք էր խցիկը մի քիչ ձախ շարժել, եւ այլն։
Թուային խցիկը թոյլ է տալիս տեղում վրիպազերծել (դեբագ անել), տեսնել ո՞նց է, ու կրկին նկարել։
Եթէ դա բեմադրութիւն է, գուցէ լաւ ստացուի։
Բայց դրանով է լուսանկարչութիւնը տարբերւում, որ կարող է եւ բեմադրութիւն չէ։ Ու նոյնիսկ եթէ քաղաքի, փողոցի նկար չէ, ուր արդեն պահն անցել է, այլ, ասենք բնանկար է, այդ պահը կրկին կարող է անցնել։ Քանի որ ամպերը, արեւը, անձրեւը, ստեղծում են անկրկնելի մի տեսարան, որը կարող էլ երբեք չլինի։
Այդ պատճառով ֆոտո անելիս, աւելի, քան ծրագրաւորման մէջ, պէտք է «թղթի վրայ գրուած ծրագիրը» մտքում լաւ վերլուծես, ու արագ։ Քանի որ վրիպազերծելու հնարաւորութիւն, մեծ հաշւով, սովորաբար չունես։ Թէկուզ եթէ թուային խցիկով ես նկարում։
եւ այդպէս
ասք լուսանկարներ վրիպազերծելու մասին՝ http://norayr.arnet.am/weblog/2014/09/18/ասք-լուսանկարներ-վրիպազերծելու-մասի/
#լուսանկարչութիւն #ֆոտո #արուեստ #արհեստ #ծրագրաւորում
եթէ նա մտածում է, որ ծրագրաւորումը հեշտ է, նշանակում է, նա կամ լուրջ գործ չի արել, կամ շատ խելացի է։ երկրորդը հազիւ թէ։ ։Ճ #ուտենց #ծրագրաւորում
ահա, սենց հաբրական գրառում http://norayr.arnet.am/weblog/2014/09/09
#բառարան #հայերէն #հաք #ծրագրաւորում #ուտենց
դեռ այս յղումը թողնեմ, յետոյ մանրամասն կը բացատրեմ ինչ է ։Ճ https://github.com/norayr/armdicto-hack
ահա
#բառարան #հայերէն #հաք #ծրագրաւորում #ուտենց
added an example from Reiser’s book. IFS, Iterated Function System.
@{ Փրչրթան✱ Թանաքեան ; norayr@spyurk.am} 28.08.2014, 14:49:37
աւելացրի Ռայզերի գրքից մի օրինակ։
#վօկ #վիշապ #ծրագրաւորում #նկար #գրաֆիկա #մաթեմ
#voc #vishap #oberon #programming #graphics #math
աւելացրի Ռայզերի գրքից մի օրինակ։
#վօկ #վիշապ #ծրագրաւորում #նկար #գրաֆիկա #մաթեմ
տեսէք, Հայաստանում օբէկտ֊կողմնորոշուած քաղաքաշինութիւն ու ճարտարապետութիւն է, դուրներդ գալի՞ս է։ բա ասում էք։
#ծրագրաւորում
#քաղաքաշինութիւն #ճարտարապետութիւն #երեւան #հայաստան
http://www.youtube.com/watch?v=ZiKWZySzKrM
#վիշապ #օբերոն #աւբերոն #ինֆերնո #պլան9 #օպերացիոն֊համակարգեր #ծրագրաւորում #barcampevn14
#փաստօրէն, պոլիմորֆիզմը Լիմբո֊ում յիշեցնում է շաբլոններ՝ http://9fans.net/archive/2004/05/373
#լիմբո #ինֆերնո #պոլիմորֆիզմ #ծրագրաւորում
բաց լինուքս համատեղելի երկաթ ընդամենը 22 եւրո֊ով
գիթհաբ էջ
հեյ, @{Artin Barseghian ; artin@spyurk.am} @{Harut Martirosyan ; inteloid@spyurk.am} @{serojik91@spyurk.am ; serojik91@spyurk.am} @{Վահագն Պողոսյան ; vahagn34@spyurk.am} կարող է ձեզ հետաքրքրի։
#լինուքս #երկաթ #տպասալ #ծրագրաւորում #նախագծում
նեթսուկուկու֊ն պորտ արեցին վալա֊ի
#ապակենտրոնացում #վալա #նեթսուկուկու #ծրագրաւորում
#ասք կրթական ցուցահանդէսի մասին
#կրթութիւն #ցուցահանդէս #ինսթիգեյթ #մերգելեան #այբ #ֆիզբաթ #ռոբոտներ #քարտէզ #աղուէս #կրիայ #այգեստան #բերձոր #գուգարք #կարգիչ #ծրագրաւորում #կոպտեր #անօդաչու֊թռչող֊սարքեր #աթչ #արմթաբ #դպրոց #լուսանկարներ #երեւան
բայց եթէ դուք դանդաղ էք գրում, դա դեռ չի նշանակում, որ ձեզ մօտ այս դէպքն է։ ։Ճ
Վերջերս նկատում էի, որ ինչքան շատ եմ փորձ ձեռք բերում, այնքան շատ է նախագծերս աւարտելու կամ որոշակի խնդիրները լուծելու համար ժամանակ պահանջւում։ Ես դեռ չեմ զառանցում։ Պարզապէս կարողանում եմ տեսնել եմ այնքա՜ն տարբեր հնարաւորութիւններ, ուր ինչ֊որ բան կարող է սխալ ընթանալ։ Եւ հնարաւոր սխալները, որ ես յիշում եմ ու գիտեմ, գնալով շատանում են։
Պարզ օրինակ․ առաջ այսպէս էր՝ «լաւ, գրենք նիշք»։ Իսկ հիմա ես անհանգստանում եմ իրաւունքների, արգելափակման, զուգահեռութեան, ատոմար գործողութիւնների, տարբեր նիշքային համակարգերի, պանակում բացած նիշքերի քանակի, ժամանակաւոր նիշքերի կանխատեսելի անունների, իմ PRNG֊ի պատահականութեան որակի, գործողութեան կէսին սնուցման սակաւութեան, հասկանալի API֊ի, նրա համար, ինչ ես անում եմ, յստակ ձեռնարկների, եւ այլն, եւ այլն։
#programming #analysis #paralysis #experience #ծրագրաւորում ###
բայց եթէ դուք դանդաղ էք գրում, դա դեռ չի նշանակում, որ ձեզ մօտ այս դէպքն է։ ։Ճ
Վերջերս նկատում էի, որ ինչքան շատ եմ փորձ ձեռք բերում, այնքան շատ է նախագծերս աւարտելու կամ որոշակի խնդիրները լուծելու համար ժամանակ պահանջւում։ Ես դեռ չեմ զառանցում։ Պարզապէս կարողանում եմ տեսնել եմ այնքա՜ն տարբեր հնարաւորութիւններ, ուր ինչ֊որ բան կարող է սխալ ընթանալ։ Եւ հնարաւոր սխալները, որ ես յիշում եմ ու գիտեմ, գնալով շատանում են։<br><br>
Պարզ օրինակ․ առաջ այսպէս էր՝ «լաւ, գրենք նիշք»։ Իսկ հիմա ես անհանգստանում եմ իրաւունքների, արգելափակման, զուգահեռութեան, ատոմար գործողութիւնների, տարբեր նիշքային համակարգերի, պանակում բացած նիշքերի քանակի, ժամանակաւոր նիշքերի կանխատեսելի անունների, իմ PRNG֊ի պատահականութեան որակի, գործողութեան կէսին սնուցման սակաւութեան, հասկանալի API֊ի, նրա համար, ինչ ես անում եմ, յստակ ձեռնարկների, եւ այլն, եւ այլն։
աղբիւր
#programming #analysis #paralysis #experience #ծրագրաւորում ###
Արմեն Բադալեանի զրոյցները Սի լեզուի մասին՝ https://github.com/armenbadal/notes-on-c
#ծրագրաւորում #սի #զրոյցներ #տտ #գիրք #դասընթաց ###
ասք վիշապին մակում բնակեցնելու մասին՝ http://norayr.arnet.am/weblog/2014/03/20/ասք-վիշապին-մակում-բնակեցնելու-մասին/
#voc #oberon #clang #vishap #վիշապ #հետազօտութիւն #ասք #ծրագրաւորում #ուտենց
իմ ամենասիրած սքրինսեյւերի յեղինակին գտայ համացանցում
found the author of my favourite screensaver on the web: http://www.complexification.net/gallery/
#screensaver #programming #screenshot #xscreensaver #software #graphics #opengl #ծրագրաւորում #ծա #գրաֆիկա #էկրանահան
ուրեմն, այսօր քննարկում էին, որն է «ճիշտը», զրոյից ֊ ինպես սի֊ում, թե մեկից ֊ ինչպես պասկալ֊ում հաշվել։ Դեյկստրայի թղթի շեյրի պատճառով։
ուզում եմ ես էլ արտահայտվել։
Առաջինը, ոնց էլ հաշվեն, լավ է մի ձեւ, որովհետեւ այլապես լրիվ ես խճճվում։
Երկրորդը, Վիրտը ինքն է հրաժարվել պասկալի մոտեցումից, ու Մոդուլայից սկսած արդեն զրոյից է հաշվում։
Երրորդը, եթե սկսենք մաթից, ապա կա մի քանի մոտեցում ֊ օրինակ ռուսական մաթ դպրոցը համարում է որ զրոն բնական թիվ չէ, իսկ գերմանական մաթ դպրոցը ֊ որ զրոն բնական թիվ է։ Ես, բնականաբար գերմանացիների կողմից եմ։ (:
Կամ այսպես՝ կա երկու մոտեցում սահմանել բնական թվերը
֊ թվարկելով ֊ առաջինը, երկրորդը, երրորդը
֊ նշելով ասենք իրերի քանակը ֊ չկա իր, մեկ իր, երկու իր․․․
Ինձ թվում է բնական, որ բացակայությունը էական հատկանիշ է։
Իսկ ինֆորմատիկայում, ես կարծում եմ, ավելի նպատակահարմար է զրոյից հաշվել։ Պարզ պատճառով ֊ մենք աշխատում ենք հիշողության օֆսեթների հետ։ Այսինքն երբ պետք է դիմել կոնկրետ դաշտին, կամ էլեմենտին, հաշվում ենք շեղումը հիշողության, ստրուկտուրայի սկզբից։
Ու պարզ է որ ունենում ենք զրոյական շեղում։ Ասենք դաշտը կարող է զրոյական օֆսեթ ունենալ։ Ուրեմն ոչինչը ինչ֊որ բան նշանակում է մեզ համար։ Այսինքն, nothing tells something ֊ ինչպես ասում էր Հաուսը։
Բացի դրանից, այսպես հաշվելը ավելի արագ է(էժան է), որը նույնպես լավ դիզայնի նշան է։
Իսկ Դեյկստրայի մասին ֊ ես կարծում եմ, որ առանց նրա ինֆորմատիկան բնավ չէր լինի այնքան գրավիչ, հավես, ռոմանտիկ, ու այնքան գիտական։ Այսինքն նա այն քչերից է ով գիտական մոտեցում է ցուցաբերում։
Օրինակ այն, որ հիշողությունը պետք է տիպավորված լինի, ամենակարեւոր մտքերից է։
Դե գոութուի մասին ես կարծում եմ խոսելն էլ է իզուր։ Որովհետեւ կոդը միայն կատարվող ծրագիրը չէ, այլ մտքերի ֆորմալ նկարագրություն է։
Նրա համար, որ մարդը կարդա ու հասկանա ինչ է գրված, նրա համար, որ կոմպիլյատորը կարողանա սխալներ գտնել։ Իսկ ոնց անցար գոութու֊ին ֊ կոմպիլյատորը ձեռքերը լվանում է, քաշվում է մի կողմ։ ի՞նչ իմանա ինչ է մտքիդ։ Նույնը չտիպավորված հիշողություն օգտագործելիս։
Էլ չեմ ասում որ Ճաշող Փիլիսոփաների ու Քնած Վարսավիրների պես հավես անտրոպոմորֆիզմ ումի՞ց, եթե ոչ Դեյկստրայից։
ա նապոսլեդոկ այս տեսանյութը՝
ավելի ճիշտ ֊ հենց այստեղից։
Կնութ՝ մենք Էդսգերի հետ սիրում էինք չորս ձեռքով նվագել, ու ես ոչ մի կերպ չսովորեցի, որ երբ նվագում էինք Հայդնի վալս, նա չէր հաշվում՝ մեկ, երկու, երեք, մեկ երկու երեք, նա ասում էր՝ զրո, մեկ, երկու, զրո, մեկ, երկու։
ու տենց
֊ Ի՞նչ գրենք։
֊ Կայք։
Իմ մոտ տպավորություն է, որ հիմա ով ինչ անում է՝ դա «վեբ սերվիս» է։
Ոմանք, ճիշտ է, կենտրոնանում են այֆոն/անդրոիդ նախագծման վրա, ու ես դա բացատրում եմ նրանով, որ մոբայլ շուկան այն տեղն է, ուր անհատ ծրագրավորողները (դե՞ռ) կարողանում են իրենց գտնել։
Բայց մտահղացումների մեծ մասը վերաբերվում են վեբին։ Օրինակ, սթարթափ ուիքէնդին բոլոր ներկայացված պրոեկտները վեբ էին։ Ես այնտեղ հանդիպեցի ծանոթներիս, ում գիտեմ որպես «նեյթիվ» նախագծողներ, բայց նրանք նույնպես ներկայացրել էին վեբ պրոեկտ։ Բողոքեցին, որ հեշտ չէ սուզվել անծանոթ միջավայր, բայց դա իրենց չխանգարեց հաղթել ։Ճ (գուցե բնութագրող է որ նեյթիվ նախագծմամբ զբաղվող մարդիկ ունեցան ավելի լավ գաղափար)
Հիմա ինչպե՞ս է լինում, որ բոլորը զբաղվում են վեբով՞։ Գուցե դա առաջին հայացքից թվացող թեթեւ տեքնոլոգիանե՞րն են (ասենք պհպ)։
(Ասում եմ թվացյալ թեթեւ, որովհետեւ իմ համար տեքնոլոգիաները, որ փորձում են «թեթեւացնել» գործը, ու թաքցնում են օգտագործողից որոշակի մանրուքներ այդ թեթեւացնող շերտի հետեւը, դրանով իսկ անում են այնպես որ ինձ ավելի բարդ լինի։)
Իսկ օրինակ, ինչպե՞ս է լինում, որ համակարգի մեջ փոփոխություն անելու միտք չեն ունենում, բայց կայքի միտք ունենում են։ Գուցե, որովհետեւ չգիտեն, թե ինչ փոփոխություն է կարելի անել, որ ավելի լավ լինի, որովհետեւ նույնիսկ չգիտեն, որ եղածը լավ չէ։
Գուցե որովհետեւ նրանք ապրում են սեփականատիրական ծրագրերի աշխարհում, ուր, օրինակ կա windows որի հիշողության կառավարչի կոդը չես նայի, որ հասկանաս ինչպես է գրված, ու ինչպես կարելի է լավացնել։
Կարող է այն պատճառով, որ նրանք ապրում են աշխարհում, ուր կան սարքերի արտադրողի կողմից տրամադրված սեփականատիրական դրայվերներ։ Ու հետո այդ ծրագրավորողները ստիպված են լինում փոխել երկաթը, որովհետեւ այս սարքի համար արտադրողը տրամադրել է, ասենք xp֊ի դրայվեր, բայց ոչ 7֊ի, որ նոր (սակայն ոչ ավելի լավ) սարքերը ավելի շատ վաճառվեն։ Իսկ նրանք չգիտեն ինչպես գրել դրայվեր, ու չգիտեն որ կա rolling release համակարգեր, ուր առհասարակ չի լինում release բայց լինում են հաճախակի փոփոխություններ, քանի որ լավացումը եւ հետ համատեղելիությունը անհամատեղելի են։
Վերջերս զրույցի մեջ հնչեց՝ «եթե դու mysql֊ի կոդը նայած լինեիր, այն կյանքում չէիր օգտագործի»։ (Ի դեպ, ես դբ֊ներից չկամ, բայց եթե նրանցով գրեի, ապա firebird կօգտագործեի)
Երբեմն ես ասում եմ՝ դե նա ծրագրավորող է։ Նկատի ունեմ՝ ցանցառ չէ, կամ հաքեր չէ։
Հիմա բացատրեմ։ Մի անգամ ընկերներիս նշանդրեքին (դե էլ որտեղ այդպիսի մարդ կհանդիպես) ես ծանոթացա մի տղայի հետ, ով ասաց որ նկարիչ է։ Ինձ հետաքրքիր էր, ու ես հարցեր էի տալիս իր աշխատանքի վերաբերյալ։ Ու անկեղծ զարմացել էի, երբ իմացա, որ նա գնում է աշխատանքի։
Այսինքն նա ամեն առավոտ, իննից վեցը գնում է «ցեխ» ուր պատրաստում է հայտնի նկարների պատճեներ։ Հետո դրանք ուղարկում են Եւրոպա, ուր վաճառում են որպես ձեռքի գործ, որը ռեպրոդուկցիայից ավելի թանկ է։ Հետո էլ այդ տղան շուտ գնաց, ասաց պետք է շուտ արթնանամ, աշխագանքի եմ։
Նկարիչ, ով աշխատո՞ւմ է։ Իմ համար այդ երկուսը այնքան էլ համատեղելի չէին։ Չէ, ես գիտեի, որ կան, այսպես ասած ոչ ստեղծագորշող նկարիչներ, ով նախընտրում է զբաղվել ռեստավրացիաներով, բայց ոչ իրականացնել իրենց միտքը, որովհետեւ միտք չունեն։
Ու եթե նկարիչների մոտ միտք չունենալը նորմա չի ընկալվում, ապա ծրագրավորողների մոտ միտք չունենալը՝ նորմա է։ Նրանց մեծ մասը գնում են աշխատանքի ու գրում են «ձաձա»֊ների համար սոֆթ։ Եթե աշխատանքից հետո ինչ որ բան են անում, ապա դա սովորաբար փող աշխատելու, այլ ոչ թե միտք, գաղափար իրականացնելու համար է։
Այսինքն փողի, ոչ թե սիրո, հետաքրքրության պատճառով է։
Իսկ օրինակ plc նախագծման սոֆթ գրում են նրանք, ով թեմայի մեջ են։
Մասնավորապես դա բացատրվում է նրանով, որ մարդկանց մեծ մասը հետաքրքրվող, ու խորացող չեն։ Այդ մասին ես դեռ կգրեմ։
Բայց այլ պատճառը, որի մասին հիմա գրում եմ՝ չիմացությունն է, ոչ զարգացած լինելն է։
Այսինքն մարդիկ պարզապես չգիտեն, չեն պատկերացնում ինչպիսի խնդիրներ կարող են լինել, ու ինչ լավ բան կարելի է անել, եթե դա կայք չէ։
Նրանք չգիտեն ինչպես է աշխատում համակարգը, քանի որ իրենց համակարգը փակ է, ու նրանք չեն զգում որ կարող են այն փոխել, կամ որոշակի ներդրում ունենալ։ Մոտավորապես այնպես, ինչպես Սովետի ժողովուրդը չէր զգում, որ կարող է ազդել օրենքների վրա։
Ու այստեղ ես կարծում եմ, որ շատ լավ է, երբ ծրագրավորողները օգտագործում են ազատ ԾԱ ոչ միայն այն պատճառով որ ազատ է, ու հետեւաբար լավը, ոչ միայն այն պատճառով որ այդ գաղափարը իրենց մոտիկ է, այլ եւ այն պատճառով որ դա ավելի է զարգացնում, քան փակ աշխարհը, թույլ է տալիս տեսնել ինչպես է ամենը արված, ու երբեմն պահանջ զգալ դա լավացնելու, տեսնել ինչ կարելի է անել
ու տենց
այս փոսթի մոծիվներով։
Քոմփայլերը, ընկերներ, դա մտքերի եւ ցանկությունների իրականացման գործիք է։
Սովորաբար միտքը, որը տալիս են քոմփայլերին, որոշակի ստանդարտ ձեւով արտահայտված է՝ գրավոր, այս կամ այն լեզվով։
Այդ լեզուները երբեմն անվանում են համակարգչային լեզուներ, որը սխալ է։ Որովհետեւ համակարգիչները այդ լեզուներով չեն մտածում։
Երբեմն անվանում են ծրագրավորման լեզուներ, որը այդքան էլ արտահայտիչ չէ։
Իրականում դրանք միտք արտահայտելու լեզուներ են։
Այսպիսով, քոմփայլերը վերցնում է գրավոր արտահայտված միտքը, եւ այն հասկանալով ստեղծում է, քոմփիլիացիա է անում ելաքյին արտադրանք՝ օրինակ կիրառելի ծրագիր։
ՏՏ ոլորտի մասնագետների գործը դեռ հեշտ է։
Որովհետեւ սխալները միշտ կարելի է ուղղել եւ ռեքոմփայլ անել միտքը։ Դա բերում է անպատասխան կոդագործների առաջացմանը, ովքեր գրելիս չեն մտածում, իսկ հետո, երբ սխալները հայտնաբերվում են, փորձում են ուղղումներ ավելացնել։ Դրանք, ինչ խոսք, լավ ծրագրամիստներ չեն բնավ։
Պատկերացնու՞մ եք եթե ճարտարապետները նախագիծ պատրաստելիս չմտածեին, իսկ հետո տարբեր ձեւի հենարաններ ավելացնեին, որ կառույցը չփլվի։ Ոչ, ճարտարապետները ստիպված են ուշադիր լինել մտքերը մտածելիս եւ արտահայտելիս, որովհետեւ քոմփայլ անելու պրոցեսը շատ ավելի բարդ է իրենց դեպքում։
Օրինակ, ՕփենՕֆիսը իմ կոմպի վրա կոմպիլիացիա է լինում վեցը ժամում։ Շենք կառուցում են անհամեմատ ավելի երկար։
Իսկ հոմո սափիենս տեսակի կենդանիները գենետիկ կոդից քոմփայլ են լինում գրեթե մեկ տարի։ Ի դեպ, հոմո սափիենս նշանակում է «բանական մարդ»։ Ի նկատի ունենալով որ օրինակ շիմպանզեները այդքան էլ բանական մարդ չեն, սակայն մարդ են։
Կան նաեւ ֆունկցիոնալ լեզուներ, որոնք մի կողմից մաթեմին շատ մոտ են, սակայն մյուս կողմից դրանք օգտագործելիս անհնար կամ շատ դժվար է լինում նախագծի սխալները գտնել դեռ գրելու ընթացքում։ Այդ լեզուների երկրպագուները սովոր են արդեն իսկ կառուցված շենքեր փոփոխել։
Ես այդ ոճին սովոր չեմ, սակայն։ Ինձ թվում է որ մաթեմից ավելի հեռու, իմպերատիվ լեզուները իմ իմացած մակրո աշխարհի մոդելները նկարագրելու համար ավելի պիտանի են։
Այնպես որ, ինչպես ուսուցանում է հին չինական իմաստությունը՝ զգոն եղեք մտքերը ձեւավորելիս, նրանք կարող են քոմփայլ լինել իրագործվել։
ու տենց
I want to avoid implementation inheritance in CP programs.
What are the language features I have to rule out ?
Is it just the super call which I have to avoid or something else ?
Give priority to composition over inheritance.
Inherit, if you must, only from ABSTRACT classes. No EXTENSIBLE types or methods.
Methods should be ABSTRACT, EMPTY or FINAL.
No supercalls, use ordinary exported procedures instead (this is always possible).
Avoid exported fields, use functions instead (better evolvability).
Stick to sequential data structures and algorithms whenever possible (scalability),
exploit carrier-rider to the full — hide data access behind abstract riders.
Your specific data processing algorithms should interface to abstract riders rather than carriers.
Give priority to text-as-interface over forms.
Avoid anything fancy or smart or optimized — that’s Devil tempting you.
Once again: f*** optimizations!
from the blackbox component pascal mailing list
und so weiter
Մտածե՞լ եք ինչու «իրենց» մոտ լիքը բան արվում ա, ու տեղի ա ունենում, իսկ մեր մոտ, ինչ որ մի տեսակ չի արվում։
Ասենք Արթինը պետք է գար Իրանից որ ռոբոտիքսը սկսվեր։
Հաքաթոնը [hackathon] տոնին հակասող միջոցառում ա երբ հանգստյան, տոնական օրը լիքը ցանցառներ հանգստանալու եւ տոնելու փոխարեն հավաքվում են ու ինչ որ լավ բան անում/գրում։
Ասենք այս անգամ Ինս[ծ]իգեյթում հավաքվել էին ու գրում էին զուգահեռ ծրագրավորման համար ազատ գրադարան․
– So, what can cause Hackaton, Pair programming, and other symptoms? Differential!
– Need in a simple abstraction layer for different concurrent programming paradigms?
– Could be. Check the patient’s home, find what he used to consume, test the blood brain thread synchronization barrier, and ask whether he had an affair rendezvous. Also do a full body CSP
– MRI shows nothing. We’ve put patient in coma, in order to test readers and writers throughout his memory.
– Comon we better take a break and go eat pasta
– Bring some for a patient, otherwise he will die from starvation.
[Pager beeps]
The patient enters a critical section, bring the paddles… charging, clean!
– Can you hear us? Almost mutex changes nothing. Deadlock changes everything. You’re healed. Just never smoke in the future and you’ll be ok.
ու տենց
Մաեմոյի դեվերից մեկն ա գրում՝
The announcement mentions MeeGo only marginally, as a “longer-term market exploration”, and ends the paragraph with “Nokia still plans to ship a MeeGo-related product later this year”. This sounds to me like: we won’t market any MeeGo devices in parallel with Windows Phone ones, not to hinder the latter’s success, but we’ll release the MeeGo product we’re currently working on before downscaling MeeGo back into the R&D division.
No matter how wrong my interpretation might be, let’s try to collect a few facts:
MeeGo is ready, it’s not an R&D project: a MeeGo phone will be released
Nokia’s primary platform for the middle/long term is Windows Mobile
Meego will become, within Nokia, an R&D project at best
I feel confused and fooled. Business logics are floating several metres above my head, and I cannot understand what’s the point of saying that MeeGo will be an R&D project when it’s not. To me, it’s like taking a teenager and trying to squeeze him into a baby’s cradle. Either you kill him more or less explicitly, or you take him out, let him grow and give him a chance to be a hero. We are going to have the best phone in the market this year. It might not be perfect, as the N900 clearly wasn’t, but all the premises for a brilliant future are there. And people will love it, as they loved the N900 despite it being far away from the quality standards we aspired to achieve and despite a zero-digits investment on marketing. Maemo won, against all odds.
Նաեւ ասում ա որ նոր գործ ա փնտրում, որովհետեւ հավես չունի վինդովսի համար սոֆթ գրել`
if I had to choose between developing open-source software on top of a closed platform and developing closed-source software on top of an open-source platform, I’d much rather go for the second option: because with the first one I’d still be using and promoting a closed platform, and unless you are developing a cross-platform application or framework, you’d be doing very little good to the open source world.
ու տենց
computer science -ը վերացարկման (աբստրակցիայի) արվեստ է։ մենք մտածել ենք մոդուլներ, վրոփերներ, կոպմոնենտներ, եւ այլն։
այսինքն մենք ուզում ենք նվազեցնել կրկին գրվող կոդի մասը, ավելի ընդհանորւ ենք սարքում ինտերֆեյսներ, եւ այլն։
դա նաեւ այն է ինչ մեզ սովորեցնում են։
հիմա նայենք ինչ ունենք մոբայլ սարքերի ոլորտում նախագծման դեպքում։
ունենք հայտարարված փորթաբնլ, բայց իրականում մեկ պլատֆորմային կպած դոթնեթ (WP7), ունենք անփորթաբլ C++ Սիմբիանի համար, ունենք հայտարարված կրոսպլատֆորմ ջավա, որի անդրոիդի համար գրված ափը էլ ոչ մի տեղ չի աշխատում․․․
ունենք cocoa էփլի դեպքում։
այսինքն, կամ գրում ես անդրոիդի, կամ այֆոնի, կամ սիմբիանի, կամ վինդովսի համար։ թե ուզում ես պորտ անել, պիտի ահագին ուժ ծախսես։
որը հակագիտական է։
բայց բիզնեսի մոծիվներով է
ի՞նչ կար առաջ․ ունեինք j2me, որը մահացավ թույլ հեռախոսների հետ, բայց որը կարելի է համարել փորթաբլ։
ի՞նչ կունենանք։ Միրիադ ընկերությունը պորտ է անում անդրոիդի դավլիկը (ջվմը) Լինուքսի վրա, այսինքն անդրոիդի ծրագրերը կաշխատեն Միգոյում։ (Միրիադը նախագծել է վինմոբայլի ջ2մեն, յբեդը, Օբերոնով)
կունենանք դոթնեթով գրված ափեր վինդովսի եւ այֆոնի, եւ Միգոյի համար ազատ մոնոյի շնորհիվ։
Կունենանք Լազարուսով գրված սոֆթ դրոիդի, սիմբիանի, այֆոնի, միգոյի, բայց ոչ վինմոբայլի համար, քանզի այնտեղ դոթնեթ ա։
Կունենանք հավանաբար ՔԹ, որը կծածկի սիմբիան, ու Միգո։ Ինչ կստացվի այֆոնի ու անդրոիդի հետ դեռ պարզ չի։
Նենց չի որ շատ գույնզգույն ա, բայց կարծես քիչ քիչ լավանում ա վիճակը։
ու տենց
[այստեղից][1]
ու մի հատ էլ [մուլտ ֆծեմու][2]
_ու տենց_
[1]: http://zubian.livejournal.com/148862.html
[2]: http://www.youtube.com/watch?v=A3oIiH7BLmg
Տեղեկատվական տեքնոլոգիաների եւ այլ տեքնոլոգիաների միջեւ զուգահեռներ շատ են տանում։ Օրինակ՝ երբ համեմատում են սպիտակուցի սինթեզը ԴՆԹ-ից, ծրագրի կոդի կոմպիլյացիայի՝ բինար ֆայլ ստանալու հետ։
Ես էլ, հետ չմնալով ցանկանում եմ համեմատել մարդկային հարաբերությունները եւ համայնքները տեղեկատվական տարածքի մեջ տեղի ունեցող պրոցեսների հետ։
Քաթի տակ․ փող, փառք, աշխատանք, հարաբերություններ, բռնություն եւ իհարկե՝ սեքս։
մնացեք մեզ հետ․
Ի՞նչ է ընդհանուր տեղեկատվական տարածքը։ Ինչի՞ համար է այն պետք։ Օրինակ, գրասենյակներում ու կազմակերպություններում անհրաժեշտ է որ բոլոր սարքերի, եւ համակարգիչների ժամանակի ցուցիչները նույն արժեքները հայտնեն(ժամը նույնը լինի)։ Կամ, կարգավորվում է որ հանգույցին որ տեղեկատվությունը մատչելի, հասանելի է, եւ որ հանգույցը որ գործողությունները անելու հնարավորություն ունի։
Դա հարաբերություն է։ Իրոք որ, եթե մենք պայմանավորվել ենք հանդիպել, այսինքն ինչ որ ձեւով արդեն հարաբերվում ենք, ապա հանդիպումը իրականացնելու համար ցանկալի է, որ մեր ժամանակի մասին պատկերացումը նույնը լինի։ Այլ կերպ կարող է չհանդիպենք բնավ։ Կամ եթե հարաբերվում ենք, գիտենք ով ինչ տեղեկատվությանը աքսես ունի։
Օրինակ․
Ես օկ եմ որ դու առանց ինձ հարցնելու այստեղի գրքերից ցանկացածը վերցնես։ Բայց այստեղից՝ չէ, որովհետեւ ես դրանք այժմ հետաքրքրությամբ կարդում եմ։ Ասենք, երբ կարդամ՝ կտամ։ Կամ էլ չեմ տա՝ խոսք եմ տվել վերադարձնել տիրոջը։ Դա պայմանավորվածություն է։ Ուշադրություն դարձրեք՝ օկ կամ ոչ օկ – դա բինար է, թրու-ֆալս, կամ մեկ – զրո։
Եթե պայմանավորվածություն կա, ապա այլ մարդուն վիրավորելու հնարավորությունը խիստ պակասում է։ Իսկ պայմանավորվելու համար անհրաժեշտ է իմանալ ինչի մասին ես պայմանավորվում։ Իսկ դա իմանալու համար պետք է իմանալ ինչն է քեզ համար կարեւոր։ Ի՞նչն ես համարում քեզ վնաս, ինչը՝ օգուտ։ Օրինակ, որ գործողությունը, կամ տեղեկատվություն իմանալը։ Իսկ գիտակցելուց հետո՝ հայտնել դա։ Սա ինձ վնաս է։ Մի արա այսպես։ Որովհետեւ կարող է մարդը չիմանալով է անում։ Կամ մտածում է լավություն է անում։
Տեղեկատվության հասանելիության շատ պարզ օրինակ։ Ես ասել եմ այսինչին սա, նա գնացել պատմել է երրորդին։ Անձամբ ես կարծում եմ, որ եթե չես ուզում այլ մարդկանց ականջին հասնի, ավելի լավ է չասել առհասարակ։ Գուցե դա իմ պարանորիկ ո՞ճն է։ Իսկ սովորաբար մարդիկ վստահում են, ու ունեն պայմանավորվածություններ։ Ասենք ՝ դու մարդու չասես, բայց ասենք այս արժեթղթերի գինը կընկնի, կամ դրամի կուրսը կբարձրանա, կամ էլ Աս ջան, մարդու չասես, բայց մենք լյովիկի/անուշիկի հետ կինո գնացինք, ու այնտեղ համբուրվեցինք։
Ես կարծում եմ, կամ ասում ես, ու գիտես որ կարող է բոլորը կիմանան, կամ չես ասում։ Բոլոր ՕՀ-երում կան խմբեր։ Ասենք այս խմբի անդամները այս տեղեկատվությանը տիրապետում են։ Ասենք բնական է, իրենք են համբուրվել, իրենք էլ տիրապետում են։ Իրենք են ստեղծել այդ տեղեկատվությունը։ Իսկ արժեթղթերի դեպքում պարզ չէ ում է պատկանում տեղեկատվությունը։ Ու դա գուցե դավադրոթյուն լինի, որը կարող է լավ բանի չբերել։ Սակայն դա առանձին թեմա է։
Պարզապես ուզում էի ցույց տալ, ինչպես է պայմանագիր խախտելը բերում վիրավորանքի։ Մասնավոր դեպքում՝ ուրիշի տեղեկատվությունը շեյր անելով, կամ գաղտնի պահելով՝ նույնպես։ Պայմանագիր խախտելն է, մասնավորապես այլ մարդու սեկյուր տեղեկատվություն հայտնելն է իրական դավաճանությունը։
Ու շատ է օգնում սահմանել ինքդ քեզ համար, ինչի պահանջը ունես, ինչին կարող ես դիմանալ, իսկ ինչը անընդունելի է։ ցանկցած հարաբերություններում, լինի դա աշխատանք, ռոմանծիկ հարաբերություն, թե հեռախոսային պրովայդեր։
Օրինակ․ ես այսքան ծանրաբեռնվածությամբ աշխատել օկ չեմ։ Կամ․ ես օկ եմ քանզի ես կարծում եմ ավելի լավ է այսքան աշխատել, բայց ավտո առնել/էն շորը առնել/երեխեքին ավելի լավ կրթություն տալ։
Այսինքն, ինչպես ես դու ապրում ու ինչն է քեզ համար կարեւոր։ Մեքենան, շորը, երեխայի կրթությունը։
Ինչպե՞ս ես ապրում։ Օրինակ
– դու ունես շուն, ու զբոսնում ես նրա հետ այսքան ժամանակ։ Այսպես ես ապրում։
– դու քնում ես այս ժամերին, իսկ այս ժամերին՝ ոչ։
– դու այստեղ չեմ գնում։ Ոչ մեկի հետ էլ չես գնա։
ընդ որում քեզանից ո՞նց պահանջե որ գնաս/չգնաս։ եթե քեզ համար շատ կարեւոր է պարտնյորիդ հետ գնալ, ապա դա քո պրոբլեմն է։ Ուրեմն քո պահանջների մեջ մտնում է միասին այնտեղ գնալը։ Ուրեմն եթե դա իրոք շատ կարեւոր է ապա դուք համատեղելի չեք։ Որովհետեւ դու օկ չես այդ մտքի հետ։ օկ չես – ուրեմն չենք շարունակում։ նեղանալու մասին խոսք չկա։
– դու չաթվում ես այս ցանցերում, իսկ այս ցանցերում՝ ոչ։
Ինչքան մակերեսային չթվա, օրինակ, իմ համար շփում հաստատելու պրոցեսի մեջ՝ ամենակարեւոր արժեքներից է։ Ասենք, ես սքայփում չեմ չաթվի։ Դա իմ հավատքին դեմ է։ Այսպիսով, եթե զրուցակիցս օկ չէ իմ հետ այլ համակարգում չաթվել, այսինքն, ասենք իր համար չափազանց կարեւոր է միմիայն սքայփով չաթվել, իսկ ինձ համար չափազանց կարեւոր է սքայփ չոգտագործել, ապա մենք չենք շփվի։ Ու այստեղ նեղանալու տեղ նույնպես չկա։ լիշ բի Ես շատ լուրջ պատճառներ ունեմ, ասենք։ Ու ասենք խոստանում եմ այդ մասին հանրամատչելի գրել։
Սակայն ես չեմ կարող ասել՝ դու այֆոն մի ունեցիր, կամ ունեցիր։
Քո գործն է։
Այլ հարց է, որ եթե իմ ընկերը ունի այֆոն, հավանականություն կա, որ նա լիքը այնպիսի համոզմունքներ էլ կունենա, որոնք իմ համոզմունքների հետ համատեղելի չեն նաեւ տարբեր այլ ասպարեզներում։ Ու ապա դժվար թե մենք իրականում ընկերներ լինենք։ Չնայած ես շատ լավ հարաբերություններ ունեմ մի երկու այֆոնիստ տղայի հետ։ Երկուսն էլ էփլից զզվում են, ու այդպես էլ զզվելով ու քֆրտելով՝ օգտագործում։ Ես նաեւ էփլ ունեցող մարդիկ գիտեմ, որ չի գիտակցում ինչ չար բան կա իրենց ձեռքերի մեջ։ Դա իրենց մեղքը չէ։ Դե ունեն ու ունեն։ Ես օկ եմ իրականում։ Որովհետեւ ասենք ֆաշիստ չեն բնավ։ Բայց եթե եւ էփլ ունեն եւ ֆաշիստ են, որը իրականում հնարավոր է, ապա այսպիսի մարդու հետ դժվար թե ընկերություն անեմ։ Եթե ֆաշիստ են, բայց էփլ չունեն՝ միեւնույն է։ ։Ճ Այսինքն կրկին կարեւորը ունենալ/չունենալու փաստը չէ, այլ պահանջ/համոզմունք, իսկ ավելի ընդհանուր՝ արժեքի հարց է։
Ընդհանուր – այսինքն աբստրակցիա։
Քոմփյութեր սայնսը աբստրակցիայի արվեստ է։
Արժեքները պետք է իմանալ եւ գիտակցել։ Այդ պատճառով է մարկանց կարեւոր լինում իրենց ընկերները ինչ արժեքներ ունեն։ Որովհետեւ եթե արժեքները անհամատեղելի են, ապա ընկերությունը չի կայանա։ Սակայն, եթե ընկերության հետ շատ ավելի պարզ է, ոչ ոք էլ անկապ չի ընկերանում, ասենք՝ արի ընկերություն անենք – արի – ինչ լավ ա չէ։ Այդպես չի լինում սովորաբար։ Բայց այսպես անկապ – սիրահարվում են։ Առանց պոտենցիալ զուգընկերոջ արժեքային համակարգին ծանոթ լինելու, կամ գոնե ենթադրություններ անելու համար բավականին տեղեկատվություն ունենալու։
Իսկ այս դեպքում, երբ հարաբերությունները ավելի խորն են, աքսեսը տեղեկատվությանը եւ գործողություններին լայնանում է։
Օրինակ․
– ես օկ չեմ հարաբերություններին, եթե դու այլ մարդկանց հետ ես քնում։
Այս հարցը ասենք սքայփի պես հավատքի հարց է։ Մեկի համար օկ է, մեկի համար՝ ոչ։ Կարող է ունենալ պրակտիկ նշանակություն, օրինակ վարակ տարածել/չտարածելը, կարող է չունենալ ինչ որ մոլորակի վրա, որտեղ սեռական վարակներ չկան։
Սակայն ամենակարեւորը, ես այս օրինակը բերեցի որ ցույց տամ, ինչպես է լինում որ շատ պրիվատ տեղեկատվությունը կարող է դառնալ շեյրդ։ Սկզբունքային, ու՞մ ինչ գործն է ով եւ ում հետ։ Սակայն որոշ դեպքերում արդեն կարող է եւ գործն է։
Ու այստեղ «դավաճանությունը» կրկին սահմանվում է ոչ թե մակերեսային, այսինքն քնել/չքնելու փաստը չէ որ էական է, այլ տեղեկատվությանը աքսես տալն կամ չտալը։ Սովորաբար թակցնում են, երբ գիտեն որ պարտնյորը օկ չէ։ Եթե օկ լիներ, ի՞նչ իմաստ կար թակցնելու։ Նույնիսկ գուցե չի էլ ուզում իմանալ, ու պարտադիր չէ հայտնել։ Սակայն եթե համարում է որ պիտի իմանա, պայմանավորվել եք, որ այսպիսի տեղեկատվությունը շեյրդ է, ու պայմանավորվածությունը խախտել ես՝ ապա դա արդեն դավաճանություն է։ Եթե պայմանավորվածությունը չես խախտել՝ ոչ։
Չէ՞ որ ոչ ոք ձեռքիցդ չի բռնելու այս կամ այն քայլը( այլ ծիտ/տղա կպցնելը, ասենք) անելուց։ Բայց կարող է օկ չլինել քո այս կամ այն քայլի հետ, եթե համարում է որ իրեն դա վնասում է։
Ու այստեղ մենք մոտենում ենք զոհողության թեմային։
Ի՞նչ է զոհաբերությունը։ Դա այն է, երբ մարդիկ ինչ որ վնասի հետ օկ չեն, բայց մերվում են։ Շատ վտանգավոր է վնասների հետ խաղալը։ Օրինակ, ես օկ չեմ երբ իմ վրա հրացան են ուղղում։ Մի տեսակ անհանգիստ եմ։
կամ․
– ես օկ չեմ քեզ հետ ապրել եթե դու ինձ ծեծում ես։
Այ այս օկը շատ կարեւոր է լավ գիտակցել։ Ասենք ես օկ չէի լինի։ Կարծում եմ, նորմալ է երբ մարդիկ օկ չեն լինում երբ նրանց ծեծում են։
Ու շփոթում են զիջումը զոհաբերության հետ։
Ինչու հիշեցի, որովհետեւ մի ընկեր ունեմ, ում հարեւանը ամեն գիշեր կնոջը ծեծում է։ Լավ լսվում է դա։ Չգիտի ինչ անել։ Իմ հետ խորհրդակցում էր։
Ես կարծում եմ, որ ծեծվողների, ինչպես նաեւ, ասենք, անոթեւվանների մեծ մասը համաձայն են իրենց վիճակի հետ։
Որովհետեւ, եթե օկ չես, առավել եւս Հայաստանում, հաստատ չես կորի։ Միշտ կգտնվի մի մարդ, ով կոգնի որոշ ժամանակ, ու այլ մարդ, ում մոտ կարելի է ապրել էլի որոշ ժամանակ, եւ այլն, եւ այլն։ Ու նույնիսկ եթե կնոջ աշխատավարձը երեսուն տոկոս ավելի ցածր է քան տղամարդու, ապա նա միեւնույն է կարող է բավական փող աշխատել անկախ լինելու համար։ Նույնիսկ եթե կիրթ չէ։ Այո, շքեղ չի ապրի, բայց հաստատ արժանավայել գոյատեւել կարող է։ Արժանավայել՝ այն իմաստով, որ առանց ծեծի ավելի արժանավայել է։ Եթե ծեծի չենթարկվելը արժեք է։ Եթե դա արժեք չէ՝ ապա խնդիր չկա, կարող է մարդը իրոք օկ է որ իրեն ամեն օր ծեծեն։ Նույնիսկ, կարող է համոզմունք ունենալ որ դա սիրո արտահայտություն է ու երջանիկ լինել։
Այսպիսով, զոհողությունը զիջումից տարբերվում է նրանով, որ մի դեպքում մարդը առանց օկ լինելու ինչ որ վնաս է անում, կամ տանում, իսկ զիջելու դեպքում նա կշռում է, ու որոշում է, որ ասենք, քիթը փորում է, դա ոչինչ, որովհետեւ ընդհանուր առմամբ վատ տղա չէ, ու ասենք, լիքը պահանջ ծածկում է՝ գնահատում է, լավ գրկում է, կամ գուցե ավելի վեհ՝ կարող է փիլիսոփայել արդյոք Ֆրոմը կռուծիծ է եղել թե ոչ այս կամ այն իր գործում։
Այս մոտեցումը թույլ է տալիս ոչ միայն չունենալ/ազատվել շատ անկապ խնդիրներից, այլ եւ հանդուրժող լինել։
Լավ գիտակցել, որ իրականում, ասենք այս մարդու հետ հարաբերությունը քեզ համար այնքան թանկ է, որ ի՞նչ կապ ունի, թե նա գուլպաները սենյակով շաղ տալիս է թե ոչ։ Է թող շաղ տա։ Արդյո՞ք այնքան կարեւոր է, որ ատամի մածուկը միշտ մոռանում է փակել։ Թող չփակի։
Ես օրինակ շատ հանգիստ եմ վերաբերվում հարցերի մեծ բազմությանը։ Բացի սքայփից ասենք։ Այինքն կարեւորը արժեքներն են ։Ճ
Իսկ ինչպե՞ս պայմանավորվել, եթե չգիտես, չես կարող կանխատեսել իրավիճակների ողջ բազմությունը։ Շատ պարզ․ ինչպե՞ս է արվում այթի-ում։ Սահման նկարագրելուց․ սահմանում ենք կանոններ։ Օրինակ, ֆայրվոլլի կոնֆիգում կարող է ասվել․ ամենը թույլատրվում է բացի սրանից։ Այսպես էլ ամբողջ աշխարհում է գործում․ այն ինչ օրենքով արգելված չէ՝ թույլատրված է։
Ինչպե՞ս ենք որոշում այդ սահմանները։ Բնական է, մեր իսկ համոզմունքներից ելնելով։ Կարեւորը իմանալն է, դու ինչ ես այդ մասին կարծում։ Ինչպե՞ս է քեզ հարմար։ Այլ խոսքերով ինչի՞ հետ ես օկ, ու ինչի հետ օկ լինել չես կարող։ Այո, կրկին։
Ու սա արժեքների հարց է։
Իսկ արժեքները այդ մանր իրավիճակների աբստրակցիան կարող են լինել։
Այդ պատճառով, կարծում եմ, որ արժեքների բազմությունների համընկնումն է կարեւոր է։ Այդպես էլ կազմավորվում են համայնքները։ Ասենք ազատ ծրագրերի համայնքները հիմնված են այն արժեքների վրա, որ տեղեկատվությունը լինի ազատ, իսկ ծրագրերը՝ մարդկանց չսահմանափակեն։ Իսկ, ասենք Մանչեստեր Յունայթդ-ի շուրջ կազմավորված համայնքը հավատում է, որ նրանք պարզապես լավագույնն են առանց որեւէ պատճառաբանության։
Ամփոփեմ,
օկ եւ ոչ օկը – բինար է
ժամանակի մասին ընդհանուր պատկերացում,
շփման հնարավորություն – բաց պրոտոկոլ, համատեղելիություն
տեղեկատվության մատչելի լինել/չլինելը, ինչպես նաեւ
պահանջներ, պայմանագրեր, օկ լինել չլինելը՝ ֆայրվոլ, աքսես լիստեր, տեղեկատվության ինկապսուլյացիա, պրիվատ/փաբլիկ տվյալներ եւ մեթոդներ ու ֆունկցիաներ։
արժեքներ – աբստրակցիա սահմանված նախորդ մանրուքների վրա
_ու տենց _
}}
}}
ահա, Լազարուսը քոմփայլ եղավ, ու աշխատեց ։Ճ
վիքիները (սա եւ սա) նորացվեցին։
ու տենց
to get a light in lux
on maemo4/Diablo
cat /sys/class/i2c-adapter/i2c-0/device/0-0029/lux
on maemo5/Fremantle
cat /sys/class/i2c-adapter/i2c-2/2-0029/lux
und so weiter
Эдсгер Дейкстра – Избранные статьи http://store.oberoncore.ru/lib/book/dijkstra.pdf
_ու տենց_
«Մոդուլային համակարգերի գաղտնիքները» հոդվածի հեղինակն է Սերգեյ Գուբանովը։
«Մոդուլ» եւ «մոդուլյար լեզու» թերմերի բացատրությունների զանազանությունը ծնում է ավներջ վեճեր։ Ինչեր ասես, որ մոդուլ չեն անվանել, ինչ լեզու ասես, որ մոդուլյար չեն համարել։ Ոմանք մոդուլ անվանում են կլասսները, ոմանք ել համեմատում են մոդուլները օբյեկտների հետ։ Առհասարակ այնպիսի տպավորություն է ստեղծվում, որ այժմ մոդուլյար եւ կոմպոնենտային լինելը նորաձեւ ոճ է։ Տարբերակների զանազանության պատճառը բացատրությունների ձեւի մեջ է՝ ներքին ձեւի։ Ներքին է այն իմաստով, որ սահմանումը տրվում է որոշ ներքին հատկությունների հիման վրա (մոդուլը պարունակում է տվյալներ, կոդ, տիպեր, ապահովում է ինկապսուլյացիան, ունի ինտերֆեյս, եւ այլն)։ Մոդուլների ներքին էական հատկությունները առանձնացնելու բազմաթիվ եղանակներ կան, իսկ դա նշանակում է, որ գոյություն ունեն նաեւ մոդուլների սահմանման բազմաթիվ եղանակներ։ Ապագայում ներքին հատկությունների քանակը գուցե եւ ավելանա, հայտնվեն սահմանումների նոր ձեւեր․ այսինքն՝ վիճելու առիթ ավելի շատ կլինի ու դա կտանի փակուղու։ Ելքը ներքին սահմանման փոխարինումն է արտաքինով։
Արտաքին է այն իմաստով, որ սկզբից պետք է նկարագրել ինչ է «մոդուլյար համակարգը», իսկ «մոդուլի» հասկացությունը կհայտնվի ինքնաբերաբար, ավտոմատ կերպով, քանի որ մոդուլը մոդուլյար համակարգի բաղադրիչն է։ Մոդուլյար համակարգը առաջնային է, մոդուլը՝ երկրորդային։ Մոդուլն ինքը իրանով չէ, այլ համակարգի մոդուլ է։ Մոդուլյար լեզու հարկավոր է անվանել այն լեզուն, որը մոդուլյար համակարգեր նախագծելու համար հարմարեցված, օպտիմիզացված է։ Այսպիսով՝ մոդուլյար ծրագրավորման լեզուների իմաստը մոդուլյար համակարգերի նախագծումն է։
Ստորեւ բացահայտենք մոդուլյար համակարգերի իմաստը:
Մոդուլյար ծրագրավորման համակարգերը եկել են միաձույլ ծրագրերը փոխարինելու համար։ Մոդուլյար համակարգեր կիրառելու իմաստը (ի տարբերություն միակուռ ծրագրերի) դինամիկ ընդարձակվելու ունակությունն է։ Մոդուլյար համակարգը կարելի է դինամիկ ընդլայնել մի քանի ձեւով։ Օրինակ՝ դրա մեջ նոր մոդուլներ ավելացնելով կամ փոխարինելով դրա միջի հին մոդուլները նորերով , որոնք ունեն ավելի լայն հնարավորություններ կամ որեւէ այլ լավացումներ։ Ընդարձակվող մոդուլյար համակարգը երբեք ավարտված չէ, այն զարգացում է ապրում։ Որոշ մոդուլներ փոխարինվում են, որոշները դինամիկ ավելացվում։ Այսպիսի համակարգի կյանքը կարող է լինել ավելի երկար, քան նրա միջի կոմպոնենտների կյանքը (տես․ մարդը եւ բջիջները, թարգմանչի նկատողություն)։ Համակարգի օգտագործողը ինքն է որոշում ինչպես այն ընդարձակել։ Կատարյալ դեպքում գոյություն ունի համակարգի կոմպոնենտների շուկա, որտեղ տարբեր արտադրողներ առաջարկում են մոդուլների իրենց իրագործումները, որոնք եւ ձեռք է բերում համակարգի օգտագործողը։ Կոմպոնենտների շուկայի բացակայությունը կարող է խոչընդոտել միաձույլ համակարգերից մոդուլյար համակարգեր անցնելուն։ Սակայն, պահանջարկը ծնում է առաջարկ։
Դիտարկենք մոդուլյար, դինամիկ ընդլայնվող համակարգի կառուցվածքը։ Մոդուլների միջեւ փոխազդեցությունը իրագործվում է մոդուլի՝ այլ մոդուլներ ներմուծելու (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 լեզվով։ Համակարգի կատարման միջավայրը իրականացված է անմիջապես «երկաթի» վրա։ Սակայն, դա արդեն այլ պատմություն է։ բնորինակը
ու տենց
որը նույնիսկ դեբագ ա լինում անել։
ու տենց
Սա երրորդ մասն ա։
Ասենք սա ինձ թաչ ա անում՝
<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
Գիտեք, կան նենց նկարիչներ, որոնք մասնագիտացած են ռեստավրացիայի վրա։
Նրանցից լավագույնները գժանոց տեխնիկա ունեն։
Կան նաև նկարիչներ, որոնք փող են վաստակում ասենք դասական դարձած նկարիչների հայտնի գործերը արտանկարելով։ Այդ նկարները վաճառվում են որպես «ձեռքի գործ» ռեպրոդուկցիայի տեղ։ Այդպիսի նկարիչները հաճախ գնում են աշխատանքի մի տեսակ գործարաններ, այնտեղ նկարում, իննից վեցը, ու գնում տուն։
Բնականաբար նրանք նույնպես լինում են բարձր կլասի մասնագետներ, վարպետորեն տիրապետում են իրենց․․․ արհեստին։
Ու բնավ ոչ արվեստին։
Հետաքրքիր փաստ․ արհետ և արվեստ բառերը նման են ոչ միայն հայերենում․ art and craft մի տեսակ ակնկարկում են դա։
Արվեստ գործող նկարիչները լինում են ճանաչված կամ ոչ ճանաչված։
Երկու դեպքում էլ, նրանք հազվադեպ են պատվերով աշխատում։ Ու նրանց լավագույն գործերը որպես կանոն պատվերով չեն բնավ։
Գիտե՞ք, կան ծրագրավորողներ, որոնք աշխատում են ԾԱ գրող ընկերություններում։ Նրանք նույնպես հաճախ վարպետորեն տիրապետում են գործիքներին և առհասարակ արհեստին։
Կան ծրագրավորողներ, որոնք արվեստագետներ են։ Կոդագործ նրանց անվանենք, թե կոդագետ։
Նրանք քիչ են։
Իսկ «ծրագրավորման արվեստ» Կնուտի գիրքը գրվել է շատ վաղուց։ Այժմ այն հաջողությամբ փոխարինվել է «սովորիր սիփլասփլաս տաս օրվա մեջ» որ հետո ծյապլյապ-շրմփդրմփ կոդ գրես ու գրդոն անես տեսակի գրքերով։ Կան ծրագրավորողներ, որոնք աշխատում են վեհ կորպորացիաներում և վարպետորեն տիրապետում են իրենց նախագծման գործիքներին․ գիտեն լեզուների ծակուծուկերը և միջավայրերը։
Նրանց արված գործի արդյունքը երբեմն լինում է ջավայով գրված կորպորածից ծրագրի պես ծեծված և տխուր։ ու ոչ մի պոեզիա։
Իսկ կան ծրագրավորողներ,
որոնք ճանաչված են, կամ ոչ ճանաչված։
Երկու դեպքում էլ, նրանց լավագույն գործերը որպես կանոն պատվերով չեն բնավ։
Երբեմն նույնիսկ ազատ են, որովհետև արվել են ոչ աշխատանքի վայրում, ազատ ժամանակ, հավեսի համար։
Այսպիսի մարգարիտները ճանաչելու համար ճաշակ է հարկավոր։ Ճաշակից զուրկ են լինում նույնիսկ նկարիչները, ուր մնաց ծրագրավորողները կամ օգտագործողները ճաշակով լինեն։ Ավելին, արվեստի գործերի պատճենները չեն գովազդվում այնպես ինչպես ծրագրային ապահովման ամենատգեղ օրինակները։
Այսպես մարգարիտները նետվում են խոզերի առաջ արագ և մատչելի ինտերնետի միջոցով։ Ինտերնետվում են խոզերի առաջ։
Այդպիսի ժամանակակից [նետ]ման ձևը շատ ավելի արդյունավետ է։
Հավանականություն կա, որ որևէ ճաշակով ցանցառի աչքերի մեջ կփայլի մարգարիտի պատկերի թվային պատճեն։
ու տենց
[այստեղից][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>
ու տենց
[այստեղից][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-ը «հավասար»։ Չէ՞ հավասար չէ բնավ։ Վերագրվու՞մ ա։
Ապա վերագրման նշան կիրառեք, որը ընգծում ա անհավասարակշռությունը։
Այդ նշանը Ալգոլի ժամանակներից կա՝ :=
Չի դզում՝ նորը մտածեք։
Ու ասեմ որ Յունիքսի ստեղծողները իրանք ով նախագծել են Լիմբոն, արդեն այնտեղ կիրառում են հենց այդ նշանը։
Լիմբոն և Օբերոնը ինսփայր են արել Գոու, որին խորհուրդ եմ անում ուշադրություն դարձնել։ Չնայած, իրա մեջ դեռ ռեալիզացիա արած չեն շատ հնարավարություններ, որոնք կան պարզ Օբերոնում, բայց դա հիմա էական չէ։
Էդ նաև ազատում ա == որպես էքվալիթիի նշան օգտագործելուց։
Առհասարակ, ==, <> սխալի բուն են։ Նիշերից մեկը չտպվեց՝ հետո լիքը մարդ տառապում ա խնդիրը գտնելով։
Ու մի ասեք, փորձառու ծրագրավորողը տենց սխալ չի անի։ Ինչի՞ փորձառուն տենց հիմար բաներով պիտի տարբերվի անփորձից։ Փորձառուն մի քիչ այլ գաղափար ա։ Տենց հիմար փորձ պետք չէ բնավ։
Ռեալիզացիա։
Դիտարկենք ՋՎՄ/ՋԴԿ և գցջ։
ՋՎՄ-ի շերտը շատ ծանր է և չաղ։
Մասշտաբիրուեմոսծը բացակայում է։
ՄԵ-ն միկրո էդիշն ա, այլ ոչ թե ստանդարտ մեքենայի քոր, որը էքստենսիբլ ա լինում, ու դառնում ստանդարտ փլագիններ ավելացնելով։
Էքսթենսիբլիությունը – սիրուն լուծում ա։ Տարբեր էդիշններ՝ տգեղ և հիշեցնում է հենակներ, որոնք, անկասկած շատ են կիրառվել ռեալիզացիայի ժամանակ։
Վիրտուալ մեքենան ուտում է հիշողություն և մինչև վերջերս բաց չեր։
Ու որպես կանոն ջավա կոդը անհամեմատ դանդաղ ա կատարվում։
Իմ խորհին համոզմունքն է որ մենք ժամանակից թանկ բան չունենք։
Այսպիսով ծրագրի վրա թող նախագծողները ավելի երկար աշխատեն, բայց մենք քիչ ժամանակ սպասենք ամեն անգամ։ Սակայն, իրականությունն այն է որ դա հակասում է մարկետինգի և բիզնեսի շահերին։
Ինչքան արագ գրվի սոֆտը, այդքան արագ շուկա կհանվի, այդքան քիչ փող կծախսվի նախագծման ընթացքում։
Ջավայի տորմոզնուտոսծի շատ հավես իլլյուստրացիա կա։
Ռուսները Տոմմի անունով ռոբոտ ունեին։ Ինքը մասնակցում էր ԴԱՐՊԱ-ի կազմակերպած րեյսինգի մրցույթին։ Եվ սպանվեց իրան ապստենու գլուխը պատով տվեց։ Երևի ԳՑ-ն էր միացել։ Այդ դեպքից հետո ծրագրավորողների մի մաս սկսեց համաձայնվել ջավիստների հետ այն մասին որ «ջավա նե տարմազիտ»։
Իմ իմացած յուզերների մեծ մասը զզվում ա ջավա ափլիքեյշններից․ «նրանք ծանր են, դանդաղ և այլն» պատճառաբանություններով։
Այդ իսկ պատճառով հիմա ջավան հարկադրվել է հեռանալ քորփորեյթ լուծումների ասպարեզ։ Դեսքթոփ ափլիքեյշններ անտեսելի քիչ են։
գցջ-ն՝ քմփայլ է լինում նեյթիվ կոդ, լինկ էր լինում սի և այլ գրադարաններին, նույնիսկ աղբ թափելը իրականացվախ է Հանս Բոեհմի Սի/ՍիՓլասՓլասՔոլեկտորով ։ Ահագին գործ իրան լավացնելու մաջ արել է ՐեդՀատը, որը ասենք, ժամանակին պատչեր արել որ Թոմքատ իրանով քմփայլի։
Այս իրականացումը վատը չէ, նույնիսկ լավն է, սակայն իրանով լիքը բան անել չի լինի։ ՋԴԿ-ի օփենսոուրսացումը կարող է խոչընդոտել այս լուծման հետագա զարգացմանը։
Արտաքին տեսք։
Ջավայի Սվինգ ուիդջետներից տգեղ բան չկա։ Մոտիֆը նույնիսկ սիրուն ա դրա հետ համեմատ։ Այսպիսի բաներից հետ տալս գալիս ա։ Լուրջ։ Սիրտս խարնում ա։
Ընդ որում ուինդոուսում էդ ուիդջետներով հաճախ հասարակ մաուսի սքրոլ չի աշխատում։ Լինուքսում ի դեպ՝ աշխատում ա։
Եթե ԱյԲիԷմի ՍՎՏ թուլքիթը չլիներ (էկլիպսի ուիդջետները դրանով են արած) ի՞նչ էիք անելու այ դեվելոպերներ։
Իդեոլոգիապես։
Իմ կարծիքով,
Ջավան ինքը իրա դիզայնով օփեն սորսին խփում էր՝ տիպա մեզ պետք չեն իսխոդնիկներ պորտ անելու համար, այլ պլատֆորմային, քանզի ամեն պլատֆորմայի վրա մի վիրտուալ շերտ կա։
Ու ջահնդամը որ լիքը հիշուղություն ա ուտում այդ շերտը, և հիմնականում դանդաղ են աշխատում ծրագրերը։
Սաղ հեչ։ Փաստորեն հիմա ստացվում ա որ նույնիսկ նենց տգեղ լուծումը «լավն» ա դարնում երբ այֆոնը կապվում ա օբջեքթիվ-սի-կակաո վիճակներին փորթաբիլիությունը խոչընդոտելու նպատակով։ Ի դեպ, էփլին լավ կհարվածի ՔյուՏի պորտը։ Թե սիպլասնել են բան անելու։ Ո՞ր պատճառաբանությամբ։
Հա, ու ասենք ծանոթ եմ տեսնում Սոնի Էրիկսոնով, ասում եմ՝ լավ ա չի բողոքի որ բան չի կարողանում տեղակայել, քանզի իրա մոտ, ջավա կա՝ աշխատում ա լիքը բան։
Չնայած ՄԵ-ի ռեալիզացիան նենց աղքատիկ էր վախտին, ասենք թափանցիկ սպրայտեր չկային։ Չգիտեմ հիմա ավելացրել են թե ոչ։
Իսկ նապասլեդըկ խորհուրդ եմ տալիս նայել սա ու համոզվել թե ով է ջավամանը իրականում ։
_ու տենց _
[այստեղից][1]
_ու տենց_
[1]: http://avva.livejournal.com/2222690.html
Իմ լավ կոդագործ ախպերներից մեկը, երբ դեռ երիտասարդ էր և անփորձ պրիմատում էր սովորում, իր հացը հանապազորդ վաստակում էր ստրիպ քլաբում, որպես դիջեյ։
Ու փաստորեն այդպես էր ստացվում որ հաճախ պատրաստվում էր քննություններին աշխատանքային մթնոլորտում․ վեր էր ընկնում դիվանի վրա, ու խորանում մաթանալիզի քսերոքսների մեջ, կամ խնդիրներ լուծում։ Իսկ շուրջը ծիծիկները թափահարելով մերկ աղջիկներ էին ֆռֆռում՝ ով ռազձեվալկա, ով ռազձեվալկայից։
Հարկ է նշել, որ ստրիպտիզյորշաներից մեկը, նույնպես ապագա կոդագործ էր։ Ու իր դիպլոմայինը՝ x86 ասսեմբլերով գրված խաղ էր։ Նա այժմ հրաշալի ընտանիք և աշխատանք ունի։
_ու տենց _
Գիտեք, որ էփլ չեմ սիրում, այֆոն առավել ևս չեմ սիրում։
Հակիրճ․
ա – այֆոնի համար կարելի է գրել միայն մակոսի տակ։
բ – լայբրարիների լիցենզիոն սահմանափակումների պատճառով անհնար է անել քմփայլեր որը կգեներացնի այֆոնի համար կոդ ու կաշխատի ոչ մակոսում։
գ – եթե ունես այֆոն, իրավունք չունես, ու առանց ջարդելու չես ել կարող, քո գրած ծրագիրը իրա վրա աշխատացնել, առանց էփլին տարեկան 99$ դեվելոփեր լայսենս վճարելու որ էլֆդ սայն անի։
դ – դաբլիքեյթ ֆանքշնալիթի – ալտերնածիվ բրաուզերները և մեյլ կլիենտները ու այլ լավ ծրագրեր բան են լինում ափստորում այդ պատճառաբանությամբ։
ե – մալտիթրեդինգ ծրագիր գրելն անհնար է եթե դու էփլ չես բնավ։ թեյնիկների համար․ ասենք որ բրաուզերը ֆոտոներ ա քաշում, չի սպասում չէ, որ մեկը քաշի հետո մյուսը՝ միաժամանակ ա քաշում։ այ տենց ծրագիր գրելը նե տո ավելի թանկ ա նստում, նե տո պարզապես միայն էփլենք կարող են։
զ – մարտկոցը փոխելու համար անհրաժեշտ ա հեռախոսը բենզոպիլայով սղոցել
է – մալթիթասքինգ չէ բնավ։ Նույնիսկ վերջին այֆոնը որը իբր մալթիթասքինգ է, խիստ սամանափակումներ ունի, ծիպը սքայփ կամ փլեյեր և բրաուզեր։
Ու եթե դա լիներ գոնե տեխնիկական պատճառներով, ասենք, եթե ափլիքեյշնները մի ադրես սփեյսում աշխատեին, ու սիսթեմ քոլը առանց ծանր կոնտեքստ սուիթչի աշխատեր՝ կհասկանայի։ Այդ դեպքում լեզուների սահմանափակումը ուղղված քոմփայլերի կողմից փոինթեր արիֆմեթիք թույլ չթալը, որ ուրիշի ադրես սփեյս չվնասի, էլի կհասկանայի։
Բայց [այս սահմանափակումը][1] արդեն չափն անցնում ա՝
<s>էս ո՞վ են արա</s> էս ու՞ր եմ ընկել։
ֆսյո, էս երեք լեզվով պետք ա գրեք այֆոնի համար։ Ինչպես և չհամարձակվեք էկրանին դիպչել մեկից ավելի մատերով, էփլը մալտիթաչը պատենտավորել ա։ Ուշադրություն դարձրեք, վերևի նշված ցանկի մեջ չեմ գրել այն մասին որ ինթերփրեթեդ լեզուներով չի լինի այֆոնի համար դեվելոփ անել։ ՕԿ, հասկանում եմ՝ սայն անելով ու ափսթորը դոգմայի հասցնելով անվտանգությունը բարձրացնում են։ Չնայած դա էլ է վիճելի։
Բայց ասենք մոնոենք, որոնց ես նույնպես չեմ սիրում բնավ, չարչարվել, մոնո արմ նեյթիվ բաքենդ են սարքել, հատուկ այֆոնի համար մոնոյով ծրագրեր գրելու համար։ Էլ ֆսյո, չի լինի։ Զուր էր իրենց արած գործը։ Ինչպես և Ադոբ ֆլեշ(որից զզվում եմ սակայն) թու արմ նեյթիվ կոդ բաքենդը։
էս ամենից հետո մնում են մարդիկ որ իրանց փո՞ղ են տալիս։ Այն էլ այդքան շատ։
Մանավանդ գյոզալ [Մեմոները][2] թողած:
Իմ կարծիքով հիմա շուկայում քիչ թե շատ ընդհունելի շուստրի հեռախոսը՝ [Nokia N900][3] է
ՀԳ․ Հիմա մնում ա անել սենց․ նեյթիվ բաքենդները շտապ կփոխարինվեն Սի բաքենդներով։ Ինչով ուզում ես գրի՝ կգեներացնի սի, քոմփայլ կանի նեյթիվ։
_ու տենց _
[1]: http://daringfireball.net/2010/04/iphone_agreement_bans_flash_compiler
[2]: http://en.wikipedia.org/wiki/Maemo
[3]: http://en.wikipedia.org/wiki/Nokia_N900
TMultiReadExclusiveWriteSynchronizer
_ու տենց _
[այստեղից ][1]
_ու տենց _
[1]: http://www.stlport.org/resources/StepanovUSA.html
[այստեղից][1]
_ու տենց _
[1]: http://groups.google.am/group/comp.lang.oberon/browse_thread/thread/ffe11b45037375e0/e8b65d37114d4931?hl=hy&ie=UTF-8&oe=utf-8&q=andreas+borchert+c+interfaces#e8b65d37114d4931
[այստեղից][1]
_ու տենց _
[1]: http://stackoverflow.com/questions/2084120/eprogrammernotfound-exception-in-delphi
http://chuck.cs.princeton.edu/ChucK : Strongly-timed, Concurrent, and On-the-fly
Audio Programming Language
_ու տենց _
prof. Niklaus Wirth at the 4th Annual Google Test Automation Conference
_ու տենց _
me: հա
x: priv
hesa gam
Socket.cpp: In member function ‘int Socket::recv(std::string&) const’:
Socket.cpp:135: error: ‘cout’ is not a member of ‘std’
make: * [Socket.o] Error 1
senc baneri mej em
🙂
……………………………..
me: xv-ն տուֆտեց։ բայց display-ը imagemagick-ի չետկի ցույց տվեց։
x: kuickshow nay, inq@ simple viewer a
isk picasayi tex@ im mot qwenview a
*gwenview
inq@ shat lavn a
me:
# emerge -pv kde-base/gwenview
These are the packages that would be merged, in order:
Calculating dependencies… done!
emerge: there are no ebuilds built with USE flags to satisfy ">=x11-libs/qt-gui-4.5.1:4[accessibility, dbus]“
!!! One of the following packages is required to complete your request:
x11-libs/qt-gui-4.5.2-r2 (Change USE: +dbus)
(dependency required by "kde-base/gwenview-4.3.0" [ebuild])
(dependency required by "kde-base/gwenview" [argument])
ասում ա qt-gui-ն պետք ա dbus-ի սափփորտով քոմփայլ արած լինի
իսկ ես dbus չեմ օգտագործում
ու չունեմ
ու չեմ էլ ուզում ունենալ
9:47 PM այսինքն ինձ չի սազում ծրագիրը
🙂
x: :/
ha de
saxs el stylei hamar inch ases anum enq
te che indz hazar tari petq er socket ashxatacnem 😀
_ու տենց _
i was talking with a guy from microsoft today.
– ideological enemy! – said he, when lending me hand to hold
a couple of quotes from his talk
– in which team are you working?internet explorer? games? kernel? – I have asked
– *****
– if it would be internet explorer, i would throttle you – said one guy who was pissed off of ie bugs during web development work
– in our team i am the only one who uses visual studio. all other guys use eclipse
– in microsoft we hate vista and internet explorer
– yes threading model in win7 indeed radically improved
– they were saying to me: “u have strange variable names, like… ‘vremya’”
– i hate that defender staff
– clima in redmond is the same as in armenia. same ground, same hills, and we even have our own sevan-like lake, and big ararat-like mountain
– the higher grade u have, the more pakhats place is your office
– i havent write anything romantic or interesting since i left armenia
гугл выпустил бесбейсикоподобный язык для андроид. ну читаю я что это талое, смотрю пример 🙂
_ու տենց _
մի տղա, երբ իրան հարցնում են՝ «ինչո՞վ ես զբաղվում» – պատասխանում է՝
– կոդ եմ գրում – քանի որ վստահ չէ որ կարող է իրեն անվանել ծրագրավորող։
նա դեռ չգիտի, որ իսկական ծրագրավորող է, ի տարբերություն շատերի, ով հպարտ կրում է այդ պիտակը։
_ու տենց _
i was dealing with rhel5 sysvinit sources and patches, for some reason.
and found interesting example.
there is a patch called sysvinit-2.86-console-open.patch
what it basicly does, it just tries to open /dev/console five times, if its not created yet.
————
— sysvinit-2.86/src/init.c.eieio 2006-08-10 15:34:23.000000000 -0400
+++ sysvinit-2.86/src/init.c 2006-08-10 15:34:50.000000000 -0400
@@ -531,8 +531,10 @@
/*
*/
– for(f = 0; f < 5; f++) + for(f = 0; f < 5; f++) { if ((fd = open(console_dev, m)) >= 0) break;
usleep(100);
}
if (fd < 0) return fd; -–-–-–-–-—
if (a=b) {
……….
}
Нет, не сравнение! Присваивание! И вот эту ошибку не могли заметить в течение двух недель, в одной фирме, где я работал 🙂
Потому, что немудрено ошибиться, и поставить на один знак равенства меньше.
Конечно, можно сказать, что нормальные люди так не пишут.
Но ведь пишут же!
Я это к чему? К тому, что такой синтакс, унаследованный в массе языков, часто оказывает медвежью услугу.
И сколько народа в мире так ошибалось? И как долго они искали свои баги? А все потому, что кто-то так сдизайнил язык.
В одной ныне прикрытой фирме работал программер, который очень любил ц++. И очень любил ООП.
И все писал классами. И свое текущее задание написал так, как ему нравилось: много классов, хороших и нужных.
Пришел к нему как-то проект манагер, и попросил показать работу за месяц. Проект манагер славился умом, и все его уважали. А проект, на который он пришел посмотреть, в ВС открывался несколько минут: классы, классы, классы…
Тогда проект манагер сделал то, что от него никто не ожидал. Нет, он не уволил программера.
Он удалил всю его работу, удерживая клавишу шифт 🙂 И наказал ему писать все заново, чтобы неповадно было
🙂