Miért várja a szerző, hogy tíz évvel később a szoftverek komplexitása ugyanakkora legyen, miközben a követelmények komplexitása nő? Mi köze a szoftver komplexitásának a fejlesztői környezet komplexitásához? Mi akadályozza meg a szerzőt, hogy egy egyszerű szövegszerkesztőben és parancssoros fordítóval fejlessze a Windows 8 alkalmazásait?
Már megint hogy jön ide az OOP? Hogyan lehet gyorsan és egyszerűen nagyteljesítményű és alacsonyszintű kódot írni? Miért nem lehet OOP kódot pendrive-ra másolni?
Hogyan kapcsolódik a szoftverek komplexitásához az, hogy keletkezik-e natív kód? Miért kéne, hogy egy laikus tudja olvasni a kódot? Miért nem tud angolul a szerző?
Bevallom, kezdem elveszteni a fonalat, ahogy a szoftverfejlesztés legalapvetőbb tapasztalatainak és önmagának is egyre-másra ellentmond.
Már csak egy kérdés kínoz: most akkor mindent át kell-e írni BASIC-re, vagy csak azt, amit nem akarok pendrive-ra menteni?
Miért várja a szerző, hogy tíz évvel később a szoftverek komplexitása ugyanakkora legyen, miközben a követelmények komplexitása nő?
Miért nő a követelmények komplexitása? Milyen követelmények komplexitása nő? A mai világban, ahol a szoftverek és a weboldalak/webes alkalmazások felülete a primitívség határait súrolva egyszerűsödött, kinek van szüksége komplex szoftverekre? Jobban értenek az emberek a számítógépekhez, mint tíz éve? Ha nem, miért van szükségük komplexitásra? Kinek van szüksége a komplexitásra?
Mi köze a szoftver komplexitásának a fejlesztői környezet komplexitásához?
Próbálj meg egy modernnek nevezett programot, ami ezer fájlból áll (nagyjából metódusonként egy), egy szimpla szövegszerkesztőben módosítani!
Már megint hogy jön ide az OOP?
Most kivételesen ő keverte bele, és nem találtam más írást a témában. Emiatt küldtem be még a Toyotásat.
Hogyan lehet gyorsan és egyszerűen nagyteljesítményű és alacsonyszintű kódot írni?
Például úgy, hogy a legalacsonyabb szintű eszközöket használod, PHP-ban tömbök, karakterláncok és számok, valamint függvények. Így a kódod egyszerű lesz és gyors.
Próbálj meg egy modernnek nevezett programot, ami ezer fájlból áll (nagyjából metódusonként egy), egy szimpla szövegszerkesztőben módosítani!
Nem szempont egy komolyabb fejlesztésnél, hogy a forrást notepaddel is kényelmesen tudd módosítani. Nem is értem, miért kéne, hogy az legyen, komolyan, értetlenül állok. Ha valaki jobb, fejlettebb, modernebb eszközöket használ (ld. traktor), teljesen máshová tolódik a hangsúly.
Nincs. De mivel rendelkezésre áll IDE, és alaposan megkönnyíti a munkát, ezért használni fogjuk. Mivel használjuk, többé már nem szempont olyasmi, ami korábban az volt (pl. fájlok mennyisége - who cares?). Áttolódik a hangsúly, mint írtam.
Egyszerűen nem látok indokot, hogy miért NE használnánk modern, komoly IDE-t.
Tehát ha egy komoly IDE használata megkönnyíti a munkát, az azt jelenti, hogy a szoftverfejlesztés túl komplex-szé vált, és egy modern szoftvert egy egyszerű szövegszerkesztőben nem is lehet hatékonyan elkészíteni.
Megint csak nem értelek. A láncfűrész megjelenése azt jelenti, hogy fűrésszel már nem is lehet fát vágni? Dehogynem. De miért szenvednél a szövegszerkesztőben, ha van IDE? A programozók a legenda szerint intelligens, gondolkodó emberek.
Miért ne válnának komplexebbé a szoftverek? A hardver fejlődése alaposan odébb rakja a korlátokat, a bottleneckek helyét. Ha a memória olcsó és van belőle egy rakás, akkor korábbi vesszőparipádat felidézve a kliens nem azért fog fizetni kemény pénzeket, hogy minél optimalizáltabb legyen a memóriafogyasztás. Új funkciókat fog kérni és gyorsan, persze lehetőleg működjenek is.
Egy komplex szoftvert nehezebb létrehozni, mint egy egyszerűt, nehezebb karbantartani, mert a belépési küszöb a megértéséhez magasabb. Egy komplex szoftver emiatt eleve több hibát fog tartalmazni. Mire jó ez az egész?
Ez egy remek érv!!! És eddig átsiklottam felette... Már baromira bánom is, hogy vettem egy autót. Gyalog járni pedig sokkal egyszerűbb! Nem kell ugye benzin, csomót spórolok. Egy autónál számtalan dolog meghibásodhat! Nem is sorolom. Gyalog ráadásul biztosan nem gázolok el senkit, és karambolozni sem fogok. Belépési küszöb? Vicc, hogy a jogsival baszakodtam, váltó, irányjelző, elsőbbségi szabályok, közlekedési táblák! Dehogy. Ha zöld van, sétálok, ha piros van, megállok. Ennyire egyszerű!
Ha előbb felnyitod a szemem, egy csomót spórolhattam volna!
Nagyon jó dolog az autó, de azzal még mindig kevesen foglalkoznak, hogy mekkora rombolást visz végbe a környezetben a rengeteg kipufogógáz. Majd az unokáink megoldják, minket nem érdekel a dolog, csak gyorsan érjünk oda, ahova szeretnénk, ugye?
Az ember azt tartja magáról, hogy intelligens, de még ezeket az összefüggéseket sem látja át. Nálunk még egy véletlenszerűen kiválasztott állatnak is több esze van, hisz azok nem teszik úgy tönkre az élőhelyüket, hogy többé nem lehet ott létezni.
Elvesztettem az analógia fonalát. A kipufogógáz minek feleltethető meg? Az OOP rombolja a környezetet :)? Jobban átgondolva, legyen ez költői kérdés, mert biztos megmagyaráznád, hogy de hát több számítás, amihez több energia kell, amit meg szénerőművek állítanak elő, ami nálam a bullshit kategória.
Az ember intelligens, és át is látja mindazt, amit leírsz - de leszarja. Az ember végtelenül önző, bármit próbál is elhitetni magáról. Ha autót használ, akkor is önző célok vezérlik, ha nem használ autót, akkor is. Ennek a vonalnak semmi olyan értelme nincs, ami bármihez közelebb vinne minket.
Intelligens lény meg nem gyalogol, hanem fejleszt környezetbarát autót.
En is kezdem elveszteni a fonalat hogy te tenyleg vitatkozol gaborral vagy csak koteketsz. Az OOP es a kipufogo gaz kozoztti kapcsolat a komplex termekek mellekhatasa.
Arra meg azert ne fogadj nagy osszegekbe hogy mindenhol kornyezetbaratmodon allitjak elo az enertigat.
Igen az emberiseg borzaszto onzo, ez az allatokban is megvan csak ott nem adatott meg az a lehetoseg hogy atermeszet "fole" helyezkedjen. Speciel szerintem nekunk se, mert a bolygo megrazza magat es az emberiseg eltunik. A tevekenysegunkkel max siettetni tudjuk ezt a folyamatot.
Az utolso mondatoddal messzemenoleg egyetertek! A baj ott van hogy vagy olyan ritka az inteligens ember mit a feher hollo vagy egyszeruen inkabb a gazdasag diktal mint az eszervek.
Nem csak az energia előállítása nem környezetbarát, hanem az általunk használt eszközök is nehezen hasznosíthatók újra a komplexitásuk miatt. Erre kiváló példa a számítástechnika által igényelt integrált eszközök, amelyeknek csak a negyedét dolgozzuk fel újra, és azt is embertelen körülmények között.
Apám azt mondta, hogy majd a piac megoldja a problémát, mert ha rájönnek, hogy egyszerűbb/környezetbarátabb termékekre lesz szükség, akkor mindenki olyat fog kérni. Szerintem ez előbb-utóbb be fog következni, és aki elébe megy a dolgoknak, és már most elkezd erre figyelni, versenyelőnyben lesz.
"komoly IDE használata megkönnyíti a munkát, az azt jelenti, hogy a szoftverfejlesztés túl komplex-szé vált"
Nem. "modern szoftver" kódot példáu azért könnyebb IDE-ben irni mert a "modern" kód átért a kevés fájl több ezer sorról a sok fájl kevés kód-ra. De ettől nem vált komplex-é. Csak mássá.
Ne ferditsd, ne játszd az értetlent kérlek. Én miattad nézem egyre kevésbé a weblabort, - már meguntam hogy itt trolkodsz, és/vagy értelenkedsz.
Vagy ha annyira csoda szép kódot tudsz irni mindenféle modern kóri hülyeségek nélkül (pl OOP), akkor tetszik feltenni githubra egy fél-egy millió sorosnál nagyobb PHP project-et. (vagy keresni egyet.) De egye fene legyen csak tizezer sor.
nem 2015-ben veled erről nem állok le vitatkozni. Megtették páran (és megteszik újra és újra), de te csak trollkodsz tovább és tovább. Ha mutatsz egy olyan _nagy_ repo-t ami szerinted szép, beszélgethetünk.
Hogy még mindig értetlenkedsz, az csak rajtad múlik. Kiváló magyarázatokat kaptál eddig is, de ha a saját részedet nem vagy hajlandó belerakni, ez mind értelmetlen.
A következőt javaslom. A blogmarkjaid alapján csupa olyan írást olvasol, ami azt támasztja alá, amit te egyébként is gondolsz. Vizsgáld meg alaposabban a másik oldalt. Az "ellenfelet" csak akkor vagy képes megismerni, ha úgy gondolkodsz, mint ők. Válj egy időre az ellenféllé. Hogy mennyi idő kell, rajtad múlik (ne pár héttel számolj, minél elkötelezettebb vagy az egyik oldal mellett, annál nehezebb). Ha ezt megtennéd (bár nem fogod), utána szívesen és érdeklődve olvasnám a véleményed, függetlenül attól, mit mondasz.
Ha valami egyértelműen jó, akkor azt mindenkinek meg kéne tudnia értenie, akár különösebb gondolkodás nélkül.
Ha van választási lehetőségem, hogy igyak vizet vagy ne igyak semmit, akkor nyilvánvalóan azt fogom választani, hogy igyak, különben meghalok.
Ha van választási lehetőségem, hogy igyak kénsavat vagy igyak vizet, akkor a vizet fogom választani, mert a kénsav szétmarja az emésztőrendszeremet.
Ha valami komplex, és ennyire magyarázni kell, hogy megértsék, ott a komplexitással egyenes arányban nő az esély, hogy a magyarázó személye sem ért meg mindent.
A dolgok nem mind egyaránt feketék és fehérek. A víz és a kénsav között könnyűnek látszik a döntés. A víz és a kávé között már nem egyértelmű - a céltól függ. Víz vagy sör? Csapvíz vagy ásványvíz? Buborékos vagy anélkül?
Ha ismered a saját elméd működését, akkor gyakorlod azt, hogy rendszeresen belehelyezed magad olyan nézőpontokba, amikkel szemben ellenérzéseid vannak. Ha nem teszed, az idő múlásával arányosan fogsz beszűkülni - neked tudtommal az ellenkezője a célod.
A magyarázás lényegtelen, a megértési szándék számít. Minél erősebb, annál biztosabb, hogy gyorsan megtalálod azokat a magyarázatokat, amik segítenek. Ha az a célod, hogy valamitől távol tartsd magad, akkor azokat a magyarázatokat fogod vonzónak találni, amik a hiányosságait, hibáit taglalják.
Egy ilyen témában millióféle magyarázat áll rendelkezésre. Az anyag adott, az értelmeddel sincs probléma, tehát csak a szándék hiányozhat. A mellékelt ábra (itteni tevékenységed) sem azt jelzi, hogy a megértés lenne a célod.
Próbáld ki a módszert. Felesleges olyasmi ellen harcolni, amit nem értesz. Been there, done that.
Oké, megteszem, ha te is megteszed azt, hogy engem képzelsz ellenfélnek, és az én helyembe képzeled magad, és megérted azokat az érveket, amiket felhoztam. Ha sikerült, utána vitázunk!
Miért provokálnék én bárkit is, mit lehetne azzal elérni? Miért haragítsak magamra bárkit is? A kérdéseket, amiket felteszek, a blogmarkokat, amiket beküldök, természetesen komolyan gondolom. Te nem szoktál kérdéseket feltenni?
Ahogy a gépek gyorsabbak / IDE-k okosabbak lesznek, úgy tesznek szert népszerűségre bizonyos technikák, amik a nagyobb aszisztenciára alapoznak. Ezek általában hasznosak, jobbá, átlátatóbbá teszik a terméket (különben nem terjednének el).
PHP-s weboldalt, Javás alkalmazást is tudsz írni egyetlen fájlban, de akkor elvesztesz egy csomó lehetőséget, technikát, amit több fájl nyújt (PHPban pl autoloadig, hogy csak a szükséges osztályaid forduljanak le/fogyasszanak memóriát).
Ezen technikák arra építenek, hogy az IDE megoldja ami az IDE dolga; így erősítve a programozót.
A tobb fajlt technika viszont felveti a sok i/o muvelet es a lemezfoglalasi meretek problemajat. Sokszor futok bele (tarkapacitas szamitas, masolas, visszaallitas, kereses) olyan esetekbe amikor 1-1 nagyobb fajl sokkal hasznosabb mint a sok kicsi. Persze ha 1 fajl elveszteserol beszelunk hasznosabb 20 sor kod elvesztese es ujrairasa mint mondjuk 100 000 sore. Szoval szerintem ez se fekete feher. A webes dolgok alltalaban elmentek a sok apro fajl iranyaba, habar vannak ellenpeldak is.
Csak hogy legyen egy pelda ha megnezzed a google kereso oldalat akkor ott szepen egy script tag-be be van tomoritve az egesz js. Tehat az adatatvitel es a gyorsitotarazas szemponthabol itt mar az 1 fajl jobban ervenyesul. (gondolom a fejlesztoi reszen es sok apro fajl es a buildnel lesz 1, de ez megint mas kerdes)
Az alapvetés az, hogy a technika (infrastruktúra) fejlődik. Ez nem csak gyorsabb CPU-t jelent, de elég ramot, hogy az egész projekt cache-ben legyen (gyakorlatilag nulla lemezművelet), SSD, inkremetális backup stb stb.
Persze vannak kivételek, speckó követelmények, meg persze build folyamat is (köszönhetően ezen "modern eszközöknek").
Mivel manapság már mindenki valamilyen php gyorstárat (APC, Opcache és társaik) használ, eleve minden előfordított php bájtkód a memóriában csücsül, így nincs igazán jelentősége, hogy egy nagy fájlban vannak az osztályaid vagy ezer kicsiben. Az autoloading tehát nem különösebben erős érv a sok fájl mellett.
Szerinted akkor az egy nagy fájl a jó? Na pont az ilyenekről nincs értelme vitatkozni.
Az egy bazi nagy fájl karbantarthatatlan. Nem hiszem hogy ezzel van értelme vitatkozni. Ez elég nyomós érv a sok kicsi fájl mellett.
Pl phar fájlnál hozzá tudsz csapni egy digital signature-t, amivel akár ftp-vel is feltöltheted az új release-t, ha van egy olyan rendszered, ami nézi a signature-t, és ha nem stimmel, akkor letiltja. Így még az ftp jelszó ellopása esetén sem tudnak vírust feltenni az oldalra.
Ha csak simán összefűzték a fájlokat, akkor esetleg azért lehetett, mert nem használtak opcode cache-t, aztán így próbálták gyorsabbá tenni. Most így ennél több nem jut eszembe.
A legnagyobb modulunk négyezer soros. Ha nagyon akarnám, ketté lehetne szedni, és akkor lenne mondjuk kétszer kétezer sor, de igazából még nem tudom, mit nyernénk vele.
Én ezt így nem jelenteném ki. Más eszközök kellenek hozzá, mint amiket most használunk. Pl egyszerre több tab-en megnyitni ugyanazt a fájlt, odascrollozni a megfelelő osztályhoz, csak kódrészeket refaktorálni, csomagolni, és így tovább. Ha mindez meg lenne támogatva IDE oldalról, akkor érezhető különbség szerintem nem lenne a mostani több fájlos megoldás és az egy fájlos megoldás között. Szóval csak eszköz kérdése.
Azert nem mindegy, hogy egy par szaz soros, vagy par szazezer soros fajlt szerkesztes. Foleg, ha az egesznek el kell fernie memoriaban, mivel a mai szerkesztok mar nem ugy mukodnek, mint az [code]ed[code] vagy a [code]sed[code], hogy nincsen az egesz fajl a memoriaban. A mostani IDE-k mar par tizezer sor utan vagy visszakapcsolnak valami buta modra, vagy pedig osszeomlanak, mert elfogy a memoria.
Szerintem nyugodtan haladhadtunk volna abba az irányba is, hogy mindent tartsunk egyetlen fájlban, aztán az IDE keresse meg az osztályokat abban a fájlban, azokban meg a metódusokat, és csináljon egy szép fát az egészből, kesselje, minden. Szerintem technikailag megoldható az egész még a mostani fájlrendszerekkel is, bár annyira alacsony szintű dolgokhoz csak kevéssé értek. De cáfold meg nyugodtan, ha tudod. Valami ilyesmi egyébként létezik is, jar fájlnak hívják, de akár mondhattam volna phar-t is. Jar-nál ha jól tudom a repackaging meg van támogatva bizonyos IDE-k által, phar-nál fogalmam sincs, valszeg nem ennyire fejlett a helyzet.
Egyáltalán nem az egy nagy fájl versus sok kis fájl a kérdés itt, hanem hogy megfelelően kis egységekre fel tudod e bontani a kódot ahhoz, hogy egy-egy ilyen egység könnyen átlátható és módosítható legyen, illetve, hogy ezek között az egységek között mennyire hatékonyan tudsz böngészni, mennyire átlátható térképet készít neked az IDE. Szvsz. ilyen téren még bőven van hova fejlődni a mostani IDE-knek is, és ez a fájlrendszeres - eredendően faszerkezetes és nem gráf - felosztás most már inkább csak akadálya a fejlődésnek, amin a legtöbb IDE keresőfunkciókkal próbál túllépni (goto declaration, find usages, etc...) több-kevesebb sikerrel. Valószínűleg lehet ennél sokkal jobban is csinálni, ha az ember rágódik a témán 1-2 évet, de nem vagyok IDE fejlesztő, és valószínűleg nem is leszek az soha, mert hidegen hagy a téma.
Ehhez a hangsúly áttolódáshoz hozzá kapcsolódik, hogy a fejlesztők is egy piac, erős marketinggel. Néhány éve volt itt a Weblaboron is egy blogmark erről, de már nem találom. Volt szerencsém olyan felsőoktatásban tanító oktatóhoz, aki az IDE-ket tette a fejlesztői módszerek evoluciójának csúcsára.
Nagyon sok kollégánál látom, hogy fut a Netbeans vagy a Notepad++, mert azt szokták meg, azt használták főiskolán, stb. De egyáltalán nem lenne rá szükség, mert Unix rendszereket üzemeltetünk és a legbonyultabb kód amivel találkoznak az egy 20-30 soros shell script vagy éppen az aktuális parancs kimenete, munkai jegyzet, hasonlók. De az IDE az fut, mert ők úgy érzik ez a csúcs, ennél nem adhatják alább.
Soha nem az eszköz hibája, ha nem a megfelelő feladatra használják. A szakember dolga, hogy tudja, mikor melyik eszközt érdemes használni. Maradva korábbi példámnál, ha otthon nagy ritkán ketté akarok vágni egy deszkát, én sem láncfűrészt használok.
Senki nem lett még jó programozó attól, hogy IDE-t használt. A jó programozó viszont szerintem tud használni bármilyen IDE-t (vagy képes gyorsan megtanulni) és főleg tudja azt is, mikor érdemes használni.
Szerintem nincs nagy különbség egy rakás pluginnel megfűszerezett szövegszerkesztő és egy IDE között. Inkább az olyan feature-ök számítanak, mint a refactoring, az auto formatting, stb... Gondolom a megfelelő pluginnel ezeket hozzá lehet csapni notepad++-hoz vagy vim-hez. Ha nem, akkor nem érdemes használni őket.
Miért nő a követelmények komplexitása? Milyen követelmények komplexitása nő?
Mondd, hogy ezt most csak viccből kérdezted. De komolyan... Legalább az ennyire tényszerű dolgokat ne kérdőjelezzük már meg. Aki nem barlangban él egy lakatlan szigeten, annak ez nagyon nyilvánvaló kell legyen. Aki az IT világában dolgozik, annak meg pláne.
Természetesen komolyan kérdeztem. Vegyünk egy webes alkalmazást példának, egy boltot:
1, A vásárló megérkezik, keresgél, kiválasztja a termékeket, beteszi a kosárba, regisztrál/belép, megrendeli az árukat. Ez tizenöt éve is így működött, mára sem változott lényegében.
2, Kliensoldalon figyeljük a vásárló interakcióját, és erről a szervert tájékoztatjuk. Ez sem változott az utóbbi tizenöt évben. Az interakciók végeredményeképp a DOM-ot manipuláljuk.
3, Szerveroldalon feldolgozzuk a klienstől érkezett kéréseket, majd visszaküldjük a választ.
Az utóbbi húsz évben annyi változás állt be, hogy bizonyos GET és POST kéréseket AJAX-szal küldünk el, majd kliensoldali scripttel dolgozzuk fel a választ, de a végeredményen ez nem változtat, mert ígyis-úgyis a DOM-mal dolgozunk. Ha jól átgondoljuk a dolgokat, az AJAX-os kérések visszavezethetők a hagyományos GET-POST típusúakra, tehát végeredményben kliensoldalon csak minimális változtatásokra van szükség, hogy bármely oldalt AJAX-szossá tegyünk.
Az egyik legfontosabb kérdést kihagytad: Miért van szükség a komplexitás növekedésére, ha a szoftverek és webes alkalmazások/weboldalak felhasználói felülete jelentősen leegyszerűsödött?
A kérdések továbbra is állnak: a fentieket figyelembe véve, miért nő a követelmények komplexitása? Miért van szükség arra, hogy komplexebbnél komplexebb eszközöket építsenek be a programozási nyelvekbe?
Miért van szükség arra, hogy komplexebbnél komplexebb eszközöket építsenek be a programozási nyelvekbe?
Kíváncsi lennék, te milyen választ adsz erre a kérdésre. Legjobb tudásod szerint, kérlek.
Szorgalmi feladat: ezek a "komplex" eszközök bonyolultabbá vagy valójában egyszerűbbé teszik a munkát? Azért tűnnek bonyolultnak, mert nem ismerjük őket? Bonyolultabb-e a láncfűrész a fűrésznél, és mivel nyilván igen, miért használják mégis, ha a feladat nem változott az elmúlt pár ezer évben?
Szerintem nincs rá szükség. Kipróbáltam már sokmindent, de nem lett tőle a programom jobb, gyorsabb, áttekinthetőbb, érthetőbb.
Ahogy újabb és újabb eszközöket zsúfolnak a programozási nyelvekbe, úgy lesznek azok egyre komplexebbek. Aki mondjuk tíz éve programozó, ezt nem veszi észre, mert ezek az eszközök szép lassan szivárognak be, és van ideje hozzászokni.
Ehhez képest egy kezdő programozó számára sokkoló, amit lát, ugyanúgy, ahogy a blogmark szerzője számára is sokkoló volt a Visual Basic. Jóval magasabb a belépési küszöb, jóval többet kell tanulni, jóval nehezebb átlátni, és jóval több a hibázási lehetőség. Ezt hozza a szoftverek komplexitásának növekedése.
Ha viszont megmaradunk az egyszerű eszközöknél, a végeredmény egy egyszerűbb, átláthatóbb szoftver, aminek jóval egyszerűbb a karbantartása, és kevesebb hiba lesz benne.
Szerintem nincs rá szükség. Kipróbáltam már sokmindent, de nem lett tőle a programom jobb, gyorsabb, áttekinthetőbb, érthetőbb.
Az egy dolog. Próbáld mégis csak megválaszolni. Semmi nem fejlődik ki ok nélkül. Az indokolatlan komplexitás mindig megbukik az evolúció során. Miért alakult így? Összeesküvés? Véletlenül?
Komolyan mondom, válaszold meg. Ha nem érted, ami ellen érvelsz, felesleges az egész.
Ehhez képest egy kezdő programozó számára sokkoló, amit lát
Biztos vagyok benne, hogy egy kezdő orvos vagy egy kezdő építész is így van ezzel. Én még kezdő sofőrként is ezt éreztem. Abban nem értünk egyet, hogy az egyszerűbb eszközök kevesebb hibát eredményeznek. A komplexebb eszközök, illetve a modern szerszámok valójában csökkentik a hibázás lehetőségét. Csak meg kell tanulni használni őket. Ne legyen már érv az, hogy kevesebbet kelljen tanulni, mert abszolút komolytalan.
A válaszom az, hogy nincs szükség komplex eszközökre.
Abban nem értünk egyet, hogy az egyszerűbb eszközök kevesebb hibát eredményeznek. A komplexebb eszközök, illetve a modern szerszámok valójában csökkentik a hibázás lehetőségét.
Ezt támaszd alá valamivel, mert bemondásra nem hiszem el.
Az egyszerűbb eszközök használatát könnyebb megérteni. Minél kisebb a választási lehetőséged, annál nagyobb az esélye, hogy nem fogsz hibázni, mert jobban átlátod a választásod következményeit.
Emiatt célszerű egyszerűségre, és nem pedig komplexitásra törekedni.
A válaszom az, hogy nincs szükség komplex eszközökre.
Miért fejlődtek akkor ki? Miért nem tűnnek el?
Ezt támaszd alá valamivel, mert bemondásra nem hiszem el.
A varrógép számtalanszor komplexebb, mint a tű és a cérna. Ha megtanulod használni a varrógépet, teljesen pontosan fogsz dolgozni kevés befektetett energiával is. Tűvel és cérnával egy élet gyakorlása szükséges, hogy tökéletes varrattávokkal dolgozz, ráadásul sokkal lassabban.
Mint feljebb Udi is írja, a fejlesztők is piac. Az IDE-k fejlesztői abból élnek meg, hogy IDE-t fejlesztenek, a programozási nyelvek fejlesztői pedig programozási nyelvet fejlesztenek. Ha leállnának az új eszközök hozzáadásával, akkor a saját munkájuk szükségességét kérdőjeleznék meg, és lehúzhatnák a rolót. De ez nem bizonyítja azt, hogy szükség van az új eszközökre.
Értem én, de ezt érvnek felhozni édeskevés. Ha valaki megél abból, amit csinál, az már szar? Csak azért csinálja, mert különben lehúzhatná a rolót? Felejtsük ezt el, hogy valaha érvként felmerült.
Ha nem lenne szükség az új eszközökre, akkor lehúzhatnák a rolót. Ha valaki kipróbálja, és látja, hogy jó az IDE, akkor használni fogja, és fizet érte, ha látja, hogy nem ad semmit a notepad-en felül, akkor egy fillért nem fog fizetni. Továbbra sem értem, hogy miért nehéz ezt felfogni.
Az indokolatlan komplexitás mindig megbukik az evolúció során.
Ezzel csak az a baj hogy nem tudni mennyi ido kel hozza. Csaj hogy a mi fajunknal maradjunk (es most lehet utalni) a szocialis erzekenysegunk es a penzugyi rendszerunk bonyolitasaval az emberi leny alapjaban nem valtozott meg, megszuletik, eszik, iszik, urit, alszik, (szaporodik), meghal. Kozben erzelmeink tengereben uszikalunk, de az leirt par alapfunkcion semmit nem valtoztatot semmi szerintem az elmult sokszaz vagy ezer evben. Szerintem csak mi szeretnenk azt hinni hogy barmi is valtozott :)
A komplexebb eszközök, illetve a modern szerszámok valójában csökkentik a hibázás lehetőségét.
Itt visszautalva egy elzo peldadra a lancfureszre, ezt a kijelntesedet szerintem erosen megbuktatja. Mivel egy egyszeru fureszben nincsen motor, ezert nem kell bele uzemanyag, inditashoz valami elektronika, mehanika, gyujtas. Illetve a fokozott teljesitmeny miatt no a forgacskibocsajtas, a plusz eroforras miatt eloallt a szennyezo anyag kibocsajtas, es extra (veszelyes) hoforras.
Ha ezt az oldalat is vizsgalod a komplex fureszgepednek akkor igen is a hatekonysaggal, megnott a komplexitas, es a veszelyforras is!
Vagy például annak a problémája, hogy az összetett eszközök újrafeldolgozása nehézkes vagy akár lehetetlen. Elég körbenézni, mekkora szeméthegyek vesznek körbe minket, amik a talajt és a vizeket szennyezik, ami megbetegít minket és az utódainkat, és ennek a megoldását utódainkra hárítjuk.
Az elektronikai szemét feldolgozása pedig kőkorszaki módszerekkel történik Kínában és Indiában, falvak vannak, ahol az emberek többsége rákos emiatt. Az integrált áramkörök újrahasznosítása nem megoldott, csak a termelésük.
Ezekkel a problémákkal a programozók nem foglalkoznak, pedig a kialakult helyzetért ők is felelősek.
Tudtommal az elektronikus szemét újrahasznosítása legalább részben megoldott. Az aranyat biztosan kivonják belőlük. A műanyag rész is talán egyszer biodegradálható lesz, egyelőre nem tesznek nagyobb erőfeszítéseket ez ügyben. Ez a probléma nagyobb részt a hardver gyártók felelőssége, és nem a programozóké. Természetesen van ráhatásunk a dologra, ha olyan hardvert veszünk, ami kevésbé terheli a környezetet az életciklusa során. Ez talán egy piaci rés lehet a harver gyártóknak, amit eddig láthatóan nem használtak ki. Ők odáig jutottak, hogy van green vinyó, ami kevesebbet fogyaszt.
legalább részben megoldott. Az aranyat biztosan kivonják belőlük. A műanyag rész is talán egyszer biodegradálható lesz, egyelőre nem tesznek nagyobb erőfeszítéseket ez ügyben.
Mit csinálsz ma egy ic-vel? Semmit.
Egy ellenállással? Szintén.
Kondi? Szintén.
Nagyon-nagyon messze van még a kellő szintű újrahasznosítás.
Nem látom az emberben az indokolatlan komplexitást, így nem értem pontosan, mire akarsz kilyukadni. Az általad felsorolt funkciókra ráadásul az állatok egy jó része képes. A változás mértéke mindig csak nézőpont kérdése.
A láncfűrészes példám épphogy alátámasztja a kijelentésem. Nem állítottam, mivel ostobaság lett volna, hogy a láncfűrész nem komplexebb a fűrésznél, hiszen számtalanszor komplexebb. Nem kívánok a láncfűrész használatával kapcsolatban szakmai vitába bonyolódni, hiszen csak egyszer volt a kezemben, de már akkor is feltűnt, hogy mennyivel csökkenti a hibázás lehetőségét már csak azáltal is, hogy pillanatok alatt szétkapom a gerendát és nem nyiszatolom hosszú percekig. Az, hogy a veszélyforrás megnő, a láncfűrész egyedi sajátossága és nem szolgálja az analógiám hasznosságát.
Bár sokkal komplexebb szerkezet, mégis megkönnyíti, egyszerűbbé, hatékonyabbá teszi a munkádat. Csak annyit kell tenned, hogy megtanulod használni. Ha nem megy, akkor tovább próbálkozol, vagy pályát módosítasz, vagy elviseled, hogy az ács haverjaid néha ugratnak, amiért te még mindig mindenhez fűrészt használsz.
Aha. Mindenféle webservice-ek vannak kiajánlva, online fizetés 5-6 féle módon, postázás, készletnyilvántartás, rendszerintegráció, folyamat és szállítás nyomonkövetés, kommentelési lehetőség a termék alatt, kedvencelés, termék részletek kiválasztása, paraméterezése, azt is megadhatod lassan, hogy ki hozza ki mosolyogva... Ma egy webshop egy "picit" többet tud, mint tizenéve. Ezek nem kicsit tudják növelni a komplexitást, amire reagálni kell komplexebb eszközökkel, különben a fejlesztési idő kezelhetetlen lenne. Tök őszintén, nem akarom elhinni, hogy neked ezek nem tűntek fel...
Nem szükséges, hogy az öt-hat féle fizetési módszer különböző API-kon keresztül működjön, az a szoftverfejlesztők választása, hogy nem egységesítik. Ugyanez igaz a rendszerintegrációra és a postázásra is.
A kommentelési lehetőségek, a kedvencelés egy plusz lekérdezés egy táblából. A termékrészletek kiválasztása, paraméterezés már régebben is megvolt.
Az általad felsoroltakat egy-egy új táblában tárolhatjuk az adatbázisban, ahonnan egyszerű lekérdezésekkel nyerünk ki adatokat. Mik azok a komplex eszközök pontosan, amire a fentieknek szüksége van?
Nem szükséges, hogy az öt-hat féle fizetési módszer különböző API-kon keresztül működjön, az a szoftverfejlesztők választása, hogy nem egységesítik. Ugyanez igaz a rendszerintegrációra és a postázásra is.
Tehát a követelmény komplexitása növekszik, hisz ezekkel foglalkozni kell. Akár elbújtatjuk egy felület mögé (vigyázat, absztrakció :)), akár nem.
Mik azok a komplex eszközök pontosan, amire a fentieknek szüksége van?
CI, teszt eszközök, dependency management, típusosság, adatszerkezetek, általában kódszervezést vagy párhuzamosságot támogató nyelvi elemek, fejlesztői, tesztelői környezetek stb... Bármi, ami segít a komplexitást elrejteni a kód mögé, illetve segít a növekvő komplexitás mellett is biztosítani a rendszer stabilitását.
És ezekre a szolgáltatásokra valóban szükség van? Én is látom, hogy a webshopokban ott van a kedvencelés meg a kommentelési lehetőség, de a legnagyobbakon kívül senki nem használja ezeket. Nemrég küldtem be egy blogmarkot arról, hogy igazából senki sem tudja, mitől sikeresek igazából a sikeres webes szolgáltatások. A többiek másolnak mindent ész nélkül, de mégsem lesznek jobbak. Semmi sem támasztja alá, hogy a technológiai megoldások sikeressé tesznek egy megoldást.
Én erről nem vagyok meggyőződve. A fejlesztők körében ugye népszerű az AJAX, mert szerintük erre szüksége van a felhasználóknak. Azoknak a felhasználóknak, akiknek fogalma sincs arról, hogy mi az a böngésző.
...
népszerű az AJAX, mert szerintük erre szüksége van a felhasználóknak. Azoknak a felhasználóknak, akiknek fogalma sincs arról, hogy mi az a böngésző.
- csili-vili,
- nem "ugrik" a képernyő az újratöltés miatt,
- hallotta (persze fejlesztőtől), hogy egy modern oldal ajaxos:
Ezt mind tudja az is, aki nem tudja mi az a böngésző.
Nem rég kaptam úgy egy feladatot, hogy "ajaxos kereső az xy-hoz hasonlóan"...
Természetesen Kb hülyeség lett volna ajaxal csinálni... :D
Nekem ez már sok. Erre "filozófia" taget? Mintha a bevásárlólistámra ráírnám, hogy "SZAKDOLGOZAT". Aki még nem olvasta, ne pazarolja rá az idejét.
Mi a tökömért osztunk meg cikket olyan embertől, aki bevallottan nem érti se az OOP-t, se a szoftverfejlesztés jelenlegi állapotát és eszközeit, ennek ellenére elmagyarázza, hogy ez miért nem jó, mert talált pár idézetet a neten.
Ez az a szint, amikor a paraszt bácsi osztja az észt a kocsmában, hogy ezek a modern traktorok nem jók semmire, ő amióta az eszét tudja, simán megold mindent Riskáékkal. Józsi is mesélte, hogy múltkor elromlott a traktorja, a Béla meg (részegen) elütötte vele az egyik malacot. Ettől persze lehet ő egyébként remek földművelő (mint ahogy a cikkíró is bizonyára komplex OpenGL kódokat képes írni), de baromira nem releváns a véleményük semmilyen vitában (legalábbis szakmaiban, mert kocsmaiban miért ne) az adott témát illetően, mert nincs mögötte tapasztalat. Az nem tapasztalat, hogy elindítottam a Visual Studio-t és rohadt komplexnek tűnt az egész.
Ez persze normális, mindenki jónak szeretné érezni magát abban, amit csinál, és ha mindenhonnan azt hallja, hogy ha nem értesz az OOP-hez, nem is vagy jó, akkor elkezd majd kompenzálni. Ez nem baj, emberi dolog, mind csináljuk. Itt teret adni ennek szerintem felesleges.
Szakmában semmi helye hitvitáknak. Egyszerűen értelmezhetetlen, hogy OOP-isták meg proceduralisták, és akkor kampányolnak egymás ellen. Én tapasztalatból azt mondom: ha nem tetszik mondjuk az OOP, vagy bármi más, mássz bele. Ekkor sem fog még tetszeni, de tartsd a szád. Addig csináld, amíg nem érted meg, nem érzed, miért is mondják erről mások, hogy ez jó (opcionálisan itt már élvezheted is, én ezt javaslom). Utána akár kritizálhatod is a hibáit (mert mindennek vannak), de máris szélesítetted a látóköröd.
Megertem frusztraciodat az ilyen cikkekkel kapcsolatban...en az ilyen cikkek miatt nezem egyre kevesebbet a Weblabort.
Es olvasok inkabb hirleveleket vagy olyan fejlesztok Twitter feedjet akik elore mutato fejlesztesekkel foglalkoznak.
Szerintem elore eleg nehez megjosolni mi az eloremutato. Sokszor hisszuk azt a jelenbe hogy 1-1 messiassal talalkoztunk de valojaban oregkorunkra kiderul szenrecsesek lehetunk ha 1-el osszesen.
Szerintem azert jo ilyen cikket megosztani, mert:
- olvashatunk mas nezopontot, velememyt.
- lehet hogy hulyeseg, lehet hogy elgondolkodtato...
- akarmennyire is ellenkezel ellene, ezeknel a posztoknal lehet olvasni a legtobb hozzaszolast, es itt lehet ertelmesebb okfejteseket is olvasgatni kulombozo emberektol( "troll" Gabi jovoltabol). Mig mas helyeken jobb esetben 1-1 sor bologatos hozzaszolas van.
- Legalabb olvashatunk mas dolgokat is mint ami a mainstream szakmediabol folyik
- Nem utolso sorban meg nem kotelezo mindent elolvasni, es reagalni ra.
- lehet hogy hulyeseg, lehet hogy elgondolkodtato...
Ennyi erővel posztolhatnánk bármit. Csak egy szint alatt már problémás szakmai oldalnak hívni magad. Nem az álláspontjával van a bajom elsősorban, vagy a következtetéseivel, hanem a színvonalával. Egy olyan cikk ellen is tiltakoznék, ami aszongya: az OOP azért jó, mert szépek benne a metódusok, és az is jó, hogy az osztály neve nagybetűvel van írva, mert így szerintem fontosnak tűnik, és a Béla szerint is az OOP az új hullám!!!!
- akarmennyire is ellenkezel ellene, ezeknel a posztoknal lehet olvasni a legtobb hozzaszolast, es itt lehet ertelmesebb okfejteseket is olvasgatni kulombozo emberektol( "troll" Gabi jovoltabol). Mig mas helyeken jobb esetben 1-1 sor bologatos hozzaszolas van.
Egy jó trollkodásnak mindig lesz piaca. Ha az értelmes okfejtésekre vagy kíváncsi, tekerj vissza, mindet olvashattad már ezerféle verzióban a korábbi remek cikkek/fórumtémák alatt. Több évnyi munka van benne :).
- Legalabb olvashatunk mas dolgokat is mint ami a mainstream szakmediabol folyik
Itt csak a más dolgokat olvashatod. Ez akkor az underground szakmédia? :D
- Nem utolso sorban meg nem kotelezo mindent elolvasni, es reagalni ra.
Most leszek kíváncsi moderátor urakra...
Szóltam szépen gyerek, ne trollozz olyat, akinél inkább trollabb vagy. Marha bátor vagy neten.
Itt javaslom Ádám, hogy tegyél valamit az ügyben, nem lehet büntetés nélkül így sértegetni valakit a neten. Hídvégi Gábor nem troll, azon kevés felhasználók egyike, akik még tesznek valamit másokért, és nem utolsó sorban ott a teljes neve...
Az ilyen baszdmegmagadakapával féle neve sincs gyökér meg vegye már a fáradságot ha bajt akar, akkor írjon helyet is.
Itt javaslom Ádám, hogy tegyél valamit az ügyben, nem lehet büntetés nélkül így sértegetni valakit a neten.
Valóban. Péter, te a következő egy hónapban nem szólsz már hozzá, sem ehhez, sem más témához. Nem először kérlek, hogy ezt a kocsmai asztalborogatást itt mellőzd. A következő alkalommal egy év lesz a gondolkodási idő.
Pedig kivételesen igaza volt.
Mobilon utálok gépelni, csak ezért nem szóltam bele eddig.
B részéről az utóbbi időben én nem láttam mást, mint folyamatos kötekedést, trollkodást.
(Attól még trollkodás, hogy nem anyázós stílusban adja elő magát)
Igen, sokan tanulhatnának, ha az lenne a cél, hogy úgymond kulturált formában romboljunk. Bár számomra az már messze nem tartozik a kulturált vitastílusba, ha valaki csak azért nevezi trollnak a másikat, mert az a másik mániákusan ragaszkodik a saját elképzeléseihez, és szembemegy az aktuális trendekkel.
De mondom, végül is mindegy, az oldal gyakorlatilag halott, a döntés joga meg a tiéd.
Bár számomra az már messze nem tartozik a kulturált vitastílusba, ha valaki csak azért nevezi trollnak a másikat, mert az a másik mániákusan ragaszkodik a saját elképzeléseihez, és szembemegy az aktuális trendekkel.
Az én értelmezésem szerint azért nevezik többen is trollnak – ami nem sértés, hanem terminus technicus –, mert újra és újra ugyanazokat a kérdéseket teszi fel, miközben figyelmen kívül hagyja a válaszokat, amiket kap.
Nem akarnám tovább feszíteni a húrt, de azért érdekel: mit romboltam én pontosan?
Hol húzódik a határ az őszinte vélemény és a sértegetés között? A szándék számít, vagy hogy a másik minek veszi? Nem mondom persze, hogy én normális vagyok, ha az lennék, egy szót sem írtam volna, mert mindig ez a vége sajnos.
Senkinek nem az a baja Gáborral, hogy szembemegy a trendekkel, de ezt úgy látom, nem csak ő nem érti. Ebből lesz ez a mártírkodás folyton. Szerintem vagyunk itt egy páran, akik bőven túllátnak a trendeken és szeretnek több oldalról megvizsgálni dolgokat. Engem (is) az zavar, hogy Gábor végtelen ciklusba került már évek óta, és semmilyen input nem képes ebből kizökkenteni, ennek ellenére az output folyamatosan jön belőle. Mindig ugyanaz. Sose az zavart, hogy nem értünk egyet, mert nincs olyan ember a világon, akivel 100%-ban egyet értenék mindenben, még én magam sem.
Na de hagyjuk inkább a francba, majd folytatjuk a következő iterációban. Úgy érzem, most az AJAX lesz soron.
Gábor ír valamit -> olvasó szerint hülyeség -> olvasó ignorálja, ha úgy látja, nem értett a szóból
Tőled semmi mást nem látok, mint azt, hogy őt baszogatod lépten-nyomon. Ez szvsz tipikusan az a fajta, romboló magatartás, amivel úgy lehet szétcseszni egy fórumot / közösséget, hogy közben mosod kezeidet, te nem tehetsz róla.
Nem csak te, de számomra a te működésed volt ebben az örök flame-elésben a legirritálóbb. Ha annyira zavart volna, már rég beleszóltam volna. De egyrészt nekem már annyi közöm sincs a témához, amennyi pár éve volt, másrészt ezt a fórumot gyakorlatilag halottnak tartom, már az sem érdekel, ha megszűnik, így felőlem csináltok amit akartok.
Ez szvsz tipikusan az a fajta, romboló magatartás, amivel úgy lehet szétcseszni egy fórumot / közösséget, hogy közben mosod kezeidet, te nem tehetsz róla.
Hiába hajtogatod, én a jelenlegi Hidvégi Gáborral egy helyen nem fogok szerzőként feltűnni még egy blogmark beküldőjeként sem. Nem érzelmi alapon. Ne értsd félre, de Kim Dzsong Un mellé sem állnék oda felszólalni egy emberi jogi konferencián.
Nem csak alattomos, hanem még hülyének is nézi a többieket. "Egy kicsit hátbaszúrlak most, de nem kell ezt komolyan venni."
Nem értem, mi ezzel a baj. Többször kifejtettem már, hogy nem a személyeddel van gondom, még csak nem is a nézeteiddel, hanem azzal a hozzáállással, amit képviselsz. Hogy pontosan mi, azt is már leírtam.
Miért lenne ez hátbaszúrás? Őszinte, szemtől-szembe kijelentésnek szántam, válaszként korábbi kérdésedre, hogy miért nem gyarapítom a blogmarkokat. Nem indulatból írtam, nem érzelemből, ez a helyzet, ezt gondolom, ha következményei vannak, vállalom.
Méltatlannak éreztem, hogy zároljam a felhasználód, ezért elsőre csak szóltam, és másodszorra is csak töröltem a felháborodásod. Láthatóan nem tudod betartani a játékszabályokat. Én viszont kénytelen vagyok tartani magam ahhoz, amit fent írtam: 2016. április 5-ét követően feloldom a zárolást, ha írsz a szerkesztőség címére.
Erdekes hogy mas levette hogy nem leszolom vagy tamadom Gabit, csak te nem.
Ha figyelmesen olvastad volna a hozzasszolasokat akkor biztos eszrevetted volna hogy ezt a jelzot nem en hanem a 19,26-os hozzaszolasban mas hasznalta. Azert vettem bele a "troll" szot a hozzaszolasomba, mert meglepett hogy valakit aki ezen a forumon es a szakmaba nem tegnapi darab (nezetei ellenere) egy elvi es nezetbeli szerintem eleg kellemes, valos tapasztalatokkal alatamasztott (meg ha konretan ki nem mondott) vita kellos kozepette csipobol valaki leminosit. En ezt nem tennem meg akkor sem ha ugy gondolom 100%-ig igazam van (ami persze szubjektiv).
Sajnos ahogy olvastam most nem tudsz valaszolni 1 honapig, szoval igy kicsit monologra sikeredett a hozzaszolasom.
Legkozelebb ha ugy gondolod nem idevalo, vagy nem erted a hozzaszolasom, nyugodtan irj ram maganban, es ha meggyozol, en fogom kerni a moderalasat, vagy akar a sajat magam felfuggeszteset.
...személyes hitbeli meggyőződését ellentmondást nem tűrő, pökhendi erőszakossággal sulykolja, azzal a konkrét szándékkal, hogy más felhasználókból heves reakciókat provokáljon ki...
Számomra teljesen egyértelmű, hogy itt erről van szó. Ha Gábor bárkit valóban meg akarna győzni, akkor pozitív példákat osztana meg, de ezzel szemben azok a fő témák, hogy mit miért ne használjunk, melyik fejlesztés miért nem jó. Ezek a témák csak arra jó, hogy értelmetlen flame-ek induljanak, amire - akár tetszik, akár nem - mindig lesz ember...
Ismerem annyira Gábort(azt hiszem), hogy ki merjem jelenteni: esetében szó sincs erről.
Fanatikusan ragaszkodik az elméleteihez (amik többségével nem értek egyet), de nem tartom valószínűnek, hogy ezt azért tenné, hogy veszekedést provokáljon. Ilyen alapon inkább azok felelnek meg a troll definíciójának, akik csak azért reagálnak a posztjaira, hozzászólásaira, hogy őt baszogassák.
Hup-on van egy ilyen belterjes troll társulat és a te szavaidból annak nyomát vélem kihallani. (Tévednék?)
Nincs olyan célom, hogy provokáljak. Amit írok, azért írom, mert meggyőződésem, hogy úgy helyes, és ezt a tapasztalataim alapján írom. Itt legfeljebb azt lehetne kétségbe vonni, hogy a teljes témára van rálátásom, és ha nincs, akkor az általam levont következtetések nem általános jellegűek, hanem csak bizonyos szempontból igazak.
Egy hatalmas plusz egy! Alkalmanként én is beállok flame-lni, de aztán megunom, majd néhány hét/hónap múlva visszanézek a WL-re és pont ugyanott tart minden. Legfeljebb annyi változás van, hogy az évszámnál mást írunk, 2015-ben ezt kell magyarázni? 2014-ben ez még felmerül kérdésként? 2013-ban ilyen alapvető dolgokat még itt megkérdőjelezünk? Évek óta ugyanaz a téma, hihetetlen mennyiségű energiák mennek el itt pocsékba...
A kezdőknek nem használ, ha az ilyen ostobaságokkal találkoznak először, mert nem tudnak még különbséget tenni. Ha valaki azt hirdeti nekik, hogy nem kell megtanulniuk semmit, jóleszaz így is, az nem vezet sehová. Ha még arról szólnának a blogmarkok, hogy procedúrálisan hogy építs fel JÓL egy projektet, még azzal sem lenne bajom, mert az elvek 90%-a később alkalmazható OOP-re vagy bármi másra is.
Előbb-utóbb az a pár ember is megunja ezt, akik mindig veszik a fáradságot, hogy kommentálják az olyan sületlenségeket, mint ez a cikk. De ha egy tudományos oldalon folyton csak a gyíkemberekről meg a chemtrailről van anyag, akkor szép lassan eltünedeznek a szakértők (mint az itt is történt, történik).
Legjobban te is a saját bőrödön tanulsz.
Gábor nem hirdetett olyat, hogy nem kell tanulni.
Kissé értetlen egy-két dologban, de ez nem feltétlenül rossz a kezdőknek. Legalább beszélünk (vagy csak ti) a témáról. Ha neked unalmas, akkor ne szólj hozzá.
Én a mai napig el szoktam olvasni, de már ritkán szólok hozzá. Ez a baj. Addig jó, míg van aki próbálja meg győzni.
Nekem vannak időszakaim, amikor szórakoztat Gábor, ilyenkor leállok vele. Ennek ellenére nem hiányoznának a trollkodásai, ha felismerésre jutna végül :).
A kezdők meg inkább töltsék hasznos dolgokkal az idejüket, például tanuljanak új dolgokat, szerezzenek saját tapasztalatokat és szélesítsék a látókörüket.
Látom, nagyon zavar, hogy szólás- és gondolatszabadság van. Amit én mondok, az nyilvánvalóan haszontalan, az általam beküldött blogmarkokból nem tanulnak, elbutulnak és a látókörük beszűkül. Ezt te mindenki más helyett el tudod dönteni.
Ha ez neked nem tetszik, Észak-Korea arra van ->, ott tárt karokkal várnak téged a gondolatrendőrségben.
Szerinted a szólásszabadság azt jelenti, hogy bemehetek a Parlament ülésére és mesélhetek az aranyeremről? Bemehetek a Magyar Tudományos Akadémiára, és előadhatom nézeteimet, miszerint Józsi tegnap elküldött az anyámba, és szerintem ez sérelmes?
Nem lehet, hogy végletekben gondolkodsz (ld. egyszerűség-komplexitás), és a képzeletbeli határvonalakat közben mindig ott húzod meg, ahol neked éppen kényelmes?
Nem lehet, hogy az ilyen cikkek túlfogyasztásától a te látóköröd már rég beszűkült, csak bentről ezt nyilván nem látni?
Nem trollkodik.
Az én személyes véleményem szerint te sokkal inkább.
Attól, hogy nem egyezik a véleménye a tiéddel, még nem ellenség. :)
Engem is még sokszor elgondolkodtat, szóval nem éppen égetni való boszorkány. :)
Vicc nélkül: vannak igazságai is, ha nem is annyira szélsőségesen, mint gondolja. Ezeket hagy adja elő, és ezek nem csak a kezdőknek hasznosak.
Még kevésbé vicc: vedd észre, hogy míg én hasznosságról beszélek, te meg akarnád mondani , hogy mit csináljon egy kezdő...
Tőlem azt írsz amit akarsz, de amivel indokolatlanul sértesz mást, az téged - és sajnos a WL - t is - minősít.
A többire meg blabla, nem tekintem az ellenségemnek, senkinek nem hasznos, amit csinál, és nem akarom megmondani senkinek, mit csináljon. A Weblabort meg hová minősítsem még lejjebb? Egy ilyen blogmark alatt? Ez a vicc, na :).
Amit írtam, lehet jól meg rosszul érteni. Ha támadásnak fogod fel, rosszul érted. Én komoly problémákra mutatok rá.
Ha valaki azt hirdeti nekik, hogy nem kell megtanulniuk semmit, jóleszaz így is, az nem vezet sehová.
Így van, ez nem vezet sehová, de ki az, aki ilyet hirdet? Ezzel én sem értenék egyet.
Ha még arról szólnának a blogmarkok, hogy procedúrálisan hogy építs fel JÓL egy projektet
Mi lenne, ha vennéd a fáradságot, és nem csak kárognál, hanem küldenél be egy ilyen blogmarkot? Miért nézed a kezdőket mindig hülyének, akik nem tudják önállóan eldönteni, hogy amit olvasnak, annak van-e alapja vagy sem?
Mitől lenne ostobaság az írás, amikor te is beismerted, hogy a szoftverek és a fejlesztés egyre komplexebbé válnak?
Hát ez zseniális :D. Még mindig alul tudod múlni önmagad :).
Mi lenne, ha vennéd a fáradságot, és nem csak kárognál, hanem küldenél be egy ilyen blogmarkot?
Erre már több ízben válaszoltam neked. Jelenleg nem fogok.
Miért nézed a kezdőket mindig hülyének, akik nem tudják önállóan eldönteni, hogy amit olvasnak, annak van-e alapja vagy sem?
Nem nézem őket hülyének. Egyszerűen emberek, akiknek még nem áll rendelkezésére elegendő információ és tapasztalat. Számukra káros az a légkör, ami itt uralkodik már régóta. Egy jó ideje nem is ajánlottam már kezdőnek, hogy ide látogasson, sőt.
Voltam kezdő és kommunikáltam sok kezdővel. Pl. nekem annó komoly nehézségeim voltak az OOP megértésével. Nem értettem, mire jó ez az egész, egyfajta sznobériának tartottam. Imádtam olyan cikkeket olvasni, amiben értelmesnek tűnő emberek elmagyarázták, miért hülyeség az OOP. Ezáltal felmentve éreztem magam. Tartoztam valahová, ahol úgy érezhettem, mi felülemelkedtünk már azon a szinten, ahol egyesek kényszernek érzik, hogy OOP-hez hasonló áltudományokkal építsék önnön szakmai egójukat. Mondhatnánk, hogy csak én voltam ilyen ostoba, és mindenki más sokkal értelmesebb ennél, de nem ez a helyzet.
Nem nézem őket hülyének. Egyszerűen emberek, akiknek még nem áll rendelkezésére elegendő információ és tapasztalat. Számukra káros az a légkör
Azt mondod, hogy nem nézed őket hülyének, aztán ugyanúgy hülyének nézed őket továbbra is. Hadd döntse már el mindenki maga, hogy egy bizonyos technológia jó vagy rossz, ne te mondd már meg, hogy kinek mi a káros. Majd mindenki utánaolvas, ha szükségét érzi, nincs szükség ilyen önjelölt megmondóemberekre, mint te.
Akkor miért áldozod a Weblaboron töltött időd 98%-át arra, hogy ehhez hasonló "szemlélettágító" cikkeket és eszméket ossz meg a nagyközönséggel immár évek óta? Miért nem hagyod, hogy utánaolvassanak maguk, ha szükségét érzik? Miért érzed károsnak, ha valahol szóba kerül például az OOP hasznossága?
Vedd már észre, mit művelsz, mielőtt önjelölt megmondóembernek nevezel valakit :D.
Egyébként ha hülyének nézném őket, azt mondanám, inkább hagyják ezt a szakmát :).
Az nem az én problémám, hogy más lusta beküldeni blogmarkokat olyan témákban, amit az épp aktuális mainstream divatosnak tart. Hülyeségeket írsz, mint mindig, hisz az én blogmarkjaim senkit nem akadályoznak meg, hogy másnak utánaolvassanak, ráadásul a csiripekben pont mindig az aktuális eszközökről van szó.
Nem érzem károsnak, ha szóba kerül az OOP hasznossága, csak előbb jó lenne tisztázni, hogy mi az OOP, mi a hasznossága, mik a hátrányai. Ha annyira tökéletes paradigma lenne, akkor nem tudnék évek óta beküldeni blogmarkokat, amelyekben az elmélet gyenge pontjaira mutatnak rá.
Szóval mit művelek? Bánt, hogy kiderült, amiben hiszel, az ingatag lábakon áll? Miért nem jártál utána rendesen, mielőtt megvilágosodtál?
Mint már elmagyaráztam több helyen, ez nem lustaság kérdése. Ha fájóan őszinte leszek, elnézést, de ki a franc akarna itt bármilyen tartalmat publikálni, akár csak egy blogmarkot? Ezekkel az olcsó rantekkel egy helyen? Ahol az oldal hangadója egy olyan ember, akinek a vitastílusa abból áll, hogy az erős érvekre nem reagál, mintha meg sem történtek volna, hanem ugyanazt a 10 fordulatot hajtogatja évek óta mindenre? Fejlődésre képtelen, közben a gondolkodás fontosságáról papol. Ha valakinek ez nem tetszik, kocsmai stílusban nyilvánul meg ("Hülyeségeket írsz, mint mindig", de csak ebben a topikban van egy csokornyi), minden következmény nélkül.
Szakmai vitának úgy van értelme, ha a felek kölcsönösen fejlődni tudnak általa. De minek is magyarázzam, veled kommunikálni olyan, mintha az ember falnak dobálna egy labdát. Az itteni légkör már jó ideje nem alkalmas szakmai viták lebonyolítására, de igazából semmire.
Elmondom ezredszer (...), a szakma nálam jelenleg nem hit kérdése. Tökéletes paradigma nincs, nem lehetséges. Vagyok annyira intelligens, hogy belássam, bármi ellen és mellett is lehetséges érvelni a nézőpont megfelelő mértékű elcsúsztatásával.
Hiába hajtogatod, én a jelenlegi Hidvégi Gáborral egy helyen nem fogok szerzőként feltűnni még egy blogmark beküldőjeként sem. Nem érzelmi alapon. Ne értsd félre, de Kim Dzsong Un mellé sem állnék oda felszólalni egy emberi jogi konferencián.
ugyanazt a 10 fordulatot hajtogatja évek óta mindenre
Én azt mondom, A, te azt mondod, B. Én tíz ilyen fordulatot hajtogatok évek óta, te másik tizet. Ki a különb? Te? Kinek van igaza? Neked? Azért, mert nincsenek önálló gondolataid, és csak azt tudod ismételgetni, amit a többség? Vedd már észre, hogy ugyanazt csinálod pepitában!
Ha nem tetszik valami, csinálj saját fórumot, ahol a te szád íze szerint történik minden. De ha nem tudsz hozzátenni, nem tudsz évek óta újat mondani, akkor nincs sok értelme, hogy itt cincogj.
Tökmindegy, kinek van igaza, hogy az OOP az ördög műve vagy a Szent Grál (egyik sem).
Komolyan úgy gondolod, hogy a kisebbséghez tartozni valamilyen véleménnyel már azt jelenti, hogy vannak önálló gondolataid? Ha viszont többen is egyetértenek veled, akkor már nincsenek? Miért fontos ennyire neked, hogy egyéniség legyél?
Ha ennyire önállóak a gondolataid, miért abból áll a tevékenységed, hogy olyan linkeket gyűjtesz az internetről, ahol azt szajkózzák, amit te is? Mit akarsz ezzel bizonyítani és kinek?
Szegény Pepitát meg ne keverjük ide :).
Ha nem tetszik valami, csinálj saját fórumot, ahol a te szád íze szerint történik minden.
Ja, meg alapítok új országot, és akkor ott nyitva lesznek a boltok vasárnap. Gratulálok :). Mi a tökömért csinálnék fórumot? Hogy én is szórakoztathassam magam rendszeresen a saját nézeteimmel és lehetőleg senki más ne szóljon bele? :) Not interested.
De ha nem tudsz hozzátenni, nem tudsz évek óta újat mondani, akkor nincs sok értelme, hogy itt cincogj.
Ez a mondat tőled maga a tökély :). Azt hiszem abba is hagyom a cincogást, ennél jobb már nem lesz.
Nem érzem sértőnek, mert nem szokásom megsértődni. De tudtommal ez már bőven azon a szinten túl van, ami megengedhető egy ilyen helyen. Vagy kereszteljük át webkocsmára és Hidvégi blogmarkjaival sem lesz több bajom :).
Fejlődésre képtelen, közben a gondolkodás fontosságáról papol.
Haha, akkor lennék fejlődőképes, ha ugyanazt papolnám és ugyanúgy gondolkodnék, mint te? Micsoda gőg szorult beléd, hogy csak az a jó, amit te gondolsz! Azért hozom fel azokat a dolgokat, amit, mert tapasztalataim azt mutatják, hogy az a helyes.
moderálva - Gábor, légyszíves vegyél vissza ebből a stílusból - inf3rno
Szerintem arra gondol hogy évek óta ellenállsz az új dolgoknak és nem próbálod ki és nem próbálod őket megérteni.
Legalább adj egy esélyt az új dolgoknak, legyél nyitottabb és próbáld ki őket. Bajod nem lesz belőle, legrosszabb esetben is csak okosabb leszel :)
Igen a leirtakban igazad van, de ha azt nezed hogy hetente dobjak ki a "feltatuk a kereket" vagy a spanyolviaszt jellegu kicsit sem uj de uj kontosbe, marketingbe csomagolt dolgokat, akkor egy megfelelo mennyisegu foldon eltoltott ido, es tapasztalat utan, elgondolkodsz hogy minden ujnak tuno dologgal erdemes elpazarolnod azt keves idot amit ezen a planetan eltolthetsz, vagy erosen megvalogatod, es a kerek utan nem a kereket hanem a lovaskocsit, autot, repulot, es rakteat keresed, nem pedig a raketa idoszakaba ujra a kereket.
Nem nem fogok ra peldat irni mert volt itt a weblaboron is boven olyan iras ahol a fejemet csapkodtam hogy nah megint feltalatunk valamit amit 2-10 evvel ezelott is mar hasznaltunk. Persze semmivel nem lett jobb vagy gyorsabb, csak masabb mert most eppen megint el kellet adni valamit, foglalkoztatni kellet az embereket.
Regen en is minden "uj"-nak titulalt dolgot kiprobaltam, mara mar belefaradtam a sok kuruzslasba, lokupeckodasba, marketingbe es inkabb a barataimmal, csaladommal toltom az idot. Ettol fuggetlenul ugyan ugy tudok evente fejlodni, keszulnek el projektjeink es elegedettek az ugyfeleink. Egyszeruen mas hozzaallas, mint a trendek hajhaszasa.
Bocsi, de nagyon nem értetted.
Pont az a gond, hogy fingod nincs róluk.
Azért írtam, hogy magad nevében, mert szereted magad mások fölé képzelni - de sokszor nem vagy ott.
Nyugodtan taníts, (vicc jön, nem megsértődni!) azt mondják: aki nem ért hozzá, az tanítja... :)
Szóval te érted, hogy miért jó az OOP. Ennek örülök, de mi van például a funkcionális nyelveket használókkal, az ő írásaikban mindig az OOP-t ekézik, mert például az objektumoknak állapota van, emiatt egy metódust kétszer meghívva nem tudod garantálni, hogy ugyanazt az eredményt adja vissza, vagy például ugyanemiatt a konkurens programfuttatás is minimum problémás, hacsak nem lehetetlen? Márpedig ez egyre égetőbb kérdés, hisz a hardverek programfeldolgozási sebességét már évek óta csak az újabb magok hozzáadásával tudják növelni.
Amikor beküldök egy neked nem tetsző blogmarkot, te vagy a legelső, aki ott kiabál, hogy több ilyet ne, legyenek cenzúrázva a dolgok, csak olyan kerülhessen be, ami a többség álláspontját alátámasztja. Miért? Félsz valamitől? Félsz attól, hogy kiderül, valamit rosszul gondolsz/rosszul tudsz? Nem értem, miért. Ha úgy van, ahogy te gondolod, akkor nem kell félned, hisz egy jól megalapozott érveléssel helyre lehet tenni a félreértéseket.
A blogmark legnagyobb baja, hogy káros. Az objektum-orientált szemléletmód előnyeit (a procedurálissal szemben) ~30 éve volt utoljára menő kétségbe vonni. Ezek az előnyök már minden valamire való fejlesztőnek teljesen világosak (nem megsérteni akarlak, nekem ez a személyes véleményem).
Nagyon sajnálom, hogy ilyen színvonalú tartalmak generálják a legtöbb hozzászólást (amik valódi értéket nem hordoznak, hiszen már n+1. alkalommal ugyanaz a téma), nálam a weblabor már abszolút nem az a hely, ahol kurrens webes technológiákkal foglalkoznak, hanem valami fura szeglete az internetnek, ami valahol 2002 környékén ragadt.
igaz ahogy oregszem egyre jobban osszekeverednek az evszamok, illetve elmosodnak az emlekek, de azert 1985-ben (30 eve) meg azert nem hoditott olyan nagy teret az OOP...
Illetve az is furcsa nekem, hogy 2002-hoz hasonlitod a WL-t amikor ~2009 kornyeken regisztraltal, persze lehet hogy elotte 7 evig csak olvastad :D
Nyilván csak érzékeltetni szerettem volna csak a távlatokat. 2002-ben egyébként még fogalmam sem volt arról, hogy a programozást eszik-e vagy isszák (egyébként mi a jelentősége annak, hogy mikor regisztráltam?).
Pontosan mi káros benne? Miért vonod kétségbe azt, amit az illető írt? Miért ne találhatná valaki az aktuális szoftverfejlesztést túl komplexnek? Nem lehet, hogy tényleg az?
Nem érted. Ugyanolyan ostoba lenne, ha én a funkcionális nyelveket ekézném, csak azért, mert még nem született meg bennem a felismerés, hogy miért jók. Nem érzem úgy, hogy az OOP vagy bármi más én lennék, és én személy szerint fenyegetve lennék azért, mert a funkcionális nyelvek előnyeit egyre többen felismerik. Örvendetes, hogy így van, ismerjék fel. Bár ésszel belátom én is az előnyöket, sajnos a felismerés még nincs ott, még idegen a funkcionális világ. De azért ha időm engedi, újra és újra neki fogok szaladni a Haskellnak, mert érdekel az az öröm, amit úgy látom, mások már felfedeztek benne, én pedig még nem. És ezt az időt nem arra fogom felhasználni, hogy beírom a keresőbe, hogy "Haskell suxx" és elolvasok minden cikket, amit kidob.
Nincs bajom a procedurális programozással sem. Van, hogy használom.
Nem hiszek viszont a hitvitákban és kész.
Ha ostoba cikket küldesz be, könnyen lehet, hogy legközelebb is ott fogok kiabálni, hogy ez egy ostoba cikk. Vagy nem. Szerintem ezek a gyengécske cikkek nem szolgálják azokat a nemes célokat, amiket hangoztatni szoktál és állítólag el akarsz érni.
mindig az OOP-t ekézik, mert például az objektumoknak állapota van, emiatt egy metódust kétszer meghívva nem tudod garantálni, hogy ugyanazt az eredményt adja vissza
Azért ez így egy elég erős csúsztatás. Nem piszkálódásból, de érdemes lenne közelről megnézned pár modern OOP programot.
vagy például ugyanemiatt a konkurens programfuttatás is minimum problémás, hacsak nem lehetetlen?
Miért lenne lehetetlen? Konkurens programot írni, futtatni sosem egyszerű. A funkcionális megközelítés ennek csak egy részét tudja megoldani.
Márpedig ez egyre égetőbb kérdés, hisz a hardverek programfeldolgozási sebességét már évek óta csak az újabb magok hozzáadásával tudják növelni.
Hát ez nagyon nem igaz. De az tény, hogy várhatóan egyre masszívabban párhuzamos cpuk fognak piacra kerülni.
Értem, tehát önmagában az OOP nem alkalmas párhuzamos adatfeldolgozásra, hanem modern technikákat/eszközöket kell hozzá használni. Mik ezek és hol lehet róluk olvasni?
A kétezres évek elején tíz gigahertzes processzorokat vízionáltak, ezzel szemben PC vonalon megrekedtünk három és négy gigahertz között, míg ARM vonalon kettő fölött fogyott el a kraft, és az utóbbi években a csúcsprocesszorok nyers teljesítménye is csak pár százalékot nőtt.
Értem, tehát önmagában az OOP nem alkalmas párhuzamos adatfeldolgozásra, hanem modern technikákat/eszközöket kell hozzá használni.
Ki állított ilyet, hogy nem alkalmas? Miért ne lenne alkalmas? A párhuzamosságnak semmi köze ahhoz, hogy OOP vagy sem. A feladatok, hibalehetőségek ugyanazok, mint procedurális megközelítésnél.
A kétezres évek elején tíz gigahertzes processzorokat vízionáltak, ezzel szemben PC vonalon megrekedtünk három és négy gigahertz között, míg ARM vonalon kettő fölött fogyott el a kraft, és az utóbbi években a csúcsprocesszorok nyers teljesítménye is csak pár százalékot nőtt.
Az órajel csak egy befolyásoló tényezője a processzorok teljesítményének. A valóságban jelentősen gyorsabbak a procik, mint akár pár éve. Komoly architekturális változások voltak pl az Intel procikban. Úgyhogy ez az állítás elég téves.
Megnéztem a prohardver legutolsó tesztjét a csúcs i7-ekről, ott leírják, hogy a 2011-ben megjelent 2600 és az 5960 között 30% a különbség, ami egy évre lebontva a csúcsprocesszornál átlagosan 10%-ot jelent. Viszont az előző generációs 4960 és a legújabb 5960 között már csak 5% a különbség.
Beidéztem, hogy mire írtam. Ugyanazokkal a párhuzamosságból eredő problémákkal szembesülsz OOP esetén is, mint procedurális esetben, csak kényelmesebb eszközkészletet ad a shared adatok menedzselésére (láthatóság, tulajdonlás stb).
A prohardver nem tudom hogy nézte a teszteket, de bárhogy is, 30% nagyon jelentős különbség.
Ajánlom viszont a témában Martin Thompson Top 10 Performance Folklore előadását. Minden benne van, amire fentebb hivatkoztál, és jó előadás. Őt ebben a témában nem igazán szokás megkérdőjelezni :)
Minden fejlődésnek az az alapja, ha megkérdőjelezzük az addigi kijelentéseket. Egyébként az előadás második percében pont Martin Thompson mondja, hogy bármit is állít, tévedhet, és mindenki győződjön meg maga az igazságról.
Minden fejlődésnek az az alapja, ha megkérdőjelezzük az addigi kijelentéseket.
Fura ezt olyan témában olvasni, ami egzakt és objektív módon mérhető.
Egyébként az előadás második percében pont Martin Thompson mondja, hogy bármit is állít, tévedhet, és mindenki győződjön meg maga az igazságról.
Igen. Ezt pont annál a résznél mondja, amikor kiemeli, hogy nem szabad mindent elhinni amit az interneten olvasol... Arra buzdít, hogy a munkádat mérésekre/tapasztalatra, és ne buta cikkekre alapozd. Főleg ha arról beszélsz, hogy mi minél gyorsabb... Nem azt állította, hogy nem biztos abban amit mond. Merthogy biztos benne, és igaza is van.
Srácok, végül is minden azon múlik, hogy mi az a futtatható kód, amit a proci (k) kap. Ott már teljesen mindegy, hogy milyen nyelven írtad, OOP vagy nem, egy vagy millió fájl a forrás, mikor és mi fordította , ...
Ha igazán tutira akarok menni, akkor assembly...:)
Persze ezt ma már senki sem tudja kifizetni.
Srácok, végül is minden azon múlik, hogy mi az a futtatható kód, amit a proci (k) kap. Ott már teljesen mindegy, hogy milyen nyelven írtad, OOP vagy nem, egy vagy millió fájl a forrás, mikor és mi fordította , ...
Persze, de senki nem is állított mást. Amiről szó volt, hogy Gábor szerint a mérnökök nem tudták növelni az elmúlt években a procik teljesítményét, csak a párhuzamos képességekkel nő a kapacitás. Ez viszont nem igy van, lásd pl az általam korábban linkelt előadást.
Ha igazán tutira akarok menni, akkor assembly...:)
Minden tiszteletem mellett, kétlem, hogy egy programozó meg tud verni egy jó fordítót. Annyira komplex már az, hogy mit hogy eszik szívesen a proci, hogy egy összetettebb feladat esetén a fordító komoly előnyben van.
Az jó, ha megkérdőjelezed elfogadott(nak látszó) állítások igazságát. Tehát nyugodtan "trollkodj" tovább.
De ha egy kérdést már alaposan kivesézett a Weblabor tagsága, akkor a többségre való tekintettel illendő lenne a kivesézett kérdést hosszú ideig pihenni hagyni, és csak új szempont előkerültekor vagy a hosszú kihagyás után elővenni újra.
"mi van például a funkcionális nyelveket használókkal, az ő írásaikban mindig az OOP-t ekézik": mi mást ekézhetnének? Például egymást, de annyira kevesen vannak, hogy úgy érzik, egymás ekézésével még tovább sorvasztanák a szívüknek oly kedves paradigmát. Például az imperatív nyelveket, de azokat nem tekintik ellenfélnek, érthető okokból. Például a logikai nyelveket, de azokat még a funkcionálisakhoz képest is szűkebb tábor tartja a legjobb útnak. Tehát csak az objektumorientált nyelveket ekézhetik jóízűen. Tehát aki ekézni akar közülük, az előveszi az ekéjét, megfeni az élét, és nekiesik az OOP-nek.
"mert például az objektumoknak állapota van, emiatt egy metódust kétszer meghívva nem tudod garantálni, hogy ugyanazt az eredményt adja vissza": két lehetőség van. Vagy eleve eltérő eredményt várunk a metódustól, és ezért nem okoz gondot az eltérés, vagy azonos eredményt várunk tőle, és ennek tudatában írjuk meg a kódját. Aki azonos eredményt vár el, de nem ennek megfelelően írja meg a kódját, az zöldfülű, vagy ekézni akar (van rá példa!). A funkcionális nyelvekben nincsenek metódusok, csak függvények, és azoktól mindig azonos eredményt várunk el - ezt más paradigmát követő nyelvektól számonkérni botorság. Eltérő szemléletek, eltérő előnyökkel és hátrányokkal, vég nélkül ekézhetik egymást a híveik. Merthogy a funkcionális nyelveknek is vannak hátrányaik. Csak néhányat említek: nehezebben érthető szemantika, körülményes szintaxis, szűk körű elterjedtség, viszonylagos lassúság. E 4 púp közül egy-egy konkrét funkcionális nyelv ritkán viseli mind a négyet, de hármat többnyire igen. A szemantikus nehézségeket pedig sosem tudják kinőni! Programozni nehéz, ezzel minden programozni nem tudó tisztában van. A funkcionális nyelvek pedig még a programozók többségének is nehezen érthetők, tehát sosem terjednek el igazán, emiatt mindig valahogy félérettek maradnak, szűkebb eszközkészlettel, kicsiszolatlan fordítókkal ésvagy értelmezőkkel. Pont ettől van ekézhetnékje a lánglelkű híveiknek.
Az objektumorientált nyelvekben "ugyanemiatt a konkurens programfuttatás is minimum problémás, hacsak nem lehetetlen" lenne? Nem igaz. Én is többször belefutottam már az OOP ilyen ekézésébe, de le sem álltam vitázni a szerzőjükkel, mert nem értik a probléma lényegét, mert nem akarják érteni. A konkurens programrészek által hozzáférhető állapotok megosztottsága hordozza a veszélyt: egymással megosztott memóriaterületeik (például globális változók) és a közös környezetük minden eleme (fájlrendszer, portok, adatbázisok, operációs rendszer stb.). Ezek közül a globális változókat általában érdemes messzire elkerülni, a közös környezettel pedig a funkcionális nyelvekben is kellő gondossággal érdemes bánni. Tehát a funkcionális nyelvek vérmes hívei az árnyékbokszoláshoz hasonló hibát vétenek ezt az OOP-ellenes érvüket hangoztatva.
"a hardverek programfeldolgozási sebességét már évek óta csak az újabb magok hozzáadásával tudják növelni": ez nagyjából 2005 óta így van. Eltelt 10 év, és a jelek szerint még mindig nem ment át a szakmai köztudatba. Kell még tíz év... és láss csodát, a funkcionális nyelvek akkor is megmaradnak majd egy szűk szakmai tábor kedvenc vesszőparipáinak. Mert roppant értékes tapasztalatokkal gazdagítják a számítástudományt, de aki azt hirdeti, hogy a funkcionális programozás (FP) a jövő útja, az hamis próféta, és ez nagyjából mostanra egyértelművé vált, lásd a fent említett púpokat.
Pár hónappal ezelőtt már hozzászóltam az OOP kontra FP témához itt. Mérlegeltem, hogy írjak-e cikket erről, de letettem róla. Elnézést kérek tőletek, de sajnálom rá az időt. Higgyétek el, sokat tanulhattok, ha megismertek egy funkcionális nyelvet, erre a célra az OCaml-Erlang-Haskell trió egyik tagját ajánlom (Haskellt csak az elszántaknak). És higgyétek el, nem érdemes sok időt szánni a funkcionális nyelvekre, hiába hirdetik ezt az igét a szakma egyes nagyágyúi. Kivétel: a nagy biztonságú programokat igénylő területeken mozgó egyes cégek (Magyarországon nem ismerek ilyet). Mert a funkcionális nyelvekben nagyon jól körülhatárolhatók a veszélyes programrészek, és kellő munkaráfordítással majdnem teljesen megbízható szoftverek készíthetők, amire az említett területeken elég pénz jut. Kétszer is azt kértem most, higgyétek el az állításomat - azért, mert nem érvelek tovább erről, mindenki maga döntse el, hisz-e nekem.
Szerintem az OOP kontra FP témát érdemes mellőzni a Weblaboron mindaddig, amíg nem kerül a TIOBE listáján az első 10 közé valamelyik tisztán funkcionális nyelv. A mi életünkben szerintem nem kerül erre sor.
Eltérő szemléletek, eltérő előnyökkel és hátrányokkal, vég nélkül ekézhetik egymást a híveik.
Remek mondat. Igen, pont ez zavar, pedig alapvető emberi minta. Mindig táborokba kell rendeződni, aztán bebizonyítani, hogy jobbak vagyunk, mint a többi tábor. A gyökérkonfliktus, hogy mindegyik tábor "az igazat" fogja hirdetni. Szerintem csak a széles látókör segíthet kilábalni.
Két alapvető vonása az emberi természetnek: a valahova tartozás és a bizonyosság utáni vágy – amelyek a széles látókörrel nem egyeztethetőek össze –, ami miatt ez sosem fog változni.
Örülök, hogy felmerült a nem tisztán funkcionális nyelvek kérdése. Nem ez az egyetlen kissé homályos részlet a hozzászólásomban, de a teljesen pontos megfogalmazás többszörösére nyújtotta volna, értékes tartalmi többlet nélkül.
Nem ismerem eléggé az F#-ot a % megítéléséhez, de valóban, a Scalához és az OCamlhez hasonlóan mindhárom fő paradigmát támogatja (imperatív, OOP, FP). Az ilyen többarcúság egyre gyakoribb.
De tapasztalataim alapján a nyelvek mint munkaeszközök megítéléséhez szorosan hozzátartozik a gyökereik és az őket körülvevő kultúra, ökoszisztéma. A bennük írt, velük használható libraryk, keretrendszerek, engine-ek és alkalmazások, a fordítóik és értelmezőik, az ezeket készítő cégek és munkacsoportok. Az eredetük, a szellemiségük és a velük dolgozó fejlesztők jövőre vonatkozó elképzelései. És sok más humán elem, illetve szoftveres képződmény.
Nos, a Scala a Java ökoszisztémájából nőtt ki, nem is akarják kiszakítani onnan. Az F# és a C# hasonló viszonyban áll. Objektumorientált nyelvek két utódja, meglepne, ha nem kötődnének ezer szállal az őseikhez. Csak az JVM-en, illetve a .NET CLR-en futtathatók. (Javához régóta vannak közvetlenül gépi kódra fordító "statikus"compilerek, de kevesen használják ezeket.) Újraírtak bennük minden meglévő Java és C# libraryt, netán van teljesen saját megfelelője ezeknek? Nagyon meglepne. Vagyis a ténylegesen használható eszközeik roppant vegyesek (OOP+FP). Mintapéldákban simán elérhetik az általad említett 95%-ot. Jellegzetes példa az OOP+FP keveredésére a Play keretrendszer. (Azért említem, mert az első verzióját próbálgattam egy ideig.)
Az OCaml nemcsak elvileg sorolható az elsősorban funkcionális nyelvek közé, hanem a gyökerei és a kultúrája is erősen FP-irányultságú.
A TIOBE-re vonatkozó megjegyzésem egyébként inkább kihívás ;), semmint megállapítás.
És ami a lényeget illeti: az "ugyanemiatt a konkurens programfuttatás is minimum problémás, hacsak nem lehetetlen" állítás egyből elhasal, amikor egy funkcionális fővénájú többparadigmás nyelvben írt programban meghívunk egy objektumorientált nyelvben írt metódust, szolgáltatást stb. Csak színtiszta FP esetén lehetne hatásos érv. Konkrétan: F#-ból illetlenség C# libraryt használni, Scalából Javát - csak éppen kényszer.
Mainstream nyelvek közül szinte egyik sem egy paradigmát valósít meg tisztán, hanem kevertek (C++, Java, C#, Visual Basic, stb). Tehát a megállapítás, miszerint tisztán funkcionális nyelv nem fog vezető szerepet betölteni a mi életünkben, helytállónak tűnik, de ez a trend úgy szint igaz minden más egyéb, jelenleg ismert, tisztán egy stílust követő nyelvre is.
A TIOBE-féle ranglista különválasztja a VB-t és a VB.NET-et, ami mint látható, egy új elgondolás, mivel az előző év azonos szakaszában még az ősrégi VB nem volt sehol. Tehát ha összeadjuk a kettőt akkor máris egy "functional-first programming language" bekerült az első tízbe.
Én csak azt nem értem, hogy mitől válik az ismeretterjesztés szempontjából fontossá, hogy most tiszta vagy nem tiszta funkcionális nyelvek terjednek el. A lényeg, a hajlandóság és az igény megvan eme paradigma használatára. Magam is lassan minden nap használok F#-t vagy JS-ben funkcionális stílust követek és nem a NASA-nak írok sugárhajtómű-vezérlőt.
Véleményem szerint, eldönteni azt, hogy funkcionális nyelvek kevésbé olvashatóak-e, csak úgy lehetne, ha tudományos módszert alkalmazva, kísérleteket végeznénk, pl. azonos intelligenciájú, kulturális hátterű diákokat két csoportra bontanánk, egyiknek funkcionális, a másiknak meg procedurális nyelvvel tanítanánk a programozás alapjait; majd megvizsgálnánk a kapott eredményt.
Igazából az egész topicra jellemző, hogy üres frázisokat pufogtat mindkét oldal. Szerintem érdemes lenne először valamilyen tudományfilozófiai elgondolásban megállapodni s utána visszatérni a témához használható érvekkel és haladni egyről a kettőre.
A TIOBE ranglistáját alapul véve jónéhány egyetlen paradigmát követő nyelv sorolható a mainstreambe. Az első 20 közül tisztán imperatív: C, PHP (nemrég legalábbis), Pascal, PL/SQL (a 8-as verziójáig). Ez 20-ból 4, de legalább 2, ez 10-20%-os arány. Tisztán imperatív aligha jöhet fel rajtuk kívül az élmezőnybe, tehát ez az arány csak csökkenhet (vagy stagnálhat).
Tisztán objektumorientált is van legalább 3: Java, Delphi, Ruby, ez 15%. És szerintem jelenhet meg hasonlóan sikeres még, tehát akár nőhet is az arányuk (ennyit a jövőtlenségükről).
Kevert paradigmájúak szintén feljöhetnek az élmezőnybe (vagyis ezeknek is van jövője), de ezekre pont nem lesz jellemző a funkcionálisaknak tulajdonított nagy előny, a megosztott állapotok és a mellékhatások elkerülésének köszönhető könnyed párhuzamosíthatóság. Vagyis ez a nagynak beállított előny ugyan kellemes, de nem ellensúlyozza a hátrányaikat - én ezt állítottam, a TIOBE-val csak megpróbáltam konkrétabbá tenni az állításomat, pont a frázispuffogtatás ellentéteként. A tisztán vagy majdnem tisztán az FP-t követő nyelvek jelenleg 0%-on állnak a TIOBE első 20 nyelve között (ez elég keményen jelzi a valóságot), és az első 10 közé még úgy 50 évig nem kerül be ilyen (ez pedig nagyon erős állítás). Sajnálom, hogy ennél konkrétabban nem tudom cáfolni a funkcionális nyelvek állítólag fényes jövőjét...
Azt viszont leszögezhetnénk, hogy sem a VB, sem a VB.NET nem "functional-first".
"mitől válik az ismeretterjesztés szempontjából fontossá, hogy most tiszta vagy nem tiszta funkcionális nyelvek terjednek el": nem az ismeretterjesztés a tét, hanem az "ugyanemiatt a konkurens programfuttatás is minimum problémás, hacsak nem lehetetlen" állítás érvényessége. Ha igaz, akkor a tisztán funkcionális nyelveké a jövő (esetleg egy teljesen új paradigmát követőké, de semmiképpen nem az objektumorietáltaké, és az FP-t mással keverők is kiszorulnak majd).
Szerintem, ha előbb a top 10-nél alacsonyabb rangúak, nem mainstream nyelveknek voltak implicit kijelentve, akkor most se foglalkozzunk velük.
de ezekre pont nem lesz jellemző a funkcionálisaknak tulajdonított nagy előny, a megosztott állapotok és a mellékhatások elkerülésének köszönhető könnyed párhuzamosíthatóság
Nem, nem veszted el, egy functional first nyelven minden adott, hogy a szükséges programrészeket ebben a szellemiségben írd meg.
Azt viszont leszögezhetnénk, hogy sem a VB, sem a VB.NET nem "functional-first".
Persze, én arra akartam utalni, hogy mivel VB.net 9. a VB 10., ha ezt egybeveszem, akkor máris a 10. helyre felugrik az F#, az pedig "functional-first".
"mitől válik az ismeretterjesztés szempontjából fontossá, hogy most tiszta vagy nem tiszta funkcionális nyelvek terjednek el": nem az ismeretterjesztés a tét,
Szerintem az OOP kontra FP témát érdemes mellőzni a Weblaboron mindaddig, amíg nem kerül a TIOBE listáján az első 10 közé valamelyik tisztán funkcionális nyelv.
"Vagy nem.": hát... abba a táblázatba sok mindent belekutyultak... Paradigmának titulálják a képességeket és a lehetőségeket is, amik csak segítenek a megvalósításban. A Wikipedia nagyon hasznos, de rengeteg pontatlanság van benne.
"egy functional first nyelven minden adott, hogy a szükséges programrészeket ebben a szellemiségben írd meg": igen, de F#-ban dolgozva aligha írod majd újra a menet közben szükséges libraryket, ehelyett a meglévő, nem funkcionális elemekre is támaszkodsz, elveszítve a tisztán funkcionálisaknak tulajdonított párhuzamosíthatósági előnyt.
Paradigmának titulálják a képességeket és a lehetőségeket is, amik csak segítenek a megvalósításban.
Értem. Tehát ha egy nyelv nyelvi eszközöket biztosít, hogy több stílust használhass, attól nem lesz több stílusú a nyelv, csak támogat, hogy több stílust használjál. Remek.
A Wikipedia nagyon hasznos, de rengeteg pontatlanság van benne.
Tehát mert valahol a wikipedia pontatlan, akkor ez is törvényszerűen pontatlan? Legalább egy épkézláb példát mutattál volna, hogy a felsorolt nyelvek közül az mégis miért nem több stílusú nyelv.
igen, de F#-ban dolgozva aligha írod majd újra a menet közben szükséges libraryket
Milyen zárt logikai lánc, nyelvi elem gátol meg ebben úgy mégis? Továbbá azért mert te kijelntetted, hogy nincsenek újraírva benne szükséges libek, még nem jelenti azt, hogy ez így is van. Szerintem hozz konkrét, objektívan támadható példákat ahelyett, hogy 3 hozzászólással előtti feltételezésedet tényként közlöd.
Én csak arra akartam rájönni, hogy miért következik explicit, hogy nem kell Weblaboron funkcionális paradigmáról beszélni, mert a Haskell(vagy egyén pure cucc) nincs a top tízben. Ettől a 'hatalmas' problémától eltekintve, más mainstream nyelvek rendre hozzák be funkcionális nyelvek jól ismert eszközeit, mint pl. Higher-order functiont. Plusz functional-first nyelvek is folyamatosan törnek fölfele, ami a TIOBE ranglistán is jól látható.
Utána meg elkezdtük ezt a nem is igazi funkcionális az, mert izé sajt, meg mert nem használtam, meg amúgy is wikipédia dumát.
"Értem. Tehát ha egy nyelv nyelvi eszközöket biztosít, hogy több stílust használhass, attól nem lesz több stílusú a nyelv, csak támogat, hogy több stílust használjál. Remek.": paradigmákról volt szó, nem stílusokról. Paradigmák alatt eredetileg az adott nyelvcsoportra jellemző, átfogó szemléletet és eszközkészletet értették. Ez a paradigma fogalmának a számítástudománynak erre a területére vetített értelmezése. Akkor alakult ki, amikor az imperatív Fortran (1957) után megjelent egy merőben eltérő szemléletű nyelv, a funkcionális Lisp (1958). Az objektumorientált Smalltalk és a deklaratív Prolog (mindkettő 1972) megjelenésével kialakult a programozást máig uraló fő paradigma-négyes. Az évszámokat a Wikipediából másoltam ide :). Ha ismered ezeket a paradigmákat, akkor te is tudod, hogy ezekhez semmi köze annak, hogy egy programnyelv mondjuk vizuális. Hogy jön ide a megjelenítésmód? Vagy az, hogy lehetséges benne reflection? Vagy a generikus és a metaprogramozási lehetőségek? Az elosztott programok készítése a fordítótól/értelmezőtől függ, a konkurencia lehetőségét sok nyelvbe utólag dolgozták bele, olykor minimális módosítással. Néhány funkcionális elem megléte kevés ahhoz, hogy az adott nyelv funkcionális programozásra alkalmas legyen, a táblázatban a nyelvet többségét mégis funkcionálisnak minősítették. Zavaros kutyulék az egész.
"Legalább egy épkézláb példát mutattál volna, hogy a felsorolt nyelvek közül az mégis miért nem több stílusú nyelv.": oké. A C nem is szerepel a táblázatban, mert a táblázat címe "List of multi-paradigm programming languages". Maradjunk annyiban, hogy a C tisztán imperatív. Nézzük a PHP-t. Eredetileg tisztán imperatív, a PHP 5 óta objektumorientált programok is írhatók benne. A táblázat szerint funkcionális (marhaság), és "reflection" (ez ugyebár nem paradigma). A Pascal sincs benne a táblázatban, a C-hez hasonló okból. A PL/SQL szintén, noha mint múltkor említettem, a 8-as verziójában már van OOP. Ezeket említettem az (eredetileg) egyetlen paradigmát követő nyelveknél.
"Milyen zárt logikai lánc, nyelvi elem gátol meg ebben úgy mégis?": semmilyen. De nem fogod újraírni :). És ezen áll vagy bukik az említett kérdés.
"azért mert te kijelntetted, hogy nincsenek újraírva benne szükséges libek, még nem jelenti azt, hogy ez így is van": nem jelentettem ki. Fogalmam sincs, hányat írtak újra. Nem nekem kellene bizonyítanom, hogy az F# nem tisztán funkcionális (pure functional), hanem neked kellene bizonyítanod a tisztán funkcionális programozás lehetőségét F#-ban, ha fenntartod azt, hogy F#-ban dolgozva igenis élvezed a tisztán funkcionális programozás szóban forgó előnyeit (t.i. a mellékhatások hiányát és a könnyed konkurenciát).
Tudod mit? Ne bizonyíts semmit. Dolgozz nyugodtan abban a tudatban, hogy F#-ban nem kell figyelned a mellékhatásokra és lazán írhatsz konkurens programokat. Sokat tanulhatsz majd a logjaidból és a debuggerrel :).
Köszönöm a választ. A funkcionális nyelveket nem azért hoztam fel, mert jobbak lennének – amit nem hiszek, pont az általad írt érvek miatt is –, hanem mert az említett cikkek rámutatnak az OOP gyengeségeire. Valahol korábban írtam már, hogy az igazság a kettő között lehet.
A globális változók használatát egyébként funkcionális nyelvekben sem tudják elkerülni.
Továbbá úgy gondolom, hogy attól, hogy egy globális változót egy objektum lokális változójává teszünk, attól az még ugyanúgy globális marad. Blaze írta korábban, hogy eszközökre van szükségünk ahhoz, hogy a komplexitást elrejtsük a kód mögé. Ez ugyanaz az eset, és nem hiszem, hogy megoldás, mert csak felületi kezelést ad: enyhébbnek tűnnek a tünetek, de a probléma ugyanúgy megmarad.
Azért küldtem be a blogmarkot, mert az alapgondolatával egyetértek, miszerint a szoftverfejlesztés és a szoftverek mára túl öszetettekké váltak. Ez rengeteg problémát okoz már most, a jövőben pedig többet. A megoldás erre szerintem az, hogy minél kevesebb és minél egyszerűbb eszközt használunk a szoftverfejlesztés során.
Ha komplex szoftvert akarunk gyártani egyszerű eszközökkel, akkor a fejlesztésre szánt idő hogyan fog alakulni? A karbantartás, hibajavítás, megváltozott specifikációhoz való alkalmazkodás mennyire lesz drága? Mennyire lesznek a programozók egyszerűen lecserélhetőek?
Fentebb már leírtam, de valószínűleg elveszett az áradatban.
Minél egyszerűbb eszközöket használsz, annál alacsonyabb lesz a belépési küszöb. Egyszerűbb lesz átlátni a kódot, megérteni, így több ember el tudja végezni ugyanazt a munkát, azaz könnyebben cserélhető bárki.
Szerintem ez egy olyan hipotézis, ami egyszerűen nem állja meg az életben a helyét.
Én használtam munkám során ilyen-olyan eszközöket, de úgy hiszem hogy ahogy egyre összetettebb a fejlesztési folyamat, úgy válik egyre könnyebbé minden. Nem értem azokat az embereket, akik nem használnak IDE-t, mert pl sok memóriát eszik és lassan indul el (nagyon jó érvek..)
Régen is tanulni, fejlődni kellett, hogy valaki jó programozó legyen, és ez most is így van. Sose volt alacsony a belépési küszöb.
és azt ne mondja nekem senki, hogy ha nano-val szerkesztem a kódot, akkor produktívabb leszek.
vagy ha pure javascript-ben csinálok mindent, ahelyett hogy mondjuk angular-t használnék, akkor hamarabb kész lesz a termék, vagy használhatóbb lesz.
Eszközön nem csak IDE-t vagy szövegszerkesztőt értek, hanem nyelvi elemeket is, ott is érdemes minbenben az egyszerűségre törekedni.
Mondok egy példát: egy nagyobb projekten dolgozom, ahol az elején írtam egy munkamenetkezelő osztályt pár egyszerű metódussal, a felhasználókezelő osztály pedig erre a munkamenetkezelőre épült.
Múltkor átnéztem a kódot, és rájöttem, hogy teljesen felesleges ez a sok absztrakció. Egyrészt a munkamenetkezelőt, másrészt a felhasználókezelőt mindig példányosítani kellett, aztán lehetett csak használni őket. Mivel ezek a részek az évek során nem változtak, kiderült, hogy nyugodtan írhatjuk közvetlenül a $_SESSION-t, senkit nem zavar.
Ezután kidobtam a munkamenetkezelő osztályt, a felhasználókezelőt pedig átírtam procedurálisra, így egyszerű függvényhívásokkal, példányosítás nélkül elérhetjük az adatokat. A kód egyszerűbb, átláthatóbb lett, és némileg rövidebb is.
Régen is tanulni, fejlődni kellett, hogy valaki jó programozó legyen, és ez most is így van.
Ez fontos. De azt is tanulni kell, hogy az ember egyszerűen és egyszerűségben gondolkozzon.
vagy ha pure javascript-ben csinálok mindent, ahelyett hogy mondjuk angular-t használnék, akkor hamarabb kész lesz a termék, vagy használhatóbb lesz
Attól függ, hogy az Angular mennyire szolgálja ki az igényeiteket. Mi ext.js-sel kezdtünk, sok problémánk volt vele, majd dobtuk, és átírtuk saját kódra. Gyorsabb lett, kisebb lett, egyszerűbb lett.
"... felhasználókezelő osztály pedig erre a munkamenetkezelőre épült."
Ha jól képzelem el ezt a volt kódot (hogy nálad a felhasználókezelő, egy Controller,BO,DAO keveréke), akkor jaj. Mi köze van a felhasználókezelőnek a munkamenethez?
"...nyugodtan írhatjuk közvetlenül a $_SESSION-t, senkit nem zavar."
Jaj, átváltozott ajjajá bennem. Kérlek használd a felhasználókezelőd kódbázisát parancssorból futtatva (nem weboldalad meghívni curl-el nem ér). Vagy kérlek unittesteld a felhasználókezelőd. Vagy kérlek bizonyítsd be hogy a korábbi működés, és a mostani refaktorált működés pontosan ugyanúgy működik.
Mi köze van a felhasználókezelőnek a munkamenethez?
A felhasználó adatait a munkamenetben tároljuk.
Kérlek használd a felhasználókezelőd kódbázisát parancssorból futtatva
Miért?
kérlek unittesteld a felhasználókezelőd
A modulnak két függvénye van, az egyikkel a felhasználó adatait írjuk be- és kijelentkezéskor, a másikkal pedig kiolvassuk őket. Ez a kettő évek óta nem változott, és nem is fog, teljesen felesleges tesztelni, mert jól működik.
bizonyítsd be hogy a korábbi működés, és a mostani refaktorált működés pontosan ugyanúgy működik
Kidobtam belőle az OOP ceremóniát, és közvetlenül a munkamenettel dolgozunk. A többi ugyanaz, mint eddig.
Ti lehet. Három kódbázis ami előttem van (az alapján irom): cli-ben nincs munkamenet, SOAP apiban sincs, és Restful api-ban sincs.
Miért?
Ezek szerint ti nem szoktatok parancssorból futtatni semmit. Lehet hogy én dolgoztam (és dolgozok) perverz helyeket, de az üzleti logika jó része háttérfolyamatban volt/van.
... évek óta nem változott, és nem is fog
Ha már ezt igy meg tudod mondani, akkor már csak annyi kérdésem volna: Lottó számok?
teljesen felesleges tesztelni, mert jól működik.
Jah, innentől felesleges tesztelni... Látom érted a unittestelésnek az értelmét. (nem). Talán nem az az egyik értelme a unittestnek hogy nyugodtan refaktorálhatsz, amig nem törnek el a tesztek?
Kidobtam belőle az OOP ceremóniát, és közvetlenül a munkamenettel dolgozunk. A többi ugyanaz, mint eddig.
Magyarán nem tudod bizonyitani hogy ugyanúgy müködik mind korábban.
Bocs, (kezdek) ingerült lenni rád, itt befejeztem a vitát veled.
Megvallom, vonakodtam belefolyni a szálba, nem szeretném növelni a flamenek látszó tárgyat, de -minden kötekedés nélkül, és nem fogok visszaszólni, vagy megfúrni a választ-, annyit szeretnék kérdezni Gábortól: ha a kliens megkér, hogy adj bizonyítékot a munkád helyességéről (legyen az a refaktor, legyen az bővítés, vagy akár csak úgy általában), akkor tesztek nélkül mivel igazolod az elvárt működés teljesítését? (a session-os felvetés kapcsán kérdem)
És a megrendelő jár rosszul vele, vagy ti? Valaki ki fogja fizetni, hogy mindent újra végig kell nyomkodni. A megrendelő biztos fizet érte. Ha mással nem, akkor azzal, hogy adddig se produktív munkát végeztek neki. Manuális teszt kell, de 100%-ban így tesztelni őrült nagy lóvé égetés. A hibázási lehetőségekről nem is beszélve...
A megrendelő kérése volt, hogy ne írjunk automatizált teszteket, de ez racionális döntés volt a fentiek fényében. Az unittesztekhez szükséges időt így fejlesztésre és kézi tesztelésre tudjuk fordítani.
GUI automatizált tesztelésére is vannak eszközök. Egyébként meg mialatt végigteszteled ugyanazt, tudsz írni n db új tesztet, amivel növeled a lefedettséged, ami mindenki érdeke. Te azonnal észreveszed ha valamit eltörsz, kevesebb az iteráció, megvan még a context, mert fejlesztési időben törik el a teszt stb... Rengeteg időt spórolsz vele. A megrendelőnek meg n-nel több biztosítéka van, hogy a kifizetett program úgy működik, ahogy megbeszéltétek. Ez minden, csak nem racionális döntés. Ha meg a megrendelő ebbe beleszól, akkor ott valami amúgyis el van tolva...
Érzelmeket nem érdemes belevinni :). Bármennyire is rálátunk a "komplex", modern technikák és eszközök előnyeire, tapasztaltuk őket, valakinek, aki ezeket valamilyen okból nem akarja látni, úgy látszik, esélytelen megmutatni, hogy miért veszélyes játék, amit játszik.
Addig jó, amíg nem kerül a csapatodba egy ilyen fejlesztő :).
Egyébként imádom, hogy nekiállt refaktorálni, rászánta az időt és kigyomlálta a gyűlölt OOP-t. Biztos megérte :). Az a baj, hogy ez már csak rosszabb lesz, ahogy öregszik.
Az érzelmeket félretéve szerintem ezeknek a vitáknak -egy pontig- tényleg van hasznossága. Ha mást nem, mérlegelni kényszerülsz a saját érveidet, felülbírálod magad, más megfogalmazási, meggyőzési módokat találsz, amik ha az adott helyzetben épp nem is működnek, te mindenesetre végiggondoltad, és ez később jól jöhet.
Ez oké, de évek óta mennek ugyanezek az értelmetlen viták, végtelenítve. Mondjuk a Gáborral vitatkozóknak több generációja megunta már, csak ő konstans :).
A háttérfolyamatok nálunk cron jobok, ahol nincs szükség felhasználókezelésre, sem munkamenetre. Nincs sem SOAP, sem pedig Restful API-nk sem. Az üzleti logikánk az előtérben fut, aminek fontos elemei a felhasználó adatai.
Ha már ezt igy meg tudod mondani, akkor már csak annyi kérdésem volna: Lottó számok?
Biztos vagyok benne, hogy nem fog változni, de ha mégis, akkor majd a kívánalmaknak megfelelően fogjuk átalakítani.
Talán nem az az egyik értelme a unittestnek hogy nyugodtan refaktorálhatsz, amig nem törnek el a tesztek?
Próbáltam már többször bevezetni az automatizált tesztelést, de a szoftverünk jellegéből adódóan egyrészt nem sok értelme van, másrészt pedig nem is lenne túl sok haszna.
Az utóbbi három évben a szerveroldali kódot háromszor refaktoráltam (nyugodtan), a kimenet megváltoztatása nélkül a belsőt teljesen újraírtam, újraszerveztem. A három évben két apróbb szoftverhibánk volt, amik nagyon speciális esetekben jöttek elő. Számomra ez elég bizonyíték arra, hogy kézi teszteléssel is lehet jó programot írni, ha betartjuk az általam hangoztatott alapelveket.
Magyarán nem tudod bizonyitani hogy ugyanúgy müködik mind korábban
Próbáltam már többször bevezetni az automatizált tesztelést, de a szoftverünk jellegéből adódóan egyrészt nem sok értelme van, másrészt pedig nem is lenne túl sok haszna.
Én pedig úgy vélem, hogy akár milyen jellegű is a szoftver az automatizált tesztek sohasem ártanak. Rengeteg hibát fognak meg. Rászoktatnak, hogy olyan kódot írj, amit lehet tesztelni. A kód, amit lehet tesztelni általában könnyebben átlátható, és mindenképpen könnyebben átírható, mint az, amit nem lehet tesztelni, vagy amihez nincsenek tesztek.
Tesztekből is több fajtát lehet, és érdemes is írni. Lehetnek egyszerű unittesztek, amik egyes függvények működését tesztelik, funkcionális tesztek, integrációs tesztek.
(jelentem nem vesztettél sokat, ha ez tényleg így volt korábban. És mielőtt azt mondanád hogy az singleton volt megkérdezem, - __clone() ugyebár private volt? nem csak a __construct() ?)
Ezt most vita nélkül, ha te azt mondod hogy szerinted a korábbi verziód az OOP-volt, én elfogadom. - és onnantól megpróbálom ignorálni mikor az OOP szidod.
A letrehoz() nem a legszerencsésebb választás, peldany() jobb lett volna. Egyébként valóban singleton mintát használtunk, mivel az egész rendszeren belül egy darab felhasználókezelő modulra van szükség.
Használhattuk volna az általad javasolt formát is a new User-rel, de ahhoz minden kérésnél példányosítani kellett volna a script elején az objektumot, aztán pedig át kéne adni azoknak a moduloknak, amelyeknek szüksége lehet rá.
A singleton minta esetünkben azért jobb, mert így csak akkor példányosítunk, ha kell valamelyik adata.
Mind a konstruktor, mind pedig a klónozó metódusaink publikusak, de a klónozó mindig üres.
Singleton helyett érdemesebb di container-t használni. Abba össze lehet szedni az ilyen dolgokat, és megfelelően paraméterezni, ha szükség van rá. Szvsz. nem szerencsés, ha egy osztály saját magát példányosítja.
Próbáltam de képtelen vagyok rávenni magam hogy megpróbáljam elmagyarázni hogy az
A, az nem singleton (csak annak használt valami)
B, és úgy egyébként azért sem lett volt szerencsés a "singleton" mert ..
C, felhasznalo->adat_olvas('azonosito') ? miért rettentő ronda. (ha jól értem az egy ->getId()). Még ha az "azonosito" valami osztály konstans volna akkor azt mondanám hogy egye fene. de így? na mindegy.
D, PSR-2 !
F, inf3rno, 210. hozzászólásával egyetértek. (és hogy miért)
G, miért volt tökéletesen értelmetlen a "refaktorálása"
eddig kezdtem azt hinni hogy ő ugyan utálja az OOP-t, de azért mert tud nélküle szép, átlátható, karbantartható kódot írni. (mert tényleg lehet OOP- nélkül is, csak szerintem PHP-ban nem érdemes, de ez más kérdés).
Minél egyszerűbb eszközöket használsz, annál alacsonyabb lesz a belépési küszöb.
Ez így igaz.
Egyszerűbb lesz átlátni a kódot, megérteni, így több ember el tudja végezni ugyanazt a munkát, azaz könnyebben cserélhető bárki.
Ez természetesen nem igaz, pont azért használunk bonyolultabb eszközöket, hogy egyetlen ember el tudja végezni ugyanazt a munkát, amit egyszerűbb eszközökkel csak több ember tud megcsinálni ugyanannyi idő alatt.
Pont erre irtak feljebb kommentben, hogy mindig az utan kutakodsz hol van egy jo kis cikk ami pont az OOP gyengesegeire mutat ra, amikor rengeteg elonye is van, amiket ugy tudnal meg ha hasznalnad es kiismerned.
Negativan allsz alapbol hozza, ahelyett hogy egyszer nagy levegot venned es melyebben elmerulnel benne. Hasznosabb lenne szamodra es a vitakban masok szamara is.
A Pascal sincs benne a táblázatban, a C-hez hasonló okból. A PL/SQL szintén
Ami ugye teljesen irreleváns, mert se a Pascal sem a PL/SQL nem mainstream, az utóbbira pedig úgy szint érvényes a fentebb írottak, hogy teljesen mindegy, hogy valamikor régen mi volt.
nem jelentettem ki.
: igen, de F#-ban dolgozva aligha írod majd újra a menet közben szükséges libraryket, ehelyett a meglévő, nem funkcionális elemekre is támaszkodsz, elveszítve a tisztán funkcionálisaknak tulajdonított párhuzamosíthatósági előnyt.
Te szótáradban mit jelent a kijelentés, ha ez nem az?
Tudod mit? Ne bizonyíts semmit.
Ebben 100%-ban egyetértünk. Nem fogok bizonyítani semmit, mert nem én jelentem ki, hogy abban aztán nem lehet funkcionálisan programozni.
Szerintem ne foglalkozzunk ezzel többet, megyek inkább debuggolom a nem funkcionális funkcionális kódom.
Nem értem, miért vagy ennyire agresszív. Még ha téved is a másik, miért nem lehet higgadtan, intelligensen cáfolni?
Attól még, hogy PHP-ban lehet bizonyos funkcionális mintákat alkalmazni, nem jelenti azt, hogy maga a nyelv funkcionális, hisz alapvetően nem erre lett kitalálva.
"Agresszivitásom" abból fakad, hogy a hideg kiráz attól, ha valaki szándékosan ferdít. Funkcionális proramozáshoz szükséges nyelvi elemek, mint a higher order function, rekurzió stb mind megvannak. Ezt elfogadva, azzal támadni, hogy egy programozási nyelvben nem valószínű, hogy a munkához szükséges libeket megírom az elég vicces, főleg úgy hogy meg sincs nevezve, hogy pontosan mégis mi az, ami nincs megírva és hogy mi az a misztikus ok, amiért azt nem is lehet megírni.
Tobbi, mint a PHP azért nem több stílusú, mert valamikor régen nem volt az, az már csak hab a tortán.
Lehet, hogy igazad van, nem tudom, annyira nem ismerem a PHP/Erlang stb. futtatókörnyezetek működését. A következő jutott viszont eszembe: a funkcionális nyelveken írt programok (tudomásom szerint) jóval memóriaigényesebbek, mint a többi, mert bennük nincsenek igazi változók. Tehát, ha a következőt írod (legyen PHP szintaktikával):
akkor a novel() függvény futtatásakor lefoglalja az új memóriaterületet az új értéknek, beleteszi az értéket, majd amikor visszatér, a régi $ertek "változót" eldobja, és az az újra fog mutatni.
Ha ez valóban így van, akkor a PHP azért nem a legalkalmasabb funkcionális programozásra, mert a szemétgyűjtő csak viszonylag ritkán fut le, azaz egy nagyobb rekurzió után nagyon felmehet a memóriahasználat. Egy kifejezetten funkcionális paradigmára kihegyezett nyelvi futtatókörnyezetben ezt nagyon jól le lehet optimalizálni.
Én megnéztem pár videót a témában, csak hogy egy kicsit képben legyek. A funkcionális programozáshoz eleve olyan fordító kell, ami ilyesmire tud optimalizálni. Ha nekiállsz PHP-ban vagy javascripten funkcionálisan programozni, akkor valószínűleg az egyszerre létrejövő túl sok stack miatt el fog szállni a program, legalábbis Bob Martin szerint. (https://www.youtube.com/watch?v=7Zlp9rKHGD4) Ő mondjuk nem ezeket a nyelveket emlegette, hanem java-t meg C++-t, de szerintem kizárt hogy PHP vagy js fel legyen készítve ilyesmire, még egy normális aszinkron kódot sem lehet megírni egyik jelenlegi változatában sem.
js fel legyen készítve ilyesmire, még egy normális aszinkron kódot sem lehet megírni egyik jelenlegi változatában sem
Ez alatt mit értesz? Nekem van olyan Node.js alkalmazásom, aminek jelentős része funkcionálisan van megírva, természetesen aszinkron, és majd fél éve fut zavartalanul.
A video-ban van egy olyan részlet, hogy ciklusokat így lehet funkcionálisan csinálni:
var logFromI = function (i){
if (i<0)
return;
logFromI(i-1);
if (!(i%1000))
console.warn(i);
};
console.log("start");
var t = new Date();
logFromI(10000);
console.log(new Date() - t);
ehelyett:
console.log("start");
var t = new Date();
for (var i=0; i<10000; ++i)
if (!(i%1000))
console.warn(i);
console.log(new Date() - t);
és hogy java-ban elhasal egy ilyen a 10000 stack miatt; recursion limit vagy túl kevés memória miatt. Elvileg nodejs-ben is, ott 9500 körüli a limit, firefox-nál meg 12500 körüli.
Hmm js speciális eset lehet, gondolom azért kell így csinálni egy ciklust, hogy thread-safe legyen, js viszont azt hiszem máshogy működik ilyen szempontból, mint egy java vagy c#, mert a párhuzamosítást single thread-el és event loop-al oldja meg. Web workerekkel sincs szerintem különbség, ahogy nézem ott is az engine küldözgeti az értékeket a worker és a fő szál között szóval nincsenek ott sem közös változók. Szóval js-ben nincs is igazán értelme a funkcionális programozásnak, mert thread safety szempontjából nem hasznos, ha jól tudom más előnye meg nem nagyon van.
Nekem legalábbis ennyi jött le úgy 1-2 óra utánajárás után, bár láthatóan keveset értek a témához.
A forEach, map, filter is ciklusokat alakít át, mégsem növeli meg a stack méretét. Nem érdemes olyan nyelveken rekurziót csinálni, ami jelenleg nincs optimalizálva erre.
A rekurzió nem olyan dolog, hogy egy okos fordító bármilyet át tud alakítani iteratív változatra. Csak a jobbrekurzív függvények tudják ezt.
let factorial = (n) => n == 1 ? 1 : n * factorial(n - 1);
Ez nem jobbrekurzív (a rekurzív hívás után még van egy szorzás, azaz a stacken lévő n-re szükség van), nagy n-re mindig el fog szállni.
let factorial = (n, acc) => n == 1 ? acc : factorial(n - 1, acc * n);
Jobbrekurzív, mivel a rekurzív hívás az utolsó dolog, amit a függvény csinál. Emiatt nincs szükség stackre, a fordító egy ciklusra képzi le az egészet (rekurzió helyett egyszerűen csak lecseréli a változókat, hiszen azt a rekurzív hívás után már úgysem lehet elérni).
Ha az ember adatokkal dolgozik, akkor az esetek 99%-ban mindent meg lehet oldani a map/filter/fold függvényekkel, amik úgy vannak megvalósítva, hogy hatékonyak legyenek. Rekurzióra csak nagyon ritkán van szükség. Egyébként az ES6 része a TCO támogatása, amint implementálják a gyártók, onnantól kezdve nem kell aggódni az ilyenek miatt.
Hol is kezdje az
Miért várja a szerző, hogy tíz évvel később a szoftverek komplexitása ugyanakkora legyen, miközben a követelmények komplexitása nő? Mi köze a szoftver komplexitásának a fejlesztői környezet komplexitásához? Mi akadályozza meg a szerzőt, hogy egy egyszerű szövegszerkesztőben és parancssoros fordítóval fejlessze a Windows 8 alkalmazásait?
Már megint hogy jön ide az OOP? Hogyan lehet gyorsan és egyszerűen nagyteljesítményű és alacsonyszintű kódot írni? Miért nem lehet OOP kódot pendrive-ra másolni?
Hogyan kapcsolódik a szoftverek komplexitásához az, hogy keletkezik-e natív kód? Miért kéne, hogy egy laikus tudja olvasni a kódot? Miért nem tud angolul a szerző?
Bevallom, kezdem elveszteni a fonalat, ahogy a szoftverfejlesztés legalapvetőbb tapasztalatainak és önmagának is egyre-másra ellentmond.
Már csak egy kérdés kínoz: most akkor mindent át kell-e írni BASIC-re, vagy csak azt, amit nem akarok pendrive-ra menteni?
Hol van szó az írásban
Miért várja a szerző, hogy
Próbálj meg egy modernnek
Nem szempont egy komolyabb fejlesztésnél, hogy a forrást notepaddel is kényelmesen tudd módosítani. Nem is értem, miért kéne, hogy az legyen, komolyan, értetlenül állok. Ha valaki jobb, fejlettebb, modernebb eszközöket használ (ld. traktor), teljesen máshová tolódik a hangsúly.
Tehát a modern eszközök
A komoly IDE például egy
Átfogalmazom a kérdést: a
Nincs. De mivel rendelkezésre
Egyszerűen nem látok indokot, hogy miért NE használnánk modern, komoly IDE-t.
Tehát egy komoly IDE nélkül
Nem értelek. Mivel az IDE
Láncfűrésszel csak akkor nehezebb elvágni egy gerendát, mint fűrésszel, ha nem tudod használni a láncfűrészt.
Tehát ha egy komoly IDE
Megint csak nem értelek. A
Miért ne válnának komplexebbé a szoftverek? A hardver fejlődése alaposan odébb rakja a korlátokat, a bottleneckek helyét. Ha a memória olcsó és van belőle egy rakás, akkor korábbi vesszőparipádat felidézve a kliens nem azért fog fizetni kemény pénzeket, hogy minél optimalizáltabb legyen a memóriafogyasztás. Új funkciókat fog kérni és gyorsan, persze lehetőleg működjenek is.
Egy komplex szoftvert
Ez egy remek érv!!! És eddig
Ha előbb felnyitod a szemem, egy csomót spórolhattam volna!
Nagyon jó dolog az autó, de
Az ember azt tartja magáról, hogy intelligens, de még ezeket az összefüggéseket sem látja át. Nálunk még egy véletlenszerűen kiválasztott állatnak is több esze van, hisz azok nem teszik úgy tönkre az élőhelyüket, hogy többé nem lehet ott létezni.
Elvesztettem az analógia
Az ember intelligens, és át is látja mindazt, amit leírsz - de leszarja. Az ember végtelenül önző, bármit próbál is elhitetni magáról. Ha autót használ, akkor is önző célok vezérlik, ha nem használ autót, akkor is. Ennek a vonalnak semmi olyan értelme nincs, ami bármihez közelebb vinne minket.
Intelligens lény meg nem gyalogol, hanem fejleszt környezetbarát autót.
En is kezdem elveszteni a
Arra meg azert ne fogadj nagy osszegekbe hogy mindenhol kornyezetbaratmodon allitjak elo az enertigat.
Igen az emberiseg borzaszto onzo, ez az allatokban is megvan csak ott nem adatott meg az a lehetoseg hogy atermeszet "fole" helyezkedjen. Speciel szerintem nekunk se, mert a bolygo megrazza magat es az emberiseg eltunik. A tevekenysegunkkel max siettetni tudjuk ezt a folyamatot.
Az utolso mondatoddal messzemenoleg egyetertek! A baj ott van hogy vagy olyan ritka az inteligens ember mit a feher hollo vagy egyszeruen inkabb a gazdasag diktal mint az eszervek.
Gáborral nem lehet
Én már a lefsm a bokám
Hát akkor nekem már valahol
Nem csak az energia
Apám azt mondta, hogy majd a piac megoldja a problémát, mert ha rájönnek, hogy egyszerűbb/környezetbarátabb termékekre lesz szükség, akkor mindenki olyat fog kérni. Szerintem ez előbb-utóbb be fog következni, és aki elébe megy a dolgoknak, és már most elkezd erre figyelni, versenyelőnyben lesz.
logika.
Nem. "modern szoftver" kódot példáu azért könnyebb IDE-ben irni mert a "modern" kód átért a kevés fájl több ezer sorról a sok fájl kevés kód-ra. De ettől nem vált komplex-é. Csak mássá.
Ne ferditsd, ne játszd az értetlent kérlek. Én miattad nézem egyre kevésbé a weblabort, - már meguntam hogy itt trolkodsz, és/vagy értelenkedsz.
Vagy ha annyira csoda szép kódot tudsz irni mindenféle modern kóri hülyeségek nélkül (pl OOP), akkor tetszik feltenni githubra egy fél-egy millió sorosnál nagyobb PHP project-et. (vagy keresni egyet.) De egye fene legyen csak tizezer sor.
Mi az előnye a sok fájl+kevés
2015
Ha még mindig itt
Hogy még mindig
A következőt javaslom. A blogmarkjaid alapján csupa olyan írást olvasol, ami azt támasztja alá, amit te egyébként is gondolsz. Vizsgáld meg alaposabban a másik oldalt. Az "ellenfelet" csak akkor vagy képes megismerni, ha úgy gondolkodsz, mint ők. Válj egy időre az ellenféllé. Hogy mennyi idő kell, rajtad múlik (ne pár héttel számolj, minél elkötelezettebb vagy az egyik oldal mellett, annál nehezebb). Ha ezt megtennéd (bár nem fogod), utána szívesen és érdeklődve olvasnám a véleményed, függetlenül attól, mit mondasz.
Nem értem, miért kéne a saját
Ha valami egyértelműen jó, akkor azt mindenkinek meg kéne tudnia értenie, akár különösebb gondolkodás nélkül.
Ha van választási lehetőségem, hogy igyak vizet vagy ne igyak semmit, akkor nyilvánvalóan azt fogom választani, hogy igyak, különben meghalok.
Ha van választási lehetőségem, hogy igyak kénsavat vagy igyak vizet, akkor a vizet fogom választani, mert a kénsav szétmarja az emésztőrendszeremet.
Ha valami komplex, és ennyire magyarázni kell, hogy megértsék, ott a komplexitással egyenes arányban nő az esély, hogy a magyarázó személye sem ért meg mindent.
A dolgok nem mind egyaránt
Ha ismered a saját elméd működését, akkor gyakorlod azt, hogy rendszeresen belehelyezed magad olyan nézőpontokba, amikkel szemben ellenérzéseid vannak. Ha nem teszed, az idő múlásával arányosan fogsz beszűkülni - neked tudtommal az ellenkezője a célod.
A magyarázás lényegtelen, a megértési szándék számít. Minél erősebb, annál biztosabb, hogy gyorsan megtalálod azokat a magyarázatokat, amik segítenek. Ha az a célod, hogy valamitől távol tartsd magad, akkor azokat a magyarázatokat fogod vonzónak találni, amik a hiányosságait, hibáit taglalják.
Ha nem szeretném megérteni
A magyarázás nagyon is lényeges, de nem fontosabb a megértési szándéknál, 50-50%.
Egy ilyen témában millióféle
Próbáld ki a módszert. Felesleges olyasmi ellen harcolni, amit nem értesz. Been there, done that.
Oké, megteszem, ha te is
Ez a része a szokásosnál
Ez tényleg kérdés számodra?
Miért provokálnék én bárkit
Miért provokálnék én bárkit
Figyelmet.
Isteni kör
PHP-s weboldalt, Javás alkalmazást is tudsz írni egyetlen fájlban, de akkor elvesztesz egy csomó lehetőséget, technikát, amit több fájl nyújt (PHPban pl autoloadig, hogy csak a szükséges osztályaid forduljanak le/fogyasszanak memóriát).
Ezen technikák arra építenek, hogy az IDE megoldja ami az IDE dolga; így erősítve a programozót.
vagy ördögi kor
Csak hogy legyen egy pelda ha megnezzed a google kereso oldalat akkor ott szepen egy script tag-be be van tomoritve az egesz js. Tehat az adatatvitel es a gyorsitotarazas szemponthabol itt mar az 1 fajl jobban ervenyesul. (gondolom a fejlesztoi reszen es sok apro fajl es a buildnel lesz 1, de ez megint mas kerdes)
Az egy fajl fejlesztesi
Ez a resze az irasomnak
zárójeles rész kimaradt :)
Non-issue
Persze vannak kivételek, speckó követelmények, meg persze build folyamat is (köszönhetően ezen "modern eszközöknek").
Mivel manapság már mindenki
Szerinted akkor az egy nagy
Az egy bazi nagy fájl karbantarthatatlan. Nem hiszem hogy ezzel van értelme vitatkozni. Ez elég nyomós érv a sok kicsi fájl mellett.
Elbeszéltek egymás mellett
Javascriptnél megértem
Nem tudom
Pl phar fájlnál hozzá tudsz
Ha csak simán összefűzték a fájlokat, akkor esetleg azért lehetett, mert nem használtak opcode cache-t, aztán így próbálták gyorsabbá tenni. Most így ennél több nem jut eszembe.
Számomra modulonként egy fájl
Azért gondolom van egy felső
A legnagyobb modulunk
Az egy bazi nagy fájl
Én ezt így nem jelenteném ki. Más eszközök kellenek hozzá, mint amiket most használunk. Pl egyszerre több tab-en megnyitni ugyanazt a fájlt, odascrollozni a megfelelő osztályhoz, csak kódrészeket refaktorálni, csomagolni, és így tovább. Ha mindez meg lenne támogatva IDE oldalról, akkor érezhető különbség szerintem nem lenne a mostani több fájlos megoldás és az egy fájlos megoldás között. Szóval csak eszköz kérdése.
Memoria
Nem szeretem ismételni magam,
...
Szerintem nyugodtan haladhadtunk volna abba az irányba is, hogy mindent tartsunk egyetlen fájlban, aztán az IDE keresse meg az osztályokat abban a fájlban, azokban meg a metódusokat, és csináljon egy szép fát az egészből, kesselje, minden. Szerintem technikailag megoldható az egész még a mostani fájlrendszerekkel is, bár annyira alacsony szintű dolgokhoz csak kevéssé értek. De cáfold meg nyugodtan, ha tudod. Valami ilyesmi egyébként létezik is, jar fájlnak hívják, de akár mondhattam volna phar-t is. Jar-nál ha jól tudom a repackaging meg van támogatva bizonyos IDE-k által, phar-nál fogalmam sincs, valszeg nem ennyire fejlett a helyzet.
Egyáltalán nem az egy nagy fájl versus sok kis fájl a kérdés itt, hanem hogy megfelelően kis egységekre fel tudod e bontani a kódot ahhoz, hogy egy-egy ilyen egység könnyen átlátható és módosítható legyen, illetve, hogy ezek között az egységek között mennyire hatékonyan tudsz böngészni, mennyire átlátható térképet készít neked az IDE. Szvsz. ilyen téren még bőven van hova fejlődni a mostani IDE-knek is, és ez a fájlrendszeres - eredendően faszerkezetes és nem gráf - felosztás most már inkább csak akadálya a fejlődésnek, amin a legtöbb IDE keresőfunkciókkal próbál túllépni (goto declaration, find usages, etc...) több-kevesebb sikerrel. Valószínűleg lehet ennél sokkal jobban is csinálni, ha az ember rágódik a témán 1-2 évet, de nem vagyok IDE fejlesztő, és valószínűleg nem is leszek az soha, mert hidegen hagy a téma.
Jo latni hogy valaki szepen
Ehhez a hangsúly áttolódáshoz
Nagyon sok kollégánál látom, hogy fut a Netbeans vagy a Notepad++, mert azt szokták meg, azt használták főiskolán, stb. De egyáltalán nem lenne rá szükség, mert Unix rendszereket üzemeltetünk és a legbonyultabb kód amivel találkoznak az egy 20-30 soros shell script vagy éppen az aktuális parancs kimenete, munkai jegyzet, hasonlók. De az IDE az fut, mert ők úgy érzik ez a csúcs, ennél nem adhatják alább.
Soha nem az eszköz hibája, ha
Senki nem lett még jó programozó attól, hogy IDE-t használt. A jó programozó viszont szerintem tud használni bármilyen IDE-t (vagy képes gyorsan megtanulni) és főleg tudja azt is, mikor érdemes használni.
Szerintem nincs nagy
fork
Az lesz az igazán Komoly IDE.
Fel is merül a kérdés, van-e
Miért nő a követelmények
Természetesen komolyan
1, A vásárló megérkezik, keresgél, kiválasztja a termékeket, beteszi a kosárba, regisztrál/belép, megrendeli az árukat. Ez tizenöt éve is így működött, mára sem változott lényegében.
2, Kliensoldalon figyeljük a vásárló interakcióját, és erről a szervert tájékoztatjuk. Ez sem változott az utóbbi tizenöt évben. Az interakciók végeredményeképp a DOM-ot manipuláljuk.
3, Szerveroldalon feldolgozzuk a klienstől érkezett kéréseket, majd visszaküldjük a választ.
Az utóbbi húsz évben annyi változás állt be, hogy bizonyos GET és POST kéréseket AJAX-szal küldünk el, majd kliensoldali scripttel dolgozzuk fel a választ, de a végeredményen ez nem változtat, mert ígyis-úgyis a DOM-mal dolgozunk. Ha jól átgondoljuk a dolgokat, az AJAX-os kérések visszavezethetők a hagyományos GET-POST típusúakra, tehát végeredményben kliensoldalon csak minimális változtatásokra van szükség, hogy bármely oldalt AJAX-szossá tegyünk.
Az egyik legfontosabb kérdést kihagytad: Miért van szükség a komplexitás növekedésére, ha a szoftverek és webes alkalmazások/weboldalak felhasználói felülete jelentősen leegyszerűsödött?
A kérdések továbbra is állnak: a fentieket figyelembe véve, miért nő a követelmények komplexitása? Miért van szükség arra, hogy komplexebbnél komplexebb eszközöket építsenek be a programozási nyelvekbe?
Miért van szükség arra, hogy
Kíváncsi lennék, te milyen választ adsz erre a kérdésre. Legjobb tudásod szerint, kérlek.
Szorgalmi feladat: ezek a "komplex" eszközök bonyolultabbá vagy valójában egyszerűbbé teszik a munkát? Azért tűnnek bonyolultnak, mert nem ismerjük őket? Bonyolultabb-e a láncfűrész a fűrésznél, és mivel nyilván igen, miért használják mégis, ha a feladat nem változott az elmúlt pár ezer évben?
Szerintem nincs rá szükség.
Ahogy újabb és újabb eszközöket zsúfolnak a programozási nyelvekbe, úgy lesznek azok egyre komplexebbek. Aki mondjuk tíz éve programozó, ezt nem veszi észre, mert ezek az eszközök szép lassan szivárognak be, és van ideje hozzászokni.
Ehhez képest egy kezdő programozó számára sokkoló, amit lát, ugyanúgy, ahogy a blogmark szerzője számára is sokkoló volt a Visual Basic. Jóval magasabb a belépési küszöb, jóval többet kell tanulni, jóval nehezebb átlátni, és jóval több a hibázási lehetőség. Ezt hozza a szoftverek komplexitásának növekedése.
Ha viszont megmaradunk az egyszerű eszközöknél, a végeredmény egy egyszerűbb, átláthatóbb szoftver, aminek jóval egyszerűbb a karbantartása, és kevesebb hiba lesz benne.
Szerintem nincs rá szükség.
Az egy dolog. Próbáld mégis csak megválaszolni. Semmi nem fejlődik ki ok nélkül. Az indokolatlan komplexitás mindig megbukik az evolúció során. Miért alakult így? Összeesküvés? Véletlenül?
Komolyan mondom, válaszold meg. Ha nem érted, ami ellen érvelsz, felesleges az egész.
Biztos vagyok benne, hogy egy kezdő orvos vagy egy kezdő építész is így van ezzel. Én még kezdő sofőrként is ezt éreztem. Abban nem értünk egyet, hogy az egyszerűbb eszközök kevesebb hibát eredményeznek. A komplexebb eszközök, illetve a modern szerszámok valójában csökkentik a hibázás lehetőségét. Csak meg kell tanulni használni őket. Ne legyen már érv az, hogy kevesebbet kelljen tanulni, mert abszolút komolytalan.
A válaszom az, hogy nincs
Az egyszerűbb eszközök használatát könnyebb megérteni. Minél kisebb a választási lehetőséged, annál nagyobb az esélye, hogy nem fogsz hibázni, mert jobban átlátod a választásod következményeit.
Emiatt célszerű egyszerűségre, és nem pedig komplexitásra törekedni.
A válaszom az, hogy nincs
Miért fejlődtek akkor ki? Miért nem tűnnek el?
A varrógép számtalanszor komplexebb, mint a tű és a cérna. Ha megtanulod használni a varrógépet, teljesen pontosan fogsz dolgozni kevés befektetett energiával is. Tűvel és cérnával egy élet gyakorlása szükséges, hogy tökéletes varrattávokkal dolgozz, ráadásul sokkal lassabban.
Mint feljebb Udi is írja, a
Értem én, de ezt érvnek
Ha nem lenne szükség az új
bocsi a filozofia szinter
Ezzel csak az a baj hogy nem tudni mennyi ido kel hozza. Csaj hogy a mi fajunknal maradjunk (es most lehet utalni) a szocialis erzekenysegunk es a penzugyi rendszerunk bonyolitasaval az emberi leny alapjaban nem valtozott meg, megszuletik, eszik, iszik, urit, alszik, (szaporodik), meghal. Kozben erzelmeink tengereben uszikalunk, de az leirt par alapfunkcion semmit nem valtoztatot semmi szerintem az elmult sokszaz vagy ezer evben. Szerintem csak mi szeretnenk azt hinni hogy barmi is valtozott :)
Itt visszautalva egy elzo peldadra a lancfureszre, ezt a kijelntesedet szerintem erosen megbuktatja. Mivel egy egyszeru fureszben nincsen motor, ezert nem kell bele uzemanyag, inditashoz valami elektronika, mehanika, gyujtas. Illetve a fokozott teljesitmeny miatt no a forgacskibocsajtas, a plusz eroforras miatt eloallt a szennyezo anyag kibocsajtas, es extra (veszelyes) hoforras.
Ha ezt az oldalat is vizsgalod a komplex fureszgepednek akkor igen is a hatekonysaggal, megnott a komplexitas, es a veszelyforras is!
Vagy például annak a
Az elektronikai szemét feldolgozása pedig kőkorszaki módszerekkel történik Kínában és Indiában, falvak vannak, ahol az emberek többsége rákos emiatt. Az integrált áramkörök újrahasznosítása nem megoldott, csak a termelésük.
Ezekkel a problémákkal a programozók nem foglalkoznak, pedig a kialakult helyzetért ők is felelősek.
Tudtommal az elektronikus
Tudja, hogy ön mennyi
Mikor fogynak el a különleges fémek?
Az elektronikai hulladék negyede hasznosul
Nincsen laptop vér nélkül
A világ elektronikai hulladék fővárosa
kis részben...
Mit csinálsz ma egy ic-vel? Semmit.
Egy ellenállással? Szintén.
Kondi? Szintén.
Nagyon-nagyon messze van még a kellő szintű újrahasznosítás.
A használt IC-ket...
Nem látom az emberben az
A láncfűrészes példám épphogy alátámasztja a kijelentésem. Nem állítottam, mivel ostobaság lett volna, hogy a láncfűrész nem komplexebb a fűrésznél, hiszen számtalanszor komplexebb. Nem kívánok a láncfűrész használatával kapcsolatban szakmai vitába bonyolódni, hiszen csak egyszer volt a kezemben, de már akkor is feltűnt, hogy mennyivel csökkenti a hibázás lehetőségét már csak azáltal is, hogy pillanatok alatt szétkapom a gerendát és nem nyiszatolom hosszú percekig. Az, hogy a veszélyforrás megnő, a láncfűrész egyedi sajátossága és nem szolgálja az analógiám hasznosságát.
Bár sokkal komplexebb szerkezet, mégis megkönnyíti, egyszerűbbé, hatékonyabbá teszi a munkádat. Csak annyit kell tenned, hogy megtanulod használni. Ha nem megy, akkor tovább próbálkozol, vagy pályát módosítasz, vagy elviseled, hogy az ács haverjaid néha ugratnak, amiért te még mindig mindenhez fűrészt használsz.
Aha. Mindenféle webservice-ek
Nem szükséges, hogy az öt-hat
A kommentelési lehetőségek, a kedvencelés egy plusz lekérdezés egy táblából. A termékrészletek kiválasztása, paraméterezés már régebben is megvolt.
Az általad felsoroltakat egy-egy új táblában tárolhatjuk az adatbázisban, ahonnan egyszerű lekérdezésekkel nyerünk ki adatokat. Mik azok a komplex eszközök pontosan, amire a fentieknek szüksége van?
Nem szükséges, hogy az öt-hat
A CI minek a rövidítése?
Én még úgy ismertem, mint
Igen, erről van szó.
Boszorkányság :).
És ezekre a szolgáltatásokra
Én erről nem vagyok meggyőződve. A fejlesztők körében ugye népszerű az AJAX, mert szerintük erre szüksége van a felhasználóknak. Azoknak a felhasználóknak, akiknek fogalma sincs arról, hogy mi az a böngésző.
igaz és hamis egyszerre :)
népszerű az AJAX, mert szerintük erre szüksége van a felhasználóknak. Azoknak a felhasználóknak, akiknek fogalma sincs arról, hogy mi az a böngésző.
- csili-vili,
- nem "ugrik" a képernyő az újratöltés miatt,
- hallotta (persze fejlesztőtől), hogy egy modern oldal ajaxos:
Ezt mind tudja az is, aki nem tudja mi az a böngésző.
Nem rég kaptam úgy egy feladatot, hogy "ajaxos kereső az xy-hoz hasonlóan"...
Természetesen Kb hülyeség lett volna ajaxal csinálni... :D
ettől még az AJAX tud hasznos
Persze
Maradjunk annyiban, hogy jobb ha én döntöm el, mi ajaxos, nem egy laikus. :)
Nekem ez már sok. Erre
Mi a tökömért osztunk meg cikket olyan embertől, aki bevallottan nem érti se az OOP-t, se a szoftverfejlesztés jelenlegi állapotát és eszközeit, ennek ellenére elmagyarázza, hogy ez miért nem jó, mert talált pár idézetet a neten.
Ez az a szint, amikor a paraszt bácsi osztja az észt a kocsmában, hogy ezek a modern traktorok nem jók semmire, ő amióta az eszét tudja, simán megold mindent Riskáékkal. Józsi is mesélte, hogy múltkor elromlott a traktorja, a Béla meg (részegen) elütötte vele az egyik malacot. Ettől persze lehet ő egyébként remek földművelő (mint ahogy a cikkíró is bizonyára komplex OpenGL kódokat képes írni), de baromira nem releváns a véleményük semmilyen vitában (legalábbis szakmaiban, mert kocsmaiban miért ne) az adott témát illetően, mert nincs mögötte tapasztalat. Az nem tapasztalat, hogy elindítottam a Visual Studio-t és rohadt komplexnek tűnt az egész.
Ez persze normális, mindenki jónak szeretné érezni magát abban, amit csinál, és ha mindenhonnan azt hallja, hogy ha nem értesz az OOP-hez, nem is vagy jó, akkor elkezd majd kompenzálni. Ez nem baj, emberi dolog, mind csináljuk. Itt teret adni ennek szerintem felesleges.
Szakmában semmi helye hitvitáknak. Egyszerűen értelmezhetetlen, hogy OOP-isták meg proceduralisták, és akkor kampányolnak egymás ellen. Én tapasztalatból azt mondom: ha nem tetszik mondjuk az OOP, vagy bármi más, mássz bele. Ekkor sem fog még tetszeni, de tartsd a szád. Addig csináld, amíg nem érted meg, nem érzed, miért is mondják erről mások, hogy ez jó (opcionálisan itt már élvezheted is, én ezt javaslom). Utána akár kritizálhatod is a hibáit (mert mindennek vannak), de máris szélesítetted a látóköröd.
Megertem frusztraciodat az
Es olvasok inkabb hirleveleket vagy olyan fejlesztok Twitter feedjet akik elore mutato fejlesztesekkel foglalkoznak.
Szerintem elore eleg nehez
Szerintem azert jo
- olvashatunk mas nezopontot, velememyt.
- lehet hogy hulyeseg, lehet hogy elgondolkodtato...
- akarmennyire is ellenkezel ellene, ezeknel a posztoknal lehet olvasni a legtobb hozzaszolast, es itt lehet ertelmesebb okfejteseket is olvasgatni kulombozo emberektol( "troll" Gabi jovoltabol). Mig mas helyeken jobb esetben 1-1 sor bologatos hozzaszolas van.
- Legalabb olvashatunk mas dolgokat is mint ami a mainstream szakmediabol folyik
- Nem utolso sorban meg nem kotelezo mindent elolvasni, es reagalni ra.
- olvashatunk mas nezopontot,
A hozzászólásom is egy nézőpont, vélemény volt.
Ennyi erővel posztolhatnánk bármit. Csak egy szint alatt már problémás szakmai oldalnak hívni magad. Nem az álláspontjával van a bajom elsősorban, vagy a következtetéseivel, hanem a színvonalával. Egy olyan cikk ellen is tiltakoznék, ami aszongya: az OOP azért jó, mert szépek benne a metódusok, és az is jó, hogy az osztály neve nagybetűvel van írva, mert így szerintem fontosnak tűnik, és a Béla szerint is az OOP az új hullám!!!!
Egy jó trollkodásnak mindig lesz piaca. Ha az értelmes okfejtésekre vagy kíváncsi, tekerj vissza, mindet olvashattad már ezerféle verzióban a korábbi remek cikkek/fórumtémák alatt. Több évnyi munka van benne :).
Itt csak a más dolgokat olvashatod. Ez akkor az underground szakmédia? :D
Ezt nem tudom cáfolni és nem is akarom.
Ne személyeskedj
Más véleménye van, és korrekt módon vitatkozik.
Így igen nagy sértés trollnak nevezni.
Szerintem ő pont hogy védeni
bazdmegkapa
Szóltam szépen gyerek, ne trollozz olyat, akinél inkább trollabb vagy. Marha bátor vagy neten.
Itt javaslom Ádám, hogy tegyél valamit az ügyben, nem lehet büntetés nélkül így sértegetni valakit a neten. Hídvégi Gábor nem troll, azon kevés felhasználók egyike, akik még tesznek valamit másokért, és nem utolsó sorban ott a teljes neve...
Az ilyen baszdmegmagadakapával féle neve sincs gyökér meg vegye már a fáradságot ha bajt akar, akkor írjon helyet is.
Itt javaslom Ádám, hogy
Valóban. Péter, te a következő egy hónapban nem szólsz már hozzá, sem ehhez, sem más témához. Nem először kérlek, hogy ezt a kocsmai asztalborogatást itt mellőzd. A következő alkalommal egy év lesz a gondolkodási idő.
Pedig kivételesen igaza
Mobilon utálok gépelni, csak ezért nem szóltam bele eddig.
B részéről az utóbbi időben én nem láttam mást, mint folyamatos kötekedést, trollkodást.
(Attól még trollkodás, hogy nem anyázós stílusban adja elő magát)
Végülis... a te dolgod...
Pedig kivételesen igaza
Irreleváns, a stílus nem való ide.
Szerintem pedig sokan tanulhatnának tőle vitakultúra és hozzáállás terén.
Igen, sokan tanulhatnának,
De mondom, végül is mindegy, az oldal gyakorlatilag halott, a döntés joga meg a tiéd.
Bár számomra az már messze
Az én értelmezésem szerint azért nevezik többen is trollnak – ami nem sértés, hanem terminus technicus –, mert újra és újra ugyanazokat a kérdéseket teszi fel, miközben figyelmen kívül hagyja a válaszokat, amiket kap.
Nem akarnám tovább feszíteni
Hol húzódik a határ az őszinte vélemény és a sértegetés között? A szándék számít, vagy hogy a másik minek veszi? Nem mondom persze, hogy én normális vagyok, ha az lennék, egy szót sem írtam volna, mert mindig ez a vége sajnos.
Senkinek nem az a baja Gáborral, hogy szembemegy a trendekkel, de ezt úgy látom, nem csak ő nem érti. Ebből lesz ez a mártírkodás folyton. Szerintem vagyunk itt egy páran, akik bőven túllátnak a trendeken és szeretnek több oldalról megvizsgálni dolgokat. Engem (is) az zavar, hogy Gábor végtelen ciklusba került már évek óta, és semmilyen input nem képes ebből kizökkenteni, ennek ellenére az output folyamatosan jön belőle. Mindig ugyanaz. Sose az zavart, hogy nem értünk egyet, mert nincs olyan ember a világon, akivel 100%-ban egyet értenék mindenben, még én magam sem.
Na de hagyjuk inkább a francba, majd folytatjuk a következő iterációban. Úgy érzem, most az AJAX lesz soron.
Gábor ír valamit -> olvasó
Tőled semmi mást nem látok, mint azt, hogy őt baszogatod lépten-nyomon. Ez szvsz tipikusan az a fajta, romboló magatartás, amivel úgy lehet szétcseszni egy fórumot / közösséget, hogy közben mosod kezeidet, te nem tehetsz róla.
Ha úgy érzed, én
Valóban bölcsebb lenne ignorálnom, vagy inkább többet be se lépnem. Irracionális viselkedés részemről, hogy nem ezt teszem.
Nem csak te, de számomra a te
Ez szvsz tipikusan az a
Nem értem, mi ezzel a baj.
Miért lenne ez hátbaszúrás? Őszinte, szemtől-szembe kijelentésnek szántam, válaszként korábbi kérdésedre, hogy miért nem gyarapítom a blogmarkokat. Nem indulatból írtam, nem érzelemből, ez a helyzet, ezt gondolom, ha következményei vannak, vállalom.
bekaphatod
Méltatlannak éreztem, hogy
Ez a hozzászólásod pedig megmarad az utókornak.
hmm
Ha figyelmesen olvastad volna a hozzasszolasokat akkor biztos eszrevetted volna hogy ezt a jelzot nem en hanem a 19,26-os hozzaszolasban mas hasznalta. Azert vettem bele a "troll" szot a hozzaszolasomba, mert meglepett hogy valakit aki ezen a forumon es a szakmaba nem tegnapi darab (nezetei ellenere) egy elvi es nezetbeli szerintem eleg kellemes, valos tapasztalatokkal alatamasztott (meg ha konretan ki nem mondott) vita kellos kozepette csipobol valaki leminosit. En ezt nem tennem meg akkor sem ha ugy gondolom 100%-ig igazam van (ami persze szubjektiv).
Sajnos ahogy olvastam most nem tudsz valaszolni 1 honapig, szoval igy kicsit monologra sikeredett a hozzaszolasom.
Legkozelebb ha ugy gondolod nem idevalo, vagy nem erted a hozzaszolasom, nyugodtan irj ram maganban, es ha meggyozol, en fogom kerni a moderalasat, vagy akar a sajat magam felfuggeszteset.
Troll
http://hu.wikipedia.org/wiki/Troll_(internet)
Számomra teljesen egyértelmű, hogy itt erről van szó. Ha Gábor bárkit valóban meg akarna győzni, akkor pozitív példákat osztana meg, de ezzel szemben azok a fő témák, hogy mit miért ne használjunk, melyik fejlesztés miért nem jó. Ezek a témák csak arra jó, hogy értelmetlen flame-ek induljanak, amire - akár tetszik, akár nem - mindig lesz ember...
Ismerem annyira Gábort(azt
Fanatikusan ragaszkodik az elméleteihez (amik többségével nem értek egyet), de nem tartom valószínűnek, hogy ezt azért tenné, hogy veszekedést provokáljon. Ilyen alapon inkább azok felelnek meg a troll definíciójának, akik csak azért reagálnak a posztjaira, hozzászólásaira, hogy őt baszogassák.
Hup-on van egy ilyen belterjes troll társulat és a te szavaidból annak nyomát vélem kihallani. (Tévednék?)
Nem szoktam látni olyat, aki
Nincs olyan célom, hogy
+1
Szerintem még mindig jobb itt
Nem baj
A kezdőknek nem használ, ha
Előbb-utóbb az a pár ember is megunja ezt, akik mindig veszik a fáradságot, hogy kommentálják az olyan sületlenségeket, mint ez a cikk. De ha egy tudományos oldalon folyton csak a gyíkemberekről meg a chemtrailről van anyag, akkor szép lassan eltünedeznek a szakértők (mint az itt is történt, történik).
saját bőr
Gábor nem hirdetett olyat, hogy nem kell tanulni.
Kissé értetlen egy-két dologban, de ez nem feltétlenül rossz a kezdőknek. Legalább beszélünk (vagy csak ti) a témáról. Ha neked unalmas, akkor ne szólj hozzá.
Én a mai napig el szoktam olvasni, de már ritkán szólok hozzá. Ez a baj. Addig jó, míg van aki próbálja meg győzni.
Nekem vannak időszakaim,
A kezdők meg inkább töltsék hasznos dolgokkal az idejüket, például tanuljanak új dolgokat, szerezzenek saját tapasztalatokat és szélesítsék a látókörüket.
Látom, nagyon zavar, hogy
Ha ez neked nem tetszik, Észak-Korea arra van ->, ott tárt karokkal várnak téged a gondolatrendőrségben.
Szerinted a szólásszabadság
Nem lehet, hogy végletekben gondolkodsz (ld. egyszerűség-komplexitás), és a képzeletbeli határvonalakat közben mindig ott húzod meg, ahol neked éppen kényelmes?
Nem lehet, hogy az ilyen cikkek túlfogyasztásától a te látóköröd már rég beszűkült, csak bentről ezt nyilván nem látni?
Hol egy moderátor ilyenkor?
Az én személyes véleményem szerint te sokkal inkább.
Attól, hogy nem egyezik a véleménye a tiéddel, még nem ellenség. :)
Engem is még sokszor elgondolkodtat, szóval nem éppen égetni való boszorkány. :)
Vicc nélkül: vannak igazságai is, ha nem is annyira szélsőségesen, mint gondolja. Ezeket hagy adja elő, és ezek nem csak a kezdőknek hasznosak.
Még kevésbé vicc: vedd észre, hogy míg én hasznosságról beszélek, te meg akarnád mondani , hogy mit csináljon egy kezdő...
Tőlem azt írsz amit akarsz, de amivel indokolatlanul sértesz mást, az téged - és sajnos a WL - t is - minősít.
Alig várom, hogy engem
A többire meg blabla, nem tekintem az ellenségemnek, senkinek nem hasznos, amit csinál, és nem akarom megmondani senkinek, mit csináljon. A Weblabort meg hová minősítsem még lejjebb? Egy ilyen blogmark alatt? Ez a vicc, na :).
Amit írtam, lehet jól meg rosszul érteni. Ha támadásnak fogod fel, rosszul érted. Én komoly problémákra mutatok rá.
Mitől lenne ostobaság az
Mitől lenne ostobaság az
Hát ez zseniális :D. Még mindig alul tudod múlni önmagad :).
Erre már több ízben válaszoltam neked. Jelenleg nem fogok.
Nem nézem őket hülyének. Egyszerűen emberek, akiknek még nem áll rendelkezésére elegendő információ és tapasztalat. Számukra káros az a légkör, ami itt uralkodik már régóta. Egy jó ideje nem is ajánlottam már kezdőnek, hogy ide látogasson, sőt.
Voltam kezdő és kommunikáltam sok kezdővel. Pl. nekem annó komoly nehézségeim voltak az OOP megértésével. Nem értettem, mire jó ez az egész, egyfajta sznobériának tartottam. Imádtam olyan cikkeket olvasni, amiben értelmesnek tűnő emberek elmagyarázták, miért hülyeség az OOP. Ezáltal felmentve éreztem magam. Tartoztam valahová, ahol úgy érezhettem, mi felülemelkedtünk már azon a szinten, ahol egyesek kényszernek érzik, hogy OOP-hez hasonló áltudományokkal építsék önnön szakmai egójukat. Mondhatnánk, hogy csak én voltam ilyen ostoba, és mindenki más sokkal értelmesebb ennél, de nem ez a helyzet.
Nem nézem őket hülyének.
Ez egyre jobb :D
Vedd már észre, mit művelsz, mielőtt önjelölt megmondóembernek nevezel valakit :D.
Egyébként ha hülyének nézném őket, azt mondanám, inkább hagyják ezt a szakmát :).
Az nem az én problémám, hogy
Nem érzem károsnak, ha szóba kerül az OOP hasznossága, csak előbb jó lenne tisztázni, hogy mi az OOP, mi a hasznossága, mik a hátrányai. Ha annyira tökéletes paradigma lenne, akkor nem tudnék évek óta beküldeni blogmarkokat, amelyekben az elmélet gyenge pontjaira mutatnak rá.
Szóval mit művelek? Bánt, hogy kiderült, amiben hiszel, az ingatag lábakon áll? Miért nem jártál utána rendesen, mielőtt megvilágosodtál?
Újabb hülyeségeket írok, mint mindig :)
Szakmai vitának úgy van értelme, ha a felek kölcsönösen fejlődni tudnak általa. De minek is magyarázzam, veled kommunikálni olyan, mintha az ember falnak dobálna egy labdát. Az itteni légkör már jó ideje nem alkalmas szakmai viták lebonyolítására, de igazából semmire.
Elmondom ezredszer (...), a szakma nálam jelenleg nem hit kérdése. Tökéletes paradigma nincs, nem lehetséges. Vagyok annyira intelligens, hogy belássam, bármi ellen és mellett is lehetséges érvelni a nézőpont megfelelő mértékű elcsúsztatásával.
Hiába hajtogatod, én a jelenlegi Hidvégi Gáborral egy helyen nem fogok szerzőként feltűnni még egy blogmark beküldőjeként sem. Nem érzelmi alapon. Ne értsd félre, de Kim Dzsong Un mellé sem állnék oda felszólalni egy emberi jogi konferencián.
ugyanazt a 10 fordulatot
Ha nem tetszik valami, csinálj saját fórumot, ahol a te szád íze szerint történik minden. De ha nem tudsz hozzátenni, nem tudsz évek óta újat mondani, akkor nincs sok értelme, hogy itt cincogj.
Tökmindegy, kinek van igaza,
Komolyan úgy gondolod, hogy a kisebbséghez tartozni valamilyen véleménnyel már azt jelenti, hogy vannak önálló gondolataid? Ha viszont többen is egyetértenek veled, akkor már nincsenek? Miért fontos ennyire neked, hogy egyéniség legyél?
Ha ennyire önállóak a gondolataid, miért abból áll a tevékenységed, hogy olyan linkeket gyűjtesz az internetről, ahol azt szajkózzák, amit te is? Mit akarsz ezzel bizonyítani és kinek?
Szegény Pepitát meg ne keverjük ide :).
Ja, meg alapítok új országot, és akkor ott nyitva lesznek a boltok vasárnap. Gratulálok :). Mi a tökömért csinálnék fórumot? Hogy én is szórakoztathassam magam rendszeresen a saját nézeteimmel és lehetőleg senki más ne szóljon bele? :) Not interested.
Ez a mondat tőled maga a tökély :). Azt hiszem abba is hagyom a cincogást, ennél jobb már nem lesz.
Nem ajánlom...
Ha valakinek ez nem tetszik,
Ha úgy érzed, hogy valamelyik hozzászólás sértő, akkor dobj egy email-t, aztán szívesen lemoderálom.
Nem érzem sértőnek, mert nem
rossz oldal
Szvsz. a trollozás jóval
Fejlődésre képtelen, közben a
moderálva - Gábor, légyszíves vegyél vissza ebből a stílusból - inf3rno
Szerintem arra gondol hogy
Legalább adj egy esélyt az új dolgoknak, legyél nyitottabb és próbáld ki őket. Bajod nem lesz belőle, legrosszabb esetben is csak okosabb leszel :)
Tudja, mire gondolok, de ne
Igen a leirtakban igazad van,
Nem nem fogok ra peldat irni mert volt itt a weblaboron is boven olyan iras ahol a fejemet csapkodtam hogy nah megint feltalatunk valamit amit 2-10 evvel ezelott is mar hasznaltunk. Persze semmivel nem lett jobb vagy gyorsabb, csak masabb mert most eppen megint el kellet adni valamit, foglalkoztatni kellet az embereket.
Regen en is minden "uj"-nak titulalt dolgot kiprobaltam, mara mar belefaradtam a sok kuruzslasba, lokupeckodasba, marketingbe es inkabb a barataimmal, csaladommal toltom az idot. Ettol fuggetlenul ugyan ugy tudok evente fejlodni, keszulnek el projektjeink es elegedettek az ugyfeleink. Egyszeruen mas hozzaallas, mint a trendek hajhaszasa.
Öngól
Amúgy az egészet Ádám rontotta el az elején azzal, hogy hozzászólt. Nagyon jó mutató a hozzászólások száma 1-1 témánál.
Te jobban
Magad nevében beszélj... :)
Azért ez nem olyan nehéz. Ha
próbáltam finoman
Pont az a gond, hogy fingod nincs róluk.
Azért írtam, hogy magad nevében, mert szereted magad mások fölé képzelni - de sokszor nem vagy ott.
Nyugodtan taníts, (vicc jön, nem megsértődni!) azt mondják: aki nem ért hozzá, az tanítja... :)
Hányszor láttál megsértődni?
Amúgy meg nem vagyok én senki fölött, semmikor.
Nem számoltam
Tudom, hogy nem, erre próbáltam felhívni a figyelmed... :)
Évek óta ugyanaz a téma,
Egy az egyben így gondolom. Pedig lenne itt potenciál még mindig, az látszik.
Szóval te érted, hogy miért
Amikor beküldök egy neked nem tetsző blogmarkot, te vagy a legelső, aki ott kiabál, hogy több ilyet ne, legyenek cenzúrázva a dolgok, csak olyan kerülhessen be, ami a többség álláspontját alátámasztja. Miért? Félsz valamitől? Félsz attól, hogy kiderül, valamit rosszul gondolsz/rosszul tudsz? Nem értem, miért. Ha úgy van, ahogy te gondolod, akkor nem kell félned, hisz egy jól megalapozott érveléssel helyre lehet tenni a félreértéseket.
A blogmark legnagyobb baja,
Nagyon sajnálom, hogy ilyen színvonalú tartalmak generálják a legtöbb hozzászólást (amik valódi értéket nem hordoznak, hiszen már n+1. alkalommal ugyanaz a téma), nálam a weblabor már abszolút nem az a hely, ahol kurrens webes technológiákkal foglalkoznak, hanem valami fura szeglete az internetnek, ami valahol 2002 környékén ragadt.
igaz ahogy oregszem egyre
Illetve az is furcsa nekem, hogy 2002-hoz hasonlitod a WL-t amikor ~2009 kornyeken regisztraltal, persze lehet hogy elotte 7 evig csak olvastad :D
Nyilván csak érzékeltetni
Pontosan mi káros benne?
Imho még 2013-ban is kerültek
Nem érted. Ugyanolyan ostoba
Nincs bajom a procedurális programozással sem. Van, hogy használom.
Nem hiszek viszont a hitvitákban és kész.
Ha ostoba cikket küldesz be, könnyen lehet, hogy legközelebb is ott fogok kiabálni, hogy ez egy ostoba cikk. Vagy nem. Szerintem ezek a gyengécske cikkek nem szolgálják azokat a nemes célokat, amiket hangoztatni szoktál és állítólag el akarsz érni.
mindig az OOP-t ekézik, mert
Értem, tehát önmagában az OOP
A kétezres évek elején tíz gigahertzes processzorokat vízionáltak, ezzel szemben PC vonalon megrekedtünk három és négy gigahertz között, míg ARM vonalon kettő fölött fogyott el a kraft, és az utóbbi években a csúcsprocesszorok nyers teljesítménye is csak pár százalékot nőtt.
Értem, tehát önmagában az OOP
Azt írtad, hogy nézzek meg
Megnéztem a prohardver legutolsó tesztjét a csúcs i7-ekről, ott leírják, hogy a 2011-ben megjelent 2600 és az 5960 között 30% a különbség, ami egy évre lebontva a csúcsprocesszornál átlagosan 10%-ot jelent. Viszont az előző generációs 4960 és a legújabb 5960 között már csak 5% a különbség.
Beidéztem, hogy mire írtam.
A prohardver nem tudom hogy nézte a teszteket, de bárhogy is, 30% nagyon jelentős különbség.
Ajánlom viszont a témában Martin Thompson Top 10 Performance Folklore előadását. Minden benne van, amire fentebb hivatkoztál, és jó előadás. Őt ebben a témában nem igazán szokás megkérdőjelezni :)
Minden fejlődésnek az az
Minden fejlődésnek az az
Touché.
gyorsaság, több szál
Ha igazán tutira akarok menni, akkor assembly...:)
Persze ezt ma már senki sem tudja kifizetni.
Srácok, végül is minden azon
Én már csak a hozzászólásokat
Kedves Gábor...
De ha egy kérdést már alaposan kivesézett a Weblabor tagsága, akkor a többségre való tekintettel illendő lenne a kivesézett kérdést hosszú ideig pihenni hagyni, és csak új szempont előkerültekor vagy a hosszú kihagyás után elővenni újra.
"mi van például a funkcionális nyelveket használókkal, az ő írásaikban mindig az OOP-t ekézik": mi mást ekézhetnének? Például egymást, de annyira kevesen vannak, hogy úgy érzik, egymás ekézésével még tovább sorvasztanák a szívüknek oly kedves paradigmát. Például az imperatív nyelveket, de azokat nem tekintik ellenfélnek, érthető okokból. Például a logikai nyelveket, de azokat még a funkcionálisakhoz képest is szűkebb tábor tartja a legjobb útnak. Tehát csak az objektumorientált nyelveket ekézhetik jóízűen. Tehát aki ekézni akar közülük, az előveszi az ekéjét, megfeni az élét, és nekiesik az OOP-nek.
"mert például az objektumoknak állapota van, emiatt egy metódust kétszer meghívva nem tudod garantálni, hogy ugyanazt az eredményt adja vissza": két lehetőség van. Vagy eleve eltérő eredményt várunk a metódustól, és ezért nem okoz gondot az eltérés, vagy azonos eredményt várunk tőle, és ennek tudatában írjuk meg a kódját. Aki azonos eredményt vár el, de nem ennek megfelelően írja meg a kódját, az zöldfülű, vagy ekézni akar (van rá példa!). A funkcionális nyelvekben nincsenek metódusok, csak függvények, és azoktól mindig azonos eredményt várunk el - ezt más paradigmát követő nyelvektól számonkérni botorság. Eltérő szemléletek, eltérő előnyökkel és hátrányokkal, vég nélkül ekézhetik egymást a híveik. Merthogy a funkcionális nyelveknek is vannak hátrányaik. Csak néhányat említek: nehezebben érthető szemantika, körülményes szintaxis, szűk körű elterjedtség, viszonylagos lassúság. E 4 púp közül egy-egy konkrét funkcionális nyelv ritkán viseli mind a négyet, de hármat többnyire igen. A szemantikus nehézségeket pedig sosem tudják kinőni! Programozni nehéz, ezzel minden programozni nem tudó tisztában van. A funkcionális nyelvek pedig még a programozók többségének is nehezen érthetők, tehát sosem terjednek el igazán, emiatt mindig valahogy félérettek maradnak, szűkebb eszközkészlettel, kicsiszolatlan fordítókkal ésvagy értelmezőkkel. Pont ettől van ekézhetnékje a lánglelkű híveiknek.
Az objektumorientált nyelvekben "ugyanemiatt a konkurens programfuttatás is minimum problémás, hacsak nem lehetetlen" lenne? Nem igaz. Én is többször belefutottam már az OOP ilyen ekézésébe, de le sem álltam vitázni a szerzőjükkel, mert nem értik a probléma lényegét, mert nem akarják érteni. A konkurens programrészek által hozzáférhető állapotok megosztottsága hordozza a veszélyt: egymással megosztott memóriaterületeik (például globális változók) és a közös környezetük minden eleme (fájlrendszer, portok, adatbázisok, operációs rendszer stb.). Ezek közül a globális változókat általában érdemes messzire elkerülni, a közös környezettel pedig a funkcionális nyelvekben is kellő gondossággal érdemes bánni. Tehát a funkcionális nyelvek vérmes hívei az árnyékbokszoláshoz hasonló hibát vétenek ezt az OOP-ellenes érvüket hangoztatva.
"a hardverek programfeldolgozási sebességét már évek óta csak az újabb magok hozzáadásával tudják növelni": ez nagyjából 2005 óta így van. Eltelt 10 év, és a jelek szerint még mindig nem ment át a szakmai köztudatba. Kell még tíz év... és láss csodát, a funkcionális nyelvek akkor is megmaradnak majd egy szűk szakmai tábor kedvenc vesszőparipáinak. Mert roppant értékes tapasztalatokkal gazdagítják a számítástudományt, de aki azt hirdeti, hogy a funkcionális programozás (FP) a jövő útja, az hamis próféta, és ez nagyjából mostanra egyértelművé vált, lásd a fent említett púpokat.
Pár hónappal ezelőtt már hozzászóltam az OOP kontra FP témához itt. Mérlegeltem, hogy írjak-e cikket erről, de letettem róla. Elnézést kérek tőletek, de sajnálom rá az időt. Higgyétek el, sokat tanulhattok, ha megismertek egy funkcionális nyelvet, erre a célra az OCaml-Erlang-Haskell trió egyik tagját ajánlom (Haskellt csak az elszántaknak). És higgyétek el, nem érdemes sok időt szánni a funkcionális nyelvekre, hiába hirdetik ezt az igét a szakma egyes nagyágyúi. Kivétel: a nagy biztonságú programokat igénylő területeken mozgó egyes cégek (Magyarországon nem ismerek ilyet). Mert a funkcionális nyelvekben nagyon jól körülhatárolhatók a veszélyes programrészek, és kellő munkaráfordítással majdnem teljesen megbízható szoftverek készíthetők, amire az említett területeken elég pénz jut. Kétszer is azt kértem most, higgyétek el az állításomat - azért, mert nem érvelek tovább erről, mindenki maga döntse el, hisz-e nekem.
Szerintem az OOP kontra FP témát érdemes mellőzni a Weblaboron mindaddig, amíg nem kerül a TIOBE listáján az első 10 közé valamelyik tisztán funkcionális nyelv. A mi életünkben szerintem nem kerül erre sor.
Eltérő szemléletek, eltérő
Remek mondat. Igen, pont ez zavar, pedig alapvető emberi minta. Mindig táborokba kell rendeződni, aztán bebizonyítani, hogy jobbak vagyunk, mint a többi tábor. A gyökérkonfliktus, hogy mindegyik tábor "az igazat" fogja hirdetni. Szerintem csak a széles látókör segíthet kilábalni.
Két alapvető vonása az emberi
amíg nem kerül a TIOBE
F# a 11. a listán... Persze nem 'tiszta', csak úgy 95%-s.
Vártam ilyen észrevételt :)
Nem ismerem eléggé az F#-ot a % megítéléséhez, de valóban, a Scalához és az OCamlhez hasonlóan mindhárom fő paradigmát támogatja (imperatív, OOP, FP). Az ilyen többarcúság egyre gyakoribb.
De tapasztalataim alapján a nyelvek mint munkaeszközök megítéléséhez szorosan hozzátartozik a gyökereik és az őket körülvevő kultúra, ökoszisztéma. A bennük írt, velük használható libraryk, keretrendszerek, engine-ek és alkalmazások, a fordítóik és értelmezőik, az ezeket készítő cégek és munkacsoportok. Az eredetük, a szellemiségük és a velük dolgozó fejlesztők jövőre vonatkozó elképzelései. És sok más humán elem, illetve szoftveres képződmény.
Nos, a Scala a Java ökoszisztémájából nőtt ki, nem is akarják kiszakítani onnan. Az F# és a C# hasonló viszonyban áll. Objektumorientált nyelvek két utódja, meglepne, ha nem kötődnének ezer szállal az őseikhez. Csak az JVM-en, illetve a .NET CLR-en futtathatók. (Javához régóta vannak közvetlenül gépi kódra fordító "statikus"compilerek, de kevesen használják ezeket.) Újraírtak bennük minden meglévő Java és C# libraryt, netán van teljesen saját megfelelője ezeknek? Nagyon meglepne. Vagyis a ténylegesen használható eszközeik roppant vegyesek (OOP+FP). Mintapéldákban simán elérhetik az általad említett 95%-ot. Jellegzetes példa az OOP+FP keveredésére a Play keretrendszer. (Azért említem, mert az első verzióját próbálgattam egy ideig.)
Az OCaml nemcsak elvileg sorolható az elsősorban funkcionális nyelvek közé, hanem a gyökerei és a kultúrája is erősen FP-irányultságú.
A TIOBE-re vonatkozó megjegyzésem egyébként inkább kihívás ;), semmint megállapítás.
És ami a lényeget illeti: az "ugyanemiatt a konkurens programfuttatás is minimum problémás, hacsak nem lehetetlen" állítás egyből elhasal, amikor egy funkcionális fővénájú többparadigmás nyelvben írt programban meghívunk egy objektumorientált nyelvben írt metódust, szolgáltatást stb. Csak színtiszta FP esetén lehetne hatásos érv. Konkrétan: F#-ból illetlenség C# libraryt használni, Scalából Javát - csak éppen kényszer.
Mainstream nyelvek közül
A TIOBE-féle ranglista különválasztja a VB-t és a VB.NET-et, ami mint látható, egy új elgondolás, mivel az előző év azonos szakaszában még az ősrégi VB nem volt sehol. Tehát ha összeadjuk a kettőt akkor máris egy "functional-first programming language" bekerült az első tízbe.
Én csak azt nem értem, hogy mitől válik az ismeretterjesztés szempontjából fontossá, hogy most tiszta vagy nem tiszta funkcionális nyelvek terjednek el. A lényeg, a hajlandóság és az igény megvan eme paradigma használatára. Magam is lassan minden nap használok F#-t vagy JS-ben funkcionális stílust követek és nem a NASA-nak írok sugárhajtómű-vezérlőt.
Véleményem szerint, eldönteni azt, hogy funkcionális nyelvek kevésbé olvashatóak-e, csak úgy lehetne, ha tudományos módszert alkalmazva, kísérleteket végeznénk, pl. azonos intelligenciájú, kulturális hátterű diákokat két csoportra bontanánk, egyiknek funkcionális, a másiknak meg procedurális nyelvvel tanítanánk a programozás alapjait; majd megvizsgálnánk a kapott eredményt.
Igazából az egész topicra jellemző, hogy üres frázisokat pufogtat mindkét oldal. Szerintem érdemes lenne először valamilyen tudományfilozófiai elgondolásban megállapodni s utána visszatérni a témához használható érvekkel és haladni egyről a kettőre.
Hmmm...
Tisztán objektumorientált is van legalább 3: Java, Delphi, Ruby, ez 15%. És szerintem jelenhet meg hasonlóan sikeres még, tehát akár nőhet is az arányuk (ennyit a jövőtlenségükről).
Kevert paradigmájúak szintén feljöhetnek az élmezőnybe (vagyis ezeknek is van jövője), de ezekre pont nem lesz jellemző a funkcionálisaknak tulajdonított nagy előny, a megosztott állapotok és a mellékhatások elkerülésének köszönhető könnyed párhuzamosíthatóság. Vagyis ez a nagynak beállított előny ugyan kellemes, de nem ellensúlyozza a hátrányaikat - én ezt állítottam, a TIOBE-val csak megpróbáltam konkrétabbá tenni az állításomat, pont a frázispuffogtatás ellentéteként. A tisztán vagy majdnem tisztán az FP-t követő nyelvek jelenleg 0%-on állnak a TIOBE első 20 nyelve között (ez elég keményen jelzi a valóságot), és az első 10 közé még úgy 50 évig nem kerül be ilyen (ez pedig nagyon erős állítás). Sajnálom, hogy ennél konkrétabban nem tudom cáfolni a funkcionális nyelvek állítólag fényes jövőjét...
Azt viszont leszögezhetnénk, hogy sem a VB, sem a VB.NET nem "functional-first".
"mitől válik az ismeretterjesztés szempontjából fontossá, hogy most tiszta vagy nem tiszta funkcionális nyelvek terjednek el": nem az ismeretterjesztés a tét, hanem az "ugyanemiatt a konkurens programfuttatás is minimum problémás, hacsak nem lehetetlen" állítás érvényessége. Ha igaz, akkor a tisztán funkcionális nyelveké a jövő (esetleg egy teljesen új paradigmát követőké, de semmiképpen nem az objektumorietáltaké, és az FP-t mással keverők is kiszorulnak majd).
20 közül tisztán imperatív:
Vagy nem.
Szerintem, ha előbb a top 10-nél alacsonyabb rangúak, nem mainstream nyelveknek voltak implicit kijelentve, akkor most se foglalkozzunk velük.
Nem, nem veszted el, egy functional first nyelven minden adott, hogy a szükséges programrészeket ebben a szellemiségben írd meg.
Persze, én arra akartam utalni, hogy mivel VB.net 9. a VB 10., ha ezt egybeveszem, akkor máris a 10. helyre felugrik az F#, az pedig "functional-first".
??
"egy functional first nyelven minden adott, hogy a szükséges programrészeket ebben a szellemiségben írd meg": igen, de F#-ban dolgozva aligha írod majd újra a menet közben szükséges libraryket, ehelyett a meglévő, nem funkcionális elemekre is támaszkodsz, elveszítve a tisztán funkcionálisaknak tulajdonított párhuzamosíthatósági előnyt.
Paradigmának titulálják a
Értem. Tehát ha egy nyelv nyelvi eszközöket biztosít, hogy több stílust használhass, attól nem lesz több stílusú a nyelv, csak támogat, hogy több stílust használjál. Remek.
Tehát mert valahol a wikipedia pontatlan, akkor ez is törvényszerűen pontatlan? Legalább egy épkézláb példát mutattál volna, hogy a felsorolt nyelvek közül az mégis miért nem több stílusú nyelv.
Milyen zárt logikai lánc, nyelvi elem gátol meg ebben úgy mégis? Továbbá azért mert te kijelntetted, hogy nincsenek újraírva benne szükséges libek, még nem jelenti azt, hogy ez így is van. Szerintem hozz konkrét, objektívan támadható példákat ahelyett, hogy 3 hozzászólással előtti feltételezésedet tényként közlöd.
200
Már elvesztettem a fonalat, hogy ki kit igazít helyre, vagy cáfolja a másikat...
Én csak arra akartam rájönni,
Utána meg elkezdtük ezt a nem is igazi funkcionális az, mert izé sajt, meg mert nem használtam, meg amúgy is wikipédia dumát.
Szóval én ki is szállok, nem offolok tovább.
A stílus nem paradigma, az F# nem tisztán funkcionális
"Legalább egy épkézláb példát mutattál volna, hogy a felsorolt nyelvek közül az mégis miért nem több stílusú nyelv.": oké. A C nem is szerepel a táblázatban, mert a táblázat címe "List of multi-paradigm programming languages". Maradjunk annyiban, hogy a C tisztán imperatív. Nézzük a PHP-t. Eredetileg tisztán imperatív, a PHP 5 óta objektumorientált programok is írhatók benne. A táblázat szerint funkcionális (marhaság), és "reflection" (ez ugyebár nem paradigma). A Pascal sincs benne a táblázatban, a C-hez hasonló okból. A PL/SQL szintén, noha mint múltkor említettem, a 8-as verziójában már van OOP. Ezeket említettem az (eredetileg) egyetlen paradigmát követő nyelveknél.
"Milyen zárt logikai lánc, nyelvi elem gátol meg ebben úgy mégis?": semmilyen. De nem fogod újraírni :). És ezen áll vagy bukik az említett kérdés.
"azért mert te kijelntetted, hogy nincsenek újraírva benne szükséges libek, még nem jelenti azt, hogy ez így is van": nem jelentettem ki. Fogalmam sincs, hányat írtak újra. Nem nekem kellene bizonyítanom, hogy az F# nem tisztán funkcionális (pure functional), hanem neked kellene bizonyítanod a tisztán funkcionális programozás lehetőségét F#-ban, ha fenntartod azt, hogy F#-ban dolgozva igenis élvezed a tisztán funkcionális programozás szóban forgó előnyeit (t.i. a mellékhatások hiányát és a könnyed konkurenciát).
Tudod mit? Ne bizonyíts semmit. Dolgozz nyugodtan abban a tudatban, hogy F#-ban nem kell figyelned a mellékhatásokra és lazán írhatsz konkurens programokat. Sokat tanulhatsz majd a logjaidból és a debuggerrel :).
Komplexitás
A globális változók használatát egyébként funkcionális nyelvekben sem tudják elkerülni.
Továbbá úgy gondolom, hogy attól, hogy egy globális változót egy objektum lokális változójává teszünk, attól az még ugyanúgy globális marad. Blaze írta korábban, hogy eszközökre van szükségünk ahhoz, hogy a komplexitást elrejtsük a kód mögé. Ez ugyanaz az eset, és nem hiszem, hogy megoldás, mert csak felületi kezelést ad: enyhébbnek tűnnek a tünetek, de a probléma ugyanúgy megmarad.
Azért küldtem be a blogmarkot, mert az alapgondolatával egyetértek, miszerint a szoftverfejlesztés és a szoftverek mára túl öszetettekké váltak. Ez rengeteg problémát okoz már most, a jövőben pedig többet. A megoldás erre szerintem az, hogy minél kevesebb és minél egyszerűbb eszközt használunk a szoftverfejlesztés során.
A funkcionális nyelvek jobbak
Ha komplex szoftver akarunk
Fentebb már leírtam, de
Minél egyszerűbb eszközöket használsz, annál alacsonyabb lesz a belépési küszöb. Egyszerűbb lesz átlátni a kódot, megérteni, így több ember el tudja végezni ugyanazt a munkát, azaz könnyebben cserélhető bárki.
(:
Én használtam munkám során ilyen-olyan eszközöket, de úgy hiszem hogy ahogy egyre összetettebb a fejlesztési folyamat, úgy válik egyre könnyebbé minden. Nem értem azokat az embereket, akik nem használnak IDE-t, mert pl sok memóriát eszik és lassan indul el (nagyon jó érvek..)
Régen is tanulni, fejlődni kellett, hogy valaki jó programozó legyen, és ez most is így van. Sose volt alacsony a belépési küszöb.
és azt ne mondja nekem senki, hogy ha nano-val szerkesztem a kódot, akkor produktívabb leszek.
vagy ha pure javascript-ben csinálok mindent, ahelyett hogy mondjuk angular-t használnék, akkor hamarabb kész lesz a termék, vagy használhatóbb lesz.
Eszközön nem csak IDE-t vagy
Mondok egy példát: egy nagyobb projekten dolgozom, ahol az elején írtam egy munkamenetkezelő osztályt pár egyszerű metódussal, a felhasználókezelő osztály pedig erre a munkamenetkezelőre épült.
Múltkor átnéztem a kódot, és rájöttem, hogy teljesen felesleges ez a sok absztrakció. Egyrészt a munkamenetkezelőt, másrészt a felhasználókezelőt mindig példányosítani kellett, aztán lehetett csak használni őket. Mivel ezek a részek az évek során nem változtak, kiderült, hogy nyugodtan írhatjuk közvetlenül a $_SESSION-t, senkit nem zavar.
Ezután kidobtam a munkamenetkezelő osztályt, a felhasználókezelőt pedig átírtam procedurálisra, így egyszerű függvényhívásokkal, példányosítás nélkül elérhetjük az adatokat. A kód egyszerűbb, átláthatóbb lett, és némileg rövidebb is.
Ez a kidobom és átírom
jaj
Ha jól képzelem el ezt a volt kódot (hogy nálad a felhasználókezelő, egy Controller,BO,DAO keveréke), akkor jaj. Mi köze van a felhasználókezelőnek a munkamenethez?
Jaj, átváltozott ajjajá bennem. Kérlek használd a felhasználókezelőd kódbázisát parancssorból futtatva (nem weboldalad meghívni curl-el nem ér). Vagy kérlek unittesteld a felhasználókezelőd. Vagy kérlek bizonyítsd be hogy a korábbi működés, és a mostani refaktorált működés pontosan ugyanúgy működik.
Mi köze van a
hm.
Ti lehet. Három kódbázis ami előttem van (az alapján irom): cli-ben nincs munkamenet, SOAP apiban sincs, és Restful api-ban sincs.
Ezek szerint ti nem szoktatok parancssorból futtatni semmit. Lehet hogy én dolgoztam (és dolgozok) perverz helyeket, de az üzleti logika jó része háttérfolyamatban volt/van.
Ha már ezt igy meg tudod mondani, akkor már csak annyi kérdésem volna: Lottó számok?
Jah, innentől felesleges tesztelni... Látom érted a unittestelésnek az értelmét. (nem). Talán nem az az egyik értelme a unittestnek hogy nyugodtan refaktorálhatsz, amig nem törnek el a tesztek?
Magyarán nem tudod bizonyitani hogy ugyanúgy müködik mind korábban.
Bocs, (kezdek) ingerült lenni rád, itt befejeztem a vitát veled.
Eleg gyorsan feladtad
Gabor ennel sokkal bigottabb OOP es TDD ellenes :)
Hát már sokan elbuktak,
Megvallom, vonakodtam
Kézi teszteket végzünk.
És a megrendelő jár rosszul
A megrendelő kérése volt,
GUI automatizált tesztelésére
Kár a gőzért, nekem ez a
Érzelmeket nem érdemes
Addig jó, amíg nem kerül a csapatodba egy ilyen fejlesztő :).
Egyébként imádom, hogy nekiállt refaktorálni, rászánta az időt és kigyomlálta a gyűlölt OOP-t. Biztos megérte :). Az a baj, hogy ez már csak rosszabb lesz, ahogy öregszik.
Az értelmeket félretéve
Ez oké, de évek óta mennek
Szeret vitatkozni, mi ezzel a
A Weblabor imázsának sem
A háttérfolyamatok nálunk
Az utóbbi három évben a szerveroldali kódot háromszor refaktoráltam (nyugodtan), a kimenet megváltoztatása nélkül a belsőt teljesen újraírtam, újraszerveztem. A három évben két apróbb szoftverhibánk volt, amik nagyon speciális esetekben jöttek elő. Számomra ez elég bizonyíték arra, hogy kézi teszteléssel is lehet jó programot írni, ha betartjuk az általam hangoztatott alapelveket.
$azonosito = $felhasznalo->adat_olvas('azonosito');
Ebből ez lett:
$azonosito = felhasznalo_adat_olvas('azonosito');
Tervezem, hogy minden hasonlóan működő modult ilyen formára hozok.
Próbáltam már többször
Én pedig úgy vélem, hogy akár milyen jellegű is a szoftver az automatizált tesztek sohasem ártanak. Rengeteg hibát fognak meg. Rászoktatnak, hogy olyan kódot írj, amit lehet tesztelni. A kód, amit lehet tesztelni általában könnyebben átlátható, és mindenképpen könnyebben átírható, mint az, amit nem lehet tesztelni, vagy amihez nincsenek tesztek.
Tesztekből is több fajtát lehet, és érdemes is írni. Lehetnek egyszerű unittesztek, amik egyes függvények működését tesztelik, funkcionális tesztek, integrációs tesztek.
Foglalkozom a témával.
OOP?
Ezt most vita nélkül, ha te azt mondod hogy szerinted a korábbi verziód az OOP-volt, én elfogadom. - és onnantól megpróbálom ignorálni mikor az OOP szidod.
A letrehoz() nem a
letrehoz()
nem a legszerencsésebb választás,peldany()
jobb lett volna. Egyébként valóban singleton mintát használtunk, mivel az egész rendszeren belül egy darab felhasználókezelő modulra van szükség.Használhattuk volna az általad javasolt formát is a new User-rel, de ahhoz minden kérésnél példányosítani kellett volna a script elején az objektumot, aztán pedig át kéne adni azoknak a moduloknak, amelyeknek szüksége lehet rá.
A singleton minta esetünkben azért jobb, mert így csak akkor példányosítunk, ha kell valamelyik adata.
Mind a konstruktor, mind pedig a klónozó metódusaink publikusak, de a klónozó mindig üres.
Singleton helyett érdemesebb
Nem ertetted meg a
Ha te mondod.
Csak mi halandók nem
képtelen vagyok
A, az nem singleton (csak annak használt valami)
B, és úgy egyébként azért sem lett volt szerencsés a "singleton" mert ..
C, felhasznalo->adat_olvas('azonosito') ? miért rettentő ronda. (ha jól értem az egy ->getId()). Még ha az "azonosito" valami osztály konstans volna akkor azt mondanám hogy egye fene. de így? na mindegy.
D, PSR-2 !
F, inf3rno, 210. hozzászólásával egyetértek. (és hogy miért)
G, miért volt tökéletesen értelmetlen a "refaktorálása"
eddig kezdtem azt hinni hogy ő ugyan utálja az OOP-t, de azért mert tud nélküle szép, átlátható, karbantartható kódot írni. (mert tényleg lehet OOP- nélkül is, csak szerintem PHP-ban nem érdemes, de ez más kérdés).
minél egyszerűbb eszközöket
Minél egyszerűbb eszközöket
Ez így igaz.
Ez természetesen nem igaz, pont azért használunk bonyolultabb eszközöket, hogy egyetlen ember el tudja végezni ugyanazt a munkát, amit egyszerűbb eszközökkel csak több ember tud megcsinálni ugyanannyi idő alatt.
Pont erre irtak feljebb
Negativan allsz alapbol hozza, ahelyett hogy egyszer nagy levegot venned es melyebben elmerulnel benne. Hasznosabb lenne szamodra es a vitakban masok szamara is.
C nem is szerepel a
A programming paradigm is a fundamental style of computer programming, serving as a way of building the structure and elements of computer programs. Biztos nem fölösleges szőrszálhasogatásból jegyezted ezt meg...
Remek érv! Ebből aztán megtudtuk, hogy miért nem elég a nyelv eszközei a lambda kalkulushoz, ami ugyebár kvázi a funkcionális programozás.
Eredetileg(pár millió évvel ezelőtt) meg Afrikából származok. Amikor megkérdezik, hogy hova valósi vagyok, akkor mégis azt mondom magyar vagyok.
Marhaság! Ezzel aztán meggyőztél, köszönöm felvilágosodtam. Legalább írnád be előtte, google-be, tudod mit? Segítek.
http://lmgtfy.com/?q=functional+programming+in+php
Ami ugye teljesen irreleváns, mert se a Pascal sem a PL/SQL nem mainstream, az utóbbira pedig úgy szint érvényes a fentebb írottak, hogy teljesen mindegy, hogy valamikor régen mi volt.
Te szótáradban mit jelent a kijelentés, ha ez nem az?
Ebben 100%-ban egyetértünk. Nem fogok bizonyítani semmit, mert nem én jelentem ki, hogy abban aztán nem lehet funkcionálisan programozni.
Szerintem ne foglalkozzunk ezzel többet, megyek inkább debuggolom a nem funkcionális funkcionális kódom.
Nyugalom
Attól még, hogy PHP-ban lehet bizonyos funkcionális mintákat alkalmazni, nem jelenti azt, hogy maga a nyelv funkcionális, hisz alapvetően nem erre lett kitalálva.
"Agresszivitásom" abból
Tobbi, mint a PHP azért nem több stílusú, mert valamikor régen nem volt az, az már csak hab a tortán.
Lehet, hogy igazad van, nem
return $valtozo + 5;
}
$ertek = 5;
$ertek = novel($ertek);
akkor a
novel()
függvény futtatásakor lefoglalja az új memóriaterületet az új értéknek, beleteszi az értéket, majd amikor visszatér, a régi$ertek
"változót" eldobja, és az az újra fog mutatni.Ha ez valóban így van, akkor a PHP azért nem a legalkalmasabb funkcionális programozásra, mert a szemétgyűjtő csak viszonylag ritkán fut le, azaz egy nagyobb rekurzió után nagyon felmehet a memóriahasználat. Egy kifejezetten funkcionális paradigmára kihegyezett nyelvi futtatókörnyezetben ezt nagyon jól le lehet optimalizálni.
Én megnéztem pár videót a
js fel legyen készítve
Ez alatt mit értesz? Nekem van olyan Node.js alkalmazásom, aminek jelentős része funkcionálisan van megírva, természetesen aszinkron, és majd fél éve fut zavartalanul.
A video-ban van egy olyan
https://youtu.be/7Zlp9rKHGD4?t=7m16s
Szóval js sem támogatja az ilyesmit, bár régebben szó volt róla: http://stackoverflow.com/questions/3660577/are-any-javascript-engines-tail-call-optimized
Hmm js speciális eset lehet, gondolom azért kell így csinálni egy ciklust, hogy thread-safe legyen, js viszont azt hiszem máshogy működik ilyen szempontból, mint egy java vagy c#, mert a párhuzamosítást single thread-el és event loop-al oldja meg. Web workerekkel sincs szerintem különbség, ahogy nézem ott is az engine küldözgeti az értékeket a worker és a fő szál között szóval nincsenek ott sem közös változók. Szóval js-ben nincs is igazán értelme a funkcionális programozásnak, mert thread safety szempontjából nem hasznos, ha jól tudom más előnye meg nem nagyon van.
Nekem legalábbis ennyi jött le úgy 1-2 óra utánajárás után, bár láthatóan keveset értek a témához.
forEach
A rekurzió nem olyan dolog,
Ha az ember adatokkal dolgozik, akkor az esetek 99%-ban mindent meg lehet oldani a map/filter/fold függvényekkel, amik úgy vannak megvalósítva, hogy hatékonyak legyenek. Rekurzióra csak nagyon ritkán van szükség. Egyébként az ES6 része a TCO támogatása, amint implementálják a gyártók, onnantól kezdve nem kell aggódni az ilyenek miatt.
Én nem aggódom, nem sűrűn