Magyar aranyérem programozásból: gratula, versenyek, életutak, utánpótlás

Sdílet
Vložit
  • čas přidán 1. 08. 2024
  • Egy kicsit a szokványostól eltérő videó - de nem hagyhatom szó nélkül a hírt: Magyarok nyertek aranyérmet az informatikai diákolimpián!
    Beszéljünk arról is ennek kapcsán, hogy mennyire patinás is ez a verseny, DP, meg Fenwick fás feladatok, gráfalgoritmusok stb. patinás megmérettetése középiskolai szinten úgy, hogy szerintem mindannyiunkat odavernének ezek a srácok ha algoritmizálásról van szó - annyira jók!
    Ez ha sport lenne, olyan lenne, mintha az ifi-EB-t fociban a Magyar csapat nyerte volna! Ennek megfelelően a híroldalak is lehozzák.
    Ha már ki-örömködtük magunkat arról is beszélek, hogy nagyjából milyen a Magyar tehetséggondozási közeg, milyen versenyen vannak általánostól középiskolán át egyetemi szintig, amelyek hasonló témában ezt a pró vonalat viszik és azokra hol lehet egyébként magunktól is gyakorolni.
    Remélem a videó hasznos lesz szülőknek, tanároknak és diákoknak is egyaránt - egy kis összefoglaló. Akik pedig a csatornámat egyébként is nézegetik, azok talán jobban megértik most ezt a hírt - mert ennek szerintem nem lehet elégszer mondani a jelentőségét!
    Linkek / Diákolimpia:
    hirek.prim.hu/cikk/2024/05/16...
    algo.sk/ioi-syllabus/ioi-syll...
    www.ioi2024.eg/call-for-tasks
    Linkek / Középiskolai:
    tehetseg.inf.elte.hu/nemes/
    infojegyzet.hu/versenyfeladatok/
    verseny.nisz.hu/
    Linkek / Általános és általános++:
    logo.inf.elte.hu/
    e-hod.elte.hu/
    e-hod.elte.hu/archiv/eredmeny...
    Linkek / Egyetemi:
    icpc.global/
    Linkek / Egyetem utáni és Egyetem++:
    challenge24.org/
    www.spoj.com/problems/classical/
    www.topcoder.com/tc?module=Pr...
    Linkek / egyéb:
    njszt.hu/hu/news/2024-04-30/2...
    web.archive.org/web/201302051...
    algo.sk/
    #informatika
    #versenyek
    #diákolimpia
    #aranyérem
    #Magyar
    #programozás
    #siker
    #tanítás
    #utánpótlás
    #pedagogia
    #mentor
    #tanulni
    #oktatás
    #algoritmus
    #adatszerkezet
    00:00:00 Intro
    00:00:58 Aranyérem - gratulálok!
    00:04:19 Tehetséggondozás szerepe
    00:05:35 Mennyire patinás verseny?
    00:11:48 Példa feladat (2023)
    00:18:49 Utánpótlás - hajrá!
    00:19:38 Mire jó ez?
    00:21:28 Hajrá Magyarok!
    00:23:04 Visszatekintés / tanácsok 1
    00:23:21 Tanárnak, szülőnek, diáknak lehetőségek
    00:24:33 Középiskolai versenyek (OKTV, Nemes Tihamér)
    00:29:13 Általános iskolás versenyek (LOGO, NJSZT, E-hod)
    00:34:39 "Praktikus" jellegűbb versenyek
    00:39:20 LÉNYEG: Matek és prog tanulási tanács
    00:43:45 Egyetemi szintű algó verseny (ACM ICPC)
    00:50:52 Még egy gratuláció!
    00:51:36 Egyetem utáni (és melleti) versenyek
    00:57:33 A mentok szerepe
    00:59:46 Ch24 / Challenge24
    01:00:43 Networking
    01:05:16 Tanács fiataloknak
    01:06:04 Networking 2
    01:07:53 Gépterem felszereltség
    01:08:39 A nagykirályok
    01:10:56 Outro
  • Věda a technologie

Komentáře • 12

  • @u9vata
    @u9vata  Před 2 měsíci +2

    Közben észrevettem, hogy ACM ICPC-re is megy Magyar csapat - méghozzá ELTE-ből a világdöntőbe!!!
    index.hu/belfold/2024/04/18/elte-eotvos-lorand-tudomanyegyetem-programozas-verseny-vilagdonto/
    ^^Erről a videó készítésekor nem is tudtam - szóval azért több szinten megy most a próság - de ezzel ki kellett egészíteni a videót, mert azt mondtam, már rég volt kinn Magyar csapat - közben épp most idén jutott oda is ki egyetemi szinten!

  • @scallyt1
    @scallyt1 Před 2 měsíci +5

    Hát innen a comment szekcióból is gratula nekik

  • @Imperatorvideo
    @Imperatorvideo Před 2 měsíci +3

    Le a kalappal előttük!

  • @4dillusions
    @4dillusions Před 2 měsíci +1

    Grat a srácoknak!!!
    A fejlesztős munkák zöme általában tényleg egy kaptafára épülő "adatbázis-kezelő" formos cucc, de azért itt is előfordult már nálam is fa bejárás, útvonal keresés, kisebb nagyobb matek dolgok, a 2D/3D vizualizáció meg tömény matek szintén, meg egyéb hardcore-bb dolgok..Elvétve azért van direkt ilyen irányú project, olyat is láttam, ahol embedded eszközre írtak saját oprendszert, nyelvet, ott aztán kőkeményen nyomták a dolgokat. Általában viszont csak szivatásból tesznek algós kérdéseket a próbafeladatba úgy, hogy utána soha többet a projectben elő se fordul ilyen, szóval hibás szűrővel szűrnek, alap db kezelő (raktár, ERP) rendszerhez nem ilyen skillek kellenek. "Kedvencem" volt, amikor egy időben mindenki ezeket a "hány csatornafedél van x városban" és hasonlókat nyomatták mindenütt. :D
    Viszont a feltörekvő generáción túl simán érdekelhet már régebb óta a szakmában lévőket is a téma. Én például sima mérnök infót végeztem főiskolán, a fejlesztés, algel, linalg és a többi csak érintőlegesen volt. Gyerekkoromban programoztam előtte c64-re, de aztán teljesen más területek felé indultam (építészet, aztán ipari elektronika), majd felgyulladt a lámpa főiskolán prog alapok órán. Egyébként nekem se volt számítógépem fél évig és úgy vizsgázgattam gépteremben infós tárgyakból. Érdekesség, hogy előtte meg a c64-es időkben évekig nem volt otthon gépem magazinokból/könyvekből szedtem össze némi tudást és kockás papírra írtam programot , amíg nem volt magnókazetta menteni, ami nagy technológia volt :D
    Lényegében, ahogy gyerekkorban is, később is autodidakta módon képeztem ki magam immáron "üzleti" fejlesztőnek, de nagyon érdekel ez a hardcore téma is, időnként ad egy kis motivációt a fejlődéshez, vagy akár a hétköznapi munkához is. Sokan vannak szerintem szintén olyanok, akik nem progmatra jártak, hanem már meglévő egyéb szakmával tértek át erre a területre és nem a papír, hanem a "rátermettség" alapján kerültek be, maradtak meg. :)
    Üzleti fejlesztéseknél még szerencsére általában egyedi "engine" fejlesztések vannak, nincs egy univerzális motor, mint a jf iparban az Unreal, ahol már gyakorlatilag teljesen kikopott az engine programozás és algoritmizálás iránti érdeklődése mindenkinek. Egyelőre ilyen zöld mezős projectek is adják a lelkesedést az algoritmizálási részek mellett. Ha egyszer "beüt" a chatGPT, vagy valami business "engine" és nem lesz semmi architektúra, meg algoritmizálási kihívás, akkor ezt a szakmát is el fogom engedni, de remélhetőleg még meg fognak maradni ezek a dolgok jó ideig és lesz értelme a fejlesztésnek.

    • @u9vata
      @u9vata  Před 2 měsíci +2

      Pár dologgal bármikor vitába szállok azért ebből 🙂
      > Általában viszont csak szivatásból tesznek algós kérdéseket a próbafeladatba úgy, hogy utána soha többet a projectben elő se fordul ilyen, szóval hibás szűrővel szűrnek, alap db kezelő (raktár, ERP) rendszerhez nem ilyen skillek kellenek
      Itt az a félreértés, hogy ezt nem azért "kérdezik", mert mindenképp kell a munkához, hanem mert a munkához (jó esetben) kell gondolkozni tudni. Ahhoz is, ami első látásra favágónak tűnik (eleve nem mindig az, csak mivel van alap képzettséged ilyenből is, azért nem tűnik fel mikor hiányozna). Ezek a cuccok jól lemérik, hogy az illető tud-e gondolkozni hatékonyan.
      Főleg, hogy nem ilyen kérdéseket tesznek fel, mint a versenyeken - hanem ezeknek sokkal egyszerűbb formáit. Azok amiket kérdésként feltesznek általában tényleg nagyon alapismeretek szerintem - már a legtöbb helyen. Főleg, hogy igazából sok ember aki felvételiztet meg se tudná a hardcore-abb problémát fogalmazni rendesen, szóval a közepesen hardcore-ig jutnak el max.
      > Egyébként nekem se volt számítógépem fél évig és úgy vizsgázgattam gépteremben infós tárgyakból. Érdekesség, hogy előtte meg a c64-es időkben évekig nem volt otthon gépem magazinokból/könyvekből szedtem össze némi tudást és kockás papírra írtam programot , amíg nem volt magnókazetta menteni, ami nagy technológia volt :D
      A kockás (meg a sima) papír egyébként az egyik legjobb gondolkozós eszköz! C64 nekem sose volt, hanem Enterprise128 volt faternak - imádtam, mert színes gombjai voltak 🙂
      > mint a jf iparban az Unreal, ahol már gyakorlatilag teljesen kikopott az engine programozás és algoritmizálás iránti érdeklődése mindenkinek.
      Szerintem egyáltalán nem kopott ki - egyszerűen van egy csomó indie játék, ami főleg art vagy játékmechanika alapú - de sok embert ismerek, aki engine használata mellett is keményen csinál algós dolgokat (próbálj meg mondjuk több ezer egységes RTS-t írni, vagy egy bizonyos okosságnál jobb AI-t anélkül). Olyat is ismerek, aki az engine-t írja - többet it 🙂
      > vagy valami business "engine" és nem lesz semmi architektúra
      Szerintem az enterspájz gyáva anno simán tekinthető volt "biznisz-es engine-nek" - nagyon sok dolgot a "konténer" csinált meg ugyebár. Ez konkrétan akkor vicces is volt, amikor ilyen körökben is mozogtam és hirtelen lett egy projektje egy erre szakosodott csapatnak olyan technológiával (tisztán OSGi, app szerver nélkül), ahol hirtelen nekik kellett (volna) konkurrenciát kezelni, meg a többi dolgokat... Hát hirtelen nagyon nehéz lett helyesen megcsinálni a lock-olásokat meg hasonlókat s a végén gyakorlatilag AOP-al egy "kvázi app szervert" írtam, hogy semmiképp se rontsák el az emberek.
      Szerintem a hasonlat megállja a helyét, mert a jf-ben sem "mindent" csinál az engine. A játék logika, a technikai részből is sok (pl. saját shaderek, vagy törésmodell) sokszor még saját ott is, továbbá ugye minden játék más és más - ilyen összehasonlításban az egész JavaEE kb. anno egy "üzleti engine" volt tényleg - most újabban sokkal jobban elaprózódtak a dolgok újra: Ugye java-ban is inkább csak spring, spring-boot jellegű irány megy mostanában, más nyelveken meg sose volt annyira extrémen "all-encompassing", hanem csak sok-sok teknyológia erre vagy arra.
      Ugye ezek annyiban is hasonlítanak egy "game engine"-re, hogy ezeknél is van futtatókörnyezet: A függvényeidet az a környezet hívja, nem main() függvényből írod az applikációd és ugye szintén a környezet cuccait használod pl. dependency injection stb. illetve természetesen a környezet kezeli az életciklusokat, szálakat is. Szerintem megáll a hasonlat simán.
      ^^De ilyen környezetben is sok táblás architekturás gondolkozást szoktak csinálni egy nagy rendszernél - minthogy egy nem-triviális játéknál is sok mély ismeret kellhet egy engine-ről is, vagy akár saját kódot írni fölé sok dologra (az AI, útkeresés, törésmodell, játékbeli gazdaság stb. mind lehetnek ilyenek - persze "meg lehet úszni" egyszerű dolgokkal - de mindig is voltak egyszerűbb és tech-orientáltabb játékok is).
      > nem a papír, hanem a "rátermettség" alapján kerültek be, maradtak meg. :)
      Akiknek van "papír" sem amiatt kerülnek helyekre, hanem ugyan az miatt amit mondasz 🙂. Mármint van kétféle ember: Az egyik "mindenben csak a könnyű utat, az ingyen sör" utat szeretné és mivel olyan nincs, mindig (közel) egy helyben toporog. A másik magát fejleszti, mert érdekli is a dolog és ha fizetnek érte, ha nem, egyébként is csinálná, csak nyilván tudja, hogy az élethez pénz is kell. Az utóbbiak számára az egyetem nagyon sokat ad - de ha nem járt szakirányú dologra az illető akkor is magától is ilyen "próbb" dolgok is érdeklik, minden folyton érdekli - nem "megúszni" akarja és "keresni pénzt - lehetőleg sokat", hanem jól akar dolgozni, jól érteni hozzá - ezért simán felszedi a tudást hátrányból is.
      Aki a másik úton megy - annak az önképzés viszont még az egyetemnél is veszélyesebb: Mert ott csak a minimálra megy rá, csak ami "nagyon konkrétan kell" - de az olyan, mint a "kettes alára tanulok meg mindent a fodrász/asztalos szakmában" vonal - milyen kókány munkákat fog csinálni? Érted.
      Nekem is volt ismerősöm, aki egyetemet nem végzett - otthon viszont ilyen numerikus analízis könyvet nézegetett - ez nagyon meglepett, mert kifejezetten tudnék más, hasznosabb dolgot adni nézelődésre, de az illető úgy volt vele "de ezt akarom kicsit legalább tudni, hiszen egyetemen is tanulják". Szóval szorgalmas volt na.
      Az egyetem vs. önképzős ellentét leginkább csak abból fakad, hogy az előbbinél nyilván van egy alap szűrő (kb. bármilyen "értelmes" szakon egyébként - szóval az is jó, ha tök más témában de mondjuk mérnöki dologban), mert aki csak a könnyebb utat akarja, annak eleve már hamar nem fog végig menni az egyetem sem. Így is benn marad pár hűbele-balázs - vagy félig használhatatlan ember (akik jellemzően valahogy kierőszakolják, hogy végig tolják, de azt hiszik ennyi lesz és onnantól életük végéig már nem kell tanulni - na ezek beszélnek általában rosszat az iskolarendszerről... de mert ők rosszul használják) - ellenben önképzéshez kell az általad említett rátermettség.... sok embernek egyszerűen nincs és ugye nagyon sok embernél aki magát képzi, de hamar elhagyja a szakmát ez van és rossz hírt szerez az egész közegnek ezzel.
      > Kedvencem" volt, amikor egy időben mindenki ezeket a "hány csatornafedél van x városban" és hasonlókat nyomatták mindenütt. :D
      Hány zongorahangoló van Magyarországon? 🙂
      Na igen.... amúgy valljuk be ahhoz képest az algós kérdések sokkal jobbak 🙂
      Ez igazából csak arra jó, hogy reakciót láss valakiről, miként néz ki, ha hülyeségekről kérdezik és tud-e becsülni - de ez a sematikus mód ennek kiderítésére annak a bizonyítéka, hogy a kérdezőnek nincs elég emberismeret készsége ezt már ránézésből leszűrni 🙂. Nyilván ez egy "HR fad" volt lényegében csak...
      > de azért itt is előfordult már nálam is fa bejárás, útvonal keresés, kisebb nagyobb matek dolgok,
      Látod? Viszont ez olyan, hogy sokszor szoftverminőségi kérdés: A problémából adódik egy "gondolkozósabb", vagy "próbb" megoldás ami minőségileg jobb - de ha valaki sose tud ezekről a lehetőségekről (mert majd "megtanulja amikor kell, de most aktívan nem tud róla) akkor sokszor csak elmegy mellettük. Én nagyon-nagyon sokszor látom ezt - például valami biznisz app-nál volt egy folyamat amit napi 1x futtattak, mert két órán át tartott. Már "megszokta" az ügyfél, de azért kényelmetlenség volt, hogy ez ilyen időzített dolog. Megnéztem és volt egy full négyzetes algoritmus ott sok adaton - de olyan feladatra, ami egy elemenkénti feldolgozásos algóval lineáris időben kb. azonnal számolható. Átírtam. Utána nem kellett ezt ilyen batch-mód futtatni és egy napos adatokat mutatgatni, mert azonnali lett :D
      A tanulság az, hogy aki ezt csinálta, annak fogalma se volt a "jó" megoldásról. A dolog "így is elégséges" volt, szóval nem is "kereste" a jobb megoldást. Ránézésből látható volt.
      Szóval ha bottom-up design-t csinál az ember, vagy akár csak fejben tudatában van, hogy egyáltalán mire milyen eszközök vannak - akkor ugye meglát ilyen javításokat. Ha nincs tudatában, akkor nem látja meg. Nem arról van szó, hogy a másik ne tudta volna kiguglizni, hanem hogy meg se látta, hogy ki kéne.

    • @4dillusions
      @4dillusions Před 2 měsíci

      ​@@u9vata Legtöbb esetben nincs arányban a szűrő teszt és az utána lévő munka nehézségi szintje. Sokszor volt több hetes körözés után egyszerű forms/CRUDS gyártási munka, hiába a Google furfangos kérdések, meg online algel tesztek.
      A hazai formális képzés pedig kellően száraz ahhoz, hogy ne mindenkit fogjon meg. Engem se fogott meg, sose gondoltam volna, hogy Cramer szabályt fogok interjún implementálni, vagy, hogy sz. graf. keretén belül mennyi területet meg/újra tanulva kell készülni, hogy értsem is, amit csinálok, esetleg továbbfejlesszek, vagy új dolgokat fejlesszek.
      Kivételes emberek azok, akik már fiatalon átlátnak ezen a száraz matekos/infós oktatáson és megtalálják benne a gyakorlati szépséget, ami inspirálja őket ilyen komoly eredményekre, mint ami most is lett. Később remélhetőleg nem fogják velük megutáltatni felsőbb suliban, vagy munkahelyen a témát és a lelkes hozzáállást sem törik meg.

  • @milankarf9975
    @milankarf9975 Před 2 měsíci +2

    Még a középiskolai programozás versenyek is megizzasztottak pedig 5 éve nyomom már a c#-ot de elképzelni sem merem, hogy milyen nehéz lehet ez egyetemi szinten. Ide már tehetség is kell...A szorgalom már ide kevés.

  • @scallyt1
    @scallyt1 Před 2 měsíci +1

    Szia. 2éve foglakozok programmozásal azonban volt mindig is egy nagy hibám még pedig hogy minden is érdekel, emaiatt következett be nálam a tool hoppingolás aminek a folyamata már 2éve tart nálam és úgy határoztam hogy be szeretném fejezni. Ennyi idő allatt számos nyelvet használtam már js(ts),java,c#,ruby,php,c++,rust,python,c,elixir azonban egyikben sem merültem el / foglalkoztam sokat, volt olyan amivel hírtelen felíndulásból használtam 1hétig. És az lenne a kérdésem egyszerűen megfogolmazva hogy: "Melyik nyelvet tanuljam?", azonban jól tudom hogy így ez semmit sem ér így adok pár infót amiből ki tudsz indulni.:
    5évem van az éretségig 14vagyok. Sokat mondják elsőnek a pythont de egyáltalán nem szeretem a korommal csak azt szeretném mondani hogy nem vagyok abban a helyzetben hogy azzonal el kell tudnom helyezkedni.
    Ami érdekel az a web backend fejlesztés de ami még jobban az a alacsony színtű programozás(Like linux disztro fejlesztés/saját desktop programok ilyesmik).
    És néhány ÁLOM projectem:
    -Saját linux distro / Saját Kernel
    -Saját programozási nyelv
    -Egy modernebb wordpress engine
    Szóval így állok mit tudsz javasolni amúgy a pythonon/js-en kívül minden nyelv tetszett és e-idő allatt arra kellett rá jönnöm hogy döntés képtelen vagyok.
    (Bocsi a helyes írásért)

    • @u9vata
      @u9vata  Před 2 měsíci +4

      Szia!
      Örülök a te lelkesedésednek is! 🙂
      > 5évem van az éretségig 14vagyok.
      Ezen a ponton az a jó, hogy szép előnyben vagy sok másik emberhez képest, aki "azt se tudja, hogy egyáltalán informatikával akar foglalkozni". Gondolj azokra a hírekre, akik 30+ évesen valamiféle szakácsból, vagy bölcsészből, akármi szeretnék átképezni magukat - sok dolog amit a neten olvasol az kb. "nekik van írva" (és ott is sokszor rossz tanács).
      > Ennyi idő allatt számos nyelvet használtam már
      Ez szép dolog, a nyelvek közt biztos azt is észrevetted, hogy nincs valamiféle extrém nagy különbség sok esetben. Jó a rust az a lifetime és borrow checker miatt ugye egy plusz dolog, meg felsoroltál dinamikusan típusos és statikusan típusos nyelveket is. Alapvetően a többi az nem "akkora" különbség és nem is ez a lényeg.
      A C és nem-szektásan használt C++ szerintem bőven jó irány ezen a ponton, Én a python-t nem tartom egy extrémen jó nyelvnek. Kellemes meg minden, de jó lenne nem lett volna dinamikusan típusos. Hogy őszinte legyen én "nettó baromságnak" tartom a dinamikus típust az esetek nagy többségére és károsnak, ha nagyon azzal kezdenek az emberek, szóval nem baj, hogy nem tetszett meg.
      Szerintem a te korodban nem a nyelvek számítanak, hanem inkább a készségfejlesztés: algoritmusok, prog tételek stabilan menjenek, stb. - ez a "fejlődés" oldalon ami van. A másik vonalon meg ugye ebben a korban nyugodtan használd ki, hogy érdekelnek dolgok: ugyanis nyilván akármit programozol, akármelyik nyelven, már nagy pluszban vagy ahhoz képest, hogy lenyomsz valami random játékban pár meccset.
      Én egyébként folyton játékokat akartam írni, de sokféle dolgot csináltam: tömörítő algoritmust is például, kis saját operációs rendszert stb. De ezek régen voltak.
      > néhány ÁLOM project
      - Linux disztró csináláshoz igazából szerintem főleg a napi szinten linuxozás fog segíteni - elmész hardcore irányba, ilyen arch, void a napi használatra és linux from sratch próbálgatás és onnantól elvileg pipa a történet - de nem kell siettetni. Ha használod a linuxot így fiatalon és sokszor használod, ez jön majd magától ha tényleg akarod. Szerintem nagyon külön nem kell rá figyelni, ha "amúgy is linuxos vagy".
      - Saját "kernel": Hát ez hardcore-abb dolog. Én anno középiskolában, amikor először kezdtem igazából komolyabban is programozni, mindent ASM-ben csináltam, játékokat, részecskerendszert, stb. És igen, egy operációs rendszert is, aminek "FOS" (Floppy Operating System) volt a neve. Minden fájl csak akkora volt, mint a fizikai blokkok a floppy lemezen így például nem volt töredezettség - ha valaki több adatot akart tárolni, a programnak kell több fájlra bontani azt és "kész". Volt játék, egy assembler / debugger, egy editor és persze alap parancsok. Zöld betűs terminál és kb. ennyi. Úgynevezett "unreal" módban futott, tehát nem védett módban. Ja meg volt egy progi, amivel a mátrix betűk fentről lefele estek 🙂. A lényeg: ez jó móka volt, később egyetemen architektúrák és oprendszerek tárgyakon segített, de hát ez elég különleges út - alapvetően hatékonyabb dolgokat is tudok ajánlani. Nettó asm-ben programozni meg már akkoriban is elég "hülyeségnek volt pecsételve" annak ellenére is, hogy nyilván talán ma is valamennyire a részem, hogy tudok asm-t olvasni viszonylag folyékonyan még. Nem azt mondom, hogy "ne csináld", de szerintem mást csinálni hatékonyabb dolog.
      - Saját programozási nyelv? Épp dolgozok egyen - lehet hogy tetszeni fog és abbahagyod a tech ugrálást 🙂🙂🙂 - na de viccet félretéve... ameddig az kijön (ami a két év és a végtelen közti idő) addig ha mégis folytatni akarod a technológiai ugrándozást, akkor érdemes lehet belenézni a FORTH és FACTOR nyelvekbe. Ezek logikája nagyon más, mint a "sima" programozási nyelveké. A forth a régi és benne minden dolog egy "szó". Nincs tehát operátor, szimbólumok, nincsenek "függvények", vagy változók, hanem minden dolog csak egy "szó" és a szavakat ugye whitespace választja el. A szavak mellett van továbbá egy verem adatszerkezet is - ha ráteszel két elemet, mint A és B akkor ugye B majd A sorban veheted vissza) és ezzel lehet a szavak közt kommunikálni. Definiálhatsz saját szót és annak leírásához használhatod a meglévő szavakat. Tudom... ez úgy hangzik, mintha függvény lenne - mert lényegében az is - de nincsenek "paraméterek", hanem a stack-et használod mindennek átadására és visszaadására. Az alap szavak ilyenek, mint "+", vagy ".", esetleg "swap"...
      "40 2 + ." - ez a program felteszi a veremre, hogy 40, majd azt, hogy 2 és a + szó összeadja a verem legtetején lévő két dolgot és azzal helyettesítve egy dolog lesz a verem tetején. A "." (pont) annyit csinál, hogy kiírja azt a számot (dolgot) ami a verem tetején van.
      Ehhez nagyon egyszerű fordítóprogramot csinálni egyébként, egy fájlba belefér - sőt olyan kis mikrovezérlőkhöz is csinálnak, amihez még mondjuk assembler sincs, mert alig kell pár dolgoz megcsinálni és onnantól önmagát fordítja le. Továbbá vannak benne úgynevezett "fordítási idejű szavak" - vagyis kétféle szó van: az egyik a program futásakor helyettesítődik, a másik igazából akkor, amikor olvassa a fordító - ez a FORTH-nál nem válik el erőteljesen, mert interpretált a nyelv, de a factor-nál igen. A lényeg, hogy olyan parancsok is vannak, amik a fordítónak szónak - például ha meglátsz egy "szót", akkor a fordítót instruálhatod, hogy "most olvasson előre 5 másik szót, azt neked odaadja a vermen és te kezdesz vele valamit" - ettől talán kiviláglik, hogy ez a programnyelv lényegében lehetőséget ad mindenféle saját programozási nyelvet csinálni.
      Nagyon jó könyv hozzá a Leo Brodie-féle "Thinking Forth". Lehet hogy videó is lesz erről valamikor, mert linuxra van gforth amit könnyedén fel lehet tenni és talán egy érdekesség ez a történet. A stack miatt gyakran hasznos itt rekurzióban gondolkozni és ugye készség-szerűvé alakul a stack mint adatstruktúra előnye / hátránya is. Korlátozott formában változók is vannak, de azt is ilyen stack parancsokkal lehet elérni, szóval az nem "idiomatikus".
      A factor ennek egy modernebb változata. Interpreter is van hozzá - de fordítani is lehet és elég jó gyors kódot is generál a fordítója! Én anno szerettem vele foglalkozni egyetemen és itt még nagyobb lehetőség van saját programozási nyelvet csinálni benne - sőt én csináltam is! Konkrétan ilyen pascal-szerű, vagy basic-szerű dolgot csináltam vele, tehát strukturális programokra való dolgot egy ilyen stack-es nyelvben!
      Ehhez a factorhoz írtam egy jó leírást, amit itt érhetsz el:
      nyelvek.inf.elte.hu/leirasok/factor/
      ^^te jó ég, ez több mint 10 éve volt, akkor, amikor ch24-re is mászkáltunk 🙂
      Ebben a részben az is megvan, ahogy a saját "programnyelvet" csináltam benne:
      nyelvek.inf.elte.hu/leirasok/factor/index.php?chapter=15#section_3
      ^^fontos! Ezt továbbra is a "factor" fordító / interpreter fordítja le! Egyszerűen ennyire kiegészíthető maga a nyelv amit csináltak, hogy teljesen más programnyelv lesz benne amit leírsz és az elején - ilyen #include-szerűen - a USING: statement-el láthatod ahogy behúzom az én "nyelvem" egyes kis elemeit. Itt ennek a forrása is elérhető. Szerintem érdekes ezzel kicsit játszogatni. Azért ezt mondom, mert ebből talán kicsit tanulni is lehet - és ha nem az algós, versenyprogramozós vonal érdekel elsősorban, az ilyenek is érdekesek és fejlesztő hatásúak lehetnek - elvégre ez tényleg egy nagyon spéci programnyelv ez a factor.
      - Backend-hez, vagy ilyen "csinálok olyat, mint a wordpress, csak jobbat" történethez pedig talán a HTMX-et és mondjuk egy go-t érdemes nézegetni. Igazából a go-t akár python helyett algoritmusokhoz és minden máshoz is ajánlott nézegetni. A htmx szerintem egy nagyon civilizált, normális dolog webre az összes többi dologhoz képest és a go végülis lehet hogy pont az a nyelv, amit tanuláshoz tényleg lehet talán mondjuk egy C mellett ajánlani is akár.
      De örülök, hogy hozzád hasonló fiatalok is olvassák / nézik az ilyen content-jeimet. Ezek tök jó dolgok, igazából ahogy mondtam sokan elfecsérlik ezeket a leghatékonyabb idejüket amíg fiatalok és nem fejlesztik magukat csak később - az összes olyanhoz képest ahogy írtam eleve plusszal indulsz szóval hajrá! ;-)

    • @scallyt1
      @scallyt1 Před 2 měsíci +1

      @@u9vata Szia nagyon köszönöm a válaszodatt hogy ilyen jól kifelytetted.
      Nem tudom miért de nekem van egy olyan maniám mégpedi hogy elkészítem a jővőben álltamalam megkívánt tanult nyelvek listáját jelenlge így néz ki:
      1. c || c++
      2. elxir
      3. rust
      4. go
      Bár ezt még biztosan fogom változtatni itt az ellején a c és c++ a lényeg :)

    • @u9vata
      @u9vata  Před 2 měsíci +1

      @@scallyt1 Igen, ez teljesen jó lista. A C-ben viszonylag hosszabb időt eltölteni valószínűleg a leghasznosabb ilyenkor. A C++ pedig szerintem úgy jó, ahogy az említett "piros topcoderes" haverom csinálta - hogy csak azért, hogy legyen például std::vector, unordered_map és pár hasonló adatszerkezet / algó arra jó dolog.
      De egyébként a videóban említett alkmatos ACM-es csapatban egyetemi szinten is volt aki végigtolta ansi-C nyelven az acm versenyeket 🙂