Proč jsou programy velké jako kráva

C++, C#, Visual Basic, Delphi, Perl a ostatní

Moderátor: Moderátoři Živě.cz

Odeslat příspěvekod xmms 18. 8. 2009 10:54

Tak mě napadlo se jen tak ze srandy naučit programovat. Nainstaloval jsem Dev-C++ a vytvořil velký, složitý sofistikovaný konzolový program na sečtení dvou čísel. A skutečně. Kompilace mě potěšila bez problému a soubor sežral nádherných půl megabajtu. A protože jsem před tím trochu assembleroval, tak jsem si tu nádheru odkrokoval. Je tam pěkná plejáda zajímavých datových přesunů a různých výpočtů. Přitom by jen stačilo naplnit registr číslem a přičíst k němu další číslo. U velkých programů je jasné, že každý složitý výpočet ještě navíc obalený vrstvou dalšího balastu se pěkně projeví na výpočetní náročnosti. Důvod je velice jednoduchý - přinutit uživatele koupit nový drahý počítač. Jinak bychom tu měli parádní pentia II 500 MHz, na kterých to bude svištět jako drak. Můj počítač provádí miliardy výpočtů za sekundu, o čemž bych občas pochyboval.

Nebo je v tom nějaký jiný rozumný důvod?
Vždycky bude někdo lepší než ty. A krysám se nikdy nevyrovnáš. Nikdy!
xmms
Junior
Uživatelský avatar

Odeslat příspěvekod cawook 18. 8. 2009 11:30

ja mam v asm napisany vlastny runtime, takze ked si robim nejake tooly, maju jednotky kB...

kazdopadne, velka cast vyslednej binarky su standardne funkcie, inicializacia kodu, vynimiek, je toho dost co standardne c++ musi pred tvojim kodom vykonat. Akurat sa to vykona len raz, takze neviem co splietas o nuteni kupovat nove pc... snad ti to exe nebootovalo 7 hodin.
cawook
Junior

Odeslat příspěvekod kohutisko 18. 8. 2009 11:46

dalsi konspirator :) dovod nie je nutit ludi kupovat drahsie a novsie pocitace, dovod je lenivost programatorov, resp. znizovanie nakladov na vyvoj. ked mas spravit nejaky hello world, tak je totiz lacnejsie a jednoduchsie napisat printf("hello world"); ako pisat si to cele v assembleri
kohutisko
Junior
Uživatelský avatar

Odeslat příspěvekod xmms 18. 8. 2009 12:25

No ale i tak je půl mega dost. Takový ping.exe (který umí aspoň pingat) má 18 kB. A hádám, že ho asi nenapsali v assembleru.
Vždycky bude někdo lepší než ty. A krysám se nikdy nevyrovnáš. Nikdy!
xmms
Junior
Uživatelský avatar

Odeslat příspěvekod Falhar 18. 8. 2009 12:29

A skompiloval jsi to jako "release" ?? Tedy s vypnutými debugingem a zapnutou optimalizací?
Jinak pokud se podíváš na součastné programy, tak ty zvládají mnohem více než jenom "obyčejné sčítání". Funkcionalita programů se zvyšuje skoro exponencionálně a tedy i potřebný výkon. Dost si na tom taky bere abstrakce. Není prostě možné aby si někdo najal 100 guru-programátorů aby jim naprogramoval office v ASM. Stálo by to 1000x více peněz a 100x více času než normálně. Proto dochází k abstrakci programování aby se urychlil, zjednodušil a zefektivnil vývoj aplikací za cenu jejich efektivity.
Jinak office a web spustíte v součastné době na PC za 10k i s monitorem a příslušenstvím. Drahé a super-výkonné PC si koupí člověk, který to buď potřebuje (hry, video, servery a mainframy), nebo člověk, který tomu nerozumí a funguje na něj reklamní masáž.
Edit : A jak už tady padlo, tak problem bývá taky v programátorech. Je totiž mnohem dražší a zdlouhavější napsat efektivní program. Většinou se zákazník spokojí s "funkčním" programem i když je možné ho ještě dále optimalizovat.
Falhar
Junior

Odeslat příspěvekod kohutisko 18. 8. 2009 12:35

xmms píše:No ale i tak je půl mega dost. Takový ping.exe (který umí aspoň pingat) má 18 kB. A hádám, že ho asi nenapsali v assembleru.

bohuzial netrufam si odhadnut, ako vyzeral ten program, akym sposobom bol kompilovany a linkovany. a to plati ci uz pre ten ping tak aj pre tvoju polmegovu binarku. ber to tak, ze to, ze ty si vyrobil polmegovu kravu, neznamena, ze ludia, ktori sa tomu venuju dlhsie a maju hlbsie znalosti a skusenosti, vyproduku pri tej istej funkcionalite stale tu istu polmegovu kravu.
kohutisko
Junior
Uživatelský avatar

Odeslat příspěvekod Dany0 18. 8. 2009 13:02

Já to taky nechápu ale budiž.
Jde o to že do tý aplikace ještě kompilátor asi zahrnul všelijaké ty Win32 knihovny pro podporu win32 oken, win32 konzole, win32 Drag&Drop, win32 balast, win32 BSOD, win32 LOL-MAO, win32 další zvyklost, win32 win64, Win32 SuperFetch a podobné věcičky.

Jde o to že i v takovém malém prográmku jsi nechal zahrnout všechny ty věci na co jsou uživatele zvyklí, takže to nemusíš psát sám a znova.

Proto, aby se toto vynechal, ti doporučím rosšíření jazyků C "C Assembler". Napíšeš např.

main(asm):
####
assemblersky kod
####

A 10000x ulehčíš práci CPU. Takhle se programují seriózní aplikace pro win. Aspoň co já vím :D
Místo abych psal další *ehm* podpis, raději půjdu ven na čerstvý vzduch.
Kdo chce pozvánku do Google Wave tak SZ! Furt jich mám spoustu :)
Dany0
Trvalý BAN
Uživatelský avatar

Odeslat příspěvekod Falhar 18. 8. 2009 13:09

Taky je dobré rozlišovat mezi velikostí a efektivitou programů. Hlavně proto, že tyto dvě věci nemusí přímo souviset.
Ty se rozčiluješ nad efektivitou ale snažíš se to argumentovat velikostí, což není zrovna ideální. Efektivita se většinou měří rychlostí s jakou je daný program/algoritmust vykonáván a specifickém hardwaru.
Velikost programů bývá velice často způsobena velkým množstním "obsahu" aplikace a zdrojový kód je velice manou částí celé aplikace. Dost často tam bývají různé obrázky, grafika, texty a podobné věci které nemají na výslednou efektivitu malý nebo žádný dopad.
Falhar
Junior

Odeslat příspěvekod Dany0 18. 8. 2009 19:13

Není pravda. bývají i velké serverové aplikace o velikosti mnoha a mnoha GB které neobsahují žádné dokumenty... a ani databáze.

Navíc je tu ta možnost integrovat dokumenty přímo do aplikace.
Místo abych psal další *ehm* podpis, raději půjdu ven na čerstvý vzduch.
Kdo chce pozvánku do Google Wave tak SZ! Furt jich mám spoustu :)
Dany0
Trvalý BAN
Uživatelský avatar


Odeslat příspěvekod Dany0 18. 8. 2009 20:19

Nice Find! :-D
Místo abych psal další *ehm* podpis, raději půjdu ven na čerstvý vzduch.
Kdo chce pozvánku do Google Wave tak SZ! Furt jich mám spoustu :)
Dany0
Trvalý BAN
Uživatelský avatar

Odeslat příspěvekod JanFiala 19. 8. 2009 04:30

V dnešní době nepotřebuješ psát maličké aplikace, ale potřebuješ psát aplikace efektivně.
Efektivně = mít co nejlepší poměr výkon/cena = napsat aplikaci s co nejnižšími náklady.
Tomu jsou přizpůsobeny vývojové nástroje. V jakémkoliv nástroji dokážeš napsat aplikaci, která bude mít několik kB, ale budeš tomu muset věnovat mnohem větší úsilí = mnohem víc času = mnohem větší náklady.
Co můžeš udělat dnes, odlož na včerejšek
JanFiala
Expert
Uživatelský avatar

Odeslat příspěvekod jagd 19. 8. 2009 06:19

Trochu z jiného soudku - jak se šetří místem -> velikost apps a lenivost/pohodlí uživatelů:
Běžně se lze setkat s jednoduch.prog., jež umožňují stažení v zipu o velikosti 150kB (stačí někam uložit-rozbalit, neinstalují se; obsahují samorozbal.archív či přímo spustitelný soubor) nebo jako instal.soubor (exe, msi, aj.) o vel. 2.5MB a více (jednotl.soubory po instalaci a 'rozsetí' po pc zabírají daleko víc místa, než prvotní neinstal.soubor).
Lze sice instal.soubor zase smazat, ale většinou se archivuje.
Windows - okna virům otevřená dokořán.
jagd
Junior

Odeslat příspěvekod xmms 22. 8. 2009 19:50

Falhar: mám optimalizaci na best a debug vypnutý. Konzolový program typu hello world má 465 kB, rozumnou velikost bych viděl okolo 5 kB. Co dělám špatně?
Vždycky bude někdo lepší než ty. A krysám se nikdy nevyrovnáš. Nikdy!
xmms
Junior
Uživatelský avatar

Odeslat příspěvekod JanFiala 22. 8. 2009 22:11

Mas tam includovane knihovny, ktere nepotrebujes
Co můžeš udělat dnes, odlož na včerejšek
JanFiala
Expert
Uživatelský avatar

Další stránka

Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků