Jak lingvisticky číst zdrojový program?

Jak lingvisticky číst zdrojový program?
« kdy: 14. 07. 2020, 16:27:08 »
Narazil jsem na dost "triviální problém", který mi znemožňuje dobře chápat zdrojový kód programu. Tento problém je, jak bych měl lingvisticky číst zdroják. Tak např. v jazyce C mám následující program:

Kód: [Vybrat]
int main()
{
#define MAX 1000

int i;
int a, b;
int pole[MAX];

for(i = 0; i < MAX; i++) {
pole[i] = a + b;
}
}

Zdroják je sice neúplný a tudíž funkčně neužitečný, ale jde mi jen o způsob čtení.
Takže takový to zdrojový kód čtu následovně:

"intýdžr mein

difajn MAX tisíc
intýdžr i
intýdžr a a b
intýdžr pole pole o velikosti MAX

for i rovná se 0, dokud i je menší než MAX, i plus plus
   pole i rovná se a plus b
"

Takhle nějak to čtu, a vím, že to není moc dobré. Chtěl jsem se zeptat, jestli někde existuje nějaký popis, jak lingvisticky číst zdroják? Vím, že je to vysoce individuální záležitost, jak to kdo čte. A tak by mě také zajímalo, jak to čtete vy?


Re:Jak lingvisticky číst zdrojový program?
« Odpověď #1 kdy: 14. 07. 2020, 17:00:01 »
Z toho důvodu se obvykle české (ne-anglické) názvy proměnných nepoužívají. Blbě se to čte, když tam nezbytně část slov anglicky být musí.

Celý program jsem recitovat potřebu neměl nikdy, interní monolog probíhá v jazyce nevyslovitelném (takový verbální těsnopis), ale když např. kolegovi popisuji nějakou konkrétní část, nevzdaluji se moc od psané litery - takže skutečně něco jako "define max one thousand, int eye, int aye, bee, ..." aby to v tom textu rychle našel i člověk, který třeba nemá tu intuici a znalost jazyka na takové úrovni.

Vyšší konstrukty jako třeba signaturu funkce bych nečetl fakt nikdy. Je to prostě funkce main, beztak tam jiná není neb C nepřetěžuje :-)

RDa

  • *****
  • 3 078
    • Zobrazit profil
    • E-mail
Re:Jak lingvisticky číst zdrojový program?
« Odpověď #2 kdy: 14. 07. 2020, 19:01:27 »
A pak ze programovani nepotrebuje zadny talent :)

Moje (vnitrni) cteni onoho kousku je asi takto:

funkce Main
MAX neceho bude 1000
cislo i (index?), taky nejake a,b
pole cisel velikosti MAX
cyklus pres vsechny prvky pole ukladajici soucet a b do aktualne iterovaneho


u casti "soucet a b" se jiz zaroven mracim pac maj nedefinovany hodnoty :)

Kdyz se totiz divam na kod, tak v tom nevidim jen pouhy textovy soubor, ale mozek me interpretuje to co vidim rovnou jako neco, co ten kod je. Typovani neprikladam vahu (to tak uz je, a taky momentalne pouzivam casteji netypovane skripty), za to pod nazvy symbolickych konstant a promennych potrebuji videt smysl, k cemu budou slouzit. A,B je slaby, pole je fajn. Doporucuji se mrknout na Madarskou notaci, kdyz chcete k tomu formalni teorii.

Je to stejny jako ze nectete root.cz jako eR ou ou Tee tecka cee zet, ale jako RuutCeeZet, a u toho zaroven uz tusite, ze root je buh!

Re:Jak lingvisticky číst zdrojový program?
« Odpověď #3 kdy: 14. 07. 2020, 19:08:23 »
Pokud je dotaz míněný vážně, tak já popisuju, co program dělá. Nejčastěji v druhé osobě: „Vezmeš pole čísel a pro každý prvek ...“ atd. Takže popisuju funkční bloky a jejich smysl, detaily někdy vypouštím. Někdy se to dá číst jako kuchařka: „Vezmi pole a vraž do něj čísla od jedný do stovky, pak upeč továrnu na bla bla a...“. Důležité je udržet pozornost, expresivní výrazy někdy pomůžou  :D

Re:Jak lingvisticky číst zdrojový program?
« Odpověď #4 kdy: 14. 07. 2020, 21:37:23 »
Rozhodně program takhle nečtu. Nejprve ten kód jenom proskenuju – je to celé jedna funkce main, takže vstupní bod programu, pak divně nadefinovaná konstanta, nad tím se zaseknu a budu dumat nad tím, proč právě takhle a jestli mi v syntaxi C něco neuniká, přeci jen v C nepíšu. Pak jsou tam nějaké deklarace a pak hlavní tělo kódu. Deklarace zatím přeskočím, obvykle jsou nezajímavé. Hlavní kód je tělo od nuly do MAX, plní postupně pole součtem čísel a a b. teď se začnu shánět po tom, kde se a a b berou, takže se vrátím až k té deklaraci.

Takže vůbec nečtu ten text, který je tam napsaný, ale rovnou to čtu podle významu. A nečtu to lineárně, ale po větších strukturách, a teprve když mne nějaká část zajímá, jdu „dovnitř“.


BoneFlute

  • *****
  • 2 047
    • Zobrazit profil
Re:Jak lingvisticky číst zdrojový program?
« Odpověď #5 kdy: 16. 07. 2020, 02:29:15 »
"V main funkci, mám konstantu MAX. Připravím si proměnné. Projdu v cyklu od nuly do MAX, a do každého prvku pole přidám součet a a b. Hej, kde jsem získal hodnoty a a b?!"

V druhé kole zkouknu typy, případně hodnoty konstant.

Ve třetím kole zkouknu jakého typu je volaná funkce, a že je to zrovna main.

Ink

  • *****
  • 686
    • Zobrazit profil
    • E-mail
Re:Jak lingvisticky číst zdrojový program?
« Odpověď #6 kdy: 16. 07. 2020, 11:11:09 »
Připojuju se tentokrát k FJ - program se nečte po řádcích, program se (typicky) čte "shora dolů". V tomto případě vím, že main() je hlavní funkce programu a když vrací int, je to exit kód programu. Teď mě (typicky) zajímá, co ta funkce hlavní funkce dělá a v tomto případě to plní pole a nic s ním nedělá, takže to zase zavřu a nezajímá mě to.

Pokud to je program který dělá něco špatně nebo mám dělat review kódu, samozřejmě půjdu po detailech, ale vždycky je dobré to napřed pojmout jako celek a pak jít k podrobnostem.