Expand Cut Tags

No cut tags

Apr. 16th, 2010

noddeat: (Default)
http://www.flightradar24.com/ — авіатрафік над Європою в режимі реального часу, аааа!! Обов’язково увімкніть там в налаштуваннях показ номеру рейсу — тоді видно, що це за авіалінія. А якщо клікнути на літак, то видно, звідки він вилетів і куди летить, а також купу інших параметрів.

Цей радар показує лише літаки, які мають пристрій автоматичного спостереження за авіатрафіком ADS-B (Automatic dependent surveillance-broadcast).
noddeat: (Default)
http://islande2010.mbnet.fr/2010/04/eyjafjallajokul-links-liens-a-propos-de-leyjafjallajokul/ — підбірка лінків про вулкан з милозвучною назвою Еяф’ятлайокут (Eyjafjallajökull [вимова]), через який закрито летовища у всій Європі (зокрема, в Польщі зараз працює лише одне летовище — у Жешові).

Найцікавіше про вулкани — те, що один добрий вулканчик потрафить за раз пердольнути в атмосферу стільки тепличних газів (а це, крім оксидів вуглецю, також оксиди сірки та азоту), скільки усе людство вивалює за рік. Відтак, ще невідомо, чи наша промисловість аж так активно впливає на зміни клімату, як це потрафить зробити природа. Це не означає, що на проблему треба забити, але до глобального потепління треба підходити без фанатизму: направду, нема чого економити на електрочайниках та перебиратися в печери, як це люблять робити деякі екорадикали.

Brainfuck

Apr. 16th, 2010 06:44 pm
noddeat: (Default)
Деякі речі здаються чимось надзвичайно страшним і складним, аж поки не спробуєш з ними розібратися. Словом, «вивчив» я мову програмування Мозкойоб. Мову цю придумав Урбан Мюллер з метою створити таку мову програмування, для якої буде потрібен найменший у світі компілятор.

Мова складається з таких простих операторів:
> — пересунути вказівник на дані на наступну комірку («праворуч»),,
< — пересунути вказівник на дані «ліворуч»,,
+ — збільшити на одиницю значення у поточній комірці,,
– — зменшити на одиницю значення у поточній комірці,,
. — надрукувати значення поточної комірки,,
, — зняти з пристрою вводу один байт даних і записати його в поточну комірку,,
[ — якщо у поточній комірці 0, то перейти вперед до команди, що слідує відразу після найближчого оператора «]»,
] — якщо у поточній комірце не 0, то назад до команди, що слідує після оператора «[».

Простішими словами, дужки [...] — це аналог циклу while (i<>0) {...}, в якому виконання умови перевіряється двічі: на початку і в кінці циклу.

На початку ми маємо певну послідовність однобайтових комірок, заповнених нулями. «Однобайтових» означає, що туди можна записувати лише значення від 0 до 255 (здогадайтесь, чому?), а відтак збільшення значення 255 на одиницю призведе до того, що там буде нуль і vice versa: зменшення нуля на одиницю дасть 255.

Проста програма «Hello, world!» виглядає цією мовою так:
++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.

Правда, гарно? Але нічого не зрозуміло. А тепер розіб’ємо її на частини і прокоментуємо:

++++++++++           #Десять разів застосували + до комірки №0, записавши туди число 10, таким чином
[                                  #цим циклом ми зробимо так, щоб у наступних чотирьох комірках були числа 100, 70, 30 та 10 
   >
+++++ ++          # перейти до комірки 1, записати туди число 7
   > +++++ +++++   # перейти до комірки 2, записати туди 10
   > +++                     #перейти до комірки 3, записати туди 3
   > +                          # перейти до комірки 4, записати туди 1
   <<<< -                   # перейти до комірки 0, відняти одиницю
]  #оскільки в комірці 0 було 10, то цикл буде повторюватися 10 разів, поки в комірці 0 не стане нуль.

#отже, в комірці 1 буде 70, в комірці 2 — 100, в комірці 3 — 30, і в комірці 4 — 10

> ++ .                     #перейти до комірки 1, збільшити значення на 2, надрукувати літеру «H» (яка має код 72)
>
+ .                       #перейти до комірки 2, збільшити значення на 1, надрукувати літеру «e» (яка має код 11)
+++++
++ .          #в комірці 2 зробити щоб було 19 і надрукувати це — літеру «l»
.                            #ще раз надрукувати літеру «l»
+++ .                    #надрукувати «о»
>++ .                                     #надрукувати пропуск
<< +++++ +++++ +++++ .  #надрукувати «W»
> .                                          #знову надрукувати «o»
+++ .                                     #надрукувати «r»
----- - .                                 #надрукувати «l»
----- --- .                             #надрукувати «d»
> + .                                      #надрукувати «!»
> .                                         #надрукувати перехід на інший рядок (\n)

Як бачите, не так вже й складно! За бажанням цією мовою можна написати якісь нескладні програми а ля калькулятор. І чому його не вивчають у школі, а?

Корисні посилання:
Конвертер з Brainfuck на PHP
Про Brainfuck у Вікіпедії
Компілятор Brainfuck на асемблері, для лінукса
Бібілотека компіляторів, утиліт та програм на цій мові
Купа цікавих посилань в каталозі Ґуґла
FuckBrainFuck — мова програмування, код якої компілюється в код Brainfuck
Процесор, який вміє виконувати код Brainfuck-а без компіляції (нативно)

Profile

noddeat: (Default)
noddeat

April 2017

S M T W T F S
      1
23 45678
9101112131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Page generated Sep. 21st, 2025 03:59 pm
Powered by Dreamwidth Studios