Jenom pro uplnost, v C++ se ekvivalentu ADOvskych atributu rika 'type traits', jsou to vicemene templaty popisujici typy velmi podobnym zpusobem. Pro standardni typy jsou type traits definovane ve standardni knihovne... Napriklad maximalni hodnotu reprezentovatelnou typem 'unsigned' lze ziskat jako
numeric_limits<unsigned>::max()
Hmm, docela hezké. V době, kdy jsem děla v C++ jsem STL moc nepoužíval, protože tehdejsí implementace v BCB 3 stála za starou belu. (Našel jsem chybu i v std::list :-). Ale myslím si, že v C++ je to jen taková nesystémová berlička, ostatně jako skoro všechno v C++. Ale díky za informaci.
Na papire (a na monitoru :) ) to vypada velice pekne, ale obavam se, ze v praxi je to (na vetsi projekty) temer stejne nepouzitelne jako C. Imho to skolabuje na nutnosti mit zdrojovy kod od vetsiny modulu - pri potrebe neco zmenit, pridat, priohnout nastane celkem velky problem, pokud nebudou po ruce. Zatimco dynamicky typovane jazyky (nechci je tu prosazovat, jenom pozanmenavam) nebo system postaveny and nejakym middlewarem umozni navazat pomerne nesouvisejici komponenty, jak se v takovem pripade projevi ada?
Jak to bude vypadat, pokud chci navazat na jiz existujici aplikaci, kterou jsem nepsal, nemam k ni zdrojaky a jedine binarky jsou zkompilovane versi prekaldace, kterou nepouzivam?
Tim se nechci do Ady navazet, v dobe vzniku predstavila (mozna az prilis) dokonaly souhrn znamych postupu a technik.
Podle mě je to přesně naopak. Ada se moc nehodí na malé projekty. Tam je právě užitečná ta dynamika a přiohýbání. Ada je pro malé věci kanon na vrabce.
Ada se na opravdu velké projekty používá docela často. O nutnosti mít zdrojové kódy bych taky docela pochyboval. Ada totiž díky skrývání implementace umožňuje psaní velice čistých a neprůstřelných rozhranní modulů.
Je to prostě poněkud jiný přístup než v C#/Javě a tyto jazyky jsou na ledasco řádově lepší. Ale s tím, že Ada na velkém projektu vybouchne jako C, s tím nesouhlasím.
Ty myslíš nějaké linkování obj souborů které máš "od někud", bez zdrojáků? Přiznám se, že jsem to v životě nědělal, v žádném jazyku. Uznávám, že se tomu v praxi možná nedá vyhnout, ale já takovou situaci považuji za nefér. Buď mám zdrojáky, nebo binárku, ale v nějakém rozumném formátu. Lib, so, dll, class, dll assembly. Obj soubor, který je v každém prostředí jiný za rozumný nepovažuji.
Ná druhou stranu můj oblíbený GNAT je postaven na backendu s gcc a myslím (doufám, že si to nepletu), že se mi kdysi podařilo k adovskému projektu přilinkovat obj vypadnuvši z gcc (C). GNAT si ke každému modulu generuje docela hezké informační soubory, ale jestli ve verzi 3.15 schroustá soubory z verze 2.0, to netuším.
V obecnosti to samozrejme nejde, spis jsem chtel ukazat na to, ze dnes uz je problem jinde. Jde o propojovani ruznych nesouvisejicich komponent pomocni middleware a podobnych veci. Vyznam programovaciho jazyka se pomalu ztraci - v kazde komponente se pouzije ten nejvhodnejsi.
Az se konecne objevi rozumny system distribuovanych objektu pro vice jazyku nastane raj na Zemi :)
Naprosto souhlasím. Moc by se mi líbilo psát něco v Adě, něco v C#, něco v Pythonu a pak to nějak čistě zbastlit dohromady. Zatím je s tím problém. Řekl bych, že ze současných technologií je v tomhle nejlepší .NET. Chce to jen naroubovat jazyky na tuhle platformu. Třeba u Ady, kde se počítá s GC by to neměl být problém.
Řekl bych, že Ada není vymyšlená na nějaké bastlení projektů. Pokud vím, používala se (a snad ještě používá) na projekty, které jsou RT a dost kritické. Tam jsou trochu jiné požadavky na programy potažmo na jazyky. V USA rozhodně od doby, kdy záměna čárky za tečku ve fotranském programu způsobila ztrátu rakety za milióny dolarů a prestiže americké techniky. Rusům se stalo cosi podobného s Fobosem...
Takže bastlit si můžete dovolit při tvorbě WWW stránek, ale těžko při programování Minutemanna, letadla nebo třeba i obyčejného vlaku. Tam může modrá obrazovka znamenat měco podstatně horšího než ostudu, která se dá stejně svést na Billa.
Jinak, v C se dají psát i dost velké projekty, jen je nutné 1) určit pravidla a 2) dodržovat je. Bohužel, spoustu z toho, co Ada zkontroluje sama ať už v době kompilace nebo za běhu, si musím v C zkontrolovat (a tedy napsat do kódu) sám. A testovat a testovat a testovat.
Znám. Psal jsem (psali jsme) v Cčku dost rozsáhlou aplikaci, spíš systém, s časově kritickými věcmi a hlavně s požadavky na spolehlivost.
Mít možnost jít na Adu, oblíz bych všech deset.
> Ada se na opravdu velké projekty používá docela často.
Muzu znat par takovych (treba ceskych), kde nejde o rakety nebo vesmirne lety?
> O nutnosti mít zdrojové kódy bych taky docela pochyboval.
> Ada totiž díky skrývání implementace umožňuje psaní velice
> čistých a neprůstřelných rozhranní modulů.
>
> Je to prostě poněkud jiný přístup než v C#/Javě a tyto jazyky
> jsou na ledasco řádově lepší. Ale s tím, že Ada na velkém
> projektu vybouchne jako C, s tím nesouhlasím.
Takze treba Java neumoznuje skryvani implementace? Mluvime oba o Jave z http://java.sun.com?
> Dokonca existuje elegantny sposob, ako v Object Pascal-e pouzivat jednoduche templates.
Jak? To mě zajímá, nebyl by nějaký link?
Mimochodem, Marku, plánuješ-li více pokračování, jedno z nich by určitě mělo být o generických jednotkách v Adě. C++-kaři se svými prasečkářskými šablonami puknou závistí! :-)
http://www.dummzeuch.de/delphi/object_pascal_templates/english.html
K prikladu tam uvedenemu by som chcel poznamenat, ze pokial nie je planovane rozsirovanie template-u o atributy ani metody, mozno kod:
type
TMemoList = class(_TYPED_OBJECT_LIST_)
end;
nahradit kodom:
type
TMemoList = _TYPED_OBJECT_LIST_;
Jedinym problemom ostava, ze kazdu triedu odvodenu z template treba definovat v samostatnom unite. Pouzivat sa potom da v lubovolnom mnozstve v ktoromkolvek inom unite (staci pridat do sekcie uses nazov unitu, kde je definovana). Zatial som neprisiel na to, ako sa tomu vyhnut. Naopak, kompilacia, code completion a debugovanie funguju bez problemov.
Sorry za takyto mensi offtopic.
Da se v Ade pouzivat objektove orientovane programovani?
Jo a v Object Pascalu:
for i:=low(typ) to high(typ) ....,
kde i je promena typu treba vycet napr.
(jablka, hrusky, tresne, trnky)
<br>
90% veci umi OP taky a krome toho umi linkovat i obj a ma integrovany ASM, atd...