Při pravidelném proklikávání se službou Devlogy.cz jsem zaznamenal výskyt dalšího
dílu seriálu Základy programování v jazyce Boo na serveru
programujte.com. Vzpomněl jsem si na první
díl seriálu, který jsem četl před časem, a opět se mi naježila srst.
Šel jsem se tedy podívat, jak s tím autor vládne dál.
No děs a bída. Jestli se takhle někde programuje a ještě k tomu v Boo, tak to je mi moc líto. Boo vzniklo
jako agilní jazyk inspirovaný jednoduchostí Pythonu a silou dotnetu. Sice je silně typový, ale
nenutí nás typy explicitně vyjadřovat. V podstatě nás nenutí
k žádným zbytečnostem. Jeho filosofii lze ukázat na následujících
ukázkách výpisu Hello World na konzolu:
class Program {
public static void Main() {
System.Console.Write("Hello Wold");
}
}
Začal jsem nejjednodušším programem v C#, který vypíše na konzolu
Hello World. Teď to samé v Boo:
print 'Hello World'
Ano, to je vše.
Když se vrátím k článkům na programujte.com, je vidět, že autor
netuší, která bije, když píše:
„Každý kód v Boo musí začínat jmenými prostory.“
A skutečně ukázku s Hello World okořenil krásně zbytečným importem
jmenného prostoru System. Není nad to mást začátečníky
spoustou zbytečností, protože pak mají pocit, že se toho naučili hodně.
:) Bohužel praxe ukazuje, že méně je mnohdy více a tak se posuneme
o kousek dál. Tedy spíš zpátky na začátek, kde autor popisuje instalaci
IDE. Už tohle je
pěkná blbost, protože k vyzkoušení Boo žádné IDE nepotřebujete. Boo je
totiž vybaveno interaktivní konzolou booish, která je podobná
těm, které můžete znát z dynamických jazyků Python, Ruby nebo třeba
z mona – pro C#. Prostě konzola, kde píšete kód a rovnou se vám pod
rukama vykonává. Pro začátečnické pokusy ideální.
Další skvělé expresivní zážitky najdeme v druhém
a třetím
díle v odstavcích věnovaných proměnným. Autor se zapomněl zmínit, že
máme k dispozici celý typový systém dotnetu.
„Typů proměnných je více a my si probereme jen ty základní.“
A už začíná deklarovat jednu proměnnou za druhou.
celeCislo as int
celeCislo = 200
celeCislo as int = 5
Fakt krásné. Všimněte si prvního komentáře. To je stavební kámen
další ukázky:
import System
i as int
while(i < 5):
print i
i++
Za takový kód bych si dobrovolně zakázal oběd, abych dostal trochu krve
do mozku. Ukázka je bezesporu funkční, ale obsahuje zbytečný import,
spoléhá se na implicitní inicializaci hodnotové proměnné, navíc zanáší
šum v podobě zbytečných závorek. Takže jak se tedy Boo píše? Ukázka
s proměnnými:
integer = 5
realNumber = 5.0
text = 'some text'
Jednoduše přiřadíme hodnotu a kompilátor už ví jakého je typu – a
není to object ani variant. ;)
i = 0
while i < 5:
print i++
A tady je celá myšlenka ukázky cyklu while. Proč
je lepší?
- Používat komentáře je krásná věc, ale většinou je lepší psát
tak, aby se komentáře používat vůbec nemusely. Většinou stačí slušně
pojmenovat proměnné (nejlépe celým jménem). Tam, kde
chcete napsat komentář, raději zvažte, zda není lepší vytvořit novou
metodu s dostatečně popisným názvem.
- Zbytečným importem nic nezkazíme, ale zvýšíme šum. Někdo by dokonce
mohl přemýšlet nad tím, proč tam ten
import vlastně je.
- Používat neinicializované proměnné je už na výprask. Než uvádět
explicitně typ, to tam radši napište tu implicitní hodnotu, ten kód je pak
mnohem srozumitelnější.
- No a závorka. Pokud na ní jste z Cčkových jazyků zvyklí, prosím, ale
je to další zbytečné zašumění kódu.
- Hodit postfixovou inkrementaci na jeden řádek s printem už je jen
taková třešnička na dortu.
Výborná je taky ukázka s for cyklem nebo proměnné typu
char…
Psát texty pro začátečníky je těžké, proto se o ně ani
nepokouším, ale neměl by je psát začátečník. Protože chyby, které se v
„mládí“ naučíte a zažijete si je, budete pak opakovat a opakovat, než
se z nich poučíte. A to stojí čas a ten jsou peníze…
Poučení z dnešního WTF:
„Čím méně kódu napíšete dnes, o to se vám bude lépe spravovat
zítra.“ :)