TCH (statz) | #1, Főfasz (10443) |
3920 | #21a0 | ^ | Idézet | Thu, 15 Nov 2012 22:35:00 +01 |
31.46.*.* | *.catv.pool.telekom.hu |
Ja, erről beszéltem. :P Ezt nagyon rosszul tudod kemi, te abból indultál ki, hogy kell deklarálni valahol egy structot, ami alapján történnek a dolgok, de nem erről van szó. Valószínűleg azt értetted félre, hogy ragaszkodtunk a struct kulcsszóhoz, de az itt most nem a C-s deklarált adatstruktúrát takarta, hanem csak azt, hogy sima adatszerkezet amiben a widget properties van letárolva. És ez az adatszerkezet nem forrás szinten van deklarálva, hanem vagy a builder rakja össze a leírók alapján és csak gépi kód szinten létezik, a forrásban sehol nem látszik és nem is hozzáférhető vagy pedig, ha dinamikusan csinálod, akkor is csak az API-n keresztül teheted, amik megint csak már a GUI widgetset natív részei, azaz nem basztathatod őket, nem kerülheted meg őket. Azaz, dehogynem, gépi kódból, de azt OOP alatt is megteheted. :P És mivel csak az API függvényeit basztathatod, pontosan ugyanolyan átlátható lesz, mintha OOP-al csináltad volna, csak kevesebb memóriát eszik és gyorsabb. :P A függvénymeghívás pedig ASM szinten kb. két féle képpen szokott kinézni: a program vagy lementegeti a verembe a paramétereket, vagy regiszterben adja át őket. És mind a két esetben egy sima ugrás van utána. Ojjektumról szó sincs. Gépi kód szinten nincs ojjektum és nem is volt. És ennek megfelelően nem létezik olyan feladat, amit ne lehetne megoldani nélkülük. A "struct" pedig még egyszer mondom, nem látszik a programozó felől, interface acces only. Weblapon kellett PDF-et generálni. Tegnap berúgtam a Super Com-ot, hogy Antarctic Adventure-zzek egyet, de a gamepad nem akarta vinni mind a gombokat, csak a jobbra/balra/start/select gombok mentek. Mondom WTF, megint bekontaktolt ez a szar? Megmozgattam, elkezdett össze-vissza pauzolni, mondom ja. Megint. Egyébként is szokta, már elég régóta csinálja, meg volt törve benne 1-2 vezeték. Ezúttal meguntam, szétkaptam, leforrasztottam, lecsíptem és újrakötöttem. Farewell kontakthibák. Visszadugom a pad-et és a játék ugyanazt csinálja. Mondom WTF, mi ez? Kipróbáltam öt másik játékon és tök faszán ment. Gondoltam, lehet, hogy már annyira koszos a cartridge érintkezője, hogy valamit trágyául olvasott be a memóriába és szarul működik a programban valami? Amúgyis kedves szokása, hogy csak sokadik berakásra indul el. Mármint a cartridge. Egyébként meg megörvendeztet egy db fekete képernyővel. (Egyszóval ez is kontaktos.) Cartridge szétkap, érintkezők acetonnal lemos, összerak, bedug. A menü akadékoskodás nélkül jön fel az első bedugásra, farewell kontakthibák itt is. De ez a geci játék még mindig nem veszi be a fel/le/A/B gombokat. Mi a halál van, bazdmeg. Álltam felette, mint Bálám fasza a szamárban és nem értettem. Aztán hirtelen ötlettől vezérelve kirántottam a nemrégiben megjavított és ezért ismét üzembe helyezett pisztolyovicsot és láss csodát, rögtön ment minden gomb. Visszadugtam a pisztolyt, elkezdtem nyomkodni a ravaszt és a pingvin még ugrálni is kezdett. Hát ez kész bazdmeg, ilyet én még nem láttam. Az Antarctic Adventure valami érthetetlen ok miatt - lévén 1 player only - nézi, hogy mi van a másik porton és, ha be van dugva a pisztoly, akkor összeakad. Ügyes. Sufnituning rovatunkat hallották. A Wikipedia nálatok is szarakszik? Nálam az előbb nem jött be a CSS-e egyetlen wiki-s oldalnak sem. |
kemi (statz) | #2, Főfasz (2970) |
169 | #21a1 | ^ | Idézet | Thu, 15 Nov 2012 22:44:40 +01 |
78.131.*.* | 78.131.*.* |
Vagyis kódszinten nem tudsz létrehozni ilyesmit, erre valamiféle API támogatás kell. Erről beszélek. |
TCH (statz) | #1, Főfasz (10443) |
912 | #21a2 | ^ | Idézet | Thu, 15 Nov 2012 23:22:20 +01 |
31.46.*.* | *.catv.pool.telekom.hu |
Hogy micsoda? Dehát volt ennek a mondatnak egy másik fele is! Vagyis éppenhogy lehet! Áruld már el plz., hogy most pl. egy dinamikusan létrehozott gombnál miért jobb az, hogy bazmeg = new button; bazmeg->left = 300; bazmeg->top = 400; bazmeg->width = 180; bazmeg->height = 90; bazmeg->caption = 'kabbe'; bazmeg->onclick = &klikk();, mint az, hogy new_button('bazmeg'); set_button_left('bazmeg', 300); set_button_top('bazmeg', 400); set_button_width('bazmeg', 180); set_button_height('bazmeg', 90); set_button_caption('bazmeg', 'kabbe'); set_button_onclick('bazmeg', &klikk()); |
kemi (statz) | #2, Főfasz (2970) |
1246 | #21a3 | ^ | Idézet | Fri, 16 Nov 2012 08:16:21 +01 |
78.131.*.* | *.pool.hdsnet.hu |
Teljesen ugyanaz. Megint oda jutottunk, hogy OOP megközelítés nem OOP eszközökkel. Na és mi van akkor, ha nem widgetet, hanem valami saját adatot szeretnél ellenőrzötten módosíthatóvá tenni. Kódszinten létezik, és semmi nem akadályoz meg senkit, hogy közvetlenül hozzáférjen, és ne interfészfüggvényt hívjon. Ebben a megfogalmazásban valami ilyesmi is objektum: int x; void set_x(int val) { x = val << 8; } int get_x() { return x >> 8; }Csak ilyenkor senki nem akadályozza meg a programozót, aki úgy gondolja gyorsabb hozzáférni az inthez, mint interfészfüggvényt hívni. Így aztán ha változtatni kell át kell nézni az egész kódot. De látom te megrögzötten anti OOP-s vagy. |
TCH (statz) | #1, Főfasz (10443) |
2023 | #21a4 | ^ | Idézet | Fri, 16 Nov 2012 12:30:40 +01 |
80.99.*.* | *.catv.broadband.hu |
Nem, ez nem objektum, nem OOP, köze nincs hozzá. Ez mióta ojjektum? Csak az a baj, hogy ha annyira az ki akarja kerülni az interface hívást, azt az OOP se védi ki! Átfirkálja a faszi az osztályt, beírja a maga kis függvényét, ami megkerüli az ellenőrzést és csumi! Nem kemi, én megrögzötten csak ms ellenes vagyok, az OOP-al alapvetően nem lenne bajom, ha nem erőltetnék agyon! De őszintén szólva, te azzal jöttél, hogy az OOP GUI-ra való, ezzel szemben te először néhány sima tömb/string konverter függvényt ültettél át OOP-ra; ebből indult ki a vita, hiszen annak aztán tényleg semmi értelme nem volt. Utána azt mondtad, hogy GUI-n nem-OOP módon gány lesz a kód. Elismerem, ha az ember ránéz egy GTK-s kódra, akkor óhatatlanul erre a következtetésre jut, de mutattam ellenpéldát, hogy nem kell, hogy gány legyen. És most már arról beszélünk, hogy a nyelv, illetve a paradigma akadályozza meg a programozót abban, hogy ostobaságot csináljon. Erre igazából ugyanúgy két dolgot tudok mondani, mint amit saxusnak is mondtam: Egyfelől semmilyen nyelv vagy paradigma nem tudja megakadályozni, hogy a programozó ostobaságot csináljon, másfelől meg akit meg nyelvszinten kéne megakadályozni abban, hogy baromságokat csináljon, azt szakmai szinten kell megakadályozni, ne programozzon. Azért vannak ennyire elhízott programok, mert abból áll a szakma, hogy az inkompetens idióták fasságai ellen védekezik a rendszer, csak éppen hiábavalóan, ez meg is látszik a szoftverparkon... |
kemi (statz) | #2, Főfasz (2970) |
1258 | #21a5 | ^ | Idézet | Fri, 16 Nov 2012 15:57:48 +01 |
78.131.*.* | *.pool.hdsnet.hu |
Hát ilyen formában aaz ellen nem vééd. Egyszerűen lecseréled a private kulcsszót publicra, és máris hozzá lehet férni az adattagokhoz. De ezért van ilyen konvenció, hogy adattag sose legyen public. A fejlesztőkörnyezetek szólnak, ha jól tudom a GCC-t is fel lehet paraméterezni, hogy warningoljon ilyesmiért. A C++ nem kényszeríti ki, meg nem M$ módjára kell használni. C#-ban nincs destruktor, meg memóriafelszabadító utasítás, várni kell a szemétgyűjtőre, ha épp arra jár szabadítsa már fel a már nem használt objektumokat. És persze nem garantált, hogy egy program futása során egyszer is lefut, meghívhatod manuálisan, másodpercekig fut, és még akkor se garantált, hogy felszabadítja azt az objektumot amit szeretnél. C++-ban ha már nem kell az objektum, meghívod a destruktorát, és már fel is szabadult az érintett memóriaterület. Az meg végképp marhaság, hogy a billentyűlenyomásra várakoztató függvény objektumba csomagolva adja vissza, hogy mi volt a leütött billentyű, holott visszaadhatna egyszerűen egy scan kódot. Ezért mondom, ahol nem muszáj nem kell használni, ahol praktikus jól jön. |
TCH (statz) | #1, Főfasz (10443) |
2057 | #21a6 | ^ | Idézet | Fri, 16 Nov 2012 16:25:39 +01 |
80.99.*.* | *.catv.broadband.hu |
Na, hát akkor mi értelme is van ezeknek a kódszinten létező protected/private adatoknak, ha egyszer - OOP vagy sem - kikerülhető? Minek kellett akkor ide az OOP? Azért, hogy egy kódszinten ugyanolyan sérülékeny, de legalább sokkal nagyobb és lassabb megoldás legyen, csak az elv kedvéért? De kemi, konvenciókat OOP nélkül is lehet hozni; ennyi erővel hozok egy konvenciót, hogy az x értékét ne basztassák közvetlenül, mert érzékeny adat és használják az interface-t. Én a C++-t nem bántottam, semmi bajom nincs vele. Az m$ féle használat meg itt - kivételesen - kissé sántít, mert a dzsuva is ilyen és az nem m$. OMG. OMG. OMG! OMG! OMG!!! WTF?!!! Rakni fogok facepalm bbcode-kat a vendégkönyvbe. Erre már képtelen vagyok mit mondani. Jó, oké, ez így oké lenne, de: • Hol praktikus? • Minek tetted be a string/array konvertereket egy osztályba? Ugye nem akarod azt mondani, hogy ott az praktikus lenne, hogy ötször annyit allokálgat, amikor épp előtte szóltál nekem, hogy egyszer kéne allokálni a ciklus előtt, nem pedig alatta folyamatosan. (Amiben lehet, hogy igazad is van, ki fogom benchmarkolni.) |
kemi (statz) | #2, Főfasz (2970) |
371 | #21a7 | ^ | Idézet | Fri, 16 Nov 2012 16:42:28 +01 |
78.131.*.* | *.pool.hdsnet.hu |
A forrásba bele lehet nyúlkálni, de nem illik. Ha akarod kommentbe is odaírhatod, hogy nebasztasd. A hülye programozó ellen meg semmi nem véd. De elképzelhető, hogy nincs forrás, csak tárgykód, akkor viszont nem lehet belenyúlni. |
Prometheus (statz) | #3, Főfasz (1824) |
84 | #21a8 | ^ | Idézet | Fri, 16 Nov 2012 16:48:43 +01 |
84.0.*.* | *.dsl.pool.telekom.hu |
Flood3r, mit is mondtál, hol csapkodjam az asztalt, ha még mindig nincs meg a maszk? |
TCH (statz) | #1, Főfasz (10443) |
651 | #21a9 | ^ | Idézet | Fri, 16 Nov 2012 17:34:16 +01 |
80.99.*.* | *.catv.broadband.hu |
Hát ez nagyon hatékony védelem. :P (És ez is tök mindegy, hogy OOP vagy sem.) Hát ez az. Akkor mire is van az OOP? Na ja, de ez megint teljesen független attól, hogy OOP vagy sem; ha nincs forrás, akkor ugyanúgy nem tudod basztatni a változót, mert fingod sincs róla, hogy ott van. (Oké, disassembly a barátod, de az ellen az OOP sem véd.) Viszont, a két kérdésem felett átsiklottál. |
Flood3r (statz) | #8, Lófasz (838) |
264 | #21aa | ^ | Idézet | Fri, 16 Nov 2012 18:30:57 +01 |
94.21.*.* | *.pool.digikabel.hu |
Azt nekem kell csapkodni. Ha még egy darabig nem jön meg, indítok egy paypal dispute-ot és visszautalja a pénzt. Nem tom hol a francba nyelődött el az a fos. |
TCH (statz) | #1, Főfasz (10443) |
142 | #21ab | ^ | Idézet | Fri, 16 Nov 2012 18:33:57 +01 |
80.99.*.* | *.catv.broadband.hu |
Valahol a pósta egyik raktárában. Tű a szénakazalban2012 (C) magyarpósta. |
Prometheus (statz) | #3, Főfasz (1824) |
71 | #21ac | ^ | Idézet | Fri, 16 Nov 2012 19:03:26 +01 |
84.0.*.* | *.dsl.pool.telekom.hu |
Köszi, Flood3r. Még nem jött póstai értesítő, tehát nem tehetek semmit. |
saxus (statz) | #9, Agyfasz (419) |
2180 | #21ad | ^ | Idézet | Fri, 16 Nov 2012 19:36:45 +01 |
31.46.*.* | *.dsl.pool.telekom.hu |
"A C++ nem kényszeríti ki, meg nem M$ módjára kell használni." Ha mar itt tartunk, lassan az MSVC++ jobban all a C++11 tamogatassal, mint a GCC. "C#-ban nincs destruktor" Tevedes, van destructor (finalizernek hivja a CLR) "meg memóriafelszabadító utasítás" Mar hogy ne volna. :) IL kodba erdemes neha belenezni. "várni kell a szemétgyűjtőre" Var a halal, fut az magatol a hatterben es ez igy van jol. Egyebkent tegyuk hozza: ez a CLR resze, nem a C# nyelve. És persze nem garantált, hogy egy program futása során egyszer is lefut, meghívhatod manuálisan, másodpercekig fut, és még akkor se garantált, hogy felszabadítja azt az objektumot amit szeretnél. Ahogy TCH is mondta (igaz egesz mas okbol) WTF? :) "C++-ban ha már nem kell az objektum, meghívod a destruktorát, és már fel is szabadult az érintett memóriaterület." Es .NET-ben nem ugyanigy mukodik? :) Kulonbseg, hogy nem neked kell vadaszni ezeket. Mellesleg komolyabb C++ projekteknel szinte kivetel nelkul hasznalnak valamilyen GC jellegu megoldast. "Az meg végképp marhaság, hogy a billentyűlenyomásra várakoztató függvény objektumba csomagolva adja vissza, hogy mi volt a leütött billentyű, holott visszaadhatna egyszerűen egy scan kódot" Ehelyet a kis suttyo visszaad neked egy immutable osztalyt a billentyuzet teljes allapotterevel, hogy ha te 2 nap mulva akarsz foglalkozni azzal az eredmennyel akkor is konzisztensen ugyanazt az eredmenyt kapd a kulonfele valtobillentyuk allapotarol is :) Na meg visszakapod az esemenyt kivalto objektumot meg egy csomo egyeb adatot, ami alkalomadtan kellhet. Egy alapvetoen 50 Hz-vel mukodo billentyuzet eseten azt hiszem nem fogok megijedni attol a minimalis plusz adatmennyisegtol. Btw. erdemes .NET temakorben elolvasni a CLR via C#-ot. Ravilagit nehany erdekes dologra a .NET-tel kapcsolatban. ---------------------------------- Totalmas: TCH: megvan meg a IG2DAT_E kodja? Elkerhetem? :) Masik: Nem tudod, hogy ezek az .xv fajlokat mi a retek eszi meg? (MMint az IG2-n kivul) Jo lenne valami szabvanyos cuccba atkonvertalni (mondjuk .obj+.mtl), tobbi cucc ugy nezem total szabvanyos BMP meg wav) |
saxus (statz) | #9, Agyfasz (419) |
1020 | #21ae | ^ | Idézet | Fri, 16 Nov 2012 19:46:26 +01 |
31.46.*.* | *.dsl.pool.telekom.hu |
"Hát ez az. Akkor mire is van az OOP?" Kopipasztanal hatekonyabb kodujrafelhasznalas (szarmaztatas), absztrakcio (pl. nem foglalkozol vele, milyen Stream, lehet File, Network, ZipStream, kifele egysegesnek nez ki), egysegek kialakitasa, retegezett programszerkezetek kialakitasa, (foleg parhuzamositott programoknal) egyszerubb egy zart egyseg konzisztenciajanak fenntartasa, meg sok-sok ilyen egyeb hasznos dolog. Az egesz lathatosagi moka csak egy mellekes dolog. Meg mondjuk meg lehetne beszelni az Actor modellrol (ld. Erlang), ami valahogy kimaradt a C++(Java/NET/egyeb haverjai) vonulatbol. Bar ennek nyomai mutatkoznak pl. a C#5 asyncnel na meg ahogy nezem manapsag a legtobb OOP nyelv nekiallt mindenfele funkcionalis nyelvbol atorokiteni dolgokat, ld. LinQ, clojure, ezekhez kapcsolodoan mindenfele anonym adatszerkezet es fuggvenyek, stb. Na meg Java (pontosabban JVM) vonalon a Scala, meg mintha picit ujra eloterbe kerultek volna a tisztan funkcionalis nyelvek, mint Lisp, haskell meg ilyesmik. |
kemi (statz) | #2, Főfasz (2970) |
587 | #21af | ^ | Idézet | Fri, 16 Nov 2012 20:27:26 +01 |
78.131.*.* | *.pool.hdsnet.hu |
Én is ezekre próbáltam rávilágítani. Ezt nem vitatom, de a dotnet, meg a java egy kalap bloatware fos. |