Някога пишех на Паскал… (за кода)

Спомням си, че когато бях малък, не разбирах нищо от компютри, но много ми се искаше. Попаднах на едни стари списания (PC World или нещо подобно?), в които се говореше за компилатори, програмни езици и какво ли не още. Така научих, че да направиш програма за компютъра било да пишеш. Мисля, че споделих това откритие с нашите, но те очевидно не се впечатлиха колкото мен. Чувал съм, че има книги с имена като „Програмиране за 9-годишни“. Аз обаче не получих такава и си останах неук още дълго време.

Програма на C

В училище учехме Паскал и честно казано не ми беше много интересно. Задачите бяха, по мое мнение, ужасно тъпи и безсмислени. Такива щяха и да си останат, докато не се появи тя. Тя беше умна и което е най-странното, беше била около мен вече години без да я забележа. Трябваше да я впечатля и как, мислите, се впечатлява умно момиче? Точно така, с Pascal!

Започнах да решавам задачи, свалих си Free Pascal и скоро заседнах. Мое помагало тогава стана един форум в интернет. Не кой да е, ами 4chan. Там имаше раздел за програмиране и аз като не нагъл човек публикувах каквото бях написал до момента и питах защо не ми се получава. Сигурно всички знаете вица „Питаш в американски форум, те ти отговарят. Питаш в руски форум – отговарят ти и на свой ред те питат нещо. Питаш в български форум и всички ти казват колко си тъп.“ Може да има и нещо вярно в това, но никъде няма да ти обърнат внимание, ако просто поискаш да ти направят домашното. Нужно е да видят, че си го мислил, че си се опитал и че не си успял, но искаш да се научиш.
Най-полезния съвет, който получих от 4chan, беше да използвам отстъпи, за да е четлив кодът. Дотогава ни бяха учили винаги да започваме от началото на реда. Изведнъж програмите станаха доста по-разбираеми.

После изрешавах всички задачи, изкарах шестица по програмиране, написах (наченки на) книга-игра и най-вече грабнах момичето – макар че това май не стана точно заради писането на код.

Да пиша се оказа много приятно. За мен най-хубавата част е това, че можеш да вмъкваш част от себе си в кода. В една програма бих сложил всякакви интересни неща, които ми хрумнат, ей така, докато си пиша. И после ще се радвам на получения резултат, знаейки, че това е моята програма. Че друг не би я направил така.

Не би? Писането на код е работа като работа. Има си стандарти. Конвенции. Това не е като да съчиняваш стихове, където, както казал беше някой поет, чието име не мога да си спомня в момента, граматиката може да се пренебрегне, за да имат думите своята сила. Красивият код е добре структурираният, изчистен, добре документиран и придържащ се към ред други правила. А една програма трябва да прави това, което ѝ е задачата. Не може да има скрита поддръжка на емотикони, например (като едно мое творение, която общо взето беше нещо като форма за контакт с претенции).
Така мислят даже от Майкрософт и затова в продуктите им открай време няма великденски яйца.

Code is Poetry - WordPress

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

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

Може и да грешите, но нима победата в това да сгрешиш няколко пъти, за да успееш накрая, не е най-сладка?

Момчето от магазина

Зимата се беше върнала, а аз обикалях града в търсене на една джаджа за колата. Ето така попаднах в магазин за (предимно китайска) електроника. Имаше всичко, от резистори и светодиоди, през кабели и ключове, до аудио за автомобили и наблюдателна техника.

Там дойде едно момче, може би на девет или десет. Изглеждаше си като съвсем обикновено дете. Беше с майка си и в стискаше банкнота от двайсет лева. Отиде да разглежда видео игрите и си избра единствената конзола, която щеше да се вмести в бюджета му – китайска телевизонна игра от някоя отминала епоха, на която това дете определено не принадлежеше. Продавачът върза играта за един телевизор и под звуците на тетрисоподобна мелодия екранът се освети от нещо като клонинг на Space Invaders.

Space Invaders

– Тази ли? – попита безразлично продавачът, половин минута преди момчето да плати на касата и да излезе с майка си и с новата си придобивка от тесния магазин.

Стана ми жал за това момче. То щеше да си иде вкъщи, да върже играта, да поиграе няколко часа и да му омръзне. Тези игри някога са били голямо нещо. Поне толкова голямо, колкото са за сегашните деца модерните ММО-та, а за мен тези, които се играеха на 176×220 пикселовия екран на мобилния ми телефон. Но за това момче 8-битовите изображения и проста логика нямаше да станат религия.

То ще отиде на училище, където презадоволените му съученици ще играят на телефоните си с цена и параметри далеч надвишаващи 20-левовата играчка, която си беше купило то. Ще разказват как у дома си са „врътнали“ новата Bloodthirsty Murderer 4, в която на техния 55″ 3D екран кръвта се плиска по абсолютно реалистичен начин, докато откъснатите глави се търкалят пред краката на главния герой, който изтърсва нова цинична шега при всяко следващо убийство. „Ти играл ли си я?“, нетактично, нарочно или не, ще попита някой момчето. „Не, ама я знам“.

– Ти какви игри играеш?

Няма да каже „стрелям по пиксели и се кефя на музиката от Тетрис.“ Ще осъзнае, че никога няма да има такива играчки или някога, когато порастне, ще, но тогава вълнението от хвърчащия от екрана мозък няма да го има. Големият човек не се нуждае от подобни глупости. Дете си само веднъж, освен в редките случаи, когато неизживятното детство иска да се прояви във вързаст, когато никой не го е канил.

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

Грозното пате може да се превърне в красив лебед.

Може обаче то да не иска да е лебед, а обикновено пате цял живот. Но пате с плейстейшън.