"Programozási tételek"
Sziasztok!
Új vagyok itt :) Most OOP-t szeretnék tanulni otthon TypeScripten részben JavaScripten. (Pár hét múlva HTML-el és CSS-el folytatni. :) )
A konkrét kérdésem ez: Magyarul rengeteg infót találok un. "Programozási tételek"-ről.
Sehogy se bírok rájönni ennek az angol megfelelőjére. Az egyes típusalgoritmusokat (Pl. szétválogatás, maximum, unio) megtalálom ugyan a Google-ben más nyelveken, de ezek sehol sincsenek mint egy csoport leírva, vagy tagelve.
Más módokon se találtam a gugliban.
Nem létezik, hogy ez egy magyar találmány lenne!
Van ennek ("Programozási tételek") valami angol neve?
Előre is köszi a választ :)
■ Új vagyok itt :) Most OOP-t szeretnék tanulni otthon TypeScripten részben JavaScripten. (Pár hét múlva HTML-el és CSS-el folytatni. :) )
A konkrét kérdésem ez: Magyarul rengeteg infót találok un. "Programozási tételek"-ről.
Sehogy se bírok rájönni ennek az angol megfelelőjére. Az egyes típusalgoritmusokat (Pl. szétválogatás, maximum, unio) megtalálom ugyan a Google-ben más nyelveken, de ezek sehol sincsenek mint egy csoport leírva, vagy tagelve.
Más módokon se találtam a gugliban.
Nem létezik, hogy ez egy magyar találmány lenne!
Van ennek ("Programozási tételek") valami angol neve?
Előre is köszi a választ :)
Érdekes kérdés :)
Szlávi Péter, Zsakó László: Módszeres programozás: Programozási tételek (Mikrológia 19). ELTE TTK, 2002
Egyébként így önmagában se nem módszertan, se nem "találmány", valószínű ezért nem találod.
Legalábbis én még nem találkoztam vele, pedig elég sokat olvasok.
Köszi + és további kérdés :)
Köszi a választ és tanácsokat!
Igen, ezt a könyvet én is megtaláltam. :) És valóban az internetes bejegyzések majdnem mind erre a könyvre hivatkoznak.
Viszont találtam hozzá egy Youtube-csatornát is, ami viszont nem hivatkozik a könyvre.
Íme: https://www.youtube.com/playlist?list=PLyriihBWoulw06D-xIpt-OX_MGmU1nI25 .
Itt úgy beszél a kommentátor, mintha ez így, "programozási tételek", egy paradigma lenne, amiről mindenkinek tudnia kell.
Nyilván ez is nézőpont kérdése, mint sok egyéb dolog.
Pepita, azt mondod hogy inkább a HTML5-el és CCS-el kezdjek foglalkozni és utána JavaScript.
Köszi!
Mit gondolsz, ha picit hosszabb távra tervezek és idővel a DOM-mal, Redux / Angular.js / React-al is szeretnék jobban megismerkedni, nem is beszélve arról, hogy programozzak, nem érdemes mégis egy ideig Typescripttel és Javascripttel foglalkozni?
Tehát felülnék pelenkában egy triciklire.
Bár nem engem kérdeztél,
Ha OOP-t tanulnál, arra valami "tisztességes" OOP nyelvet javasolnék, de hogy konkrétan melyiket, abba nem szólnék bele.
Én python-ruby vonalon indulnék, de ezek nem tisztán objektum orientált nyelvek (pythonból konkrétan hiányoznak olyan nyelvi elemek mint az interface vagy a valódi absztrakt osztályok stb. - azt hiszem, ez a ruby-ra is igaz)
Java-ban megvan mindez, de finoman szólva nem egy egyszerű nyelv. Mással meg nem volt dolgom. :)
OO-t Java-ból lehet a
Javanak az a baja, hogy bár
Ugye egy sima open, write, close is valami hihetetlen mennyiségű gépelést igényel, nem beszélve a beépített "keretrendszerek" megismeréséről, amik nélkül gyakorlatilag halott vagy javaban.
Ennek semmi köze a Javahoz.
Keretrendszer meg minden nyelven kell, ha hatékonyan akarsz dolgozni. Bár ez feladatfüggő, mi pl semmilyen keretrendszert nem használunk, csak core Java van. Igaz nem is üzleti alkalmazást fejlesztünk.
Ami tény, hogy a java, mint nyelv ereje a kicsit nagyobb projekteken jön talán inkább ki. Pár soros scriptek helyett nem érdemes hozzányúlni se.
Viszont OOP tanulásra tökjó nyelv.
A keretrendszert nem
Hogy hülyeség vagy sem, azt nem tudom eldönteni, de én azért dobtam a javat, mert IDE ide, IDE oda, azért csak meg kellett volna jegyezni kilométer hosszú import parancsokat, n+1 osztálynevet még a legegyszerűbb feladathoz is, úgyhogy elég hamar elment tőle a kedvem. Majd ha megint ilyen perverzióm támad, akkor előveszem a C++-t ;))
Az már csak hab a tortán, amit az oracle művel újabban a java körül, pl., hogy már csak a legújabb verzió ingyenes, ha egy évnél régebbi verziót akarsz használni és szükséged van update-ekre, akkor fizess... :(
ui: azt a "nem üzleti"-t hogy értsem? Hobbi projekt?
Jó, a Swinggel embert lehet
Az viszont határozottan nem igaz, hogy csak a legújabb Java lenne ingyenes. Van ingyenes Java továbbra is. Annyi történt csak, hogy az Oracle a saját termékét (Oracle JDK és JRE) tette fizetőssé, és azon belül supportálja az LTS verziókat előfizetés alapján. Aki nem fizet elő, annak ott az OpenJDK (az Oracle is teljes egészében erre épül, azzal kódszinten gyakorlatilag azonos). Az OpenJDK-t is frissítik, csak ott a community, illetve pár cég adja az update-eket, akiktől akár supportot is lehet venni szintén, mint ahogy az Oracle-től is. Tehát már az OpenJDK "A Java", az Oracle JDK pedig egy fizetős termék. Amit az Oracle lépett, az alapvetően jó dolog. Eddig fizetős megoldásokat nyit meg, és átállította a nyelvet egy gyorsabban fejlődő pályára. Csak sajnos ez nagyon félre lett kommunikálva, illetve nagyon sok újság, blog tömte tele hülyeséggel az internetet. A héten a prog.hu-n volt erről közelharc, mert ott is erősen félreérthető 1-2 erről szóló cikk/mondat. De hát Stinget bármiről meggyőzni... :D
Úgy nem üzleti, hogy teljesen technikai project. Sima, core javat használunk, gyakorlatilag szinte teljesen függőségek nélkül (1 jar az egész). Libet készítünk fejlesztőknek, amit ők felhasználnak. Van open-source és enterprise verzió is.
Meg van persze hobbi projectem is, az is teljesen core java.
Látszik, hogy a vim nem IDE,
De ettől függetlenül, szerintem azért illene megtanulni ezeket a kilométeres sorokat akkor is, ha egyébként leírni nem kell őket, mert a legtöbb IDE pótolja őket.
Azt a fizetős/nemfizetős részt egyre kevésbé értem.
Amikor kitört az a pici botrány, akkor valami olyan hangzott el, hogy az új feature-ök az Oracle tulajdona, ők meg csak egy éven át supportálják az egyes verziókat.
Ha jól értem, mégsincs így?
Szerintem olyan dolgokkal
Amit az Oracle mostantól csinál, hogy a saját fejlesztéseit az OpenJDK brancheken csak a masterig viszi el, backportolni csak az Oracle JDK-ba backportolja őket, ahol ezért fizetnek neki. Így mivel a korábbiakkal ellentétben nem támogatnak ősrégi Java verziókat, erőforrásuk szabadul fel, amit a nyelv fejlesztésére tudnak összpontosítani. És nem utolsó sorban ez remélhetőleg a cégekre is jó hatással lesz, és elkezdik emelni a Java verziókat. Mi a saját termékünkben még mindig kénytelenek vagyunk Java6-ot használni, mert ügyfeleink lógnak még mindig azon a verzión. A Java6 13 éve jött ki, és még ma is supportált (bár már csak fizetés ellenében). A leggyakoribb verzió pedig a Java8, ami 5 éves verzió, és most szűnt meg épp a támogatása. Remélhetőleg ez megszakad hamarosan, mert jelenleg pont az a gátja a nyelv fejlődésének, hogy a "végtelen" ingyenes supporttal a rendszerek be lettek betonozva a régi verziókba. Ezért az olyan library készítők, mint mi is, nem, vagy csak bizonyos ügyfelek kizárásával tudnak új verzióra lépni. Ez pedig nem egy jó dolog :)
Az ember azt hinné, hogy csak
OOP Typescriptben vagy Javascriptben.
Egyelőre a front-end a cél, de szeretnék még pár hét időt adni magamnak arra, hogy mit tanuljak utána. Jó lenne olyannal kezdeni, amiről le lehet ágazni, de hasznos is.
De ha ez nem megoldható, hát nem.
Vagy több idő kell.
Pontosan
Bár a többi hozzászólást olvasva kicsit elbizonytalanodtam, hogy mi is az az irány, amit fel szeretnél venni.
A. Webes fejlesztés (erre tippeltem), ezen belül OOP.
B. Csak OOP, más nem érdekel.
Ha "B", akkor én is inkább Java irányba mutatnék, bár meg kell mondanom, számomra sosem volt szimpi nyelv, lehet, hogy azért is, mert pár sokkal régebbi nyelvet is ismerek, és nem tudtam azonosulni a szemléletével.
A lényeg, hogy az OOP egy sokkal tágabb / összetettebb "dolog", mint "csak úgy programozni", és ha az is fontos szempont, hogy valami meg is jelenjen a weboldalon, akkor mindenképp egy későbbi törekvés legyen megismerkedni / kipróbálni a paradigmát.
- DOM: ha HTML-lel kezdesz foglalkozni, akkor megismerkedsz a DOM-mal. Ezért is javaslom előre venni, mert a frontend alapja a DOM. (HTML nyelven írod le, hogy mi legyen a DOM-ban.)
- CSS: ahhoz, hogy a HTML-lel kirakott DOM struktúrád szépen jelenjen meg és többféle megjelenítőn is úgy nézzen ki, ahogyan Te szeretnéd, ahhoz szükséges némi stílust hozzáadni. Ahhoz, hogy jó szelektorokat tudj írni a css-ben, ismerned kell a DOM-ot.
- Javascript (js): előbbi kettő még nem igazán "programozás", noha forráskódot írsz, de ezek leíró nyelvek, a HTML + CSS még csak leírja, hogy mi és hogyan jelenjen meg, de (pár animációt leszámítva) még "nem csinál semmit", ezért nem szoktuk programozásnak hívni. Ha viszont már szeretnél olyat, hogy (csak egyszerűen) amikor rá klikkel a látogató egy gombra, akkor írjuk ki neki, hogy "Hello World", nos akkor már szükséged van valamilyen programnyelvre, amiben egy eseményhez (klikk) hozzá tudsz rendelni valami művelet végrehajtását (kiírás). Erre kiválóan alkalmas a böngészőkben futtatható js.
- Angular.js: egy igen fejlett Javascript keretrendszer, akkor érdemes elkezdeni megismerkedni vele, amikor már egyszerű js-ből rutinos vagy.
- Redux / React: ez - tudomásom szerint - a legújabb, szintén js framework, érdemes együtt említeni webpack-kel. Nem láttam még olyan alkalmazást, ahol együtt használnák angular-ral, sőt, a frontend fejlesztők is inkább vagy egyiket, vagy másikat használják, sokszor egész cég is csak az egyiket. Tekintve, hogy mindkettő (React vs Angular) sok időráfordítást igényel, mire profi szinten beletanulsz, érdemes inkább csak az egyiket választani (hogy melyiket, arról frontendeseket kérdezz).
Fentiek alapján úgy gondolom, hogy inkább a frontend érdekel, így az "A" irány a jobb. Elképzelhető, hogy számodra "eléggé OOP" lesz pl a React is, de akkor is fontos, hogy a megfelelő sorrendben tanuld meg / próbáld ki a dolgokat, hogy legyen mire támaszkodnia a megszerzett tudásnak.
SZERK.: simán lehet pelenkában triciklizni, csak ezt a járdán kezdd el, ne az autópályán. :)
OO & Front-end
Haha! Igen, köszönöm a jótanácsot! :D ... ahogy a HTML / DOM / CSS , illetve a keretrendszerek összefüggéseire vonatkozó választ is!
A tanulási-tervet illetően a front-end lenne most a célkitűzés, nagyon kicsi megszorítással:
Igen, teljesen kezdő vagyok. ( Végignéztem és beírtam egy sandboxba a fent belinkelt programozási tételek csatornát, ennyi.)
A OO azért jött szóba, mert felmentem az egyik programozásoktatást hirdető tanfolyam honlapjára, úgy gondoltam, hogy az itt található tanmenet az én fokozatomon eligazít azt illetően, hogy hogyan lássak neki az autodidakta tanulásnak.
Ezen a tanfolyamon az első modulban OO-t tanítanak vagy Javában vagy C#-ban vagy pedig Javascriptben/Typescriptben.
A tanfolyamon a további két modul során két alkalommal lehet "szakirányra" specializálódni ( Alapozó modul / orientációs modul / projekt-modul), a front-end itt az egyik végső specializáció (" OOP "- "Full Stack" - "Front end" az elnevezésük, úgy sejtem, némi fellengzősséggel.) Mint a honlap is írja, a front end-hez a JavaScriptTipeScript OPP modul a legjobb kezdésnek.
"JavaScriptben az objektumorientáltság sok szempontból másképp működik, mint más klasszikus objektumorientált nyelvnél (Java, C#), ezért az objektumorientált programozás alapjait TypeScripten keresztül mutatjuk be ."
( Forrás: https://www.greenfoxacademy.com/junior-programozo-kepzes#tematika )
Ez alapján, a sejtésem szerint a cégek változékony humánerőforrás igényei, tanítás-módszertani és egyéb feltételek mentén optimalizált tanmenetnek az elolvasása és pár távoli ismerősnek feltett kérdés alapján jutottam el oda, hogy TypeScript-ben és Javascriptben szeretnék egy kicsit a OO-val is ismerkedni.
És ezt azért is érzem közel magamhoz, mert így adott esetben még tudok váltani az autódidakta képzésen belül más irányba - persze ezt is csak nagyjából a zöldfülű tanmenet alapján mondom. Persze lehet, hogy ez így marhaság.
Ezt kifejtenéd kérlek, hogy miként érted? :) Az mondod a Reactot tanulva / használva idővel megismerkedem alap - vagy nagyon alap - fogalmakkal, módszerekkel az OPP-t illetően?
És mit gondolsz / gondoltok, vajon mik lehetnek és meddig terjedhetnek azok az OO-alapok, amit a fent ismertetett tanmenetben négy hét alatt Java- & Typescriptben megtanítanak?
sorrend
Azért azt fontos tudni, hogy bármilyen divatszó is lett belőle, nem az OOP a minden. Sajnos egyre több junior fejlesztővel találkozom, akik azt hiszik, ha már van egy class a kódjukban, akkor ők már húdejó OOP fejlesztők... És itt jegyezném meg, hogy a junior fejlesztő már dolgozik, pénzt kap érte, nem tanuló (mondjuk jó fejlesztő holtig tanul, de az másik kérdés).
Typescript: én nem biztos, hogy töltenék vele időt, ha FE a cél. Meg van az az előnye, hogy típusosabb, mint a Javascript, viszont közvetlenül nem futtatható böngészőben.
"eléggé OOP" lesz pl a React is
Ez azért elég nehéz kérdés, mert erősen megoszlanak a vélemények arról, hogy egyáltalán mikortól beszélhetünk OOP-ről.
A magam részéről én mindig találok "nem igazán OOP" tulajdonságokat "jó OOP" - nek titulált kódban is, ha az PHP vagy JS. Emellett nem véletlenül írtam, hogy divatszó, sajnos nagyon sokan beszélnek róla, akik azt se tudják, eszik-e vagy isszák.
Ne ess ebbe a hibába, és azt se hidd el senkinek, hogy OOP nélkül nem élet az élet.
Mindenki megtalálja (idővel), hogy ő hogy viszonyul egyes paradigmákhoz, és ami nincs fixen deklarálva, annak számára hol vannak a határai.
Tulajdonképpen programozni se kell ahhoz, hogy némi objektumorientáltsággal találkozzunk, ott a DOM fa például. A html gyermeke a body, ami látható a böngészőben, ennek gyermeke pl egy bekezdés (p), ami örökli a szülei egyes tulajdonságait. Tehát vannak objektumok és van közöttük kapcsolat, öröklődés.
Ugyanakkor nem mondanám, hogy OOP fejlesztő az, aki képes valid html-t írni némi CSS-sel szebbé téve. De ugyanolyan fontos, hogy helyesen lásd át a DOM - ban az összefüggéseket, ehhez is jó rendszerszemlélet kell, nem csak a programozáshoz. Én ezért ajánlom (főleg FE felé igyekvőknek) elsőként a html / css tanulását.
Visszatérve a React-hoz: itt is nagyon jó rendszerszemlélet kell, hogy meddig tartsanak az egyes komponensek határai, mikortól érdemes másikat származtatni belőle vagy példányosítani, vannak class-ok is, tehát ha úgy nézem (és "fellengzős" vagyok), akkor OOP. Ha a saját értékrendem szerint nézem, akkor csak "látható benne némi objektumorientáltság".
Azért írtam, hogy számodra valószínű elég lesz, mert betippeltem a FE irányt, és FE-n nagyobb objektumorientáltság jelenleg nemigen érhető el.
A fontos az, hogy a szemléleted legyen objektumorientált is, de nem kizárólag az, mert vannak esetek, amikor pont más kell, és ezeket fel is kell ismerni.
Szerintem már sokat beszéltünk arról, hogy mit és hogyan érdemes, most már el kéne kezdeni csinálni is valamit. :)
Szerintem csinálj egy GitHub accountot és keress valami ingyenes webtárhelyet, aztán adunk feladatot, "házit", ha szeretnéd. :)
feladat :) Köszönöm
Igen, csináltam webtárhelyet. Köszi a tippet!
Pl. szeretnék csütörtök estére egy nyilvános webhelyen játszható, internetről lementett képekből összerakott memóriajátékot írni. A játékos egymás után két négyzetre kattint rá, amik "megmutatják magukat". Utána mindkettő becsukódik. Ha viszont a két négyzetben ugyanaz a kép található, akkor az már nem csukódik be. Ha mindegyik négyzet "nyitva van" - véget ér a játék. Esetleg hozzá lehet tenni, hogy ha két egymáshoz tartozó kép láthatóvá vált a keresgélés során és a játékos kétszer is eltéveszti felnyitni a képpárt, akkor a már kinyílt négyzetekből is becsukódik egy-kettő. Mondjuk ez marha motiváló - haha.
Pepita, tudnál nekem adni egy olyan feladatot, ami az első lépés lehet ahhoz, hogy ezt a játékot kb. csütörtök estére megírjam?
Köszönöm. :)
Túlzás
GitHub account is van?
Ez azért kellene, mert ott
- meg tudod osztani a forráskódot könnyen
- fel lehet venni issue-kat, hogy lépésről lépésre haladj.
Bocsi, de a "házi feladatokat" én nem itteni kommentben gondoltam, mondjuk az is megoldható, de a GitHubon sokkal könnyebb lenne, és egyúttal megtanulnád azt is használni.
Amit kitaláltál, az nem rossz, de elsőre mondjuk azt az oldalt kéne megcsinálni (és szépen), amelyik leírja a játékszabályt, és hogy mire is számítson a kedves felhasználó.
Ez 1 db html file és hozzá 1 db css (hogy szép legyen).
Legyen rajta egy gomb is (játék indítása), ami még nem csinál semmit.
Ha ezt sikerül 2 nap alatt jól és szépen összehozni, akkor az már igen jó eredmény.
A sok képet csak kirakni, de egyúttal le is takarni már bonyolultabb lesz - és még nem is kattintottunk sehova. :)
Szóval először is GitHub acc, új repository, ha ott vmit nem értesz, jelezd.
Te gépeden egy szerkesztő (pl Notepad++), és git kliens.
A webtárhelyre majd akkor tesszük ki, ha van is mit kitenni. ;)
(A játék végén ne akarjunk statisztikát, ilyesmit, ahhoz BE kéne, mi meg most csak FE-ezünk.)
A végével vitatkoznék,
Statisztika simán megoldható kliens oldalon is.
Csak cookie-t vagy local storage-t kell használni a javascript-ből.
Szerintem.
Stat
Ne bonyolítsuk egyelőre sütivel se, 0-ról indulunk.
Olyanra gondoltam, hogy
Ha két játékos között nem
Nem tudom van-e ennek bármi
Ha suliba kell, akkor jó a magyar forrás. Ha nem, akkor meg szerintem felesleges. Ha nem vagy totál kezdő. Ha totál kezdő vagy, akkor meg goto 1 :)
önképzés / tanfolyam / iskola
Teljesen kezdő vagyok. :) A "programozási tételeket" pötyögtem be egy sandboxba. Ennyi.
Ami az iskolát illeti, igen, erről van szó, csak az első egy-két hónapban egyedül szeretnék belevágni a tanulásba - elkerülve az egyes tanfolyamok apróbetűs részei által okozható kellemetlenségeket.
Magyarul nem egy angliai iskolában szerettem volna ebből kiselőadást tartani :)
Egyáltalán min mérhető le, hogy valaki "totál kezdő"-e vagy csak szimplán "kezdő"?