In fact, compilers got SO good that if you ever did augment your C code with assembly, you were just as likely to slow your application down as to speed it up.
Mit lehet ezen kifejteni? Minden droid tudja, hogy ez baromság. Ha egy magasabb logikai szinten dolgozol elveszted azt a kontrollt ami az alacsonyabb szinten van. Ha az ezer legjobb kóder ezer legjob ciklusát beprogramozzák a fordítóba, akkor sem lesz képes olyan testreszebott megoldást adni, amit te ki tudsz hozni a kódod egy maghatározott részére. Talán egyszer, ha a szuperszámítógépek megunták a sakkozást és a légkör szimulálását, talán akkor majd kódolásban megverik az embert, de egy Visual C fordító... ugyan.
Most nincs kedvem példakódokat készíteni meg ilyesmi. Talán a diszkusszió egy későbbi időpontjában...
A cikkre egyébként: mutatna valaki egy (magasabb szintű) webszerkesztő programot, amit láttán eldobom az összes html+css+photohop ismeretemet?
Ne tévesszük szem elől, hogy web alkalmazásról van szó. GWT-vel egy sor html+css nélkül tudsz web alkalmazást írni. Abszolut igaza van a cikk írónak, egy alkalmazás (és nem website!!) esetén baromi sok időt visz el a html és a css piszkálás, ami ugye csak a gui, az üzleti logikával kellene foglalkozni sokat, a guival szinte semmit. Persze foglalkozni kell vele, legyen ergonomikus, átlátható, intuitív de ez tervezési feladat nem kódolási. Ami a weben történik az egyszerűen vicc. Ahány böngésző annyiféle értelmezés, megjelenítés, egyik ebben másik abban tér el, hackelgetni kell a kódodat jobbra balra, hogy kompatibilis legyél. Kőkorszak.
Végül mutass nekem egy mai modern alkalmazást amit assemblyben fejlesztenek.
Az igaz, hogy egy minimál dolgot könnyű összeütni a GWT widgetjeivel, de nézd meg a mai AJAX-os oldalakat, mennyire lennél versenyképes ha csak a GWT eszközével dolgoznál?
Nehezen tudnék elképzelni egy asztali ASM alkalmazást. De nem is mondtam, hogy ebben a legolcsóbb fejleszteni. Az évek során a processzoridő ára lecsökkent így nem kell agyonoptimalizálni a progamokat, használhatunk olcsó, de pazarló kódot. Az asztali alkalmazásokban sincs olyan verseny, ami ilyen irányú optimlizáció felé hajtaná a cégeket. Ami optimalizáció van (legalább is az én meglátásom szerint) az a hálózati kommunikációval függ össze, mostanában ez a leggyengébb láncszem, ez idegesíti a felhasználót, ehhez pedig nem sok köze van az ASMnek. Nagy ellenérv még a platformfüggetlenség, ami szintén nagy divat ma (az ASM legjobb esetben is CPU függő).
Igazából nem tudok rájönni, hol bizonyítja ez, hogy a C fordítók olyan jól optimalizilnának.
A Visual C fordítót hagyjuk, bár az újabbak sok újdonságot hordoznak. A GCC-t pl. elég dinamikusan fejlesztik, és az utóbbi időben -- bármilyen meglepő is -- olyan optimalizációkat tud "megsejteni", amiket nem gondoltam volna róla. Nem is ez lenne a hozzászólásom lényege.
A fordítók nem mesterséges intelligencia alapján sejtik meg a tutit, hanem nagyon komoly matematikai alapjai vannak az ilyen "optimalizációknak". Pontosan azért, h. bizonyítható legyen a helyessége és reprodukálható az eredménye.
Kicsit erőltetettnek éreztem én is a párhuzamot, már csak a nyelvek természetének különbözősége miatt: az egyik funkcionális, a másik deklaratív/imperatív (mittoménmelyik)... Az viszont felrémlett nekem, h. ahogy minden géphez másik assembly-t kellett megtanulni, addig kb. ez van CSS+JS terén a böngészőknél. A különbség itt az, h. utóbbi esetben sajnos ez a szabványok ellenére történik így.
Ok, nem azt mondtam, hogy az optimalizáció nem javít a kódon, azt mondtam, hogy sose lesz olyan jó, mint amilyet te tudnál írni. Pl egy ciklusról általában futásidőben derül ki, hogy hányszor fog lefutni. Egy IF-ről, hogy gyakrabban igaz-e, mint ahányszor nem. Több egyenrangú feltételről, hogy melyik lesz gyakrabban igaz stb... ASM-ben le tudsz kódolni ilyen apró különbségeket is, amire mondjuk C-ben nincs eszközöd, ehelyett az optimizáló kell javítson valahogy a helyzeten, de a semmiből nem lesz információ.
Sokmindenben jobbak a gépek, mint az ember, de ha optimizálni kell, akkor ASM-ben egy konrét, behatárolt feladatot írsz meg pl egy drop shadow effektet. Itt nincs akkora komplexitás, amit az ember maga nem láthat át. (Elég nagy komplexitásnál, pl ha többezer lokális változó van, biztosan jobb lenne a gép, de ehhez azt hiszem valami súlyos tervezési hibára lenne szükség :)
Zárjuk le ezt gyorsan, mert nem tartozik szorosan a tárgyhoz.
Értem, mit írsz. Nagyjából egyet is értek vele, de több helyen pontosításra szorul.
Elég régóta elérhetőek automatizált módszerek arra, h. hogyan lehet a "semmiből" információt nyerni. Tipikus mintákon előfordítást kell futtatni és a profiling eredményeket, a további fordítások során fel tudják használni a fordítók. (gcc, msvc8, ...)
Nem kell súlyos tervezési hibára gondolni, elég csak egyszerű a manapságdivatos virtualizációkra gondolni (vmware, virtual pc, wine, stb.) Itt minimum processzor architektúrákat kell modellezni, ahol gépiesíteni kell az optimalizációt.
Amit az ember heurisztikusan megfejt, mert tudja, h. hova akar kilyukadni, addig a gépek abban jók, h. az összes létező apró izéből kisajtolják a maximumot, mert idejük és erejük "végiggondolni". Röviden, hidd el, h. a gépek is elég jók! Olvasgasd a pl. GCC dokumentációját ;)
Kifejtenéd? Pontosan az történik, amit az idézet leír. Próbálj írni egy web2-es (vagy nem web2-es) alkalmazást framework nélkül, és utána egy modern frameworkkel. Kicsikét más egy ajax körforgást leimplementálni "kézileg", és más mondjuk MVC-s service-ekkel meg helperekkel.
Kisokosok, könnyen látható, hogy egyre újabb és újabb fejlesztői rétegek kerülnek a html, css, js fölé, a cikk hasonlata meg jó. Az, hogy kicsit sántít, mert más a web, mint a processzor, hát jó, jó, de minden hasonlat sántít, kit érdekel ez.
Amennyiben hozzám is szól a válasz...
Én nem írtam olyat, hogy a magasabb absztrakciós szint rossz. Ez a fejlődés elengedhetetlen része, sőt az új eszközök viszik a technikát a következő szintre. Amit mondok, hogy még nincs a láthatáron ilyen eszköz. Az pedig, hogy "egyszer majd a ma használt eszközöket újabb szinten dolgozók fogják felváltani" közhely. És a cikk nem mond sokkal többet ennél.
Nem, abszolút csak Szabolcs hozzászólását kérdőjeleztem meg. Az általa idézett mondat magyarul kb. azt jelenti, hogy ha túllépünk azon a stádiumon, melyben a programozó kénytelen HTML/Javascript/CSS-szinten szórakozni, sokkal komplexebb és magasabb minőségű applikációkat tudunk alkotni.
És ez így is van, nem értem, miért írta rá (pláne cakephp-s létére), hogy "ez sem gyenge" (talán én vagyok értetlen).
In fact
Bullshit
bullshit explained
ha kifejtenéd, nem feltétlen lenne rossz...
Mesterséges intelligencia
Most nincs kedvem példakódokat készíteni meg ilyesmi. Talán a diszkusszió egy későbbi időpontjában...
A cikkre egyébként: mutatna valaki egy (magasabb szintű) webszerkesztő programot, amit láttán eldobom az összes html+css+photohop ismeretemet?
web application
Végül mutass nekem egy mai modern alkalmazást amit assemblyben fejlesztenek.
Webalkalmazás és a modern alkalmazások
Nehezen tudnék elképzelni egy asztali ASM alkalmazást. De nem is mondtam, hogy ebben a legolcsóbb fejleszteni. Az évek során a processzoridő ára lecsökkent így nem kell agyonoptimalizálni a progamokat, használhatunk olcsó, de pazarló kódot. Az asztali alkalmazásokban sincs olyan verseny, ami ilyen irányú optimlizáció felé hajtaná a cégeket. Ami optimalizáció van (legalább is az én meglátásom szerint) az a hálózati kommunikációval függ össze, mostanában ez a leggyengébb láncszem, ez idegesíti a felhasználót, ehhez pedig nem sok köze van az ASMnek. Nagy ellenérv még a platformfüggetlenség, ami szintén nagy divat ma (az ASM legjobb esetben is CPU függő).
Igazából nem tudok rájönni, hol bizonyítja ez, hogy a C fordítók olyan jól optimalizilnának.
assembly
A fordítók nem mesterséges intelligencia alapján sejtik meg a tutit, hanem nagyon komoly matematikai alapjai vannak az ilyen "optimalizációknak". Pontosan azért, h. bizonyítható legyen a helyessége és reprodukálható az eredménye.
Kicsit erőltetettnek éreztem én is a párhuzamot, már csak a nyelvek természetének különbözősége miatt: az egyik funkcionális, a másik deklaratív/imperatív (mittoménmelyik)... Az viszont felrémlett nekem, h. ahogy minden géphez másik assembly-t kellett megtanulni, addig kb. ez van CSS+JS terén a böngészőknél. A különbség itt az, h. utóbbi esetben sajnos ez a szabványok ellenére történik így.
Optimalizácó megint
Sokmindenben jobbak a gépek, mint az ember, de ha optimizálni kell, akkor ASM-ben egy konrét, behatárolt feladatot írsz meg pl egy drop shadow effektet. Itt nincs akkora komplexitás, amit az ember maga nem láthat át. (Elég nagy komplexitásnál, pl ha többezer lokális változó van, biztosan jobb lenne a gép, de ehhez azt hiszem valami súlyos tervezési hibára lenne szükség :)
Zárjuk le.
Értem, mit írsz. Nagyjából egyet is értek vele, de több helyen pontosításra szorul.
Amit az ember heurisztikusan megfejt, mert tudja, h. hova akar kilyukadni, addig a gépek abban jók, h. az összes létező apró izéből kisajtolják a maximumot, mert idejük és erejük "végiggondolni". Röviden, hidd el, h. a gépek is elég jók! Olvasgasd a pl. GCC dokumentációját ;)
zárjuk le
Azért ez sem gyenge
Azért ez sem gyenge explained
Kisokosok, könnyen látható, hogy egyre újabb és újabb fejlesztői rétegek kerülnek a html, css, js fölé, a cikk hasonlata meg jó. Az, hogy kicsit sántít, mert más a web, mint a processzor, hát jó, jó, de minden hasonlat sántít, kit érdekel ez.
Újabb eszközök
Én nem írtam olyat, hogy a magasabb absztrakciós szint rossz. Ez a fejlődés elengedhetetlen része, sőt az új eszközök viszik a technikát a következő szintre. Amit mondok, hogy még nincs a láthatáron ilyen eszköz. Az pedig, hogy "egyszer majd a ma használt eszközöket újabb szinten dolgozók fogják felváltani" közhely. És a cikk nem mond sokkal többet ennél.
nem
És ez így is van, nem értem, miért írta rá (pláne cakephp-s létére), hogy "ez sem gyenge" (talán én vagyok értetlen).
cakephp-s?
Üdv,
Felhő
u.i. Az első mondattal amúgy egyetértek, nyilván az absztrakciós szint emelésével egzre komplexebb dolgokat tudunk megfogalamzani.
már-már
Már-már ;)