շատ երկար ա 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 դաշտ։

սա ռանթայմ տեղեկատւութիւն ա, ու այս դէպքում արդէն մեզ պէտք ա պահել առանձին դաշտ տողի երկարութեան համար։

ու տէնց։

#օբերոն #ծրագրաւորում #տող #տողեր #պասկալ #սի #վիշապ #իրականացում #կազմարկում #կոմպիլյատոր #կոմպիլեատոր #կազմարկիչ

բնօրինակ սփիւռքում(եւ մեկնաբանութիւննե՞ր)

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

#նախագծում #իւնիքս #ուինդոուս #ծրագրաւորում #օպերացիոն_համակարգեր #դիզայն

բնօրինակ սփիւռքում(եւ մեկնաբանութիւննե՞ր)

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

իմ ռանթից [այս թելում] (։

#տեքնոլոգիաներ #կարգիչ #ծրագրաւորում

բնօրինակ սփիւռքում(եւ մեկնաբանութիւննե՞ր)

դէ զգացողութիւն ունեմ, որ շատ յաճախ «էնտերպրայս», «կորպորատիւ» ծրագրակազմը՝ դախ ա։ ու դէ էնտեղ աշխատող մարդիկ են դախ։

բայց եւ տեսնում եմ որ շատ հաւէս ու կիրառելի ծրագրակազմ կայ, որը կորպորացիաների կողմից ա նախագծած, ու ազատ ա։

ու մտածում եմ՝ ինչ հետաքրքիր ա, կարող ա ազատութիւնը տէնց քաղաքակրթող, սանրող, բարելաւող ազդեցութիւն ունի ծրագրակազմի վրայ։ ու դէ նաեւ բարոյականացնող, զի երբ ազատ ա, արդէն աւելի քիչ հաւանական ա որ տհաճ բաներ անի, ուր օգտատէրը չի վերայսկող, այլ ինքը՝ ծրագրակազմը եւ իր ետեւում կանգնած ընկերութիւնը։

#ազատ_ծա #ծրագրակազմ #ծրագրաւորում #տեքնոլոգիաներ #ազատութիւն

բնօրինակ սփիւռքում(եւ մեկնաբանութիւննե՞ր)