Hlavní navigace

Názor ke článku Potvrzeno: Java bude Open Source! od Miloslav Ponkrác - [32] "dle meho nazoru, by se s objekty...

  • 14. 11. 2006 21:38

    Miloslav Ponkrác (neregistrovaný)

    [32] "dle meho nazoru, by se s objekty melo pracovat ciste jen pomoci zasilani zprav. v kodu, nejsem schopen odhadnout jestli je to co zrovna pouzivam promenna nebo property..."

    dotaz: k čemu to vlastně potřebujete vědět? není to jedno? prostě tohle je interface třídy a jak je to uvnitř je mi buřt.

    "pardon, to s tim runtimem me ujelo... za cenu jednodussiho kompilatoru a standardnich knihoven."

    a proč by mě jako programátora mělo zajímat jednoduchost kompilátoru? co mi to přinese? tedy kromě toho, že budu muset jednoduchost kompilátoru kompenzovat dnes a denně opisováním dalších konstrukcí.

    [36] "Do jiste miry ano, ale Java poskytuje nekolik konceptu, ktere posouvaji dale od assembleru, jeste dale nez je C++."

    Jakých? Já myslím, že to vyjde nastejno. Ale třeba taková typická assemblerovská konstrukce v Javě je:

    if (string1.equal­s(string2))

    protože neassemblerovské jazyky prostě umožňují čisté a jasné:

    if (string1 == string2)

    Nemožnost porovnávání řetězců pomocí operátoru porovnávání, ale nutnost volat equals beru jako krok zpět k assembleru. Prostě ono se to plus mínus vyrovná. Nic významnějšího kromě rozdílů, které vyplývají z faktu, že C++ je kompilátor a Java nad virtuální mašinou nevidím.

    "Srovnani Javy a C++ je samozrejme zcela na miste, protoze jsou to oba vyssi programovaci jazyky, ktere poskytuji priblizne stejnou miru abstrakce (az na tech nekolik prvku). Jinymi slovy jsou to oba objektove vyssi programovaci jazyky pro obecne uhlohy."

    Ne není. Protože každý z nich má jiné cíle a v souladu s těmito jinými cíly se také používají. C++ je daleko obecnější, než Java, a proto také složitější. Pokud mi chcete dokázat opak, tak nejlépe tím, až Javovská virtuální mašina nebude obsahovat ani řádek kódu v C/C++ a bude kompletně v Javě. Na druhé straně netvrdím, že se má psát všechno v C++, to by bylo velice nerozumné. Zatímco C++ nepotřebuje ke své funkci žádný Javovský kód.

    "Ted jste tedy teprve dokonale promichal ovoce. Java je programovaci jazyk i pro narocenjsi ulohy, kdezto Python a Ruby jsou obecne skritpovaci jazyky, Lisp je sice obecny, ale pro svou povahu uzivany zejmena pro reseni uloh umele inteligence a Smalltalk je zase oproti Jave a C++ dusledne objektovy, takze ma od Javy a C++ dal nez Java od C++. Nemluve pochopitelne o knihovnach, komunite a podpore. Pokud uz chcete srovnavat Ruby a Python, pak tedy s JavaScriptem."

    Pořád je toto srovnání rozhodně serióznější, než C++ a Javy. C++ je prostě omezeno tím, že za prvé MUSÍ už z principu umět využít všechny možnosti pro maximální rychlost a efektivitu běhu a za druhé musí to být soběstačný jazyk bez potřeby podpory jiného jazyka. Tyto dvě vlastnosti jsou prostě základ a na tom C/C++ stojí a padá. Pokud tedy chcete C++ seriózně srovnávat s jiným jazykem je potřeba aby i ten druhý jazyk měl tyto dvě vlastnosti. Protože tyto dvě vlastnosti dávají velkou efektivitu, ale zároveň omezení. Právě absence těchto dvou vlastností u jiných programovacích jazyků byla důvodem ke vzniku C a později C++. Proto není seriózní srovnávat C++ s Javou, neboť Java tyto dvě vlastnosti nemá.

    Všechny výše uvedené jazyky tyto omezení dané jejich zaměřením na úplnost a efektivitu nemají, tudíž je to serióznější. Jinak Ruby je tak trochu klon Smalltalku, stejně tak jako třeba Objective C. Takže tyto tři jazyky patří k sobě trochu blíže, než byste je dal Vy. Lisp (a zjednodušená varianta Scheme) daleko více, než pro umělou inteligenci se používá jako univerzální skriptovací jazyk, nápověda: AutoCAD, emacs, gimp. A Python je prostě jazyk, který vznikl kdysi podobným způsobem jako Java - snaha umožnit normálním lidem vyhnout se problémům Céčka. Každopádně všechny jazyky mají společné to, že si nekladou nároky na úplnost (potřebují tedy všechny stejně jako Java na nižší úrovni pomoc C/C++), ani na efektivitu (což je zákon číslo jedna pro C/C++) a obětují ji pro pohodlí programátora a pro bezpečnost.

    "To je vubec poprve, co pisete C/C++, do te doby jste uvadel pouze C++, takze by bylo dobre si uvedomit ten obrovsky rozdil mezi C a C++ a pripomenout si ho, kdyz mluvite o programech extremne citlivych na rychlost a nemate rad michani ovoce."

    Protože určením jsou oba jazyky stejné, jen prostě C++ obsahuje mnohem komfortnější konstrukce.

    "A jinak, z textu jsem to uplne nepochopil, ale nejsem si jisty, zda prikladate nejakou vahu tomu, ze programy psane v Java bezi obvykle na VM, kdezto programy psane v C++ obvykle ne. Ono to totiz k diskusi o jazycich jako takovych neni moc relevantni"

    Ano, přikládám tomu váhu a to je jeden z důvodů proč srovnání C++ a Javy beru jako kardinální pitomost.