Jak začít programovat od nuly?

Re:Jak začít programovat od nuly?
« Odpověď #15 kdy: 01. 02. 2021, 14:42:13 »
Hlavně proboha nezačínej s C++ ;D. Naopak časem (až budeš umět základy) můžeš přidat trochu C.

Můj vývoj: v osmdesátých letech jsem zahlédl tu a tam útržky 8080/Z80 ASM na papíře. První vlastní PC v roce 1992, do té doby jsem měl páječku. Na PC začátky basic, pascal - z obojího rozpačité pocity (v tehdejší době špatná dokumentace, nebyl internet). Ve škole mi půjčili jednu knížku = referenční příručku k Turbo Assembleru (Borland, x86, syntaxe Intel) - to bylo zajímavé čtení, ale nekompletní, napsat podle toho něco se moc nedalo. V knihovně jsem začátkem devadesátek narazil na český překlad (?) Kernighan+Ritchie C - to byla poezie. Konečně nějaký jazyk dobře vysvětlený a relativně úsporný. Ale v té době jsem se nedostal k překladači. To až později, patrně na vejšce... (1995 nebo tak nějak). Pořád jenom Borland, ale oproti Pascalu labůžo. Konečně jazyk, který z člověka nedělal blbečka, měl kompletní sadu operátorů pro bit-banging, bohatou sadu datových typů blízkých "stroji". Pro mne bylo Céčko od té chvíle "jazyk, podle kterého se Pascal opičí a stydí se za to" - a na vejšce byly první povinné kurzy algoritmizace v čem? V pascalu :-( Teprve když jsem se dostal ke konci 90.let k Linuxu, pohltilo mě céčko doopravdy - v podobě "GNU ekosystému". Spousta examplů a další dokumentace. Objevil jsem celý svět s poměrně dlouhou historií, která vedla třicet let zpátky někam do Bell Labs... žůžo. C++ jako nadstavba céčka... jo, to se dalo pochopit a uchopit. Takže už ne gcc ale g++. A knížky kolem toho. Konečně v GNU světě jsem začal ostře rozlišovat C od C++ tzn. která z těch dvaceti různých funkcí, jak poslat znak či řetězec na standardní výstup, je ještě céčko, a která už je C++. (Protože Borlandí IDE podporovalo C i C++ a moc mezi tím nerozlišovalo.) Zrovna v tu chvíli mi v práci začla přicházet i smysluplně velká zadání, přestože "do šuplíku" / mimo popis práce. Objektové přístupy začaly dávat smysl. Ve škole základní věci v rovině algoritmizace - datové struktury, jak to jde dohromady s alokací paměti apod.

Od té doby když vidím cokoli závorkovatého odvozeného od C, tak se zhruba orientuji, ale pokaždé si říkám "nojo, tohle je wrapper okolo libc, a není moc povedený ani kompletní" nebo "aha, takže integer, ale délku a znaménko řešit nemám" nebo "jasně, máme garbage collector, takže po sobě neuklízíme a jsme na to pyšní" apod. Ale že by mě něco chytlo u srdíčka víc, než C/C++, jakožto programovací jazyk, tak to ani náhodou.

Potkal jsem v pozdějším věku i Pascal na holém železe, v jedné takové retro-údržbě, a s dnešní dokumentací jsem se dozvěděl o spoustě syntaxe, kterou v základních učebnicích Pascalu nenajdete, přestože ji Borland podporoval zřejmě už dávno - a která doplňuje právě ty věci, kterými se Céčko nijak netají a nikdy netajilo. Přesto ani v tomto kompletnějším skupenství mě Pascal za srdíčko nechytil. A pokud se týče Pythonu... pohyblivý cíl, neúplné wrappery okolo céčkových knihoven a syscallů, garbage collection, bloatware, instalační systém stižený vleklou revolucí... nic pro mě :-)

Ale já jsem "jinej". Jednak jakožto programátor věčnej hobbík, jednak jsem byl asi povahou systémák ještě než jsem si poprvé šáhnul na klávesnici.

Vybírejte si nástroje podle zadání, které dostanete - resp. podle hobby námětu, který Vás oslovil svou šťavnatostí.

Nebojte se číst, nebojte se experimentovat. Nebojte se debatovat! :-) Když čtete, nebojte se překakovat věci, které zatím nechápete, nebo nepotřebujete. Případně knihu odložit v půlce, pokud je jedněch nebo druhých věcí náhle většina. Dost možná je vinou autora, že zábava náhle uvadá - nebo se Vám prostě další kapitoly už nestrefily do vkusu.

A souhlasím s Jendou, že je blbost začínat ausgerechnet C++, dokud člověk nezná céčko. Tzn. pořídit si knihu, která začne hezky zostra rovnou vychytávkami C++ (a jaksi samozřejmě předpokládá, že člověk je Céčkem už načichlý). V takové situaci bych asi taky reagoval "WTF". Mimochodem starší kniha Thinking in C++ od Bruce Eckela tuším začíná pár kapitolami o Céčkových základech. Tu bych si jako první čtení dokázal i představit...


Idris

  • *****
  • 2 286
    • Zobrazit profil
    • E-mail
Re:Jak začít programovat od nuly?
« Odpověď #16 kdy: 01. 02. 2021, 14:43:58 »
Rust je skvělý jazyk, mám ho hrozně rád, jen pro začátečníka křivka učení je zpočátku strmá
Moje řeč, ale stojí to za to.

Re:Jak začít programovat od nuly?
« Odpověď #17 kdy: 01. 02. 2021, 17:20:43 »
Rust je skvělý jazyk, mám ho hrozně rád, jen pro začátečníka křivka učení je zpočátku strmá
Moje řeč, ale stojí to za to.

A s metaprogramováním (makra) v podstatě můžete udělat cokoliv.
-- edit: A vážně to není textová substituce jako v C/C++ ale opravdu makra.
« Poslední změna: 01. 02. 2021, 17:23:05 od okalousek »

Re:Jak začít programovat od nuly?
« Odpověď #18 kdy: 01. 02. 2021, 17:59:08 »
Pascal není mrtvý a navíc je pro úplného začátečníka velmi vhodný.

Kdyz ctu podobne hlody, tak vzdycky premyslim, jestli je za tim neznalost, nebo snaha o preventivni odstraneni konkurence z trhu prace. Proc je proboha Pascal vhodny pro zacatecnika? Protoze to uz 30 let ruzni lide omilaji?

qelurg

  • ****
  • 372
    • Zobrazit profil
    • E-mail
Re:Jak začít programovat od nuly?
« Odpověď #19 kdy: 01. 02. 2021, 18:03:40 »
Ano, byly. Záleží na kontextu (jaký OS, desktop vs mobil vs web), kromě těch dvou ještě stojí za zvážení Python, Swift nebo Go.

S Go se nedá moc psát desktop, hry, ani mobilní.

Tak určite, preto poznám minimálne 4 aplikácie v Go čo sú desktopové aplikácie (aj s GUI), vôbec neexistuje možnosť v Go využiť GTK že? Prečo potom GTK má priamo na stránke "Go bindings" pre Gtk3, Ani na mobil není možné spraviť v tom appku že? Len ja ti ju nejak dokážem vytvoriť za pol dňa aspoň nejakú primitívnu TODO ak chceš.

Zahrada lze taky zrýt lopatou, ale že by to byl dobrý nápad, to se říct nedá.


Ink

  • *****
  • 654
    • Zobrazit profil
    • E-mail
Re:Jak začít programovat od nuly?
« Odpověď #20 kdy: 01. 02. 2021, 18:06:17 »
A souhlasím s Jendou, že je blbost začínat ausgerechnet C++, dokud člověk nezná céčko. Tzn. pořídit si knihu, která začne hezky zostra rovnou vychytávkami C++ (a jaksi samozřejmě předpokládá, že člověk je Céčkem už načichlý). V takové situaci bych asi taky reagoval "WTF". Mimochodem starší kniha Thinking in C++ od Bruce Eckela tuším začíná pár kapitolami o Céčkových základech. Tu bych si jako první čtení dokázal i představit...

Prakticky všechno, co je z C++ dneska rozumně použitelné, je od C na míle daleko. Ten jazyk by byl docela fajn, kdyby z C původně nevyšel.  ;D

qelurg

  • ****
  • 372
    • Zobrazit profil
    • E-mail
Re:Jak začít programovat od nuly?
« Odpověď #21 kdy: 01. 02. 2021, 18:10:05 »
C je základ, to by měl znát každý profi programátor, ale ne jako první jazyk. Začít pythonem je dobrá první volba, pravděpodobně ta nejlepší.

xyz

  • ***
  • 200
    • Zobrazit profil
Re:Jak začít programovat od nuly?
« Odpověď #22 kdy: 01. 02. 2021, 18:28:46 »
Jdes na to spravne. Krome nuly jeste potrebujes jednicku  :)

Idris

  • *****
  • 2 286
    • Zobrazit profil
    • E-mail
Re:Jak začít programovat od nuly?
« Odpověď #23 kdy: 01. 02. 2021, 18:32:04 »
Rust je skvělý jazyk, mám ho hrozně rád, jen pro začátečníka křivka učení je zpočátku strmá
Moje řeč, ale stojí to za to.
A s metaprogramováním (makra) v podstatě můžete udělat cokoliv.
-- edit: A vážně to není textová substituce jako v C/C++ ale opravdu makra.
Právě ta makra mě v Rustu příjemně překvapila, zrovna něco takového mi v C++ častokrát chybělo.

alex6bbc

  • *****
  • 1 432
    • Zobrazit profil
    • E-mail
Re:Jak začít programovat od nuly?
« Odpověď #24 kdy: 01. 02. 2021, 18:37:50 »
ja souhlasim, ze java/python jsou uzitecne, ale jestli chces znat vnitrnosti a videt dovnitr,
tak jako stary dedek funguju pomoci C, C++

z modernich jazyku se mi libi prave GO, protoze na tom delaji borci z delali v bellovych laboratorich.

Re:Jak začít programovat od nuly?
« Odpověď #25 kdy: 01. 02. 2021, 19:59:29 »
Hlavní je, aby to člověka bavilo. První kód by se měl odehrávat na pár řádcích. K tomu stačí F12 a jít do javascriptové konzole prohlížeče. I když nemám javascript moc rád, je od verze ES6 docela použitelný a rozhodně není jen pro chudáky.

Pár nápadů pro edukativně laděné programování:


Další možnost je najít reálný úkol, který chcete vyřešit a tam začít. Vhodný nástroj se jistě najde (necháte si poradit). Je vhodné mít někoho k ruce kdo pomůže, pokud člověk uvízne.

Každý jazyk má určité vlastnosti a také kulturu či filosofii. Většina běžných jazyků se dá použít ve více oblastech. jednou možností z mnoha je se věnovat jvm jazykům , protože sdílejí společný ekosystém (používám java a groovy). Do C bych nešel, ale hodí se pár lekcí pro lepší představu jak operační systém funguje a aby člověk ocenil komfort vyšších jazyků.  U C++ budete zakopávat na spletitou historii, i když poslední verze jsou asi dobře použitelné, historii byste se v běžné práci nevyhnul. Z podobných důvodů bych ignoroval i PHP.

Re:Jak začít programovat od nuly?
« Odpověď #26 kdy: 01. 02. 2021, 20:43:26 »
Já to vidím jednoduše - začít se učit to, kde existuje zajímavý a zdokumentovaný projekt. Tedy něco ve stylu: Jak vytvořit aplikaci pro sledování kursu měn, která doporučí optimální nákup valut před dovolenou.

Re:Jak začít programovat od nuly?
« Odpověď #27 kdy: 01. 02. 2021, 21:42:13 »
C je základ, to by měl znát každý profi programátor, ale ne jako první jazyk. Začít pythonem je dobrá první volba, pravděpodobně ta nejlepší.

C je super jazyk ktory sa podla mna oplati poznat, ale dnes uz ho vo velmi vela oblastiach netreba vobec ovladat a v tych zvysnych ho pomaly ale isto nahradzuje Rust (prip. Go). Python/Javascript prip. ine netypove jazyky su na vyucbu optimalnejsie, vacsina svetovych univerzit uz ide tymto smerom a C sa vyucuje ako druhy alebo volitelny doplnkovy jazyk...,

To, co sa vyucuje na strednych skolach sa oplati ignorovat, lebo vacsinou sa tam uci zalostne malo a ked dojdes na univerzitu zacnu ta aj tak ucit od nuly....

Já to vidím jednoduše - začít se učit to, kde existuje zajímavý a zdokumentovaný projekt. Tedy něco ve stylu: Jak vytvořit aplikaci pro sledování kursu měn, která doporučí optimální nákup valut před dovolenou.

tento pristup zvykava mat nevyhodu pre ludi, ktori ho absolvuju: casto si zacnu mysliet, ze im zaklady informatiky netreba, lebo sa dokazali rovno vrhnut do kodenia realneho projektu a potom robia kolosalne hovadiny (typicky neefektivny kod, alebo nenormalizovany navrh databaz/datovych ulozisk) a nerozumeju preco to co robia je zle (a este v horsom variante im to ziadny kolega ani nevie vysvetlit inak ako "takto sa to nerobi" a v najhorsom pripade sa na to dojde az po spusteni projektu ked sa to nasadi a zrazu to zozere vsetku RAM alebo miesto na disku v priebehu par dni.... )

Re:Jak začít programovat od nuly?
« Odpověď #28 kdy: 01. 02. 2021, 22:02:26 »
Já to vidím jednoduše - začít se učit to, kde existuje zajímavý a zdokumentovaný projekt. Tedy něco ve stylu: Jak vytvořit aplikaci pro sledování kursu měn, která doporučí optimální nákup valut před dovolenou.

To u většiny projektů neprogramátor nedá. Musí to být tak jednoduchý projekt, aby to pochopil i člověk který „nic nechápe“.

Re:Jak začít programovat od nuly?
« Odpověď #29 kdy: 02. 02. 2021, 10:18:10 »
z modernich jazyku se mi libi prave GO, protoze na tom delaji borci z delali v bellovych laboratorich.

Citace: Rob Pike
The key point here is our programmers are Googlers, they’re not researchers. They’re typically, fairly young, fresh out of school, probably learned Java, maybe learned C or C++, probably learned Python. They’re not capable of understanding a brilliant language but we want to use them to build good software. So, the language that we give them has to be easy for them to understand and easy to adopt"

Citace: Rob Pike
It must be familiar, roughly C-like. Programmers working at Google are early in their careers and are most familiar with procedural languages, particularly from the C family. The need to get programmers productive quickly in a new language means that the language cannot be too radical.