Kóder Bandi youtube csatorna

Sziasztok,

nem nagyon találtam se a magyar, se az angol youtube-on olyan csatornát ahol lényegretörően de alaposan vezetnek be a programozásba számítógéphez már kicsit értő embereket, úgyhogy csináltam egyet. Ha pont erre van szükséged akkor fogyaszd örömmel! :)

https://www.youtube.com/watch?v=IRg2hcwU8lU&list=PLMBdOzQ1ra7UGYsMssh_trkjpIx7reLmm&ab_channel=k%C3%B3derbandi

Hozzászólások

A Clojure/ClojureScript eléggé durva belépő, mivel nem igazán felhasználóbarát (főleg a hibaüzenetek miatt). Ha már ebbe az irányba indul el valaki, talán a Racket (racket-lang.org) szerencsésebb választás lenne.

A nano-ban lehet a zárójelpárra ugrani, Lisp/Scheme variánsoknál ez szerintem elengedhetetlen fícsör az "IDE" választásánál. 

Mindenesetre sok sikert, és kitartást a vállalkozáshoz!

AL

Köszi az észrevételeket! Nem is tudtam hogy a nano is tud zárójelezni, a hatodik részben már nagyon kellett volna! :) Mindenesetre szeretném minél előbb továbbvinni a tutorialokat emacs-ra. Húzom be a mélyvízbe a nézőt de bárcsak velem is így tették volna úgy hogy közben tartanak.

A Racket nagyon adja, viszont a clojurescript-es full-stack fejlesztés már egy kiforrott valami és főleg a webfejlesztés érdekli a mai programozókat úgyhogy ezért választottam a clojure-t.

Szerintem is túl mély víz ez. Nekem jó pár év programozás után is túl mély víz a funkcionális programozás, egyszerűen nem áll rá az agyam, annyira spéci koncepció, emészthetetlen hablaty lamba calculusostól, monadostól, stb.. Ráadásul mindjárt lisp meg Emacs, amik cool eszközök, de egy olyan kezdőnek, aki nem programozott még előtte, meg csak a Windowst ismeri, annak teljesen abszolválhatatlan lesz, teljesen mindegy, hogy mennyire magyarázol jól, mit jópofizol. Nekem anno az OOP-re is nehezen állt rá az agyam, de a Linuxra, és vim-re átállás is hosszú éveket igényelt. Te meg már az első néhány videóban ezen a szinten vagy még magasabb szinten akarsz dolgokat lenyomni a teljesen laikus torkán, akkora ugrásokban, hogy egy ugrás már önmagában egy sok órás videósorozatot indokolna önmagában háttérmagyarázatként.

A fenti kollégákkal egyetértve én is azon az állásponton vagyok, hogy az egész sorozatnak Windows alapúnak kéne lennie (hiába vagyok én is inkább a Linux híve), valami platformfüggetlen toolsettel, pl. Visual Studio Code/Codium vagy Notepad++/notepadqq, ezeket a kezdők könnyen telepíthetik, rendes GUI-s megoldások, jók kezdő IDE-nek, tudnak magyarul. Plusz nyelvnek szerintem is valami könnyebb, hagyományosabb, JS (mert nem bonyás a szintaxisa, nem erősen típusos, és elmegy egy szál böngészőben, ami minden gépen fent van), Python, vagy hasonló, írom ezt úgy, hogy én a vaskalapos, ókonzervatív, natív C/C++ vonalat tartom a legjobbnak részemről, de egy kezdőnek az sem a legjobb kezdés, azért ajánlottam a fentieket helyette. Kezdőknek szóló tananyagok ezért speciálisak, hogy te hiába preferálsz egy adott, haladóbb megoldást, kezdőknek a kályhától kell indulni, meg szuboptimális, primitív megoldásokkal, amik adott esetben neked már unalmasnak, gáznak tűnnek.

“I didn’t start using Linux so I could have friends.” (Luke Smith, 2019) 🐧

Ha az ember nem Haskell-ben nyomul, a monad nagyon szépen kikerülhető. Ha a lambda "szivacs operátorára" úgy gondolunk, mint ami egy kifejezésből egy függvényt csinál -- azaz x+z helyett f(z)=x+z, és utána rákérdezünk, hogy f(2) az mennyi is lesz -- az nem igazán jelent gondot még kezdőknek sem. A magasabbrendű függvényekhez már kell egy kis alapozás.

10-18 éves gyerekeknek nyomtam le a torkán egy hetes Racket gyorstalpalót - és nem sokan szöktek meg. (Igen, Windows alatt dolgoztunk mi is.) 

Igaz az első délelőtt csak a táblára firkáltunk, listák kezelését vettük, és különféle "gépeket" -- pl.  https://people.eecs.berkeley.edu/~bh/ss-pics/plumbing.jpg -- kapcsolgattunk össze. Majd ezután néztük meg mindezt a gépeken is. A hét végére már a Project Euler (Project Euler) egyes feladatait oldottuk meg együtt. Kellett egy kis ösztönzés, itt pedig nyilvántartják, hogy kinek mit sikerült megoldania. Lehet mondani, hogy jobban jártak volna a diákok, ha az n+1-dik imperatív nyelvbe vezetjük be őket, de így tudtam mindegyikből teljesen kezdőt csinálni, és együtt mozgatni mindazt, aki még egy programozási nyelves sem ismert, azzal, aki programozói versenyekre járt. Egyik sem unatkozott, és egyik sem veszítette el a fonalat. Azt hiszem, nem árt néha egy kicsit más nézőpontot megmutatni (főleg ha a programozási nyelvek kezdenek egy közös irányba fejlődni.)

A debreceni egyetemen a Racket vált a funkcionális paradigma környezetévé -- talán ennek a nyári tábornak köszönhetően is. PTI-sek tanulják a képzésük vége felé, csupán egy szemeszterben. (Nehéz az öreg kutyának új trükköt tanítani.)

A lambda függvényekre visszatérve: lopakodva lassan beveszi magát mindenhova, a Python már rég tartalmazza, ha valamely függvényparaméter pont egy függvény lenne, a hívás helyén megadhatjuk lambda kifejezésként, nem kell külön definiálni, nevet találni neki. A C++-ban előkerült, bár elég számomra elég furán néz ki.

AL

Nem csak Haskellben van ez így, hanem minden pure functional nyelvben. Itt fontos, hogy tisztán funkcionálisról beszélünk, nem olyan egyéb nyelvről, amelyben kisegítő szinten jelen van némi funkcionális toolset (pl. C++, Rust, Go, Scala, PHP, stb.). Nem csak az, hogy lambdázni kell, de sokszor egy adott algoritmust, implementációt teljesen át kell fogalmazni, gyökeresen eltérő gondolkodást igényel. Ez benne a nehéz, nem az adott nyelvek szintaxisa. Mert amúgy pl. pont a Lisp és nyelvjárásainak a szintaxisa nem valami nagy szám, néhány zárójelpár és idézőjelfajta az egész, és kész nem kell indentációkkal szórakozni meg pontosvesszős lezárással. Pedig az egész tetszene is, mert elvont, elegáns, de hát nem bír ráállni az agyam, pedig nagyon sok könyvet olvastam róla, meg tutorial videósorozatokat néztem, gyorstalpalósat, meg hosszabbakat részekre osztva. Míg hallgatom a tananyagot, addig érteni vélem, logikusnak hangzik, de ahogy önállóan kéne programozni benne, csak annyi marad meg, hogy lamda, monad, bla-bla. A Racketet nem ismerem.

Szóval hiába jó, egy olyan elméleti konstrukciónak tűnik, amit matematikusok írtak matematikusokak, de átlag, micisapkás codernek nem sok esélye van megérteni az egészből semmit. Persze ez egyben előnynek is tekinthető mindjárt, mert aki meg megtanulja, az meg legény lesz a gáton, meg segít a hagyományos nyelveken elkövetetett hibákat és sérülékenységeket elkerülni, és távol tartja az amatőr gányolókat (akik inkább JS, Java, PHP, Python, egyebeket tolnak helyette, mert azokban könnyű összegányoni bármit, akár pár óra tanulás után is azonnali a sikerélmény adnak a legidiótább, önjelölt, „fejlesztőnek” is).

“I didn’t start using Linux so I could have friends.” (Luke Smith, 2019) 🐧

Szerintem pont azok a tutorial-ok nem adnak jó kezdőlökést, amik óvodásként kezelik a befogadót.
Aki programozni akar és komolyan gondolja, az le fogja küzdeni ezeket a nehézségeket. A lényeg abban van, hogy a tutorial segít-e ezek megértésében, leküzdésében.

az egész sorozatnak Windows alapúnak kéne lennie

Nem értek egyet. Pont a windows-os tákolásokból származnak később a rossz beidegződések. Linuxon sokkal otthonosabb környezet alakítható ki, sokkal puritánabban, a lényegre koncentrálva.
Nem nagy dolog, ma már livecd sem kell, elég egy vm ha valaki nem akar telepíteni. Akár egy qemu-s image.

rendes GUI-s megoldások

Isten ments. Hadd indítsa el parancssorból a fordítót. Így érteni fogja, mi történik. Nem az lesz, hogy kattintgat a menüben, de fogalma sincs, mi van a háttérben.

Azzal alapvetően egyetértek, hogy nem baj, ha nem a nyelvi nehézségek kötik le a delikvenst, hanem tud az algoritmusokra figyelni. Mi pl. Pascal-lal kezdtünk, ami oktatási célra akkor nagyon előnyösnek tűnt (FreePascal rulz).
Abban már nem vagyok biztos, hogy baj volna funkcionális nyelvvel kezdeni. Lehet hogy ezt csak mi, öregek gondoljuk így; a mi berögződésünk.
Ne feledjük, aki valamit önszántából meg akar tanulni, abban van egy jó adag érdeklődés és ez hajtani fogja. Nem biztos, hogy ugyanazt az evolúciós utat kell vele is bejáratni, csak azért, mert velünk bejáratták, mi bejártuk. Ennyi erővel Commodore BASIC-kel is lehetne kezdeni.

Nagy ugrásokra képes ám egy tanítvány, nem kell csecsemőként kezelni. A jó oktató tudja, mely ugrásokat kell neki meglépni és ezek megugrásában segít. Én pl. mindig arra gondolok, számomra mik voltak a homályos pontok, miket ugrottam meg nehezen, mi vitt az ingoványra. Mi az, amit sosem mondtak el, hanem csak implicit módon vagy évek szopásával tudtam rájönni. Ezeket próbálom meg minél előbb, minél explicitebb módon tisztázni.

Abban már nem vagyok biztos, hogy baj volna funkcionális nyelvvel kezdeni. Lehet hogy ezt csak mi, öregek gondoljuk így; a mi berögződésünk.

+1

A funkcionális programozás megtanulásában imho az a legnagyobb feladat, hogy kigyomláld a mindenféle berögződéseket. Utána már nagyon könnyű. :)

Mind a Pascal, mind a Basic, mind a Racket (lánykori nevén Dr. Scheme) éppúgy oktatásra lett létrehozva, ahogy a Logo is.

Szerintem ilyen nyelveknél fontos körülmény, hogy milyen hosszú programmal lehet megoldani a legegyszerűbb feladatokat: lásd https://rosettacode.org/wiki/Hello_world/Text  Mekkora a belépési küszöb? Elég csak egy utasítást megmutatni, hogy kiírjuk a "hello világ" szöveget, vagy függvényt kell definiálni, esetleg még egy osztályt is? Úgy gondolom, hogy ez fontos lehet egy első nyelvnél: mennyit kell magyarázni, hogy a kezdő lefuttassa első programját? A sokadik nyelvnél ez már egyáltalán nem érdekes. Ott már lesz egy célunk, és arra kívánunk optimalizálni. 

Néha érdemes a programozás és az algoritmizálást elválasztani egymástól. Az utóbbi az előbbi megalapozásához szükséges. Aztán ehhez különféle módszereket találtak ki, pl. Algorythmics (sapientia.ro) vagy Sprego. Itt már sok mindent meg lehet tanítani, mielőtt egy konkrét programnyelvi sort látott volna, és nem lesz feltétlenül újdonság a függvény fogalma, az elágazás, a ciklus, a rekurzió, a függvények összekapcsolása, egymásba ágyazása. Onnan már a szintaktikai megkötéseket könnyű átugrani. A vizualitás sokszor segít kezdőknél, erre is épít a Code.org illetve nagyobbaknak a Snap!

Elég sok nyelv evangélistájával találkoztam már, volt aki szerint az első nyelvnek a Java-nak kell lennie, volt aki szerint meg a JavaScript-nek. A Javascript is egy funkcionális nyelvnek indult, majd az utolsó pillanatban a tervező félrerántotta a kormányt, aztán az lett belőle, ami: The Holy Trinity and JavaScript. Amikor majd 20 éve küzdöttem vele, nem volt normális IDE hozzá, talán ezt már sikerült pótolni, és talán a Typescript is kicsit segít rendet teremteni az összevisszaságban. Az biztos hajtja előre a diákokat, hogy JavaScript-ben online játékokat lehet írni, és csak egy böngésző kell hozzá (de ezt erőltetni én ezt a szellemi pedofília egyik esetének tartom). 

AL

+1

Szerintem már az elején gond van. Egy kezdőre rászabadítani a virtualboxot, linux telepítést, parancssoros linuxot, meg a nano-t programozás alapjai címen?! Ez simán kiváltható lett volna egy népszerű IDE-vel vagy egy online editorral. A két nyelv sem az igazi. C kezdőknek? A másikról nem is hallottam. Pláne nem érdemes párhuzamosan két nyelvet tanítani kezdőknek. Kicsit célját tévesztett így a tanfolyam. Nincs bajom azzal, ha valaki a kedvenc programnyelveiről (+ fejlesztői környezet + op. rendszer) csinál videót. Csak legyen tisztában vele, hogy ezt azért csinálja. Egy kezdő már a virtualbox - linux telepítésnél dobja ezt a kurzust.

Egy kezdőre rászabadítani a virtualboxot, linux telepítést, parancssoros linuxot

Ma azért már nem kell ehhez hekkernek lenni. Még csak telepíteni sem. Kész imaget behúzod virtualbox-ba vagy qemu-ba oszt' jónapot. Szerintem egyébként nem jó lebecsülni a hallgatót; nagy dolgokra képesek, ha nem kezeled őket óvodásként.

A parancssornál jobbat meg sajnos egyelőre nem találtak fel.
Néhány paranccsal el lehet boldogulni, és legalább érteni fogja, mi történik. Míg aki egy összetett gui-t nyomkod, sokszor fogalma sincs, mi történik a háttérben.

Ha az illető dobja a kurzust, hát akkor dobja. Nem kell mindenkinek programozni, illetve nem muszáj mindenkinek ezt a kurzust hallgatni. Kérdés persze, mi a cél: a lájkok maximalizálása, vagy segítséget nyújtani azoknak, akik tényleg tanulni akarnak.
Valamint nem is vagyunk egyformák: mindenkinek más jön be. Teljesen normális, hogy eltérő emberek eltérő kurzusokat hallgatnak.

Nem kell mindenkinek megfelelni.

Szerintem nem értettél meg.

Tele van ilyenekkel a net:

https://dartpad.dartlang.org

Nem kell hozzá semmit telepíteni, egyből a programozással lehet foglalkozni. Nincsenek egyéb "problémák", amiknek valójában semmi közük a programozáshoz és csak feleslegesen elvonják a figyelmet.

A parancssornál jobbat meg sajnos egyelőre nem találtak fel.  

Szerinted. Nem mondom, hogy nem jön jól néha, de Python, Java, Flutter-Dart esetében simán ki lehet hagyni. A többiről nem tudok nyilatkozni. Bár nem hiszem, hogy C# vagy Javascript esetén nagy szükség lenne rá. Szerintem bőven elég vele foglalkozni a kurzus végén. Ha már minden más megvolt.

Szerintem aki IT-s akar lenni, az nem ilyen YouTube videókból tanul. Aki viszont a saját, nem IT-s munkáját szeretné mondjuk könnyebbé tenni, és a célközönsége lehetne ilyen videóknak, azoknak a VM-től a Linuxig minden ijesztő. :)

szerk: én pl. oktattam nem IT-s hallgatóknak (főleg ilyen-olyan gazdasági szakosok) minimál programozást, a többség kifejezetten érdeklődő volt, mert látta, hogy ettől könnyebb lehet az élete, de az nem érdekelte volna őket, hogy hogyan lehet parancssorban bűvészkedni

Amit itt nekiáltatok keverni az a következő, és szerintem ez nincsen letisztázva. IT-st akarunk faragni, vagy csak progaramozást akarunk a tömegeknek tanítani. Szerintem az elsőhöz kicsit laza a kezdés, ott én a számrendszerekkel kezdenék, meg némi alap architektúrális ismerettel, míg a tömegeknek viszont a Linux, VBox...stb meg kicsit meredek. Ezt tettem szóvá, akkor amikor azt mondtam, hogy el kellene dönteni a célközönséget.

Megnéztem pár videót, ha nem bánod tennék pár észrevételt. A jópofizós stílus kicsit mesterkélt benne, minimum 4 generáció szlengje van benne, persze van annál rosszabb is, mint amikor a pcx-es arc kezd el fiatalosat játszani, az már a kínos kategória, a Kóder Bandi név meg kicsit a 10 évvel ezelőtti Szőke Andrásra hajaz, ami már akkor nem igazán volt friss, hogy finoman fogalmazzak. 

Szakmailag azt tudnám hozzátenni, hogy szerintem egy alapvető hibát követtél el. Látszik, hogy értesz hozzá máramenyire a pár videóból meg tudom állapítani, de aki freebsd és főleg i3... :D

Szóval az ami neked egyértelmű a kezdőnek, nagyon nem. Ezért érdemes lenne letisztázni a célcsoportot, majdnem biztos vagyok benne, hogy az alapvető paradigmákat se oktatják középiskolában. A bináris, meg gépi kód fogalmaira se nagyon lehet építeni. A mai generációk sajnos Windows-on szocializálódtak. Tudod milyen nehéz akár informatikus hallgatót rávenni Linux-ra ? Pláne parnacssorra egy kezdőt, a nano meg kifejezetten rossz választás, akkor már inkább vim, de azt nem igazán adnám kezdőnek. Szerintem egy jópofa atom, vagy VScode, vagy ilyesmi kellen, ahol nyom egy gombot és kész. Értem a nyelvválasztást, de oktatásra én nem használnám első nyelvnek. Bocsi, de első nyelvnek nem informatikusoknak inkább JavaScript. Az megy a böngészőben. Mondjuk van a P5JS, van egy youtube csatorna amit a New Yorki egyetem docense visz. A project célja, a designerneket tanítja programozni. https://www.youtube.com/channel/UCvjgXvBlbQiydffZU7m1_aw. Remélem nem veszed toalkodásnak a kritikát.

Köszi! Sajnos a valóságban is így jópofizok, mostanában kezdek lemaradni a szlenggel, a boomer/cringe párost már nem is értem. :) 

Jogos hogy mélyvíz egy kezdőnek és jó lett volna felkészíteni a usert egy bevezető videóval de úgyis a videó tartalma dönti el hogy valaki érti-e vagy sem, hogy elviseli-e hogy csak később fejtek ki fogalmakat vagy sem. 

Nem símogatni akarom a célközönséget hanem megmutatni hogy ez az igazi programozás, el lehet lenni fancy IDE-kkel egy darabig ( kb 10 évig én is alig mentem le parancssorig ), de ha komolyan akarja csinálni az ember akkor érteni kell az oprendszert is, a hálózati protokollokat is, turkálni kell sajnos mindenben :)

Valószínű azért nem érted, mert még helytelenül is használják, új jelentéseket társítottak hozzá, jobb azt a részt elengedni, ettől persze még lehet lazán, csak arra is oda kell figyelni. Valamint szerintem a karakter amit kitaláltál sem jó, még akkor is ha sok van belőled benned, az egy nagyon nehéz kenyér, azt még hivatásosok is nehezen veszik, pláne, hogy aktuális legyen. Ennek a menekülő útja, az ha csak simán a keresztnevedet használod és te magad vagy ott, Akkor az sokat segít.

Abban igazad van, hogy nagyon szuper a parancssoros dolgok, magam is nagyon szeretem. A probléma ott van, hogy manapság a "fájdalomküszöb" nagyon alacsonyan van. Míg egy rendes órán az, hogy csinálni kell valamenyire működik, youtube-on simán tovább kattintanak. Ha tartottál már tréningeket/órákat, akkor abból a tudásból lehet meríteni, de azt is nagyon át kell dolgozni, mert teljesen más játékszabályok vannak youtube-on, nagyon ki kell találni a példákat. Az előző hozzászólásomban linkelt csatornát érdemes nézegetned, főleg a kezdő playlistet. Ott egyszerű dolgok rajzolásával kezdenek, a nyelv fel van rá készítve. Aztán elkezdenek egyre bonyábbakat csinálni, cool animációkat, majd nagyon komoly témákra is rácsúsznak. Érdemes figyelned a kialakított learning curv-öt.

Lelkes érdeklődőként, mint ahogy a HUP-ot is követem. A pálya széléről követve az eseményeket, azt kell mondjam, hogy számomra nagyon érdekes a kezdeményezés. Érthető és kellően laza stílusban van előadva a mondanivaló. Ha szeretnék programozni tanulni hobby szinten, ezzel el tudnék indulni. Bár ettől nem kell az emberiséget félteni. :-)

Mindenképpen köszönetet érdemel.

Szerintem ne hagyd abba.

Köszönő akkordok:
https://www.youtube.com/watch?v=nsuBjLfYKws&t=5570s

Szerkesztve: 2021. 05. 10., h – 08:49

Mindig értékeltem azokat az embereket, akik a kötelezőn túl is tesznek valamit. Köszönjük!

Két észrevétel: a különböző programozási nyelvek mindegyikére igaz, hogy
   - hello world-ig segíteni kell az embereket, hiszen a "hogyan kezdjem" néha vagy túl furmányos, vagy "nem hiszem el, milyen egyszerű ennél a nyelvnél".
                     (mikrovezérlőnél a "villogtassunk egy LED-et" a "hello world" megfelelője)
   - néhány további fogást is (ciklus, függvény, metódus, modul) megismertetni
Rendszeresen hivatkozni egy frankó könyvre, mert valójában nem lehet a könyv hatékonyságát videóval pótolni. A kettő együtt viszont csodákra képes.

Szia Bandi!

Köszi a videókat, megnéztem mindet lelkes amatőrként. Nekem tetszenek, követés beállítva!

Várom az új anyagokat,

Üdv.