Základy programování

_Jenda

  • *****
  • 1 550
    • Zobrazit profil
    • https://jenda.hrach.eu/
    • E-mail
Re:Základy programování
« Odpověď #45 kdy: 30. 05. 2020, 01:09:53 »
vzit deti, ktere maji zajem o IT a rozdelit je na dve poloviny a jedne dat klasicke imperativni programovani, proti funkcionalnimu a porovnat jak tomu porozumeli by bylo moc zajimave. blbe je, ze to ovlivni i kvalita ucitelu toho ci onoho zpusobu.
No hlavně blbé je, že použitelnost programovacího jazyka alespoň pro mě mnohem víc ovlivňuje ten ekosystém okolo, množství snadno použitelných knihoven pro věci co potřebuješ, nalezení úplně čehokoli na stackoverflow atd. Proto jsem doporučoval ten Python a o chvíli později C -- ne kvůli nějakým inherentním technickým kvalitám, ale právě kvůli tomuto.


Re:Základy programování
« Odpověď #46 kdy: 30. 05. 2020, 09:30:39 »
Dob­rý den jsem stu­dent střed­ní prů­mys­lo­vé ško­ly , z ma­te­ma­ti­ky mám 1. V po­sled­ní do­bě jsem uva­žo­val o za­čát­ku s pro­gra­mo­vá­ním, po­dí­val jsem se na in­ter­net, ja­ký je dob­rý za­čí­na­cí ja­zyk. Do­hra­bal jsem se k Ja­vě ne­bo PHP. Je tu ješ­tě ně­ja­ký ja­zyk, kte­rý bys­te do­po­ru­či­li pro za­čá­teč­ní­ka? (dě­lal jsem ně­co v html, ale to pro­gra­mo­vá­ní ne­ní)
Osob­ně zva­žu­ji za­čít Ja­vou
Dě­ku­ji

Zkus Processing. Je to nad jvm a je to i pro neprogramatory. Podle me idealni jazyk pro zacatecnika. Zdokonalis i anglictinu.

https://processing.org/

Zajimava kniha online https://natureofcode.com/book/  ukazky jak vyuzivat gravitacni engine etc.

Dalsi zdroje https://www.openprocessing.org/browse/#

Engine pro pouziti na webu
http://processingjs.org/


asi jediny programovaci jakzy, kde vydali knihu o programovani pro umelce https://www.processing.org/handbook/ :)

Idris

  • *****
  • 2 286
    • Zobrazit profil
    • E-mail
Re:Základy programování
« Odpověď #47 kdy: 30. 05. 2020, 09:57:01 »
vzit deti, ktere maji zajem o IT a rozdelit je na dve poloviny a jedne dat klasicke imperativni programovani, proti funkcionalnimu a porovnat jak tomu porozumeli by bylo moc zajimave. blbe je, ze to ovlivni i kvalita ucitelu toho ci onoho zpusobu.
použitelnost programovacího jazyka alespoň pro mě mnohem víc ovlivňuje ten ekosystém okolo, množství snadno použitelných knihoven
Teď už má každý aspoň trochu rozšířeny jazyk použitelné FFI. A rozumné jazyky mají vše potřebné ve své standardní knihovně, přinejmenším jako obal nějaké nativní knihovny.

Re:Základy programování
« Odpověď #48 kdy: 30. 05. 2020, 10:05:38 »
Na Javu bych se vysral, je to moc tezka platforma pro zacatecniky, zatizena 25 lety stareho vyvoje. To je jak by si chtel mladoch koupit prvni auto a nekdo by mu doporucoval traktor nebo kombajn. Doporucuju Python.

Re:Základy programování
« Odpověď #49 kdy: 30. 05. 2020, 10:31:32 »
Na Javu bych se vysral, je to moc tezka platforma pro zacatecniky, zatizena 25 lety stareho vyvoje. To je jak by si chtel mladoch koupit prvni auto a nekdo by mu doporucoval traktor nebo kombajn. Doporucuju Python.
Někdo tvrdí, že je Java moc lehká, vy zase, že je moc těžká… Koučoval jsem teď kurz Javy od Czechitas pro úplné začátečníky a nikdo s tím neměl problém, že by byla Java moc těžká. A neřešili jsme ani slf4j, GraalVM, Maven, ani rozdíl mezi Eclipse a IntelliJ Idea, ani jak funguje web.


Re:Základy programování
« Odpověď #50 kdy: 30. 05. 2020, 10:58:58 »
Například na FI se teď učí v prvním semestru Haskell vedle Pythonu. Pro samouka je to ale poněkud hůře realizovatelné...
Na FI se Haskell učil odjakživa.
Těm pomalejším jsem to zvýraznil.
A jak to těm prvokům jde? To se ptám se vší vážností, je nějaký feedback?

Záleží. Je potřeba odfiltrovat ty, kteří na to nemají nebo zjistili, že informatika není úplně pro ně. Každopádně můj dojem byl spíše pozitivní. Zvlášť u prváků, kteří předtím moc neprogramovali, mi přišlo, že do toho lépe vpluli. Naopak někteří druháci nebo prváci, kteří už programovali (nebo dokonce i mají nějakou práci/brigádu), mají někdy problém s absencí cyklů, neměnností, rekurze bývá problém atp. Feedback byl spíše pozitivní, problém je, že navazující semestr teď byl zabit jistým virem, takže se hůř posuzuje, jací lidé z těch předmětů vyšli (typicky v druhém semestru byl problém v algoritmech -- při implementaci).

Funkcionální programování jako první paradigma má spoustu výhod.
Jakých?

Řekl bych, že (a teď to vztahuji k tomu doporučenému Haskellu)

* zlepší chápání typů (ať už to, že by funkce nemusela vracet z každého ifu něco jiného, nebo i to, že místo "spešl stringů" by nebyl od věci enum atd.); obecně se někteří na typy začnou dívat jako na kamarády, ne nepřátele

* odnaučí (resp. nenaučí) zneužívat stav / "globální" proměnné

* vede k lepší dekompozici na podproblémy

* naučí rekurzi (zvlášť v aplikaci na datové typy)

* lidé se odnaučí (spíš nenaučí, když s ním začnou) brát funkce jako něco speciálního, takže jim třeba nepřijde divné předávat funkci jako parametr

* vzory

* naučí polymorfismus

( * výjimečně i lidi donutí přemýšlet nad vyhodnocováním; takovou klasikou bývá null xs vs. length xs == 0, kde je xs je nekonečný )

Neříkám, že toho nelze dosáhnout i jinak, resp. že se to týká jen a pouze Haskellu/FP, ale tohle je takový opakující se pattern. (A ano, některé body závisí na učiteli/materiálech.)
« Poslední změna: 30. 05. 2020, 11:00:45 od Cikáda »

Re:Základy programování
« Odpověď #51 kdy: 30. 05. 2020, 11:30:58 »
* zlepší chápání typů (ať už to, že by funkce nemusela vracet z každého ifu něco jiného, nebo i to, že místo "spešl stringů" by nebyl od věci enum atd.); obecně se někteří na typy začnou dívat jako na kamarády, ne nepřátele
To jednoznačně ano. Škoda, že velká část featur, které se jim v Haskellu začnou líbit, budou v jiných jazycích postrádat. Ale jako tréning na budoucí frustrace v práci je to skvělý. Ještě lepší by bylo je naučit psát všema deseti a pak jim uříznout jednu ruku.

* vede k lepší dekompozici na podproblémy
Je to něčím doložitelné, nebo jenom tvůj subjektivní dojem?

* naučí rekurzi (zvlášť v aplikaci na datové typy)
Což je fajn jako rozšíření obzorů, ale pokud budou dál programovat v mainstreamových jazycích, je to spíš mínus, protože tam bude mít rekurze jiné vastnosti, v nejhorším případě bude použití rekurze, jak se to naučí v Haskellu, přímo nebezpečný antipattern.

* lidé se odnaučí (spíš nenaučí, když s ním začnou) brát funkce jako něco speciálního, takže jim třeba nepřijde divné předávat funkci jako parametr
Callbacky by se měly učit ve všech jazycích, takže pokud někomu předávání funkce přijde divné, je to chyba výuky, ne jazyka.

* vzory
Které velmi pravděpodobně v praxi nepoužijí, protože nikdy FP v praxi používat nebudou (drtivá většina z nich).

* naučí polymorfismus
Opět se naučí jiný polymorfismus, než jaký budou v praxi používat.

( * výjimečně i lidi donutí přemýšlet nad vyhodnocováním; takovou klasikou bývá null xs vs. length xs == 0, kde je xs je nekonečný )
Což opět v praxi, v jiných jazycích, nebudou prakticky vůbec potřebovat, protože problémy, které jsou v Haskellu, tam typicky nemají obdobu, čili to, že se je naučí řešit, si můžou narvat do špic.

ale tohle je takový opakující se pattern. (A ano, některé body závisí na učiteli/materiálech.)
Ano, je to opakující se pattern získávání znalostí a dovedností, které skvěle rozšíří obzory někomu, kdo už nějaký klasický jazyk umí, ale nováčkovi je to zhusta úplně na prd, protože se prvně potřebuje dobře naučit něco praktického a pak teprve něco obohacujícího, ne naopak.

P.S. Tím ani trochu nehaním Haskell, je to skvělý jazyk. Ale pro (přinejmenším) pokročilého juniora, rozhodně ne pro začátečníka, který se chce "naučit programovat" (čti: řešit reálné problémy reálného světa prostředky a způsoby v IT obvyklými).
« Poslední změna: 30. 05. 2020, 11:35:05 od Mirek Prýmek »

Idris

  • *****
  • 2 286
    • Zobrazit profil
    • E-mail
Re:Základy programování
« Odpověď #52 kdy: 30. 05. 2020, 11:41:50 »
Například na FI se teď učí v prvním semestru Haskell vedle Pythonu. Pro samouka je to ale poněkud hůře realizovatelné...
Na FI se Haskell učil odjakživa.
Těm pomalejším jsem to zvýraznil.
A jak to těm prvokům jde? To se ptám se vší vážností, je nějaký feedback?

Záleží. Je potřeba odfiltrovat ty, kteří na to nemají nebo zjistili, že informatika není úplně pro ně. Každopádně můj dojem byl spíše pozitivní. Zvlášť u prváků, kteří předtím moc neprogramovali, mi přišlo, že do toho lépe vpluli. Naopak někteří druháci nebo prváci, kteří už programovali (nebo dokonce i mají nějakou práci/brigádu), mají někdy problém s absencí cyklů, neměnností, rekurze bývá problém atp. Feedback byl spíše pozitivní, problém je, že navazující semestr teď byl zabit jistým virem, takže se hůř posuzuje, jací lidé z těch předmětů vyšli (typicky v druhém semestru byl problém v algoritmech -- při implementaci).

Funkcionální programování jako první paradigma má spoustu výhod.
Jakých?

Řekl bych, že (a teď to vztahuji k tomu doporučenému Haskellu)

* zlepší chápání typů (ať už to, že by funkce nemusela vracet z každého ifu něco jiného, nebo i to, že místo "spešl stringů" by nebyl od věci enum atd.); obecně se někteří na typy začnou dívat jako na kamarády, ne nepřátele

* odnaučí (resp. nenaučí) zneužívat stav / "globální" proměnné

* vede k lepší dekompozici na podproblémy

* naučí rekurzi (zvlášť v aplikaci na datové typy)

* lidé se odnaučí (spíš nenaučí, když s ním začnou) brát funkce jako něco speciálního, takže jim třeba nepřijde divné předávat funkci jako parametr

* vzory

* naučí polymorfismus

( * výjimečně i lidi donutí přemýšlet nad vyhodnocováním; takovou klasikou bývá null xs vs. length xs == 0, kde je xs je nekonečný )

Neříkám, že toho nelze dosáhnout i jinak, resp. že se to týká jen a pouze Haskellu/FP, ale tohle je takový opakující se pattern. (A ano, některé body závisí na učiteli/materiálech.)
To jsou všechno užitečné znalosti a je záslužné, že se to učí tak brzy, akorát v této fázi by možná byl lepší OCaml. A ano, nejdůležitější je, kdo a jak to učí. Možná se přece jen na českých VŠ něco mění k lepšímu.

Re:Základy programování
« Odpověď #53 kdy: 30. 05. 2020, 11:49:48 »
akorát v této fázi by možná byl lepší OCaml.
Jj, taky jsem na to myslel. Nebo jakýkoli jiný ne-pure jazyk. Ideálně samozřejmě Elixir :) protože pomocí něj by se naučili i principy, které pak využijí v OOP nebo distribuovaném programování.

Re:Základy programování
« Odpověď #54 kdy: 30. 05. 2020, 12:44:21 »
zkus

https://www.codingame.com

nebo

https://www.codewars.com/

diskutuj s lidmi tam, o reseni konkretnich uloh.

Re:Základy programování
« Odpověď #55 kdy: 30. 05. 2020, 13:57:21 »
Na Javu bych se vysral, je to moc tezka platforma pro zacatecniky, zatizena 25 lety stareho vyvoje. To je jak by si chtel mladoch koupit prvni auto a nekdo by mu doporucoval traktor nebo kombajn. Doporucuju Python.
Někdo tvrdí, že je Java moc lehká, vy zase, že je moc těžká… Koučoval jsem teď kurz Javy od Czechitas pro úplné začátečníky a nikdo s tím neměl problém, že by byla Java moc těžká. A neřešili jsme ani slf4j, GraalVM, Maven, ani rozdíl mezi Eclipse a IntelliJ Idea, ani jak funguje web.

A neni to tak nahodou ten problem, ze prave toto jste neresili? Protoze kdyz si Franta bude chtit udelat svoji knihovnu a dat si to na Maven central, tak presne toto bude muset resit.

Naucit se jenom zaklady jazyka a nic vic, tak to muzu klidne c++.

Zrovna pred par dny jsem delal jednu a tu samou knihovnu pro Pyrhon i pro Javu. Java, vozpruz nejvetsi a prjit procesem deploye do Maven Centraly ani nemluve, v porovnani s deployem do PyPi.com.

Delam ted na projektu s jednim skoro dedou, co zacinal jako databazista, a ted dela v Jave. A vstavaji mi vlasy hruzou pokazde, kdyz to prase v tom vidim neco naprogramovat. Neumi si blbec jeden dat dohromady 1+1 a vyrabi shity, ani Jackson si neda dohromady jak pouzit, misto toho rucne pracuje s jsnem v Mape misto aby si to namapoval na objekt a kdyz mu na to neco rikam, tak je protivny. Proste to nepobira a nema na to. A pritom hloupy neni. Jsem presvedcen, ze v Pythonu by dokazal programovat lip, protoze je jednodussi.
« Poslední změna: 30. 05. 2020, 13:59:53 od PetrK »

Re:Základy programování
« Odpověď #56 kdy: 30. 05. 2020, 14:16:54 »
A neni to tak nahodou ten problem, ze prave toto jste neresili?
Ne.

Protoze kdyz si Franta bude chtit udelat svoji knihovnu a dat si to na Maven central, tak presne toto bude muset resit.
Když si někdo dělá knihovnu, nepotřebuje jí dávat na Maven cventral. A začínající programátor rozhodně nebude začínat programování open source knihovny.

Naucit se jenom zaklady jazyka a nic vic, tak to muzu klidne c++.
Neřekl bych, že C++ je vhodný jazyk pro začátečníka.

Zrovna pred par dny jsem delal jednu a tu samou knihovnu pro Pyrhon i pro Javu. Java, vozpruz nejvetsi a prjit procesem deploye do Maven Centraly ani nemluve, v porovnani s deployem do PyPi.com.
To jste si vybral fakt dobrý příklad – něco, s čím se většina programátorů v životě nesetká.

Delam ted na projektu s jednim skoro dedou, co zacinal jako databazista, a ted dela v Jave. A vstavaji mi vlasy hruzou pokazde, kdyz to prase v tom vidim neco naprogramovat. Neumi si blbec jeden dat dohromady 1+1 a vyrabi shity, ani Jackson si neda dohromady jak pouzit, misto toho rucne pracuje s jsnem v Mape misto aby si to namapoval na objekt a kdyz mu na to neco rikam, tak je protivny. Proste to nepobira a nema na to. A pritom hloupy neni. Jsem presvedcen, ze v Pythonu by dokazal programovat lip, protoze je jednodussi.
Myslím, že to vypovídá víc o vás než o programovacích jazycích.

Re:Základy programování
« Odpověď #57 kdy: 30. 05. 2020, 14:26:19 »

Booze, to je zase tradicni diskuze s FJ s kognitivni poruchou. Ne, v Jave se vetsina programatoru s deployem do Maven centraly opravdu nesetka, protoze je to kurevsky vopruz z ktereho s jezi vlasy hruzou. V Pythonu to je uplne jednoduche. A clovek si tu knihovnu muze udelat jen pro sebe a deploynout ji tam, treba konzolovou utilitu.

Re:Základy programování
« Odpověď #58 kdy: 30. 05. 2020, 14:46:04 »
Ne, v Jave se vetsina programatoru s deployem do Maven centraly opravdu nesetka, protoze je to kurevsky vopruz z ktereho s jezi vlasy hruzou.
Mýlíte se. V Javě se většina programátorů s deployem do Maven central repository nesetká proto, protože to dělají jen správci (obvykle open source) knihoven.

A clovek si tu knihovnu muze udelat jen pro sebe a deploynout ji tam, treba konzolovou utilitu.
Než zase budete chtít ostatní poučovat o programování, nastudujte si, jaký je rozdíl mezi knihovnou a aplikací.

Re:Základy programování
« Odpověď #59 kdy: 30. 05. 2020, 22:13:13 »
V po­sled­ní do­bě jsem uva­žo­val o za­čát­ku s pro­gra­mo­vá­ním, po­dí­val jsem se na in­ter­net, ja­ký je dob­rý za­čí­na­cí ja­zyk.

Šel bych na to obráceně. Neptal bych se jaký jazyk, ale to co chci naprogramovat, jaký jazyk je pro to nejlepší, protože budeš-li se učit jazyk jen proto, aby jsi ho uměl, nebude tě to bavit. Takhle mám doma knížku o jazyku Ruby. Píšeš že jsi se potkal s HTML. Já jsem na php také začínal.

1) Webové stránky
Klidně bych ti php doporučil v nejnovější verzi 7.4 a zapnutou striktností hledej strict_types https://www.php.net/manual/en/control-structures.declare.php.

Pravděpodobně budeš potřebovat databázi, kde nejrozšířenější je Mysql alternativa MariaDb, ale jak víme co je nejrozšířenější nemusí být nejlepší, doporučil bych ti PostgreSQL. Základy budou všude stejný.

Pak se neobejdeš bez javascriptu a pokud nechceš php, tak na servru můžeš využít také javascript, hledej nodejs.

2) Aplikace pro android
Kotlin nebo Java, to IDE (Android studio) co dodává google je fakt dobře připravený pro začátečníka a spustit první aplikaci a nahrát ji do telefonu je celkem jednoduchý a když vidíš výsledky hned, v ten moment máš chuť zkoušet víc. Tady bude databáze sqlite.

3) Aplikace pro Apple
- swift

4) Aplikace/hry pro PC
- C#, python, Java, aj...

5) Ve světě linuxu se nevyhneš shellu konkretně jazyku bash

V čase zjistíš že budeš potřebovat další nástroje, například k verzování se používá git, aj.

Z počátku se budeš učit jazyk, ale aby jsi se naučil programovat, musíš pochopit návrhové vzory, algoritmizaci, SOLID principy aj... Tohle hledej až si budeš myslet že umíš jazyk.
« Poslední změna: 30. 05. 2020, 22:15:36 od h4kuna »