Načítavam moment...
Momentálne nie ste prihlásený

S čím začať programovať? (Späť na článok)

Pridajte priamu reakciu k článku

1 2 >

Hodnoť

 

Eeee ... hrubo nesuhlasim s tym, ze zacat treba s Packalom alebo s C (mozno tak na gymnaziu alebo VS) ... zacat treba s karlom, zofkou alebo baltikom a co najskor na ZS ...

Inak je v podstate jedno s cim clovek zacne, pokial k tomu ma vztah, nema problem neskor prestupit na hociaky jazyk.
 

suhlas

Este sa vidi, ze existuje nejaky Imagine. Myslel som skor teengerov :) Na zakladnu skolu jasne, ze nieco take :)
Dakujem :)
 

 

Skoro so všetkým súhlasím, len... toho Baltíka si dal len do počtu, alebo máš v jeho prospech nejaké argumenty? Ja som ho videl len kedysi dávno, takže terajšie verzie sú možno iné, ale viem, že na mňa vtedy zapôsobil ako absolútna zbytočnosť. Mal nejaký programovací režim, ktorý mi pripadal zložitejší ako klasické textové programovanie, a potom mal nejaký priamy režim, ktorý s tým programovaním nemal nič spoločné.

Niekedy mám pocit, že keby autori nechceli príliš machrovať, radšej mohli namiesto nového jazyka urobiť nejakú knižnicu alebo front end k existujúcemu jazyku.
 

Urie

Mal som tu cest programovat v Baltikovi, mal som aj nejaky uspech a nemyslim si ze je to taka blbost. Ano, boli tam dva rezimy, tvorba sceny a tvorba programu. Scena bolo usporiadanie objektov v okne a programovacia cast bola riesena tak, ze by tomu pochopilo aj 7 rocne decko. Zbytocnost to nebola. Urcitym sposobom ma to pripravilo na c++, samozrejme iba zakladne principy programovania.
 
Hodnoť

Vdaka za pekny clanok

C som sa zacal ucit este z knihy Hopcroft-Ulman (asi som ich mena skomolil), a ta kniha sa mi pacila, hoci viacero ludi na nu nadavalo. Mal som ju pozicanu z verejnej kniznice v Petrzalke. :-)
 

C a Hopcroft Ulman? omyl

C napisali Kernighan a Ritchie, autori povodnej ucebnice, ktora sa stale pozuziva. Narozdiel od Hopcroft Ulman, autori ucebnice Formalne jazyky a automaty = co popisuje rozne gramatiky a zlozitost programovania pouzitim Turingovho stroja a nie realneho pocitaca.
 
Hodnoť

určite Python

aspoň s tých menovaných je najvhodnejším jazykom pre začiatočníkov - skriptovací, s rýchlym vývojovým cyklom, s haldou modulov, s viacerými dobrými IDE. Python má kompilátory pre Java VM (Jython) aj .NET (Iron Python). A nakoniec má Python výbornú podporu integrácie s C/C++, prepojenie na tieto jazyky ja naozaj výborné (často je Python interným skriptovacím jazykom pre aplikácie naprogramované v C/C++ napr. Blender).
 

 

znie to paradoxne, ale myslim si, ze halda modulov a rychly vyvojovy cyklus je pre zacinajuceho programatora riziko. nevidim do pythona, ale tieto 2 atributy platia pre javu a na studentoch vo vyssich rocnikoch vidno tie trvale nasledky javy asi ako na teenagerovi v piatok o 23tej vidno alkohol... :-)
 

halda modulov je v Pythone k dispozícii

ale nie je potrebné pre základnú výuku ovládať ani jeden z modulov.

Ale keď sa dostaneš vo výuke za základy, veľmi pomôže, keď na každú špecializovanú oblasť existuje knižničná podpora.
 

k Jave

Java sa mi zdá dosť zošnurovaná (to je dané jej filozofiou - osekať všetko, čo nie je nevyhnutné), preto má taký "zadrôtovávací vplyv", ak sa ju človek učí ako prvú. Skriptovacie jazyky sú väčšinou oveľa uvoľnenejšie, a preto menej deformujúce.
 
Hodnoť

 

Basic je basic, na zacatie programovania idealny a ked pochopis zaklady, sup na javu :)
Ale inak mi pride celkom vhodny aj actionscript (2.0, aby bolo jasno :)), na pochopenie programovania idealne, hned aj vidis co sa deje. A ako maly uvodik k jave tiez dobre. A inak zacinat rovno v cecku musi byt otrava, pascal je imho mrtvy, asi najskor ta java.
 

 

na margo javy ... vid moj prispevok vyssie
 
Hodnoť

dalsia k jave

neviem ci je java vhodny jazyk na zacinanie programovania, sam som zacinal na basicu a potom Z80 asembleri, ale java je presne taka aku si ju clovek urobi. Inymi slovami ak potrebujes nieco rychlo naskladat pouzijes dostupne kniznice a volania , ak potrebujes mat plnu kontrolu na behom tak si povacsinou povytvaras vlastne triedy/kniznice. Problem s pouzivanim kniznic ma zrovna tak java ako aj ostatne jazyky C/C++ nevynimajuc.
Java vsak nie je len j2ee/j2se. Dlhsie programujem mobilne aplikacie a skutocne musim povedat, ze dnes sice kniznice pouzivam, ale su z 50% moje vlastne a to ci uz ide o pouzivanie ukladania dat do RMS, kreslenie na displaj, pracu s fontami, httpConnection alebo rozne sifrovacie bloky pre prenosy dat na server.
A kedze som na mobilnu javu prechadzal v case ked limit na jednu app bol 32kb tak sa optimalizovalo zhusta aj na vyslednu velkost kodu aj na performance kedy sa cykly for nad polom neriesili opatovnim volanim dlzky ale predsunutim premennej pred cyklus. O.i. tieto navyky na optimalizaciu mi zostali podnes a obcas ked musim nieco spachat v j2ee kolegovia sa stazuju, ze nie vsetkemu rozumia.
Ale aby som nezabudol pointu na zaver.... ked sa niekto chce ucit programovat musi v prom rade chciet a potom nie je problem zacat cimkolvek a zaroven mozem len konstatovat, ze prasacky kod sa da napisat v akomkolvek jazyku
 

 

nepoznam zaciatocnika, ktoreho jeho prvy program by bola aplikacia pre mobil.
 
Hodnoť

biblia C

povinna vybava kazdeho Ceckara je predsa C programming language od K+R (vydana tusim v r 1978) :-)))
 
Hodnoť

 

"Tie jazyky sú veľmi inteligentné. V preklade to znamená, že robia za programátora čo môžu, čím skrývajú niektoré princípy programovania."

Hm, toto by bolo na dlhšiu diskusiu, možno samostatný článok -- čo považuješ za princípy programovania? Čo je v programovaní to naozaj dôležité?

Ja mám pocit, že som ako programátor prešiel takými troma štádiami. V prvom štádiu som za najdôležitejšie považoval poznať čo najviac príkazov. Mal som takú hrubú knihu so všetkými príkazmi jazyka GWBasic (alebo tak nejako) a tešil som sa, že až raz budem veľký, budem poznať všetky tie úžasné príkazy.

V druhom štádiu som pochopil, že príkazov existuje potenciálne nekonečne veľa -- až raz niekto vymyslí programovateľný lúskač orieškov, určite aj na to bude existovať nejaké API, ale jeho neznalosť ma nijako neochudobňuje, a ani ho nechcem poznať, až do okamihu, keď príde konkrétny projekt, a vtedy si to naštudujem z manuálu, urobím projekt, a zase zabudnem. Za najdôležitejšiu som považoval znalosť syntaxe jazyka. Vtedy som sa rád zapájal do diskusií na tému, ktorý programovací jazyk je lepší a prečo.

Tretie štádium je také nejaké "postmoderné", kde je programovací jazyk tiež len vymeniteľný nástroj. Isteže, na niektoré nástroje som si zvykol, ale nepovažujem za ich za objektívne lepšie a nebudem ich preto vnucovať druhým. Keby bolo treba, tak sa nový jazyk naučím... ale pridanú hodnotu tam vidím iba vtedy, keby bol dosť odlišný od tých, ktoré poznám. Rád by som niekedy lepšie pochopil Smalltalk alebo Lisp, ale nevidím dôvod bez mimoriadne silnej finančnej motivácie študovať napríklad C#, keď už poznám C, C++, Javu. Nový jazyk je dobrý vtedy, keď ma naučí myslieť novým spôsobom, ktorý sa potom prejaví aj pri programovaní v doteraz známych jazykoch. Namiesto knižníc chcem poznať design patterny; namiesto porovnávania jazykov si uvedomujem, že na tú istú vec možno pozerať úplne rôznymi spôsobmi, a každý má svoje dôvody. Zaujímajú ma techniky typu unit testing, ktoré umožňujú vyvinúť produkt lepšie a jednoduchšie.
 
Hodnoť

 

K tomu článku, ktorý uvádzaš ("Programátorské schopnosti absolventov klesajú, problémom je Java") by som pár vecí chcel doplniť, keďže Java je moja srdcová záležitosť. ;-)

Súhlasím s tým, že keď začneš žiakov učiť robiť grafické programy, len ťažko ich vrátiš k algoritmom. Ale Java nie je len o grafike. Môžeš v nej urobiť aj program vypisujúci do príkazového riadku, spracovávajúci súbory, atď. Čo vieš urobiť v Pascale, pomerne priamočiaro vieš prerobiť do Javy. Čiže by som to nebral ako chybu jazyka, ale ako chybu pedagogického prístupu... ako častý omyl učiteľov a autorov učebníc. Učiteľ nesmie podľahnúť tlaku žiakov a príliš rýchlo prejsť z "príkazového riadku" na grafiku, lebo cesta naspäť je skoro nemožná. Zistil som to na vlastnej chybe; kým program vypisuje na konzolu, žiak pozerá na zdrojový kód; akonáhle program zobrazí niečo farebné, žiak už pozerá iba na výstup... už ho nezaujíma pointa, chce iba rýchlo vedieť, ktoré číslo treba ako zmeniť, aby sa to zelené koliesko posunulo trochu viac doprava. nesmieš prijať laický pohľad "príkazový riadok je trápny, moderný program musí byť v okne", ale uvedomovať si, že grafické API je iba jedno API z milióna, nič viac.

To, že sa namiesto "malej skupiny primitívnych operácií" hľadajú triedy, je dôsledok objektovo orientovaného programovania. Áno, púhym používaním tried sa žiak programovať nenaučí; naučí sa len písať jednoduché skripty. Programovať sa naučí až vytváraním vlastných tried. Keď už má jazyk dobrú knižnicu, na väčšinu triviálnych úloh už existuje nejaká metóda nejakého objektu. Nemá zmysel znovu písať kód na výpočet druhej odmocniny, keď tu máme "Math.sqrt". Všetky triviálne veci už boli urobené -- výhoda pre programátora v praxi, nevýhoda pre učiteľa, keď má vymyslieť jednoduchý príklad na precvičenie. Na druhej strane, môže dať študentom za úlohu napísať vlastnú alternatívnu implementáciu existujúceho objektu. Napríklad: "Máme typ List, čo je zoznam objektov. Naprogramujte typ ListInt, ktorý bude zoznam primitívnych hodnôt int, a bude poskytovať podobné metódy. Nesmiete pritom využiť žiadnu kolekciu, iba polia."

Argument, že dobrý programátor musí poznať viacero programovacích jazykov, by som ešte rozšíril o poznanie formálnych jazykov, ako napríklad Turingov stroj. Tam s grafickým API a príliš silnými knižnicami žiadne problémy nebudú. ;-) Dá sa to robiť s ceruzkou na papieri, ale keby existoval vhodný simulátor, tak ešte lepšie. Napríklad namiesto skutočného assembleru by som učil skôr nejaký idealizovaný assembler, kde by nebolo toľko výnimiek, ani zbytočne silné matematické funkcie, a na komunikáciu s externým svetom inštrukcia "načítaj zo vstupu bajt" a "vypíš na výstup bajt"; a hneď môžu byť úlohy, kde sa má daný vstupný súbor spracovať na výstupný, najlepšie s možnosťou automatického vyhodnotenia cvičenia pomocou sady vzorových vstupov a výstupov.
 

k Jave

O dobrom programatorovi som sa skoro ani nezmienil. Nechapete o com clanok je? S cim zacat programovat. Zacni 15 rocnemu dievcatu, ktore nespravilo jeden program tlacik to hlavy Turingov stroj, halting problem, automaty a neviem co este je imho nezmysel.

Java je cisto OOP. Teda velmi mocny nastroj a treba pisat kopu zaciatocnikovi nic nezamych slovicok. Cloveku, ktory nic nie tlacit do hlavy rovno javu a OOP sa mi ako zahmlevanie veci. Za OOP je velmi silna filozofia na ktorej pochopenie treba urcitu mieru abstrakcie. Halting problem a univerzalny system programov tiez ti ludia nepochopia na strednej skole.

Fajn, majme datovy typ ArrayList. A maju studenti predstavu, co je vobec datovy typ? Vytvaraju nieco, a ani nevedia co. Javu zaciatocnikovi nemozes vysvetlovat bez toho aby si mu povedal, ze toto toto a toto slovicko tu musi byt, ale este si ho nevsimaj... V tom je super vyhoda pascalu, kde student pozna vyznam kazdeho slovicka.

Ludia na vysokej skole maju hlboku mieru abstrakcia a vidia suvislosti, o ktorych by som v zivote nepovdal ze su. Stalo sa mi, ze som nadavaj na nieco, preco sa to tak uci a po par rokoch mi doslo, lebo tak to je najlepsie ak sa chce clovek rozvijat.

Pomaly cela tato diskusia je trapna a absolutne zbytocna...
 

 

Ako som napísal v prvom riadku, reagoval som na článok, ktorý si v článku linkoval, nie na Tvoj článok. Ten článok spomínal "[problém], ktorý trápi mnohých zamestnávateľov v IT priemysle", takže som ho pochopil, že je o budúcich programátoroch; a týkal sa vysokých škôl. Moja záverečná poznámka bola teda o tom, že absolvent vysokej školy so zameraním na informatiku by mal mať Turingove stroje zvládnuté.

S čím začínať, to je iná otázka. Mimochodom, myslím si, že správne podané Turingove stroje nemusia byť pre začiatočníka zlé. Ako pri mnohých veciach, veľmi tam záleží na tom, ako to učiteľ podá. Keby k tomu Turingovmu stroju bolo nejaké pekné grafické rozhranie, kde by žiak mohol cez drag-n-drop naeditovať príkazy, a potom by mal tlačidlá "urob krok", "spusti program", "preruš program". Tam si viem predstaviť jednoduché príkazy typu "prejdi cez dané slovo, všetky písmená A vymeň za B a naopak". Žiadne dokazovanie. Dobré učenie postupuje od konkrétneho k abstraktnému, čiže vyučovacím cieľom by bolo akurát naučiť sa písať jednoduché algoritmy. Výhodou Turingovho stroja je, že je omnoho menej abstraktný ako bežné programovacie jazyky. Má len jednu inštrukciu a tá je pomerne zrozumiteľná. Dá sa simulovať pomocou papiera a pera, alebo poskladať z Lega, skrátka dá sa veľmi jednoducho mechanicky trasovať. Žiak môže mať problém vytvoriť požadovaný algoritmus, ale nebude mať problém overiť, či daný algoritmus na danom vstupe vbehne správne alebo nesprávne... ak teda daný algoritmus nebude príliš časovo zložitý. Stačilo by vytvoriť pár jednoduchých algoritmov, a potom prejsť na iné učivo. Plus mať nejaké materiály na ďalšiu samostatnú prácu pre prípadných záujemcov.

Pokiaľ ide o učenie sa programovacích jazykov, ja som vždy videl riešenie vo vytváraní user-friendly knižníc. Napríklad keď som učil Pascal, urobil som knižnicu, ktorá rozdelila obrazovku na 20×20 štvorčekov, a mala príkazy "Draw(x,y)", ktorý vyfarbil daný štvorček. (V štvorčekoch sa automaticky vypisovali malé čísla udávajúce, v akom poradí bol štvorček vyfarbený.) S týmto jedným príkazom naučíš žiakov rozoznávať x-ovú súradnicu od y-ovej, keď k tomu pridáš for-cyklus, môžeš vykresliť vodorovnú čiaru, zvislú, šikmú, obvod obdĺžnika, vyplnený obdĺžnik. V porovnaní s inými bežne používanými riešeniami si sa nemusel učiť osobitný "detský programovací jazyk"; okrem volania knižnice a jedného príkazu si mal úplne obyčajný Pascal. Na druhej strane si nemusel písať kód na inicializáciu grafického režimu, čo sa v Pascale písalo pomerne zložito. Potom som ešte pridal príkazy na vstup a výstup, napríklad "ReadNumber(prompt)" zobrazil pop-up okno, načítal string, skonvertoval ho na integer, ak bola chyba, požiadal používateľ o opravu... z pohľadu programátora funkcia vrátila integer a o iné sa nemusel starať. Dali sa teda písať mimoriadne prehľadné krátke programy, ktoré zachytávali podstatu. (Až budem mať na to čas, rád by som niekedy urobil nejaké podobné knižnice aj pre Javu.)

Myslím si, že dnešné problémy s vyučovaním informatiky sú dané tým, že už je veľký rozdiel medzi "nekvalifikovaným programovaním" a písaním algoritmov. Tým prvým označujem kódera, ktorý vezme nejaké preddefinované objekty, nastaví im nejaké vlastnosti a zavolá ich metódy. V podstate je schopný napísať aj program na hranie šachu, ale iba pod podmienkou, že dostane správnu knižnicu, z ktorej zavolá funkciu "ChessProgram::play()". Skrátka 99.9% jeho programu robí knižnica, 0.1% jeho viacmenej lineárny kód, prakticky bez algoritmu. Kedysi to tak nebolo, lebo kedysi takéto knižnice neexistovali. Treba si to uvedomiť.
 
Hodnoť

re:

zs -> basic
ss -> pascal, assembler
vs -> c
....
prax -> jak je libo
 

1 2 >

Najčítanejšie


  1. Adam Nochta: Ľuboš Blaha, ban-sexuál 8 453
  2. Peter Kollega: Som zločinec a nechcem aby ma riešila Ficova kurtizána a Čižnár-Gašparovičovi protežanti 2 148
  3. Pavel Sibyla: Ako sa znásilňujú štatistiky nezamestnanosti za Matoviča 1 708
  4. Peter Kollega: Papalášstvo od Mečiara po Beblavého 1 685
  5. Mišo Šesták: Ako známy rómsky muzikant zhudobnil vypálenie Lučenca ruskou armádou 848
  6. Martin Greguš: Rozšírenie uhoľnej bane Turów - otvorená výzva ministrovi Jánovi Budajovi: STOP 846
  7. Adam Puškár: Obec Marianka varuje Stupavu pred výstavbou projektu Habánky 803
  8. Jozef Sitko: Ficov zákon o teple „okradol“ veľa domácností 668
  9. Dominika Dongova: Kňaz, jeho slová a ja.. 654
  10. Stanislav Martinčko: Excelentný Rašiho plán na Koronu! 640

Rebríčky článkov


  1. Roland Ondrus: Qantas chce povinnosť očkovania pre pasažierov!
  2. Radoslav Žilinský: Zimný oddych na 1000 rôznych spôsobov
  3. Július Kovács: Páni čitatelie a blogeri celé to tu v SME zapácha hoci Haščákom a Martinom Borguľom
  4. Naďa Mitanová: Neodoslané listy, pozabudnuté sny, záhrady zarastené burinou...
  5. Stanislav Martinčko: Excelentný Rašiho plán na Koronu!
  6. Olívia Lacenová: Bitcoin si razí cestu nahor. Prekonal trojročné maximá
  7. Peter Biščo: Pán premiér, je nevyhnutné odložiť plienky a ...
  8. Nikola Ivanov: 10 častých chýb pri investovaní
  9. Peter Žiak: Mao-Tovič - za 9 mesiacov tam, kde Fico za 12 rokov ...
  10. Miroslav Binčík: Deti, kto sa nezmestí na javisko, pôjde do sakristie


Už ste čítali?