asm32.info
Keep it simple — code in asm

Историята на един байт

Не ми стигаше байт. Един. Да, да. Този същият, дето се състои от осем бита. Какво? Не, не съм луд, макар че, един господ знае колко тънка беше границата, отделяща ме от това състояние. Но всичко поред.

Аз съм програмист. Но не просто програмист. Аз принадлежа към кастата, която понякога наричат системчици, понякога кристалчици. Знаете ли какво е това? Ще обясня, ако потърпите. Никак не мога да мина без професионална специфика, но иначе няма да разберете нататък.

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

О, не се заблуждавайте! Имам цяла бездна с ресурси. РАМ цели 128 байта! Това за всички и за всичко. Променливи, масиви... Нали си представяте?

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

Това значи, че ако сравнявам два байта, и трябва да се разклонявам, обаче етикета се намира извън тези 256 байта, то сбогом, прощавай. А компилатора предупреждава само в половината от случаите, демек "чакай момче, много широко крачиш, ще си скъсаш гащите".

И това са цветенцата! За ягодките ще ви разкажа сега, за да можете да им се насладите в пълна мяра. Нямам команда за изваждане. Въобще! Само "add". А за такъв разкош, като умножение и деление, въобще няма да говорим - това е за мързеливците. Затова пък ми трябва десетична математика. Осъзнавате ли постепенно?

Кода на тези играчки се излизва така, както не сте и сънували, особенно ако се налага да се решават задачи на границата на програмната и оперативната памет.

Сорсовете се пренаписват далеч не един път. Малко е, просто да реша задачата. Трябва да я напъхам в дяволският кристал! Ограничение по променливи, по размер на целият код, по размер на всяка отделна процедура, по брой извиквания.

Малко недоглеждане и стека се продънва и те изхвърля един дявол знае къде. И компилаторът няма да помогне - такива работи той не ги лови...

И си мислите, че това е всичко? Не-е-е-е скъпи мои. Играчката работи в реалтайм... Това е, когато срещу всяка дребна процедурка трябва да се сметне и да се напише времето за изпълнение в милисекунди.

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

Но и това не е всичко! Има и интерфейс. Обикновен RS232C, дето му викат "ком порт". Но ако си мислите, че това е отделен чип - пъхаш байт, получаваш байт, то се заблуждавате. Себестойността. Всичко го правя ръчно, цъкайки единственият бит на порта. Ръчно въртя диаграмата на старт, стоп и данни. И така:

Ако съм написал код, решаващ задачата, но не влиза в паметта - задачата не е решена.

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

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

Ако процедурите са много кратки и са много, изчерпва се стека - задачата не е решена.

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

Ние рядко общуваме с обикновенните програмисти - няма за какво да разговаряме. И не защото сме сноби или горделиви. Не е задължително. На нас ни е трудно да си представим програмиране с неизчерпаеми ресурси на езици от високо ниво.

Малко хард? Купи си друг - какъв ти е проблема? Малко РАМ? Купи си още, пъхни я в слота. Мегабайти код? Ми аз к'во съм виновен? Компилаторът е виновен. Купете си по-нова машина. Това са различни планети и надявам се разбрахте защо.

Това е като красив круизер в безкрайните океански простори - плавай накъдето искаш. Ама пробвайте с него да влезете във финските шхери. Или да вдявате конец в игла посред нощ. Черен конец.

Разбира се и ние имаме набори от чипове и ги избираме преди разработката с по-голяма претенциозност от годеник, годеницата си. Гадаем на кафе и хвърляме боб, ще стигне ли? Но, ако изборът е направен, връщане назад, като правило няма.

Е какво пък, въведох ви в обстановката и мога да си продължа разказа.


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

Себестойността реши всичко и накрая си дадох съгласието, а мощните Интели и Мотороли от последно поколение останаха зад борда.

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

И само понякога леко ми трепваше сърцето, нали всичко е направено на косъм! Три, най-много пет процента ресурси останаха свободни. А това е дяволски малко, повярвайте.

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

И тогава... Тогава започна всичко. Недостига много важна функция на прибора, която са пропуснали проектантите. И даже не те, а клиента.

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

Ех тези проектанти! Тяхната карма е да разберат какво му трябва на клиента! Даже ако трябва за тази цел да му разрежат черепа и да пресеят през сито съдържанието му!

Но с викане работа няма да свършиш. И аз си заседнах за две седмици в къщи и забраних да ме безпокоят. В мозъка си инсталирах малка сирена и светофарче.

Биип! Свети червено! Първата банка е изчерпана! Репакинг. Оптимизация на кода по страниците и банките памет.

Биип! Оперативната памет е изчерпана! Преглед на функционалността на процедурите. Без тази променлива може. И без тези може, ако го направя по друг начин.

Биип! Препълване на стека! Направо ударих дъното. Какво? Вече на осмо ниво ли съм!?

Биип! Етикетите са извън видимост за вътре-страничните преходи!

Биип! Нарушение на реалтайма, процедурите ядат твърде много време!

Биип! Изчерпана е втората банка памет.

И така много, много пъти. Бавно, байт по байт натиквах тялото на тази проклета нова функция, непрекъснато преопаковах кода по страниците и банките, оптимизирайки размера на кода, графикът на реалтайма, използването на оперативната памет или направо пренаписвах някои от модулите от нула.

Може да си мислите осем кила код е малко? Ха! Инструкциите са едно и двубайтови. Това да не ви е трибайтовият Зайлог или на Интел осемдесятката.

От време на време при мене идваше някой приятел - как си, що си? - но на мене не ми беше до разговори "за живота".

След седмица и половина разбрах, че работите отиват на зле. Имах вече шест решения и стоях на едно място. Знаех всяка процедура и функция наизуст, а всеки байт го познавах лично, по физиономия! Всичко беше напразно. Картинката замря. Не искаше да оживее! Не ми стигаше един байт. Това показваха всички варианти на решението. Само един байт!

Отбих се при приятелят ми, хвърлих му всички варианти на решението с временните диаграми и картите на банките и отново се върнах в своята бърлога.

Да спя! Каквото и да става - да спя! Трябва ми ясна глава. Трябва ми нова идея. Опустошен съм.

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

Мястото не стигаше... Един байт... Мачках кода като глина, правех с него какво ли не, но... един, само един байт!

Навярно нещо подобно изпитва музикантът написал симфония, опитвайки се да намери една единствена нота, за да накара да зазвучи своето произведение. Или художникът, търсещ неповторимата мазка, която да оживи картината. А без това, всичко е мъртво и целият труд става само за боклука...

Като в полусън се обличам и излизам на улицата. Под краката ми гнусно скърца снегът. Наоколо всичко е сиво и някак мрачно.

Повече не ми трябват нито компютъра нито разпечатките. Цялата схема е в мене. Или извън мене? Тя присветва с разноцветните си възелчета, заемайки формата на причудливи и някак красиви тримерни фигури. Или някакви ажурни контрукции?

Тихичко пискат контролните маркери на времевите отметки, плътно притиснати към кристалите на странни завладяващи форми. И всичко това лети, на някъде се мести и върти, в някакъв странен, с променлива форма канал? Тръба?

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

Но кой е неговият капитан ли, щурман ли? Ами нали няма да мине! Там не може да се мине!

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

И изведнъж, краят на ажурното съоръжение с микроскопично стърчащата си издатина се закача. Скърцане и грохот! Късат се и се мачкат блестящите нишки, и всичко се разпада на милиони парченца..

Господи! Че това е стека! То заобикаля стека! Ето значи, как изглежда! Като изчерпи дълбочината, то с трясък се закача и разрушава, чупейки ажурните си конструкции.

Забелязвам пейка с някаква бабичка на нея. И аз имам нужда да поседна. Насреща стои продавачка на цветя и потропва с крака от студа.

Не обичам бабички... И точно тази... Някаква неприятна, едва ли не гнусна. И какво ме е зяпнала? Коя е тя? Какво е заседнала тук? От нямане какво да прави? Такива като нея вечно се тълпят в магазините, заради тях не може нищо да си купи човек. И намилат в тролея да им отстъпят място. Сигурно гледа сериали, как бяха? Мария? И още, някой там плачеше?

Какво разбират всички те!? Кой може да разбере колко знания и труд трябва, за да създадеш такова? Колко безсънни нощи трябва да прекараш? Колко трябва да четеш? При това ежедневно и съвсем не идиотски романи за любовта и дружбата.

И изобщо кой е в състояние да го разбере!? Тези начинаещи фукльовци, наричащи себе си програмисти? Криво пишещи на фокспро, клипер и бейсик?

И навсякъде задаващи въпроси: Кажете, коя команда да набера? А кой хелп да прочета? А кога ще преведат мануала на Руски?

А тъй нареченият им "софт"? Велики, в сто хиляди варианта, вечно живи складове и счетоводства? Нетленни творения. Всички са еднакви. И да има различия, те са в кривостта на кода и броя на бъговете. Бъг върху бъг и отгоре пак бъг... Да ги застави някой да си изсичат кода в камъка, като древни каменоделци, та да се замислят малко какво пишат.

Или тези хакери, кракери, техно плъхове? Хубава работа, да пишеш вируси, та с гадоста, дето си я направил на хората да се прославиш! Пфу!

Не, не искам да седя на тази пейка в компанията на тази... Накъде вървях? Спомних си. Към приятеля си вървях. Може да подскаже нещо? Проклет байт! И какво съм се заял? Всички си гледат работата, да не е по-лоша от моята? Талантливи хора има навсякъде. Явно яко съм я загазил...

Приятелят ми, отвори вратата и мълчаливо ме погледна.

- Е?

- Какво - Е?

- Кажи ми само едно - мрачно казах аз, влизайки в апартамента - Можеш ли да ми дадеш един байт? Само един. Готов съм да ти дам за него всичко. Не ми стига един байт, разбираш ли? Не влизам в чипа!

Приятелят ми мълчи известно време.

- Гледах кода ти.

- И какво? Намери ли нещо?

- Не. - тихо каза той, замълча и после продължи - Безукорно изплетена дантела. Нито една бримка. Шевовете не се виждат. Филигранна работа. Ръчна изработка. Направо шедьовър. На всеки ред можеш да поставиш знак за качество. И да го изсечеш в мрамор. И всичко е еднородно. Няма празнини, нито уплътнения. Монолит, но еластичен. Обаче...

- Какво обаче!? Не разтягай локуми! Не ме мъчи! И без това ми е кофти! - взривих се аз.

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

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

- Нали си със свеж поглед. Нали ми трябва само една команда, която да съкратя и това е! ТОВА Е! Проблемът е решен, разбираш ли? И аз на тебе до гроб... завинаги... - шепна аз, хванал го за ръкава - Ами виж колко много редове има, а аз съм просто човек, объркал съм, пропуснал съм, не съм забелязал...а? Нищо не ми трябва, нито слава, нито похвали. Искам само да се махне. Да ме пусне.. А? Нямам повече сили. Хайде да отидем, да погледнеш...

- Откажи се - казва той.

- Да се откажа? От какво? - не разбирам аз.

- Вземи друг чип.

- Ти да не се побърка?! Как така друг!? Купчина готови платки, монтажниците, настройчиците, заплатите, частите!? Ти майтапиш ли се!? Това да не ти е компютъра - искаш още няколко реда - добавиш ги и никой не забелязва!? Разходи нула, а добавяй ако искаш мегабайт! Ами хората? Нали ми вярват? Аз нали казах "Да!" Нали се съгласих, макар че виждах, че запаса е на нула! А при тях всичко е вече готово! Корпусите, конструкцията, захранването. Чакат само кода! Ти знаеш ли колко ще коства да се смени чипа? Знаеш ли колко ще струва този байт! Един байт!

Оглушах от собственият си вик...

- Глупак. - думата пада на пода като топка мокро бельо - Отстъпи! Забрави! Ние с момчетата вече три дни гледаме този код. Събрах всички, които можах. Веднага разбрах, че с тебе става нещо лошо. При тебе НЯМА грешки! Нито една. На нас дори не ни е ясно как си успял дори това да натикаш.

Коленете ми се подгънаха и аз седнах ли, изпълзях ли на стола. Дълбоко в душата си го знаех. После започнах да говоря. Това беше странен монолог. Като че ли някой друг крещеше, шепнеше и пак крещеше с моят глас:

- ... мислех през цялото време. Разбрах, че не е толкова важен този проект, като мерило за моята отговорност. Хубаво, няма да стане! Ще го преправим някак. Майната му! Не е чак толкова важно. Позорът си е за мене. Друга е работата. В мене. Знаеш, че отдавна не съм роб, който прави каквото му кажат, оправдавайки се, че трябва да си храни семейството. От много време съм наемник. Моите услуги, моите програми струват много скъпо. Знаеш, не се хващам с прости неща. Ако ще да ме позлатят. Аз работя за себе си. Отдавна не ми пука за парите! Те на практика нямат власт над мене! Друго ми трябва! И аз го крия добре. Защото, интересната задача съм готов да я правя безплатно, че и да си доплатя отгоре. Ти сам знаеш, какво е това нали? Е? И ти не го правиш заради парите!

- Има само едно нещо, което на никой не съм казвал. Когато го правя - летя... Не лъжи, че не знаеш какво е това! Всички знаят! Само че предпочитат да не помнят или да не вярват! И на тебе ти е познато! Като в детските сънища. Разбираш ли? Издигаме се високо, високо и се носим, крещейки от препълващият ни възторг! А под нас се носят гори, планини и морета! Мислиш, че това е било сън? Не! И аз отдавна го разбрах! Само че се страхувах да го кажа. Срамувах се като глупак! Но сега ми е все едно! Душата ни лети! Наистина! А разумът ни казва, че спим. Разбираш ли? А защо, като пораснем не летим повече на сън? А!? Защо!? Защо спира да ни се присънва този сън?

- Не знаеш? А аз знам! Защото душата ни натежава, защото вещите, парите, условностите на обществото ни завладяват и душата ни не може вече да повдигне този товар! И как иначе! Ние направо се размазваме по земята, за да станем килимче, в което да си изтриват краката! О, всякакви обяснения и аргументи ще изтъкнем, защо е било нужно да се наведем точно така и как го правим заради някого. Лъжем себе си всеки ден, убеждавайки се, че живеем правилно. А аз не искам, не мога повече да лъжа!

- Не разбираш какво общо има проклетият байт!? Всичко е много просто. Аз отдавна мога да летя! И работата ми помага в това. Да, да! В пиковете на върховното напрежение при решаването на задачите, аз излитам. Това не може да се опише! Но не мога да летя постоянно. Отново се спускам на земята... И така до новият код в който трябва да вложиш нещо. Не зная какво. Някакво парченце от себе си ли, що ли?

- Но този път се хванах! Погуби ме гордостта. Че как! Аз съм гуру, който снизходително гледа на зайците и в движение решава дребните им проблеми! Така ми харесват погледите им, когато ме гледат като божество! Нали сме тщестлавни и аз не съм изключение. Но сега не е така! Ти си мислиш, че проблемът е този байт и как да го натикаме? Не! Аз не мога да го натикам! Но може да го направи не аз! Разбираш ли?

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

- Не мога да си тръгна и отново да съм свободен, ако не променя нещо в себе си! Напълно да се променя, разбираш ли? Да стана друг човек! И тогава, може би, пред мене ще се отвори врата... Не знам накъде... Не зная какво има зад нея... И не зная какво трябва да направя за това... Да... И цената... Аз и това разбрах... Няма да бъда както преди... Няма да мога да летя повече... Всичко ще свърши...

Бавно се надигнах и залитайки се отправих към вратата.

- Кретен! - носеше се след мене - Ще пукнеш над тази програма! Ще пукнеш! Погледни се в огледалото! Лудницата ти е малко! Направи нещо! Иди при някоя мацка, напий се като свиня...

Но аз вече не слушам нищо. "Господи, ако те има - помогни ми..."

На улицата се усетих, че съм забравил ръкавиците и шапката. А за какво са ми? Нима това е главното? А кое е главното? За какво е всичко? На кого е нужно? На хората? Майната им! На мене е нужно! Лично на мене! Сам се вкарах в капана и сам не мога да се измъкна. Какво е това? Наказание? Урок - друг път да не се пъча! Да, прилича - гордост у мене има колкото си щеш. Я чакай... Какво каза той? "При мацки?"

В офиса е топло и уютно. Калорифер. Чистичко. Бръмчат компютрите. Рафтчета, стойки. Момичетата ме поят с кафе, слагат кифлички, които аз изяждам лакомо, омазвайки се в шоколад. Те ми доливат и сервират, жалостиво гледайки пропадналият си колега. Момичетата също са програмистки, нещо там офисно набират, за радост на администрацията и счетоводството. Те са изрядни, с грим и маникюр, отлично изглеждат, особенно сравнено с моята многодневна четина. А може би вече брада?

Кратко и неохотно отговарям на въпроси, какво ме е докарало до това състояние. "Не става. Асемблер. Със стека проблеми. Байт не достига." Една от тях, Оксана май се казваше, говори с мек украински акцент:

- Каков е тоз стек? За какво ти трябва? Ние сме с Оля - тя пише на клипер, а аз на фокспро - никаков стек няма при нас. Може би и на тебе не ти трябва? Вечно мъжете си търсите белята. Сами се мъчите и нас мъчите - кажи Оля?

- Какво?! - Само стола ми пречи да падна на пода. Някакъв противен грачещ вик се къса от гърдите ми - Вие пишете без стек!?

Това вече си е истерия...

Отново съм на улицата. Мили, мили наши дами. Колко сте приятни във вашето неведение. И колко е чудесно, че не знаете това. Хич не ви и трябва. Да се побъркват от нерешени задачи и философски въпроси - това е привилегия на мъжете. Разбира се има и изключения. Но те по-скоро потвърждават правилото. Ако в езиците от високо ниво, дами все пак се срещат, при си-тата и асемблера практически изчезват, то в нашата област не съм чувал за такива изобщо. И това е правилно! Не е нужно да прехвърляме на жените и тези проблеми.

А краката ме носят нанякъде, мислите си течат от само себе си. Не са ми интересни. Аз съм свършен човек. Няма да мога да живея с това. Ще влача жалкото си съществуване, не зная като какъв, но към компютрите вече няма да мога да гледам и отдалече. И правилно. Нямаше защо да се правиш на супер велик.

И тая снобска снисходителност: "Всичко зная и всичко мога..." Мда, наиграх се... тъпанар. Бродя в този абсолютно чужд свят, в който нито една жива душа не може да ме разбере. Приятелят ми и той не можа... И на никой не му пука за мене...

Но какво е това? Бил ли съм вече тук? Цветя. Пейка. И бабичка на нея. Все едно изобщо не си е ходила. Пък е студено. Нерешително присядам на края на пейката.

Охо, ръцете ми са измръзнали и ушите също. Изведнъж, като че ли нещо ме побутна, станах, отидох до продавачката на цветя и за последните си три рубли (а за какво са ми?) купих рози и се приближих до бабичката.

В главата ми се блъскаше мисълта: Какво правя? Защо? Тя чакаше, вдигнала към мен лице. И аз промълвих:

- Извинете. Може ли да Ви подаря цветя? Аз... лоши неща си помислих за Вас... тогава...

Тя не се учуди ни най-малко. И каза:

- Къде беше толкова време, синко? Замръзнах да те чакам...

Да се каже, че се учудих значи да не се каже нищо... Аз бях потресен, зашеметен, размазан! А тя продължи:

- На тебе ти е зле, сине, нали? - Тя ме гледаше съчувствено.

В очите и светеха мъдрост, доброта и ... обич. Разбирате ли!? Към мене обич... И тогава казах:

- Да! Зле ми е. Много ми е зле...

Не се боях и не се срамувах. Нещо като че падна от мене, като черупка. И аз започнах да разказвам... Припряно, бързайки и давейки се.

Разказвах на бабата как програмирам едночипови контролери...

Тя ме слушаше внимателно, без да ме прекъсва. Тя всичко разбираше! Всяка моя дума! Виждах го по очите и. Говорех и говорех. А тя ме водеше нанякъде и аз ядох нещо много вкусно, а после пихме чай, с някакво необикновенно сладко, в миниатюрна, но толкова уютна кухня.

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

И тогава... Отново започна да се разгръща в мене странна, безтегловна и в същото време здрава конструкция. Тя се разгъваше мощно и грациозно, обкръжена от огнено великолепие. Всяка нейна страна, всеки елемент бяха съвършенни и неповторими! И леко вибрирайки, тя пораждаше музика. А заедно, всичко това ме изпълваше с необикновен трепет и възторг! Това съм аз! Аз я създадох! Аз шлифовах всичките и страни! Защо никой не вижда!? Погледнете де! Разделете с мене щастието ми! Вече не се боях. Знаех, че тя ще полети! И ще ми помогне и аз да се откъсна от земята. С нея и аз ще полетя към звездите!


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

Създавайте свои кораби. И нека те пътешестват в необикновенни светове. Аз не бях прав. Всеки от нас може да пътешества и живее в тези светове. И не е важно как и къде ги създавате. Ние създаваме програмите в същата степен в която и те създават нас. И истинските програми се създават не с хитрост и за тях са малко знанията и съобразителността. Те трябва да минат през сърцето, защото са родени от нашата любов.

Защото програмите, които създаваме са чист продукт на творчеството. Именно затова са толкова привлекателни. Не е нужен нито чук, нито длето, нито четки, нито бои, за да изразиш в нея главното - себе си! И не е важно, че красотата на вашият код ще я разберат малцина. Ако написали своята програма, ставаме по-добри, то това е правилна и добра програма. Но ако мислите, че е нужен по-малко труд, то грешите. И ако не сте готови или не искате в своето творение да оставите частица душа и любов, не сте готови да промените себе си, то по-добре не пишете програми. Потърсете себе си в нещо друго...

Автор: © Dmitry Galuscenko

Преведе от руски: ©2012 John Found

Last modified on: 27.06.2012 17:47:25

Preview

Comments

Title: Filename: