Учене чрез примери

В книгата, която чета напоследък, има хубава теза: учим се да кодим като гледаме чужд код. Всъщност, това е валидно за всички сфери на изкуството (композиция, рисуване, литература) и другите, не изцяло художествени занаяти (архитектура, спорт, компютърни игри). Това което ние, като програмисти, рядко правим, е да се учим от чужд код. Continue reading

Пример в живота

Напоследък ме мързи да пиша, затова ви разсейвам с логове. Днескашния пример е как момче от малкия град може да израстне, да стане успешен и да се превърне в пример за другарчетата си. Например.

Пример в живота

Нямам думи да изразя колко съм потресен, че се оказах от другата страна на барикадата в този разговор между майка и син. Деца, ако родителките ви ме дават за пример – съжалявам! Направих всичко възможно да го предотвратя.

Пластелин

Установих че имам бая различен спрямо познатите си подход като пиша код. Силно напомня игрите с пластелин от детската. Първо натрупваш няколко буци, докато се задържат заедно и постепенно добавяш детайли, променяш конструкцията и премахваш излишното. Докато не получиш крайната цел. Предполагам художниците правят същото – започват с най-обща скица, после постепенно добавят конкретни и твърди форми, цветове и детайли. Така правя с кода – изработвам основна работеща идея и после постепенно я опростявам, изчиствам и правя по-елегантна. Смътно ми се струва, че имаше много подходяща дума за това. Сякаш Martin Fowler го нарича refactoring.

Моите две стотинки: третирайте кода като пластелин. Не спирайте като закрепите нещо работещо. Не пишете на един дъх, след продължителен дизайн на хартия. Нахвърляйте основното и след това изглаждайте острите ръбове и добавяйте елегантност. Периодично правете крачка назад от платното и поглеждайте цялата картина преди да продължите. Резултатите са учудващо добри.

Абстракция, енкапсулация и индиректност

Ах, абстракцията. Излезте от дома, влезте в първия програмистки бар и кажете на някой „абстракция“. Това може да се развие само по два начина. Или ще се абстрахира от вас и ще продължи да си пие latte-то или (по-лошо) ще събере момчетата, ще ви издърпат навън и итеративно ще ви разработят час при зъболекаря. Ако го пробвате, задължително ми пишете. Не забравяйте да пратите адреса.

Но все пак имаше някаква истина в горното. Ако не сте заклет OOA/D архитект (вероятно не, защото иначе ще сте твърде заети с проектиране за да ми четете блога), то думата „абстракция“ вероятно предизвиква тръпки по гръбнака ви. В училище ме учеха, че това се нарича пежоративно, но ми се подиграват, като ползвам тази дума. Поради което ще кажа, че има отрицателна конотация. Също толкова криптично, но с по-голям шанс да сте го чували.

И тъй. Това което е по-малко очевидно, е че има две доста близки до абстракцията концепции – енкапсулация и индиректност. Но често чувам хора да употребяват едното, като имат предвид другото. Затова ще ви разкажа набързо картинката в моята глава. Continue reading

Пуф-паф

Няма нищо, което да прекъсва неделната работа така хубаво, като поредното ново откритие в текущата операционна система. Както си ползвах шела, без да искам направих класическата грешка и натраках sl вместо ls. Ubuntu-то (отскоро) реагира светкавично:

aquarius@arrakeen:~$ sl
The program 'sl' is currently not installed.  You can install it by typing:
sudo apt-get install sl
bash: sl: command not found

Хм, това беше ново. Не знаех че има програма, която се казва sl. Я да видим за какво иде реч…

Continue reading

Днес…

…се събудих посреднощ. В съня си бях осъзнал нещо важно. Хората постоянно правят грешки в разсъжденията си и ги наричат „мнения“. Така съвсем неочаквано се промъкват покрай барирерите ми от здрав разум и разклащат изоснови рационалното ми съзнание с неточности и логически фалове. И целият този хаос, с грешен етикет „резумна мисъл“, заплашваше да погълне съзнанието ми и да ме приготви за лудницата…

Някой в интернет грешеше. Не можех да прекарам и минута повече в сън с чиста съвест. Все едно да видиш брат си, човека да се дави и да не го спасиш*. Не трябва да си почивам дори за миг, преди да спра тази лудост – нещо трябваше да бъде направено по въпроса.

* – освен ако не е Буш, както би уточнил Ричард Сталман.

Как светът ще полудее

Ето какво чух от един мой приятел вчера. Мисля, че ми отне целия ден да го осъзная в пълната му сила.

(програмистите трябва) да спрат да пишат програмите. те трябва да пишат само инструментите с които хората да си решават проблемите

Разбрахте ли, колеги? Стига сте писали програми, пишете програми! Кралят е мъртъв, да живее кралят!