Hlavní navigace

Názor ke článku Rubinius 1.0 již klepe na dveře od abyssal - Milý pán Ponkrác (alias LO?): [18] 1) "Spuštění unit testů...

  • 27. 12. 2007 23:58

    abyssal (neregistrovaný)

    Milý pán Ponkrác (alias LO?):

    [18]
    1) "Spuštění unit testů není, nebyla a nikdy nebude záruka bezchybnosti programu. [...]" O tom žádná. Na to obecne nestačí ani model checking (Gődelova/Riceova veta, halting problem). To skôr vyžaduje "osvietenie" jak písať dobré testy.

    2) Udržovateľnosť je rozhodne dôležitá. Napriek tomu, pri C/C++ to neni o moc ružovejšie (oproti Perl/Python/Ruby). Koľko prekladačov dodržuje C99 normu (napriek nejednoznačnos­tiam)? Snáď ani jeden. V tomto je msvc horšie než gcc/icc (plus nás čaká ďalšia C norma, ktorú ešte AFAIK žiadny prekladač neimplementuje). Tak pri prechode na novší prekladač sa rozbijú veci, ktoré "náhodou" (napriek nesprávnosti/ne­jednoznačnosti) fungovali na starších prekladačoch, gcc >=4.1 sú v tomto o dosť striktnejšie (dalo by sa povedať, že je to chyba programátora, ale keď ide o nejednoznačnosť normy, tak koho je to chyba?).

    Spätná kompatibilita je dobrá vec, ale "there is no such thing as a free lunch". Napr. MS, Intel kvôli tomu museli dosť obetovať. Občas je lepšie zmeniť normu - BTW u MS samozrejme nemáte žiadnu záruku že to napr. u .NET normu nezmení. Na druhej strane, ako tu už niekto spomínal, je možné (možno dokonca bežné?) udržovať dve vetvy softwaru (pr. Linux kernel 2.4, 2.6), to platí aj u komerčného SW. U jazykov typu Python/Ruby nič nebráni používať staršiu veziu alebo udržovať dve verzie/zaplatiť za udržovanie verzie (komerčný prístup, spomínate?)

    PS k inému postu: vyvíjame už niekoľko rokov multiplatformný soft (Linux/win), overhead je cca 5-10% oproti single-platform. Na druhej strane sa šetrí tým, že každý môže používať svoje obľúbené nástroje. Naviac sme empiricky zistili, že to, čo sa preloží a funguje na Linuxe opatchovanom s grsecurity a inými hardened patchami, takmer na 100% funguje aj na win (inak je najskôr problém s msvc alebo bug vo vendor library).