կիտրոն սեւ սրճի մէջ՝ ստացւում ա արաբիկա։
#սուրճ #կօֆէ
կիտրոն սեւ սրճի մէջ՝ ստացւում ա արաբիկա։
#սուրճ #կօֆէ
իթ երբ արեւմուտքից հնչում ա՝ «ձեր ընտրութիւնն ա», ճիշտ են ասում։ էն առումով որ ոչ մանիպուլացիա ա, ոչ էլ կեղծում են։
իրենց պէտք չի իրենց համայնքում պուտինին փառաբանող, ստրկական հոգեբանութեամբ, կոռուպցիան նորմա համարող ժողովուրդ։
գիտակցում են որ զոռով չի ու կենսակայուն չի լինի։ ինչն, ի դէպ, ռդ֊ում չեն գիտակցում։
ուզում էք՝ վիզ դրէք, ձգտէ՛ք, մեր բարդ պայմաններին համապատասխանէք։
չէ՞ք ուզում։ աւելի լաւ, ձեզ վրայ փող պէտք չի լինի ծախսել, արդէն յունաստանի ձեռքն էլ ենք կրաւն ընկել, գնացէք երջանիկ փտէք ձեր միջնադարում։
#ժողովրդավարութիւն #քաղաքակրթութիւն #քաղաքականութիւն #հանրութիւն #ապագայ
royal լվա ինքդ
#երեւան
հա, ինչն ազատ ա, կարողանում ենք օգտագործել։ բայց արդե՞օք ուզում ենք, եթէ 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
հիմնական հիմնը։
ես ինչի՞ եմ դժուարանում ասել, որ սոշըլհոմը վերնակուլար ա։
որովհետեւ վերնակուլարը lowtech ա, իսկ սոշըլհոմն օգտագործում ա կորպորատիւ ներդրումներ ունեցող փայթըն։ որի պատճառով, ի դէպ, վատ ա աշխատում։
վերնակուլարը կօգտագործէր ասենք սի ու չէր ունենայ շատ կախուածութիւն։
միւս կողմից՝ դէ իմ կարգիչը ճռռում ա, բայց ձգում ա մի կերպ։ ուրեմն երեւի վերնակուլար ա։ իմ կարգիչն ա ընդամէնը, շատ բան չի։