Hlavní navigace

Názor ke zprávičce Nová generace jazyka C++ od Biktop - Dobrý kód není žádnou záhadou. Dobrý kód je...

  • Aktualita je stará, nové názory již nelze přidávat.
  • 14. 8. 2007 18:16

    Biktop (neregistrovaný)
    Dobrý kód není žádnou záhadou. Dobrý kód je takový, který buď dělá nějakou činnost co nejrychleji, nebo je co nejkratší a pokud není specifikováno, tak pracuje co nejrychleji při co nejmenších prostorových nárocích. Jsou dokonce situace, kdy dobrý kód jinak nežli v Assembleru ani nejde napsat, protože se to pro daný problém ve vyšším jazyce stává neřešitelné (nedávno jsem řešil přesně takový problém na DSP, kdy použití C by vůbec nedovolovalo daný typ DSP v dané aplikaci použít a žádný optimalizátor na světě by takový kód nebyl schopen vygenerovat, prostě proto, že bylo nutné za určitý počet taktů udělat nějakou věc a bylo třeba tomu podřídit sémantiku té věci, aby se to vůbec dalo zrealizovat).

    Kód, který se nevejde na pár obrazovek (v tom nejhorším případě!), je špatný už z principu. Je to jen jasný doklad špatné dekompozice a faktorizace problému. Pokud je problém dekomponován správně, tak nikdy nestojíme před situací, kdy je nutné se hrabat v kódu přes několik stránek! Pokud píšu v C, tak žádný zdroják u mě nikdy neměl víc než několik desítek, max. stovek řádků. Pokud by se té hranice začal dotýkat, je to jasným znakem dekompoziční chyby a raději to celé rozdělím a přepíšu do smysluplnější formy. Jen jednou v životě jsem se kvůli jedné chybě musel přehrabovat takřka v celém kódu, než jsem přišel na to, že se jedná o chybu v kompilátoru.

    To je ale chyba v návrhu procesoru! Produkty firmy Intel jsou od modelu 8086 prakticky prokleté - hrůza se střídá s ještě větší hrůzou! To, co píšete, platí jen pro špatné procesory. U dobrého procesoru nic takového neplatí. Nepotřebujete žádný fascikl pojednávající o optimalizaci, pokud píšete pro ARM, 68K nebo pro většinu DSP či věcí jako AVR, PIC a podobně. Složitý procesor = špatný procesor.

    To souhlas, jenže žádný učený z nebe nespad. Pokud se někdo něco odmítá naučit nebo na to nemá se to naučit, tak je to jiná věc. Ale to není důvod k odsouzení Assembleru jako nevhodného nástroje, ale k odsouzení toho dotyčného jako nevhodného programátora.

    Namakané možná ano, pokud vezmete Intel překladač a pustíte ho na Intel procesor a on tam začne využívat všechny ty koncepčně nesmyslné serepetičky. Ale vemte si nějaký dobře navržený procesor, v němž kvůli optimalizaci nemusíte mít přístup do mikrokódové paměti, a porovnávejte. Tam teprve uvidíte kvality nebo spíš hranice kompilátoru. A pro ten Intel vám akorát vyplyne, že to znamená, že by se pro něj ručně dal napsat ještě daleko efektivnější kód než to, co vyplivnul překladač. Překladač totiž skutečně je jen "inteligentní" slovník - TO se řekne TAK. Ale hlavu nemá, aby danou věc řekl kulantněji nebo ji celou přeformuloval když vidí, že to není ono.