Wpis z mikrobloga

Zapraszam do #glupiewykopowezabawy programistów maści wszelakiej.

Temat zabawy:

ktoś: napisz hello world w [tu wstaw język programowania]
ja: https://play.nim-lang.org/#ix=3ZSa

Pod tym linkiem jest moja wariacja na temat hello world. Czym się różni od najprostszego możliwego Hello worlda w nimie?:

echo "Hello World!
Wziąłem stringa "Hello World!" i zamieniłem go na tablicę bajtów. (nie robie tego wprost w kodzie, zrobiłem kopiuj-wklej) Następnie, ponieważ Nim w bibliotece standardowej nie posiada konstuktu do-while... to korzystając z narzędzi do metaprogramowania w Nimie (konkretnie templatek) sobie to do-while stworzyłem (choć u mnie nazwane to zostało loop-until.

Kolejnym udziwnieniem było stworzenie iteratora, i to nie standardowego iteratora w nimie, bo ten nie ma procedur które odpowiadałyby znanym wiekszości użytkowników iteratorów next() oraz hasNext() które pozwalały wpakować takowy iterator do pętli while bądź do-while.

Standardowy iterator tworzy się inaczej, i domyślnie jest on oznaczony jaki {.inline.}. Nie chcę się tu wymądrzać bo w Nimie programuję od 2 tygodni, ale cusie wrzucane do kodu otoczone wąsami i kropkami to tak zwane pragmy. Są one najczęściej takimi podpowiedziami dla kompilatora jak ma oznaczone nimi pola czy procedury traktować.

Jest jeszcze iterator oznaczony {.closure.}, i on ma pośrednio metodę next() (wystarczy wywołać iterator a zwróci on kolejną przechowywaną wartość) oraz można sprawdzić czy ma jeszcze jakieś wartości procedurą finished() (taka nimowa wersja hasNext().

HINT: Dorzuciłem do nagłówka tego iteratora {.closure.} choć tak na prawdę nie musiałem, bo w tym przypadku kompilator wie że ma do czynienia z {.closure}
Następnie przy użyciu konsruktów loop i until przechodzę po kojelnych wartościach byte przechowywanych w iteratorze, i wyświetlam je na stdout po kolei zamieniając przy okazji byte na odpowiadający temu bajtowi char. Gdy iterator przejdzie po wszystkich wartościach dorzucam nową linię i kończę loopa.

Zachęcam do tworzenia i dzielenia sie tu swoimi dziwnymi hello worldami ;)

Nie jest konieczne, ale dobrą praktyką jest wrzucenie swojego kodu do jakiegoś playgrounda dla swojego języka (tak jak ja to zrobiłem) i chocby pobieżne opisanie jak to działa :)

#programowanie
  • 1