Jazyk nejvhodnější pro začátečníka v programování

Re:Jazyk nejvhodnější pro začátečníka v programování
« Odpověď #30 kdy: 25. 06. 2020, 00:00:55 »
Kód: [Vybrat]
NUM% = 256
DEF SEG = VARSEG(NUM%)
PNUM = VARPTR(NUM%)
LO = PEEK(PNUM)
HI = PEEK(PNUM + 1)
PRINT "Lo byte: ", LO
PRINT "Hi byte: ", HI

Co je to za šílenost? Segmenty paměti jsem naposledy používal před 30 lety v dosu na 16 bitových procesorech, kde šlo adresovat jen 64 kB paměti. Doporučení basicu a pascalu sem také nějakým omylem propadlo z tohoto pradávného prostoročasu :-).

:D Asi som trošku zaujatý lebo QBasic bol môj prvý jazyk s ktorým som začínal... A včera som si stiahol novú verziu https://www.qb64.org/ (kôli inej diskusii tu na roote) a som celkom uchvátený, že sa v tom dá programovať aj keď sa to za tie roky moc nezmenilo - prekvapuje ma čo to všetko dokáže a že je to vlastne celkom použiteľné.

C++ je to môj najobľúbenejší (imperatívny) jazyk, mám ho rád lebo sa s nim dá hrajkať a piplať v detailoch, ale odporúčať ho začiatočníkovi je imho blbosť. Ak si nachvíľu odmyslím, že som programátor a pozriem sa na kód očami laika tak ten kúsok kódu v basicu mi príde omnoho viac human readable. Preto si naozaj myslím že tým že začne programovať v BASICu nič nepokazí. On ajtak skôr čo neskôr narazí na limity jazyka a potom prejde na niečo iné. Vôbec neni dôležité aký jazyk je dnes IN ale skôr to v čo v ňom vzbudí záujem o programovanie ako také.


qelurg

  • ****
  • 251
    • Zobrazit profil
    • E-mail
Re:Jazyk nejvhodnější pro začátečníka v programování
« Odpověď #31 kdy: 25. 06. 2020, 06:06:25 »
No asi jo, protože ten svět se přeci jen posunul a chtělo by to špetku soudnosti. Doporučovat seriózně někomu jako první jazyk něco, co jsem včera stáhnul a jsem překvapený, že v tom jde dokonce programovat, to je na facku.

Re:Jazyk nejvhodnější pro začátečníka v programování
« Odpověď #32 kdy: 25. 06. 2020, 12:52:09 »
...

Ja som v QBasicu programoval cca prvé dva roky môjho programátorského života (1997 - 1999). Už som to obdobie skoro vytesnil zo spomienok ale keď som si teraz po rokoch stiahol ten jazyk - všetky spomienky sa mi obnovili a keď som si pospomínal na niektoré konštrukcie tak som zistil že Basic mi dal celkom dobrý základ do rôznych oblastí programovania.

V Basicu som si prešiel hneď niekoľkými paradigmami... Zo začiatku som mal len 1 knihu - starú knihu z 80s pre mikropočítače kde som našiel zdrojáky jednoduchých hier ktoré som prepisoval do QBasicu v tých zdrojákoch sa používal skoro výlučne len príkaz goto alebo gosub / return. Týmito príkazmi sa nahrádzali jak funkcie tak cykly. A keď sa mi tie prvé aplikácie viac rozrástli pochopil som že používať GOTO je vopruz a že tadialto cesta nevedie z aplikácie sa mi totiž stala jedna veľká špageta.

Ale zistil som pritom že QBasic (narozdiel od basicu na 8-bitoch) obsahuje aj procedúry, funkcie a štruktúry a rôzne low level konštrukcie. A toto mi dalo základ k tomu že som sa neskôr zaujímal aj o low level programovanie. Neskôr som to potom všetko zúžitkoval pri Turbo Pascale, Delphi a ešte neskôr pri C / C++ Keby bol moj prvý jazyk PHP alebo Ruby či Python tak by som sa síce naučil hneď OOP ale vôbec by som nechápal ako funguje HW. Proste by sa stal zo mňa len ďalší lepič ktorý si naťahá 10 libiek a z nich potom vyskladá aplikáciu metódou ctrl+c ctrl+v. Poznám takch dosť.

Prečo mu odporúčam basic?

1. je to dobrý základ pre rôzne oblasti. Ak by si vybral ako prvý jazyk PHP alebo JS či Ruby tak pri webovom vývoji ostane a podľa mňa získa menší rozhľad ako keď začne jazykom ktorý má bližšie k hardwaru. Basic má blízko k hardwaru no zároveň je jednoduchý a ľahko pochopiteľný aj pre začiatočníka - má v sebe low level konštrukcie ktoré sú ale samovysvetľujúce. C / C++ má tie konštrukice tiež, ale pre začiatočníkom sa tie rôzne operátory (pointer, referencia, dereferenciaácia pointera) môžu mýliť.

2. k C / C++ treba poznať kopec teórie, sťahovať knižnice, pochopiť ako funguje pamať, preprocessor, kedy vytvárať objekt na halde a kedy na stacku etc, v QBasicu si s prár tutorialmi (alebo s helpom) dokáže naprogramovať jednoduchú 2D hru bez toho aby sťahoval nejaké libky všetko potrebné je súčasťou jazyka / prostredia - takže hneď vidí výsledok - a to je pre začiatočníka dôležité.

3. Basic bol navrhnutý tak aby bol naozaj zrozumiteľný začiatočníkom na učenie programovanie je imho ešte lepší ako pascal. Okrem toho archaické konštrukcie ako pri práci s pamaťou nutnosť nastaviť segment s ktorým pracuje ho aspoň naučia že pamať je rozdelená na segmenty. Vyššie programovacie jazyky ho od týchto problémov odbremenia lenže on žiaľ potom nebude chápať ako funguje počítač pod kapotou.

4. QB64 obsahuje kompletné vývojové prostredie ktoré je ušité na mieru práve začiatočníkom. Obsahuje aj kvalitný help ktorý ho prevedie prvými krokmi. A obsahuje aj komunitu nadšencov ktorí mu pomôžu keď si s niečim nebude vedieť rady. Obsahuje chybové hlášky ktoré sú zrozumiteľné (omnoho zrozumitelnejšie ako má C++ prekladač). Vývojové prostredie mu automaticky formátuje kód (niečo ako prettier) a chyby sa zobrazujú na mieste kde chyba vznikla.

Re:Jazyk nejvhodnější pro začátečníka v programování
« Odpověď #33 kdy: 25. 06. 2020, 14:11:57 »
Jako neprogramátor, co se programováním živit ani nechtěl jsem oceňoval, že když jsem v BASICu napsal
10 PRINT "AHOJ"
20 GOTO 10
RUN
tak to chodilo. A pak se na to mohly navěšovat další příkazy. A nemusely se hned na začátku řešit různé definice, deklarace a podobné věci než se došlo k tomu, aby ten program vůbec něco začal dělat.
Setkal jsem se s názorem, že když někdo začne s BASICem, tak je pro vážné programování ztracený - no budiž.

qelurg

  • ****
  • 251
    • Zobrazit profil
    • E-mail
Re:Jazyk nejvhodnější pro začátečníka v programování
« Odpověď #34 kdy: 25. 06. 2020, 16:07:52 »
Keby bol moj prvý jazyk PHP alebo Ruby či Python tak by som sa síce naučil hneď OOP ale vôbec by som nechápal ako funguje HW. Proste by sa stal zo mňa len ďalší lepič ktorý si naťahá 10 libiek a z nich potom vyskladá aplikáciu metódou ctrl+c ctrl+v. Poznám takch dosť.

Nesmysl. Učím programovat své děti a používám k tomu Raspberry PI a k tomu různé HW elektronické moduly. A Raspberry staví právě na Pythonu. Basic je dávno překonaná minulost.


qelurg

  • ****
  • 251
    • Zobrazit profil
    • E-mail
Re:Jazyk nejvhodnější pro začátečníka v programování
« Odpověď #35 kdy: 25. 06. 2020, 16:11:40 »
Jako neprogramátor, co se programováním živit ani nechtěl jsem oceňoval, že když jsem v BASICu napsal
10 PRINT "AHOJ"
20 GOTO 10
RUN
tak to chodilo. A pak se na to mohly navěšovat další příkazy. A nemusely se hned na začátku řešit různé definice, deklarace a podobné věci než se došlo k tomu, aby ten program vůbec něco začal dělat.
Setkal jsem se s názorem, že když někdo začne s BASICem, tak je pro vážné programování ztracený - no budiž.

Žijete v minulosti, v Pythonu toho dosáhnete neméně jednoduše.

Kód: [Vybrat]
while 1:
    print "AHOJ"

qelurg

  • ****
  • 251
    • Zobrazit profil
    • E-mail
Re:Jazyk nejvhodnější pro začátečníka v programování
« Odpověď #36 kdy: 25. 06. 2020, 16:19:54 »
3. Basic bol navrhnutý tak aby bol naozaj zrozumiteľný začiatočníkom na učenie programovanie je imho ešte lepší ako pascal. Okrem toho archaické konštrukcie ako pri práci s pamaťou nutnosť nastaviť segment s ktorým pracuje ho aspoň naučia že pamať je rozdelená na segmenty. Vyššie programovacie jazyky ho od týchto problémov odbremenia lenže on žiaľ potom nebude chápať ako funguje počítač pod kapotou.

Paměť není rozdělená na žádné segmenty, budiž to důkaz, že basic a jeho archaické konstrukce zdeformovaly vaše povědomí o tom, jak funguje počítač pod kapotou. Radši jdu pryč, protože mám nutkání být sprostý.

Re:Jazyk nejvhodnější pro začátečníka v programování
« Odpověď #37 kdy: 25. 06. 2020, 21:47:03 »
3. Basic bol navrhnutý tak aby bol naozaj zrozumiteľný začiatočníkom na učenie programovanie je imho ešte lepší ako pascal. Okrem toho archaické konštrukcie ako pri práci s pamaťou nutnosť nastaviť segment s ktorým pracuje ho aspoň naučia že pamať je rozdelená na segmenty. Vyššie programovacie jazyky ho od týchto problémov odbremenia lenže on žiaľ potom nebude chápať ako funguje počítač pod kapotou.

Paměť není rozdělená na žádné segmenty, budiž to důkaz, že basic a jeho archaické konstrukce zdeformovaly vaše povědomí o tom, jak funguje počítač pod kapotou. Radši jdu pryč, protože mám nutkání být sprostý.

Ak sa pamať nedelí na segmenty tak ako to teda je? Ja som bol v tom že smerník (pointer) na prmennú obsahuje adresu premennej v pamati.

A táto adresa sa skladá zo segmentu a offsetu. Pri 32 bitovej adrese je prvých 16 bitov segment a druhých 16 bitov offset. alebo sa mýlim?

Re:Jazyk nejvhodnější pro začátečníka v programování
« Odpověď #38 kdy: 27. 06. 2020, 08:43:16 »

Ak sa pamať nedelí na segmenty tak ako to teda je? Ja som bol v tom že smerník (pointer) na prmennú obsahuje adresu premennej v pamati.

A táto adresa sa skladá zo segmentu a offsetu. Pri 32 bitovej adrese je prvých 16 bitov segment a druhých 16 bitov offset. alebo sa mýlim?

Haha, to je nostalgie. Zhruba takhle (ale o něco složitější) to bylo dávno v reálném módu, myslím že procesory od i386 (uvedeny na trh v roce 1985, i když reálný mód se používal mnohem déle, to byla zhruba ta doba výroku "640 KB RAM by mělo stačit pro každého") dál už uměly virtuální adresování, tehdy se to nazývalo protected mód, a s tím se jede doteď. Adresa je prostě číslo, neskládá se z žádného segmentu a offsetu. Každý proces ovšem dostane svůj virtuální adresní prostor izolovaný od ostatních procesů, adresy do tohoto virtuálního prostoru pak teprve procesor (nebo řadič paměti, nevím přesně) překládá na fyzické adresy, z pohledu toho procesu je to ovšem zcela transparentní, uvádím to spíš pro úplnost.

Kdybych dnes někoho chtěl naučit, jak vypadá low level programování, doporučil bych mu Rust, nebo v horším případě C, to jen na malé  pokusy. C++ jen tchyni, a to by ještě musela provést něco opravdu ošklivého. Na základy programování jako takového opravdu asi ten Python.

Re:Jazyk nejvhodnější pro začátečníka v programování
« Odpověď #39 kdy: 27. 06. 2020, 09:13:41 »
mi se zalibil golang.
C a C++ az pripadne potom, i kdyz my dedci jsme zacinali prave na C a C++.