>>> Právě důmyslný silný typový systém a zakázání automatických konverzí je cestou k rychlejšímu, levnějšímu vývoji bezpečnějších a spolehlivějších aplikací.
Hrozne by me zajimalo, jestli krome Vaseho FTP serveru existuje nejaka dalsi success story z posledni doby a na "bezny" problem (ne raketoplan), ktera by podporila tohle tvrzeni. Proc se tedy jazyky tohoto typu (ADA, Eiffel aj.) nepouzivaji vic? Neni lepsi proste vic testovat?
Osobne souhlasim s autorem ze silna typova kontrola uz pri prekladu usetri obrovske mnozstvi problemu za behu. Jsem programator v Jave a mame to tam taky ;-)
Testovat hotovou aplikaci je prilis pozde... Pokud jste mel ale na mysli ke kazde tride udelat jeji testovaci tridu, pak je to jiste jeste o neco lepsi... ;-)
>>>silna typova kontrola uz pri prekladu usetri obrovske mnozstvi problemu za behu
To by me zajimalo, co by na to rekli programatori ve smalltalku ;-)
>>>Testovat hotovou aplikaci je prilis pozde
Ja jsem prave myslel takovy ten klasicky doporucovany postup Unit testing - Integration testing - System testing.
My zase vyvijime v C#, takze to bude velice podobne jako ta vase Java, ze, ja jsem se nad tim ted zamyslel asi trochu moc obecne, spis ve vztahu k tomu Eiffelu a tem jejich constraints, co muzou definovat v metodach a zajistovat tim integritu parametru a buh vi ceho.
Ja s tim (=kontroly) osobne mam totiz spis takovou negativni zkusenost, ze ty kontroly jsou stejne jen tak kvalitni, jak kvalitni je kod, ktery maji testovat. A casto to pak muze dopadnout tak, ze se stravi 2* tolik casu a ty constraints jsou pak stejne k nicemu, protoze neodchyti vsechno :-(
Eiffel nema constraints :-) eiffel ma design by contract :-) Je to fantasticka vec zejmena pokud uz nekdo ty klasy napsal pred vama a vy je musite pouzivat coz jsou typycky standartni klasy dodavany s kompilatorem. Usetri to spoustu casu s ladenim. Sam to taky pouzivam, protoze je to super a hlavne protoze muzu klidne zahodit debuger, kterej podle me jen zdrzuje, protoze clovek pak pise metodou pokus omyl a vetsinou tech omylu je pozehnane nez prijde spravny reseni.
Pokud je nekdo linej proste nemusi vsechny ty require a ensure kousky psat. Jeho rozhodnuti :-)
Ale hlavne Eiffel je objektove orientovanej jazyk narozdil od javy c# c++ a podobnejch bazmeku... tj zadny primitivni typy, multinasobna dedicnost, zadny pointry, zadny zkurv... interfejsy, ktery vyvoj ztezujou nez by ho zlehcili, garbage colector a milion dalsich krasnejch veci.
S eiffel vs java/C#/c++ apod je to jako s francouzkska kuchyne vs mcdonnald. To prvni je super a spousta lidi nevi jak dobry to je, to druhy je sracka ktera ma nejakou garantovanou mizernou kvalitu ale dostacuje to vetsine
>>> eiffel ma design by contract :-)
Ja vim, me se jen po ranu nechtelo premyslet, jak se to doopravdy jmenuje ;-)
Je to pravda, porad je to vlastne dokola (i v jinych prispevcich): kdyz to bude psat nekdo dobre, tak to bude dobre, kdyz ne tak ne. Ted jde vlastne jen o to, jak vsechny kolem co nejvic donutit, aby to dobre psali. A v tom mi ty testy prijdou jednodussi, protoze si je aspon muzu poustet porad dokola a divat se, jak dopadly.
>>>clovek pak pise metodou pokus omyl
Tak to je uplna pravda, programovani typu "Aha, tak ono i je 0 a melo byt jedna, tak to tam asi ma byt i++;" je asi to nejhorsi co znam. Ale v tomhle zadny jazyk, ani Eiffel, nepomuze, ne?
A bude teda aspon nejaky naznak te success strory v Eiffelu? ;-)
Proč se tolik dělá v C/++ jsem nikdy pořádně nepochopil. Plain C je výborný prostředek na low-level programováni (jádra OS), proč se v tom dělají kancelářské balíky nechápu. Ada je IMHO na servery jako dělaná. Vemte si například kolik se dělá patchů kvůli různým buffer overflow. U jazyke, který pořádně kontroluje meze polí takový útok nepřichází v úvahu. Maximálně jedno vlákno serveru sletí na nějaké výjimce, ale ostatní uživatelé frčí dál.
Jinak Ada má zase své problémy. Nepříjemná práce s řetězci a neuveřitelně toporné OOP (bez rozhranní, jednoduchá dědičnost, nepřehledná syntaxe).
> Neni lepsi proste vic testovat?
Ale to je právě ono! Překladač silně typového jazyka vlastně provádí část testů sám, takže je není nutné implementovat znovu a znovu a znovu...
> Proc se tedy jazyky tohoto typu ... nepouzivaji vic?
Ada je moloch. Sám jazyk obsahuje konstrukce pro "úplně všechno", např. nízkoúrovňové I/O či synchronizaci paralelních procesů. IMHO v době jejího vzniku nebylo snadné udělat překladač, navíc takový aby se vešel na tehdejší HW, takže existovaly jen implementace přísně kontrolované US vládou. A mezitím se objevily "lepší" jazykym např. <flame>Java</flame>. ;-)