28. srpna 2012 v 3:41 | Petr
|
Robotici jsou tak výrazně programátorsky orientování, že na Robotour 2009 kde jsem vypomáhal jako organizátor se mi jeden kolega svěřil : "Mně by nejvíce vyhovovalo kdyby mi robota někdo postavil a všechny důležité funkce vyvedl nahoru na nějaký mnoho-pinový konentor." Pak se chvilku zamyslel a řekl "Nebo ne - lepší by byl USB port s dokonale zdokumentovaným (komunikačním) protokolem".
Takže když tvrdím, že v robotech je třeba mít i
dolní propust, tak je to vlastně skoro sprosté slovo. A nebudu se divit, že se na mně v Praze kamarádi sesypou, proč odvádím mládež od meritu věci k nepodstatnostem jako jsou tranzistory ....
Proto ode mně neočekávejte, že svůj milovaný AVR assembler a programování v něm zavrhnu a odvolám. Neodvolám. Nicméně moje prázdninové kontakty s AVR GCC - tedy s GNU kompilátorem Céčka pro AVR mikrokontroléry už nese zajímavé ovoce - zatím spíše v hlavě a v pocitech.
První věc GCC překládá zatraceně dobře - některé konstrukce dokonce překládá efektivněji, než když jsem je psal ručně, protože psaní v assembleru je únavné a člověk má tendenci ke CUT and PASTE programování z předpřipravených fragmentů.
K samotnému jazyku C se nebudu vyjadřovat - já jsem vyrostl v Pascalu, který měl z pedagogického hlediska jasná pravidla. Linuxáci, kterí v 60 letech vymysleli C však považovali jasná pravidla za "neflexibilní" takže výsledek se dostavil - jakoukoliv kravinu v C napíšete kompilátor přeloží a pak se nestačíte divit, co se děje (nebo neděje). Zejména v mikrokontrolérovém světě, kde blikající LEDka je často jediný ladící výstup je tohle MEGAOPRUZ. Vůbec bych se nedivil kdyby kvůli rozdílu mezi A=1 a A==1 spadlo nějaké letadlo ....
Kombinace C a inline assembler - kde jsou ty krásné časy Turbo Pascalu kde jste místo BEGIN napsali ASM a pak už jste jeli v assembleru - MOV AX, BX; ADD AX, CX atd.... Způsob jakým se do GCC píšou assemblerové fragmetny fakt musel vymyslet nějaký autista, nebo psychotik, kterému tenhle styl připadal srozumitelný. Samo za sebe mluví, že i v nejnovějším návodu na LibC (systémové knihovny jazyka C) se autoři omlouvají, že ani jim není vše zcela jasné !!!!
No a ty "
pocitové změny" ? Jestli jste programovali nějakou matematiku v ASM tak víte že to je dřina i moje oblíbená 32 bitová fixed point aritmetika v ASM je fuška. Takže snadnost programování v C je svůdná a trochu mě tlačí navěsit na procesor více "
blikátek" aby se dalo v rámci testování více blbnout. V každém případě teď sám sobě blahopřeju, že jsem třeba takovou "
Hlavičku Pentia 6" udělal s Externí SRAM a grafickým displejem, protože jejich programování je přesně ten druh hraní, ke kterému C svádí.
Ptáte-li se jestli doproučuju programovat AVR v C ? Možná budu za konzervativce, ale začátečník by se měl naučit
princip KISS tedy
Keep it Simple for the Stupid a k tomu C moc nevede a naopak dřina s ASM jednoznačně ano. Pokud ale chcete vyrábět složité roboty C je prakticky jediná možnost jak se neudřít nad softwarem.
Dnešní rada pro blondýny zní : Pokud vás štve, že vám říkají "blbá blondýna" jsou dvě cesty jak se toho zbavit - jedna ve směru "chytrá blondýna" a druhá ve směru "blbá bruneta". Je na vás, kterou cestou se vydáte...
Krásný blog, to nemá chybu.