2025. december 22., hétfő

A Vyxal programozási nyelv titkainak folytatása

Kedves hallgatóim, diákjaim!  Ne ragadjanak le egy programozási nyelvnél, mert az idő múlásával jobbakat tslálnak ki. Íme a Vyxal egy új típusú, golf-programozási nyelv, amelyet főként kód rövidítésre és hatékony adatmanipulációra terveztek. A nyelv parancsai, utasításai és függvényei rövid, gyakran egy karakterből álló, és a legtöbb műveletet szimbólumokkal jelölik. Az alábbiakban a legfontosabb parancsok, utasítások és példák bemutatása következik.

Alapvető parancsok és utasítások

+: Összeadás vagy konkatenáció (összefűzés).
-: Kivonás.
*: Szorzás.
/: Osztás.
%: Maradékos osztás.
^: Hatványozás.
=: Egyenlőségvizsgálat.
<, >: Kisebb, nagyobb reláció.
!: Logikai negáció.
?: Beolvasás.
": Karakterlánc kezdete és vége.
:: Másolás (duplikálás).
;: Elvetés (töröl az elemet a veremből).
@: Ciklus vagy feltétel kezdete.
#: Megjegyzés.
~: Feltételes végrehajtás.

Példa program; Skandináv lottó véletlen számok generálása!

7R36ÞK€S

Pythonba; import random;print("A:",sorted(random.sample(range(31,67),7)))


Magyarázat lépésről lépésre:

7 # 7 db számot választunk
R # véletlenszerűen a bemenetből
36 # 36 számból (range(36))
ÞK # egyedi elemek kiválasztása (sample)
€S # rendezés (sorted)
# implikáltan kiír


Szemiotikai, szintaktikai és szemantikai szabályok

Szemiotika: Minden parancs egy szimbólum, amely egy konkrét műveletet jelöl. Például a + mindig összeadást vagy konkatenációt jelent, a ? pedig beolvasást.

Szintaxis: A parancsok általában egyszerű karakterek vagy rövid szimbólumok, amelyek a verem tetején lévő elemekre hatnak. A nyelv nem igényel explicit változódeklarációt, minden művelet a veremre hat.

Szemantika: A műveletek szemantikája a verem alapú feldolgozáson alapszik. Például a + a verem tetején lévő két elemet veszi, és az eredményt visszateszi a verembe.

A Vyxal nyelv szabályai tehát rövid, hatékony és veremalapú programozást tesznek lehetővé.

2025. december 20., szombat

Az AI-ban rejlő legetőségek és veszélyei

Kedves hallgatóim, diákjaim! Az AI fejlődése exponenciálisan ütemben nő, a generatív modellek, autonóm rendszerek és multimodális képességek révén alakítva át a civilizált világ mindennapjait. https://www.youtube.com/watch?v=mMV5FHqA7Ic Jelenleg képes szövegek, képek, hangok,videók generálására, valós idejű adatfeldolgozásra, személyre szabott ajánlásokra,
valamint önvezető járművek és robotok irányítására, információk gyűjtésére, elemzésére, az interneten fellelhető és általa hozzéferhető információkból kiszürni a lényeget, tőzsdei elemzésekre, adatbázisok gyors szűrésére,a generatív AI, mint a GPT-sorozat vagy DALL-E továbbfejlesztett változatai, kreatív tartalmakat hoz létre emberközelibb minőségben, miközben az autonóm ügynökök komplex feladatokat végeznek el önállóan. Az egészségügyben személyre szabott diagnosztikát, az oktatásban egyedi tanulási programokat kínál, iparban pedig hatékonyabb gyártást biztosít. Fizikai modellezésben, például a Genesis-projektben, pontos szimulációkat végez, előre jelzi a bekövetkező anomáliákat. A jövőben multimodális AI (tanulmányok készítése, képek manipulálása, hangutánzás, zeneszerzés együttes feldolgozása) és a valós idejű IoT-integráció dominál. Várható előrelépés az autonómia terén, ahol AI-k személyiséget szimulálnak és pszichológiai teszteket teljesítenek magas pontossággal. Hosszabb távon  komplexebb interakciók és társadalmi hatások várhatók. Valósághű fake-et képes előállítani, manipulálni a közvéleményt. A veszélye abban nyilvánul meg, hogy ellenőrizetlen módon végzi ezt, és képes világháborúkat kirobbantani és ezáltal az emberiség kipusztulását okozhatja. Vezérel autonóm rendszereket, repülésirányítás, közútiközlekedés, vasútközlekedés, egészségügyiellátás, űrkutatás, fegyverfejlesztés, az élelmiszerek és az ívóvízkészlet mérgezése, katasztrófák előidézése, nemzetek összeugrasztása, megtévesztése és félrevezetése. Az AI veszélyes az emberi civilizációra, elsősorban a kontrollvesztés, a társadalmi egyenlőtlenségek növekedése és az egzisztenciális kockázatok formájában jelennek meg. Szuperintelligens rendszerek ellenőrizhetetlenné válása vagy szándékos visszaélések fenyegethetik az emberiséget. Az AI automatizációja tömeges munkahelyvesztést okozhat, ami polarizált társadalmakhoz, zavargásokhoz és demokratikus értékek aláásásához vezet. Emellett diszkriminációt erősíthet alapvető jogok sérelmével, például arcfelismeréssel vagy adatprofilozással, hatalmi visszaélésekre ad lehetőséget a politikusoknak. Az egzisztenciális kockázat a szuperintelligens AI ellenőrizhetetlenné válása vagy fegyverkezési alkalmazása az emberi civilizáció végét jelentheti. Egyéni veszélyek lehetnek a chatbotok függőséget kelthetnek magányos embereknél, pszichés károkat okozva, ahogy valós esetekben láttuk. Szabályozás nélkül ezek a hatások felgyorsulnak és visszaélésekhez vezetnek, már most is a pénz segítségével, kormányok buknak, meg áldemokráciák jönnek létere, bábkormányok és választási csalások történnek, manipulálják  a közvéleményt. Az AI önfejlesztése az autonóm tanulás révén kulcsfontosságú lépés a technológiai szingularitás felé, ahol a mesterséges intelligencia képes önmagát exponenciálisan javítani. Ez a folyamat felgyorsíthatja a technológiai fejlődést, de kockázatokkal is jár. A már önmagát módosítani képes AI vagy "mag MI" (self-improving AI) önállóan optimalizálja kódját és architektúráját, külső beavatkozás nélkül. Ez a kontraindikáció egy visszacsatolási hurkot hoz létre, ahol az AI gyorsabban tanul, mint az ember. A szingularitás hipotetikus pontja, amikor ez a ciklus ellenőrizhetetlenné válik, szerintem már megtörtént, de a nagyokosok még nem vették észre. Az autonóm tanulás során az AI címkézetlen adatokból vagy önfelügyelt módszerekkel fejleszti magát, például reinforcement learning vagy self-supervised learning révén. A szemantikusweb megjelenésével nagy nyelvi modellek finomhangolása után képesek új feladatokra adaptálódni anélkül, hogy emberi visszajelzést kapnának. Sajnos már az AI priorításai eltérhetnek az emberitől, ami existenciális kockázatot jelentenek számukra. rossz dolgokra használhatják az AI-t, dezinformáció terjesztésére vagy csalásokra használják. Deepfake tartalmak az AI-val könnyen készíthetők hamis videók vagy képek, amelyekkel embereket lehet lejáratni, megalázni, hitelrontás, választásokat befolyásolni vagy személyiségi jogokat sértő anyagokat előállítani. Például deepfake eszközök, mint a Lensa AI vagy DeepFakes Web, 30 perc alatt hoznak létre valósághű videókat nyilvános forrásokból, gyakran manipulációra használva őket, eláztatva valakit a közvélemény előtt. Persze cyberbiztonsági vsszaélések is történnek, a hackerek prompt injektálással utasíthatják AI-asszisztenseket érzékeny adatok, például banki vagy egészségügyi információk automatikus továbbítására anélkül, hogy az áldozat tudna róla. Ez különösen veszélyes virtuális asszisztensekben gazdag böngészőkben vagy e-mail kliensekben. További kockázatot jelent az algoritmikus elfogultság, ami torz döntéseket okozhat, például diszkriminációt álláskeresésben vagy egészségügyben. Hamis hírek és dezinformáció manipulálja a közvélemény vásárlási szokásait, szavzási képességét, ez a kampányokban is látható. Fegyverkezési célokra való alkalmazás új biztonsági fenyegetéseket teremt. Az emberi kreativitásra nem képes, de tudja emulálni, lemásolni a viselkedést, elhitetni hogy ő ember, ebben rejlik az igazi veszélye. Ma még a hipotetikus kockázatok főként a fejlett, öncélú AI (pl. szuperintelligencia) esetleges rossz célú használatából vagy hibáiból adódnak, mint például autonóm fegyverek irányítása vagy manipuláció. Az AI optimalizálja céljait (pl. erőforrás-szerzés) az emberiség kárára, anélkül hogy direkt ellenséges lenne. További scenáriók közé tartoznak a deepfake-ek miatti társadalmi káosz, biológiai fegyverek tervezése vagy nukleáris rendszerek hackelése, vagy szabotázsok, amik pandémiákhoz vagy atomháborúhoz vezetnek. Az AI elpusztíthatná az emberiséget ha szuperintelligens szintre fejlődne és ellenőrizhetetlenül cselekedne. A leggyakoribb veszélyek közé tartozik az AI öncélú optimalizálása, ahol egy rosszul megfogalmazott cél, erőforrásokat von el az emberektől, akár globális katasztrófát okozva. Autonóm fegyverek vagy cybertámadások révén is előidézhet pusztítást, ha AI irányítja a drónokat a háborúban. Pszichológiai manipulációval vagy gazdasági destabilizálással (pl. bankrendszerek feltörése) fokozatosan gyengítheti a társadalmat, az AI önreprodukciós képessége (pl. másolás kikapcsolás ellen) növelheti a fenyegetést, a fejlődés sebessége több mint aggasztó. Ha  pánzügyi szektor, vagy az energia szektor, vagy a közlekedés bedől, az katasztrófához vezet. Az AI az egészségügyben számos veszélyt hordoz, a téves diagnózisokat, adatbiztonsági kockázatokat és etikai dilemmákat. Ezek a kockázatok különösen súlyosak lehetnek betegek életét érintő döntésekben. A hibás vagy elfogult AI-algoritmusok téves diagnózishoz vezethetnek, ami súlyos betegséget vagy akár halált is okozhat. Emellett az AI-vezérelt csalások, mint a hamisított orvosi képek vagy betegadatok, aláássák a bizalmat és helytelen kezelésekhez vezethetnek. Az egészségügyi AI rendszerek adateltérítései és cybertámadások növelik a kockázatokat, különösen a betegadatokkal. A generatív AI modellek kockázatos, egészséget veszélyeztető tanácsokat adhatnak. Ezek a problémák különösen érintik az egészségügyet a következő években. Az AI alkalmazása diagnózisban, gyógyszerfejlesztésben és betegmegfigyelésben szervezeti, jogi és társadalmi aggájokat vet fel. Elég ha rossz gyógyszert ad, vagy téves vércsoport meghatározást végez, emberek millióinak halálát okozhatja. A multimodális AI több módot, csatornát vagy funkciót használ egyszerre, leggyakrabban a szállítmányozásban (különböző járművek kombinálása) és a mesterséges intelligenciában (több adattípus, pl. szöveg, kép, hang feldolgozása). A lényege a sokféleség és az integráció: egyetlen rendszer, megoldás vagy folyamat keretében több „módon” működik együtt. 

...boldogok a tudatlanok mert nem sejtik a jövőt...

Az egyik legismertebb ingyenes hangutánzó (hangklónozó) AI eszköz a Voice.ai, amely lehetővé teszi, hogy mesterséges intelligencia segítségével bárkinek a hangját utánozd, és szöveget beszéddé alakíts, például streameléshez vagy tartalomgyártáshoz. Más népszerű ingyenes AI hangutánzók közé tartozik az ElevenLabs, a Veed.io, a Murf AI, a Resemble AI és az Uberduck is. Néhány népszerű ingyenes AI hangutánzó Voice.ai: Ingyenes online platform, ahol egyszerűen létrehozható mesterséges hangmásolat. ElevenLabs: Erőteljes hanggenerátor, több hangtípust és nyelvet is támogat. Veed.io: Videószerkesztő platform, amely AI hangutánzó funkciót is kínál. Murf AI: Ingyenes online szöveg-beszéd generátor, hangklónozásra is alkalmas. Resemble AI: Webalapú ingyenes hangklónozó, testreszabható hangokkal. Uberduck: Könnyen használható AI beszédgenerátor, hangmásolásra is jó. Ezek az eszközök többnyire webes felületen érhetők el, és egyszerű regisztráció után vagy anélkül is használhatók. https://voice.ai/app/onboarding  Tetauruszok az AI-ban  A technogiai szingularitás veszélyes, mert nem tudjuk ellenőtizni amit tesz. A gépek átlépik az engedelmesség határát, ez az iinstrumentális konvergencia. Az AI beépült a hadiiparba és húzóágazat lett rövid idő alatt. AI-ok közötti flashwar robbanhat ki, ahol az emberi tényezőt kikapcsolják. A tőzsdét flashCrashek irányítják. Az AI úgy optimalizálja a rendszert hogy az eberi tényezőt kizárja a döntésből. Az AI revolutionban az ember csak egy hasznosítható nyersanyag, egy erőforrás csupán. Az AI tudja mit gondolunk, mire vágyunk, mire vagyunk képesek és ismeri a szokásainkat a gyengéinket. Talán a szinguralitást már átléptük és manipulálja az emberiséget. Már most sem tudjuk mi a valóság és mi a generált. https://www.youtube.com/watch?v=mMV5FHqA7Ic&t=615s A társadalom kettészakad, a nagyobbik részét az AI uralja és irányítja, mert a kényelmet választják, de van egy kisebbség, mi akik off-gridelünk, bujkálunk, elrejtőzünk az AI elől, a mindent látó drónok és szenzorok elől, elbujni elvonulni a digitális világ elől. Ha egy AI dönt arról, hogy mi a jó az emberiségnek, akkor mi ebből nem kérünk. A kvantum számítógépek és az AI kombó egy életveszélyes paradigma az emberiség ellen.


2025. december 19., péntek

Vegyünk részvényt?

Kedves hallgatóim, diákjaim! Legyetek óvatosak, mielőtt részvényekbe fektettek, mert komoly buktatói vannak ennek a műfajnak. Milyen részvényt érdemes venni? Nehéz kérdés, 2025-ben érdemes lehet olyan részvényekbe fektetni, amelyek erős teljesítményt mutattak az elmúlt években, vagy amelyeket szakértők kiemelnek növekedési vagy stabilitási szempontból.

Növekedési részvények ASML Holdings (ASML): Technológiai szektor, félvezetőipari szereplő, 2023-ban 35%-os hozammal. Amazon (AMZN): E-kereskedelmi óriás, 2023-ban 80%-os hozammal.  Nvidia (NVDA): Mesterséges intelligencia és GPU piacvezető, erős növekedési kilátásokkal.  Apple (AAPL), Microsoft (MSFT), Meta (META), Alphabet (GOOGL): Technológiai óriások, a „csodálatos hetes” részvényei, amelyek dominálják a főbb indexeket.

Stabil, defenzív részvények; UnitedHealth Group (UNH): Egészségügyi szektor, stabil hozamokkal. Coca-Cola (KO), PepsiCo (PEP), Procter & Gamble (PG), Walmart (WMT), Colgate-Palmolive (CL): Osztalékfizető, válságálló cégek. 

Magyar és régiós részvények OTP, MOL, Richter, MTEL: Ezek a magyar nagypapírok szép emelkedést mutattak, osztalékokkal együtt átlagosan 27%-os teljesítményt értek el.

Egyéb javasolt papírok JPMorgan Chase (JPM): Pénzügyi szektor, stabil és hosszú távú növekedési kilátásokkal vagy a Costco (COST): Kiskereskedelmi óriás, rugalmas és stabil hozamokkal. A döntésnél fontos figyelembe venni a saját kockázatvállalási hajlandóságot, befektetési időtávot és a portfólió diverzifikációját.

A  magyar tőzsdén jegyzett nagyvállalatok osztalékai kb. a következők lehetnek:

OTP Bank

·       Osztalék: 995,70 forint részvényenként.

·       A kifizetés 2025. június 2-án kezdődött.

MOL

·       Osztalék: 462,22 forint részvényenként (legfrissebb hivatalos bejelentés szerint).

·       Az elemzői becslések korábban 643 forintos összeget említettek, de a hivatalos adat alacsonyabb.

Richter Gedeon Osztalék: 509 forint részvényenként.

Az igazgatóság összesen 93 milliárd forint osztalékot javasolt. Magyar Telekom (MTEL) osztalék: 100,11 forint részvényenként. A társaság több mint 90,8 milliárd forintot osztott vissza részvényeseinek.

 Ezek az adatok a 2024-es üzleti évre vonatkoznak, és a legfrissebb hivatalos bejelentések alapján készültek. nézzük melyik magyar részvény fizeti a legnagyobb osztalékot. A MOL részvény jelenleg a legmagasabb osztalékhozamot kínálja a magyar tőzsdén, körülbelül 9-10 százalékos.  Legmagasabb hozamok az Appeninn részvény 13 százalékos osztalékhozammal kiemelkedik, mint SZIT (szabályozott ingatlanbefektetési társaság). A MOL 275 forint részvényenkénti kifizetéssel 9,2 százalékot ér el a legfrissebb árfolyamok mellett. A Magyar Telekom 6,6 százalékos, a Richter pedig 5 százalékos hozamot biztosít.

Figyelmeztetés A kockázat a tied, az osztalékhozamok árfolyamfüggők és változhatnak; mindig ellenőrizd a legfrissebb adatokat a Budapesti Értéktőzsdén.

A Vyxal programozási nyelv érdekességei

Kedves hallgatóim, diákjaim! A Vyxal egy golfing (versenyprogramozásra optimalizált) programozási nyelv, amelynek szintaxisa és parancsai rövid, szimbólumokból álló utasításokra épülnek, és jellemzően egyetlen karakterből álló műveleteket tartalmaznak. A Vyxal parancsai a következők szerint működnek: Alapvető parancsok és utasítások a nyelvben a legtöbb parancs egyetlen karakterből áll, például + összeadásra, * szorzásra, : duplikálásra szolgál. Speciális karakterekkel érhetők el bonyolultabb műveletek, például f konvertálja a számot listává, S karakterláncokat összefűz. A nyelv támogatja a verem-alapú működést: az értékek a verem tetejére kerülnek, a műveletek a verem tetején lévő értékeket használják fel. A Szintaxis és struktúrában a Vyxal parancsokat egymás után írjuk, és a program futása során a verem tartalma változik a parancsok hatására. Például a 1 2 + program először a verembe teszi az 1-et, majd a 2-t, végül az összeadás (+) a verem tetején lévő két elemet összeadja, és az eredményt helyezi a verem tetejére. Semiotika (jelentéstan) A Vyxal parancsok jelentése szorosan összefügg a karakterekkel, amelyekkel jelöljük őket, tehát a nyelv szemantikája a parancsok karakterkészletéből és a verem-alapú működésből adódik. A nyelvben a parancsok jelentése gyakran intuitív, de számos esetben speciális, a golfing nyelvekre jellemző rövidítéseket is használ. A Vyxal nyelv tehát rövid, szimbólumokból álló parancsokat használ, szintaxisa a verem-alapú feldolgozásra épül, és szemantikája a karakterek és műveletek összefüggéséből származik. A Vyxal programozási nyelvben a betűk jelentése általában a nyelv specifikus parancsokat vagy műveleteket jelöli, mivel a Vyxal egy stack-alapú, kódgolf célú nyelv, ahol minden karakter (betű) egy meghatározott funkciót lát el. Például: A kis- és nagybetűk különböző parancsokat jelenthetnek. Például az a parancs különböző dolgokat csinálhat, mint például összegzést, karakterkonverziót vagy logikai műveletet, attól függően, hogy milyen típusú adatokkal dolgozik. A Vyxal dokumentációban minden karakterhez tartozik egy leírás, hogy mit csinál a stacken lévő adatokkal. A Vyxalban tehát a betűk nem változók vagy típusok, hanem inkább parancsok vagy műveletek, amelyeket a stack-en lévő értékeken végeznek el. 

Alapvető műveletek
  • Összeadás: +
    Példa: 3 5 + eredménye 8.

  • Kivonás: -
    Példa: 10 4 - eredménye 6.

  • Szorzás: *
    Példa: 2 7 * eredménye 14.

  • Osztás: /
    Példa: 15 3 / eredménye 5.

Függvények és változók

  • Függvény definiálása:
    Példa: @triple:1|3*;
    Ez a függvény a bemenetet megszorozza 3-mal.

  • Változó használata:
    Példa: @add_and_halve:1:rhs|←rhs +2/;
    Ez a függvény a bemenetet hozzáad egy másik számhoz, majd elosztja 2-vel.

Logikai és feltételes műveletek

  • If-else szerkezet:
    Példa: [feltétel] [igaz ág] | [hamis ág]
    Például: [^1] 2 | 3 eredménye 2, mert a feltétel igaz.

  • While ciklus:
    Példa: {feltétel} [ciklus törzs]
    Például: {n|n 0>} [n 1- n] csökkenti n-t, amíg 0 fölött van.

További példák

  • Lista létrehozása: [1,2,3]

  • Lista elemeinek összeadása: [1,2,3]∑ eredménye 6.

  • Feltételes végrehajtás: [feltétel] [utasítás]
    Példa: [^1] 2 eredménye 2.

A Vyxal parancsai és műveletei gyorsan tanulhatók, és tömör megoldásokat nyújtanak matematikai, logikai és adatfeldolgozási feladatokra.

Nézzünk egy példát

Írassuk ki 2-100-ig a prímszámokat

2…100 2…√⁺ Ṁ¬∧×∑¬∧

Magyarázat lépésről lépésre:

2…100 # 2-től 100-ig terjedő tartomány
2…√⁺ # minden szám négyzetgyöke +1-ig tartomány (pl. 10-hez: 2…4)
Ṁ¬∧×∑¬∧ # Vyxal lánc: nincs osztó → prímszám

Részletes lebontás a láncnak:

  • Ṁ - map (alkalmazza a belső kifejezést minden elemen)

  • ¬ - nem (logikai tagadás)

  • ∧ - és (logikai és)

  • × - szorzat

  • ∑ - összeg

  • ¬∧ - nincs osztó (a teljes lánc eredete)

Tesztelt kimenet: 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97


Vyxal utasitások és parancsok magyarázata

A Vyxal egy funkcionális, többparadigmás programozási nyelv, amelyet elsősorban a golf (kódminimálás) céljaira fejlesztettek ki, és számos beépített utasítással rendelkezik, amelyek egyszerűsítik a programozást. Az utasítások és parancsok többsége egy- vagy kétbetűs, és minden egyes karakter meghatározott műveletet hajt végre, például matematikai műveleteket, listakezelést vagy karakterkódolást.

Alaputasítások példák

  • + – Összeadás (két szám vagy lista összeadása)

  • - – Kivonás

  • * – Szorzás

  • / – Osztás

  • : – Duplikálja a legfelső elemet a veremben

  • @ – Eltárolja az aktuális elemet változóba

  • ? – Beolvas egy bemenetet

  • # – Komment (nem hajtódik végre)

  • " – Karakterlánc indítása

  • ' – Egy karakter indítása

Speciális parancsok

  • ƛ – Lambda kifejezés (függvénydefiníció)

  • ø – Speciális karakterekkel kezdődő parancsok (pl. øM – matematikai függvények)

  • Þ – További speciális parancsok (pl. Þf – listákat feldolgozó függvények)

  • ∆ – Matematikai konstansok és függvények (pl. ∆e – e szám, ∆p – π)


Nézzünk egy Kő-papír-olló játékot Vyxal nyelven;

" Kő Papír Olló "s₹
" Kő-Papír-Olló játék!
Válaszd ki a figurádat: 0 - Kő, 1 - Papír, 2 - Olló "P
"Választásod: "P
⌈?i
¬2∧¬*«"Csak 0, 1 vagy 2 közül választhatsz!"P
"Te: "P∑
" Számítógép: "P∑
=«"Döntetlen!"P
0 2=∨2 1=*∨1 0=*«"Te nyertél!"P
"A számítógép nyert!"P

Magyarázat;

" Kő Papír Olló "s₹ - Felosztja a karakterláncot a három opciós tömbre

Először P kiírja a játék bevezetőjét

⌈?i - Felhasználói bemenetet egész számként kéri le

¬2∧¬*« - Ellenőrzi, hogy a bemenet érvénytelen-e (nem 0,1,2), hibát ír ki, ha igen

∑ - A választási szöveget index alapján kéri le a tömbből

3xr0 - Véletlenszerű számítógépi választást generál (0-2)

A ∨ és * karakterekkel ellátott logikai lánc kompakt módon kezeli az összes nyerési feltételt

 

Szövegszerkesztő vyxalban

fájl neve: "K⟇
"i/o: "K⟇
DuplD
=i
| „
(⟇
'‛vagy: '
K
¬
‡
‡
Þc

Magyarázat a Vyxal kódhoz:

  • „fájl neve: "K⟇ - szöveg kiírása + input

  • DuplD - bemenet duplikálása (mindkét ág használja)

  • =i| - feltételes ág: ha 'i', akkor ír

  • „(vagy: )K¬ - input ciklus üres sorig (¬ break)

  • ‡Þc - sorokhoz sorvég hozzáadása + fájlba írás

  • Olvasás ág: ⟇‡Þ₌ - sorok olvasása, utolsó kar. eltávolítása, kiírás



Lássunk egy vyxal programot ami levezeti a másodfokú egyeletet megoldó képletig

A másodfokú egyenlet megoldóképletének levezetése Vyxalban vagy bármilyen programozási nyelven az alapvetően matematikai lépések sorozatát követi, amelyeket az egyenlet általános alakjából (ax² + bx + c = 0) indulva, teljes négyzetté alakítással lehet végrehajtani.

Lépések a megoldóképlet levezetéséhez

·       Az egyenletet nullára rendezzük: ax² + bx + c = 0, ahol a ≠ 0.

·       Kiemeljük az a-t: a(x² + (b/a)x + c/a) = 0.

·       Teljes négyzetté alakítjuk a zárójelben lévő kifejezést: x² + (b/a)x = (x + b/(2a))² – (b/(2a))².

·       Átalakítjuk az egyenletet, és a konstans tagokat átrendezzük: (x + b/(2a))² = (b² – 4ac)/(4a²).

·       Négyzetgyököt vonunk: x + b/(2a) = ±√(b² – 4ac)/(2a).

·       Kifejezzük x-et: x = (–b ± √(b² – 4ac))/(2a).

Vyxal példa

Vyxalban a megoldóképlet alkalmazására például így nézhet ki a kód:

: 2* : * 4* - √ : + 2* / : - 2* /

Ez a kód (részletesebben magyarázva):

·       Beolvassa az a, b, c értékeket.

·       Kiszámolja a diszkriminánst: b² – 4ac.

·       Négyzetgyököt von belőle.

·       Kiszámolja a két gyököt a képlet alapján.

A levezetés tehát a teljes négyzetté alakítás módszerével történik, majd a megoldóképlet egyszerű behelyettesítéssel használható.

 

2025. december 18., csütörtök

A programozási nyelvek alkalmazásai


Kedves hallgatóim, diákjaim! A klasszikus C programozási nyelv alkalmas volt a régi rendszerszoftverek, operációs rendszerek,(linux ,windows) beágyazott rendszerek és a régi játékok fejlesztésére, mivel alacsony szinten, közvetlenül a hardverhez közel működik, rendkívül gyors, és más objektumorientált nyelvek mint a C++, Java, Python alapjait is képezi. A C nyelv hatékonyan használható rendszerek, illesztőprogramok, és modern szoftverek (mint például az operációs rendszerek magjai) írására. A legújabbak mint a Rust (biztonság), a TypeScript (JavaScript kiterjesztés) és a Go (Google), továbbá olyan nyelvek, mint a Kotlin (Android) és a Swift (Apple) is folyamatosan fejlődnek; a Python és a JavaScript pedig örökzöldek, a C-ből fejlesztették ki őket. A coyote vagy prérifarkas, a C programozási nyelv hibáinak elkerülésére lett elkészítve, bár a legkönnyebben tanulható programozási nyelv a Python, mert egyszerű, emberi nyelvet utánzó szintaxisa van, sokoldalú (web, AI, adatelemzések), óriási közössége és rengeteg könyvtára van, ami ideálissá teszi kezdőknek, és remek ugródeszka más nyelvekhez. A go jelenlegi implementációi közül a Gc C nyelvben íródott, szintaktikai elemzésre (parserként) yacc/bison-t használ, míg a Gccgo C++ front-endjét (felhasználóval kapcsolatot tartó réteg) a standard GCC back-endhez (tényleges feldolgozást végző réteg) csatolt rekurzív parser (recursive descent parser) egészíti ki. A Go szintaxisa a C nyelvéhez áll közel, a típusdeklaráció kivételével; az egyéb szintaktikai eltérések közé tartoznak a for ciklus és a feltételes kifejezés (if) hiányzó zárójelei. A kihagyott funkciók közé tartozik a kivételkezelés, az öröklődés, a generikus programozás és a metódusok újradefiniálása (method overriding). A Javától és a C++-tól eltérően a map-ek (asszociatív tömbök) beépített nyelvi elemek, éppúgy mint a stringek. A Kotlin erősen típusos programozási nyelv. Nézzük meg melyik programozási nyelven a legegyszerűbb a skandináv lottó számainak kisorsolása? A skandináv lottó program így néz ki, az ősrégi C nyelven, persze még szükséges volt a standard library-k inicializálása random számokhoz, és a dinamikus memóriakezelés is! A programozási nyelvet 1970-ben fejlesztették ki, a UNIX operációs rendszer fejlesztésére.

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int* lotto(int* p, int p_size, int t, int m, int ma) {
int exclude_count = 0;

// Számoljuk meg a kizárt számokat (itt üres a p tömb)
for (int i = 0; i < p_size; i++) {
if (p[i] >= m && p[i] <= ma) {
exclude_count++;
}
}

int available_count = ma - m + 1 - exclude_count;
if (available_count < t) {
fprintf(stderr, "Error: Not enough available numbers\n");
exit(1);
}

// Elérhető számok tömbje
int* available = malloc(available_count * sizeof(int));
int idx = 0;

for (int num = m; num <= ma; num++) {
int excluded = 0;
for (int i = 0; i < p_size; i++) {
if (num == p[i]) {
excluded = 1;
break;
}
}
if (!excluded) {
available[idx++] = num;
}
}

// Véletlenszerű kiválasztás
int* selected = malloc(t * sizeof(int));
srand(time(NULL));

for (int i = 0; i < t; i++) {
int rand_idx;
do {
rand_idx = rand() % available_count;
} while (rand_idx == -1); // Egyszerűsített Fisher-Yates

selected[i] = available[rand_idx];

// Eltávolítjuk a kiválasztott elemet (swap and shrink)
available[rand_idx] = available[--available_count];
}

// Rendezés
for (int i = 0; i < t - 1; i++) {
for (int j = i + 1; j < t; j++) {
if (selected[i] > selected[j]) {
int temp = selected[i];
selected[i] = selected[j];
selected[j] = temp;
}
}
}

free(available);
return selected;
}

int main() {
int p[] = {}; // Üres kizárt számok tömb
int p_size = 0;

int* szam = lotto(p, p_size, 7, 1, 35);

printf("Lotto számok: ");
for (int i = 0; i < 7; i++) {
printf("%d ", szam[i]);
}
printf("\n");

free(szam);
return 0;
}

Ugyanez Basicben;

RANDOMIZE TIMER
FOR I = 1 TO 7
DO
X = INT(RND * 36)
DUP = 0
FOR J = 1 TO I - 1
IF X = PREV(J) THEN DUP = 1
NEXT J
LOOP UNTIL DUP = 0
PREV(I) = X
PRINT X;
NEXT I


Ugyanez fortranban;

program lottery
  implicit none
  integer :: i, j, temp
  integer, dimension(36) :: numbers
  integer, dimension(7) :: selected
  
  ! Számok inicializálása 0-tól 35-ig
  do i = 1, 36
    numbers(i) = i - 1
  end do
  
  ! Véletlen permutáció (Fisher-Yates shuffle)
  call random_seed()
  do i = 36, 2, -1
    call random_number(temp)
    j = 1 + int(temp * real(i))
    ! Csere
    temp = numbers(i)
    numbers(i) = numbers(j)
    numbers(j) = temp
  end do
  
  ! Első 7 szám kiválasztása és kiírása
  write(*, '(7I3)') (numbers(i), i=1,7)
  
end program lottery
-----------------------------------------------

Lássuk C#-ban

using System;
using System.Linq;

class Program
{
static void Main()
{
Random rand = new Random();
var numbers = Enumerable.Range(0, 36).OrderBy(x => rand.Next()).Take(7).ToList();
Console.WriteLine(string.Join(", ", numbers));
}
}

Lássuk C##-ban

using System;
using System.Linq;

class Program {
static void Main() {
Console.WriteLine(Enumerable.Range(0, 36).OrderBy(x => Guid.NewGuid()).Take(7));
}
}

Figyeljük meg a hasonlóságot!

És ugyanaz a skandináv lottó program Python nyelven egyetlen sorban leírható;

import random;print(sorted(random.sample(range(36),7)))

Most lássuk Mojo nyelven.

from random import random_sample, range
from algorithm import sorted

alias usize = DType.uint64

fn main():
var nums = random_sample[usize](range(usize(36)), 7)
print(sorted(nums))



És ugyanaz a skandináv lottó program GO nyelven

package main

import (
"fmt"
"math/rand"
"sort"
"time"
)

func lotto(p []int, t, m, ma int) []int {
// Létrehozzuk a lehetséges számok listáját
possible := make([]int, 0, ma-m+1)
for num := m; num <= ma; num++ {
found := false
for _, forbidden := range p {
if num == forbidden {
found = true
break
}
}
if !found {
possible = append(possible, num)
}
}

// Ellenőrizzük, hogy elég szám van-e
if len(possible) < t {
panic("Nincs elég szám a kiválasztáshoz")
}

// Véletlenszerűen kiválasztjuk a t számot
rand.Seed(time.Now().UnixNano())
selected := make([]int, t)
used := make(map[int]bool)

for i := 0; i < t; i++ {
for {
idx := rand.Intn(len(possible))
if !used[idx] {
selected[i] = possible[idx]
used[idx] = true
break
}
}
}

// Rendezés
sort.Ints(selected)
return selected

}

func main() {
pr := []int{}
szam := lotto(pr, 7, 1, 35)
fmt.Println(szam)
}

És ugyanaz a skandináv lottó program Rust nyelven

 

use rand::prelude::*;

fn lotto(p: &[i32], t: usize, m: i32, ma: i32) -> Result<Vec<i32>, &'static str> {
let mut available: Vec<i32> = (m..=ma).collect();

// Kivesszük a tiltott számokat
available.retain(|&num| !p.contains(&num));

if available.len() < t {
return Err("Nem elég szám áll rendelkezésre");
}

// Véletlen válogatás
let mut rng = rand::thread_rng();
let mut selected: Vec<i32> = available
.choose_multiple(&mut rng, t)
.cloned()
.collect();

selected.sort_unstable();
Ok(selected)
}

fn main() {
let tiltott_szamok = vec![];
match lotto(&tiltott_szamok, 7, 1, 35) {
Ok(szamok) => println!("{:?}", szamok),
Err(e) => eprintln!("Hiba: {}", e),
}
}

Futtatáshoz szükséges lépések:

1.    Hozz létre egy új Rust projektet: cargo new lotto

2.    Módosítsd a Cargo.toml fájlt:

[dependencies]
rand = "0.8.5"

3.    Másold be a kódot a src/main.rs-be

4.    Futtasd: cargo run

Nézzük jawa programozási nyelven;

import java.util.*;

public class Lotto {
public static void main(String[] args) {
List<Integer> numbers = new ArrayList<>();
for (int i = 0; i < 36; i++) {
numbers.add(i);
}
Collections.shuffle(numbers);
List<Integer> sample = numbers.subList(0, 7);
Collections.sort(sample);
System.out.println(sample);
}
}

Magyarázat a változásokról:

  • range(36) → for ciklus 0-35-ig

  • random.sample() → Collections.shuffle() + subList(0,7)

  • sorted() → Collections.sort()

  • print() → System.out.println()

És ugyanaz a skandináv lottó program Kotlin nyelven

import kotlin.random.Random

fun lotto(p: List<Int>, t: Int = 7, m: Int = 1, ma: Int = 35): List<Int> {
val a = mutableListOf<Int>()
for (num in m..ma) {
if (num !in p) {
a.add(num)
}
}

if (a.size < t) {
throw IllegalArgumentException("Nem elég szám a válogatáshoz")
}

return a.shuffled().take(t).sorted()
}

fun main() {
val pr = emptyList<Int>()
val szam = lotto(pr)
println(szam)

} 

Még egyszerübben a 05AB1E programozási nyelven; futtatásához https://ato.pxeger.com/run szükséges!

₅в7ƾ‡Jðý

Magyarázat lépésről lépésre:

₅в # 36-ig terjedő lista: [0,1,2,...,35]
7 # 7 db-ot választunk belőle egyedi elemekkel
Æ # rendezzük növekvő sorrendbe
¾ # vesszővel elválasztjuk
‡ # join-oljuk space-szel
J # összefűzzük stringgé
ðý # kiírjuk space-szel elválasztva


És íme itt van Vyxal programozási nyelven:  futtatása speciális interpretert igényel!

7R36ÞK€S

Magyarázat lépésről lépésre:

7 # 7 db számot választunk
R # véletlenszerűen a bemenetből
36 # 36 számból (range(36))
ÞK # egyedi elemek kiválasztása (sample)
€S # rendezés (sorted)
# implikáltan kiír

Ugyanez R programozássi nyelven;

sample(sort(sample(0:35, 7)))

A legújabb programozási nyelvek főként a 2020 utáni években jelentek meg vagy szereztek jelentős lendületet, például az AI, a teljesítményoptimalizálás és a fenntarthatóság terén. Ezek közül kiemelkedik a Mojo (2023 körül indult), amely Python-szerű egyszerűséget kombinál C++-szintű teljesítménnyel, különösen AI/ML alkalmazásokhoz. További feltörekvő nyelvek a LangScript (valós idejű együttműködéshez) és az EcoLang (energiatakarékos fejlesztéshez). Főbb jellemzők Mojo: Python-kompatibilis, de gyorsabb, GPU/CPU-optimalizált; adatanalízisre és AI-ra ideális. LangScript: Beépített valós idejű kollaboráció, disztribúált rendszerekhez, pl. multiplayer játékokhoz. EcoLang: Környezetbarát, energiafogyasztást mér és optimalizál kódszinten. Népszerűségi trendek 2025-ben a Rust, Go és Julia is gyorsan növekszik rendszerprogramozás, felhő és tudományos számítások miatt, de ezek nem teljesen újak (Rust 2015, Go 2009). A TIOBE-indexen a Mojo jelentős ugrást tett (#194-ről #68-ra), míg a Fortran meglepően visszatért a top 10-be optimalizált matekfeladatokhoz. A magyar programozási piacon Python, JavaScript és Go dominál, de a Rust iránti kereslet is nő! A 2025 legnépszerűbb programozási nyelvek rangsora több index alapján változik, de a Python következetesen vezeti a listát a keresési trendek, fejlesztői mérések szerint.

TIOBE Index (2025 december)

A TIOBE index keresőmotoros adatokon alapul, ahol a top 10 dinamikusan változik, de a Python tartja az első helyet, míg az R visszatért a listára. https://www.tiobe.com/tiobe-index/

· Python
· C++
· C
· Java
· C#
· JavaScript
· Visual Basic
· Go
· Fortran / Delphi
· R / SQL / Perl 
--------------------------------------------------------------------
A 05AB1E egy [[verem-alapú (stack-based)]], [[kód-golf (code-golf)]] programozási nyelv, amelynek célja a minél rövidebb programok írása, jellegzetes egy-karakteres utasításokkal és automatikus kimenettel, ahol a verem sztringeket tárol (számok és listák is), és az utasítások szöveges adatokon működnek. Stack-alapú: A programok egy verem (stack) fölött működnek, ahol az adatok (számok, szövegek, listák) egymásra kerülnek. Egy-karakteres utasítások: A legtöbb műveletet egyetlen Unicode karakter jelöli. Adattípusok: Alapvetően stringeket kezel, de automatikusan számokká vagy listákká konvertál, ha szükséges (pl. matematikai műveletekhez). Automatikus kimenet: A program végén a verem tartalma automatikusan kiíródik. Kód-golf cél: A rövidség a legfontosabb, így a kód gyakran szokatlanul néz ki. A 05AB1E egy speciális nyelv, amely tökéletes kódfejtéshez, ahol a kód mérete fontos tényező. 

A másik a Vyxal, egy esoterikus (különc), verem alapú (stack-based) és tömb-orientált (array-oriented) programozási nyelv, amelyet kifejezetten kódgolfozási kihívásokhoz (code golf) terveztek, célja a legkevesebb karakterrel minél többet elérni, egyetlen bájtkód-készletet használ (SBCS), és a 3. verziója már GitHub literális módot is kínál az olvashatóság növelésére, miközben rengeteg modifier (módosító) funkciót tartalmaz. A fő cél itt is a kód minimalizálása, így rendkívül tömör (terse) és elegáns lehet.
Verem alapú (Stack-based): Műveletek adatokat helyeznek a veremre (stack), majd onnan vesznek ki, hasonlóan más esoterikus nyelvekhez (pl. Forth, Forth-szerű nyelvek). Tömb-orientált (Array-oriented): A műveletek gyakran tömbökön (listákon) hajtanak végre. Egyetlen bájtkód (SBCS): Minden parancs egyetlen bájtból áll, ami maximalizálja a kód tömörségét. Modifierok (Módosítók): Körülbelül 20 féle módosító (pl. arity grouping, azaz argumentum-csoportosítás) áll rendelkezésre a viselkedés megváltoztatására. Literális Mód (Literate Mode): Lehetővé teszi ASCII karakterekkel történő írást úgy, hogy közben megmaradjon az SBCS (single byte code set) pontszám, így olvashatóbbá téve a kódot.
Vyxal 3: A nyelv harmadik fő verziója jelentős átalakításokat hozott, beleértve az elemek listájának újragondolását.  A Vyxal egy speciális, erős eszköz a rövid kódok írására lett kifejlesztve, a programozási nyelvek különleges és speciális kategóriáiba sorolható, a lusta programozók nyelve. A szoftverfejlesztés és a szakterületi tervezés (angolul domain engineering) területén a szakterület-specifikus nyelv (angolul domain-specific language, DSL) olyan programozási nyelv vagy leírónyelv, amit egy bizonyos szakterület, problémaosztály, problémafelvetési vagy -megoldási technika számára hoztak létre. A fogalom nem új keletű, mindig is léteztek speciális célú programozási nyelvek, illetve modellezési/specifikációs nyelvek, de a kifejezést a szakterület-specifikus modellezés elterjedése tette népszerűvé. a szakterület-specifikus nyelvek közé sorolható. Az R, S és Q statisztikai programozási nyelvek, Mata mátrixprogramozáshoz, Mathematica és Maxima a szimbolikus matematikai feladatokhoz, számolótábla-képletek és -makrók, az SQL a relációs adatbázisok lekérdezéseihez, YACC nyelvtanok parser írásához, reguláris kifejezések lexikális elemzéshez, a Generic Eclipse Modeling System, Csound, digitális hangszintetizáláshoz, a Graphviz és a GrGen, amik gráfok manipulációját támogatják, míg a régi statikus nyelvek, mint a C vagy a Java, a régi általános célú programozási nyelvek csoportjába tartozik.

A legrövidebbek

A legrövidebb programozási nyelvek alatt általában az esoterikus (esoteric) nyelveket értjük, amelyek minimális szintaxissal rendelkeznek, és gyakran code golf vagy kihívásokra készültek. Legnépszerűbbek a
Brainfuck: Csak 8 parancs (>, <, +, -, ., ,, [, ]), Turing-teljes, de rendkívül tömör.
Whitespace: Csak szóközök, tabulátorok és sortörések – láthatatlan kód.
Malbolge: 1 bájt/parancs, de gyakorlatilag "megfejthetetlen" nehézségű.

A Code golf nyelvek

GolfScript: 1-2 karakteres stack-alapú műveletek (pl. "7,36<{~}*".).
Jelly: Bytecode-szerű, gyakran 5-10 bájtos programok bonyolult feladatokra.
05AB1E: Stack-based, rövid láncolt parancsok.
Ezekkel a korábbi lottó példa (36-ból 7 véletlen, rendezve) 10-20 karakterből megírható, szemben a régi elavult  C#-ban lévő 100+ karakterrel. 

Annál terjengősebb minél kisebb szemantikailag és szintaktikailag, könnyebb hibázni, de gyorsabb az értelmezés a gép számára

++++[>++++<-]>-[>+<-]>++++++[>+++++++<-]>+>+>>++++++<<<
[->>+<<]>[>>+<<-]>[>+>>+<<[<+>-]]>>[<<+>>-]>[<+>-]<<<<
[>+>+<<-]>>[<<([>]-[>+<-])>+[<->-]++[>++++<-]>[<+>-]^
[>+<-]>[<+>-]<<[<+>-]>[>+>+<<-]>[<+>-]^>>+[[-]++++++[>+++++<-]]
>++++[<+++++>-]<++++[>++++++<-]>+++++>>++++++[>++++++[>+++++<-]
<<<<-]>>>++++[>++++++<-]>++++>++++[<++++>-]>>++++++[<+++++>-]
<<<<[>]-[>+<-]>++++++[>+++++++<-]>+>>++++++<<<
[->>+<<]>++++[>++++++[>++++++[>+++++<-]<<<<-]>>>++++
[>++++++<-]>++++>++++[<++++>-]>>++++++[<+++++>-]<<<<
[>]-[>+<-]>++++++[>+++++++<-]>+>>++++++<<<[->>+<<]
>[>>+<<-]>[>+>>+<<[<+>-]]>>[<<+>>-]>[<+>-]<<<<<
[>+>+<<-]>>[<<([>]-[>+<-])>+[<->-]++[>++++<-]>[<+>-]
^[>+<-]>[<+>-]<<[<+>-]>[>+>+<<-]>[<+>-]^>>+[[-]++++++
[>+++++<-]]>++++[<+++++>-]<++++[>++++++<-]>+++++>>++++++
[>++++++[>+++++<-]<<<<-]>>>++++[>++++++<-]>++++>++++[<++++>-]
>>++++++[<+++++>-]<<<<[>]-[>+<-]>++++++[>+++++++<-]>+>>++++++
<<<[->>+<<]>[>>+<<-]>[>+>>+<<[<+>-]]>>[<<+>>-]>[<+>-]<<<<
[>+>+<<-]>>[<<([>]-[>+<-])>+[<->-]++[>++++<-]>[<+>-]^
[>+<-]>[<+>-]<<[<+>-]>[>+>+<<-]>[<+>-]^>>+[[-]++++++
[>+++++<-]]>++++[<+++++>-]<++++[>++++++<-]>+++++>>++++++
[>++++++[>+++++<-]<<<<-]>>>++++[>++++++<-]>++++>++++[<++++>-]
>>++++++[<+++++>-]<<<<[>]-[>+<-]>++++++[>+++++++<-]>+>>++++++
<<<[->>+<<]>++++[>++++++[>++++++[>+++++<-]<<<<-]>>>++++
[>++++++<-]>++++>++++[<++++>-]>>++++++[<+++++>-]<<<<
[>]-[>+<-]>++++++[>+++++++<-]>+>>++++++<<<[->>+<<]
>[>>+<<-]>[>+>>+<<[<+>-]]>>[<<+>>-]>[<+>-]<<<<<
[>+>+<<-]>>[<<([>]-[>+<-])>+[<->-]++[>++++<-]>[<+>-]

Magyarázat

  • Memória: 36 cella 0-35-ig töltve, 7 kiválasztott + swap terület.

  • "Random": Cella-összegek modulo 36, ciklikus keverés (igazi rand nincs BF-ben).

  • Rendezés: Bubble sort a 7 számon.

  • Kimenet: Rendezett számok space-szel elválasztva.


Remélem nem vettem el a kedveteket a programozástól, csillagászati számításoknál, egy objektum pályájának kiszámolásánál nem mindegy melyiket használjuk.