Програмирање је одвратно

// Категорије: ИТ | Магазин |

Сваки мој пријатељ који ради физички посао који подразумева подизање нечега тежег од лаптопа двапут недељно, на крају пронађе начин да у разговору провуче нешто налик на: „Брате, твој посао није тежак. Управо сам завршио 4700-часовну радну недељу копајући шрафцигером тунел испод Мордора“.

И имају право. Мордор је зезнут, и свакако је физички теже копати тунел него куцкати по тастатури (осим ако сте мрав). Међутим, можемо ли се сложити да су стрес и лудило лоше ствари? Сјајно. Добродошли у свет програмирања.

Сви програмерски тимови се састоје од лудака, и лудаци их и формирају.

Замислите да сте се придружили инжењерском тиму (мислимо на „праве инжењере“, са традиционалних техничких факултета). Узбуђени сте и пуни идеја - вероватно свеже дипломирали и из света чистих, дивних дизајна, естетичког савршенства, јединства сврхе, еконимичности и снаге. Срећете Мери - вођу пројекта моста у великом граду. Мери вас упознаје са Фредом, али тек након што прођете кроз 15 различитих сигурностних провера које је успоставио Дејв, јер је неко једном Дејву украо џемпер са стола. Једном и Никад Више. Фред, иначе, једино ради са дрветом. Ви онда, логично, запитате Мери, зашто је Фред укључен кад је мост предвиђен за велику концентрацију саобраћајних возила у којима се возе смртни људи, 60 метара изнад брзака реке. „Не брини“, рече Мери. „Фред ће да се позабави пешачким стазама“. Каквим сад пешачким стазама? Мери ће вам објаснити, да је Фред дао разуман предлог за пешачке стазе, које ће се намонтирати на мост. Наравно, биће направљене без заштитне ограде, јер је Фил поставио стриктно „без ограда“ правило. Фил иначе није инжењер. Заправо, нико није сигуран шта Фил уопште ради. Највероватније је то ствар синергије и има везе са вишим менаџментом са којим ниједан инжењер не жели да се качи - зато нека Фила, нек ради шта хоће.

У међувремену, Сара је пронашла неколико занимљивих техника за поплочавање и унела их у дизајн моста, тако да ћете морати да се бавити сваком посебно како мост буде напредовао - зато што свака захтева посебну припрему подлоге и технике заштите. Том и Хари раде већ годинама, али и даље им је активна расправа око коришћења метричких или империјалних јединица мере. И рад им се своди на принцип „ко први почне са радом“. Што задаје главобољу остатку тима. Такође, напоменимо да је мост замишљен као висећи мост, тако да је такав пројекат већ у току, мада нико заправо не зна како да направи висећи мост. Зато су додали пар додатних стубова да држе проклетињу. При том су каблови задржани јер још увек држе делове моста, па је уклањање ризично - ко зна шта ће се десити.

Тако, упознати сте са екипом, и позвани сте да дате понеку идеју. Али ви немате идеја јер сте ви инжењер за хидротурбине и немате појма ништа о мостовима.

Да ли бисте се возили преко таквог моста? Не. И ако би се некаквом магијом и реализовао такав пројекат, сви умешани би били ликвидирани. С друге стране, сваки програм који сте икада користили, сав банкарски софтвер, вебсајт, па и програми намењени заштити података (а то не раде) су настали као плод рада оваквог колектива.

Сав програмски код је лош

Сваки програмер, с времена на време, када нема никог код куће, угаси светла, наспе себи чашу омиљеног пића, пусти лагану немачку електро музику, и отвори фајл на свом рачунару. То је другачији фајл од програмера до програмера. Понекад, они сами су га написали - а понекад су налетели на њега и сачували га. Наш програмер чита линије кода, и рони сузе пред лепотом. Онда сузе постају горке када се сете осталих фајлова и неумитне пропасти свега онога што је лепо и тачно на свету.

Овај фајл је Божји Код. Он има тачне и доследне називе за фунцкије и варијабле. Он је сажет. Не ради ништа глупо и непотребно. Никада не мора да живи у дивљини или да одговара продајним тимовима. Он извршава тачно једну, прецизну, специфичну ствар и извршава је добро. Написала га је једна особа и нико други га није дотакао. Чита се као поезија.

Сваки програмер почиње стварајући овакву, своју, савршену малу пахуљицу. Онда им неко каже у петак да морају до четвртка да напишу 600 пахуљица, тако да они почињу да варају помало - можда да копирамо неколико пахуљица овде и овде, и да покушамо да их слепимо. Или питамо колегу да поправи ону једну која топи остале. И онда све пахуљице се склапају у целину, необичног и неухватљивог облика. И онда неко све то споји у пикасовску целину јер нико не жели да види како се све пахуљице топе јер је неко уринирао по њима. Следеће недеље, сви лопатама набацују снег како Пикасо не би пукао.

Постоји теорија која каже да се  све ово може излечити поштовањем стандарда. Осим тога, што постоји више „стандарда“ него ствари које рачунари могу да ураде, и сви ови стандарди су изведени из личних наклоности аутора ка овом или оном форматирању или стилу.  У сваком случају, првих пар недеља било ког посла је чисто „проваљивање“ како програм ради, чак и ако сте упознати са сваким језиком, фрејмворком и стандардом који се користи, зато што су стандарди једнорози.

Увек ће бити тама.

Рецимо да сте просечан веб програмер. Упознати сте са десетинама програмских језика, тонама корисних библиотека, стандарда, протокола и чега све не. И даље морате да научите више у току једне недеље и да запамтите да проверите стотине ствари које знате - да би сте видели да ли су измењене, побољшане или пропале. И да проверите да нико није закрпио рупу коју сте користили да бисте урадили нешто што сте сматрали да би било паметно урадити оног једног викенда кад сте били пијани.

И тако, све је ажурирано, подешено, а затим се све разбије у комаде.

„Шта који ...“ рећи ћете и почети да јурите проблем. Открићете да једног дана, неки идиот је својевремено одлучио да у неком језику, 1/0 буде исто што и бесконачност. Онда је други идиот одлучио да се то убаци као скраћеница за бесконачност, када је поједностављивао свој код. Онда је коначно, неки тип који није идиот видео да је све ово идиотски, што је требало да увиди онај први идиот - а није. Тако, овај паметнији тип, одлучи да буде кретен, па у нови компајлер убаци да је овакав израз заправо грешка. Зато што је кретен, и хоће да уринира по вашим пахуљицама.

Ви сте експерт у овим технологијама,  и то је добра ствар, јер ће вам то знање омогућити да потрошите само 6 сати живота покушавајући да провали шта је пошло по злу, суочени са претњом отказом. Када провалите грешку - честитамо! Добили сте још једну малу чињеницу да додате гомили чињеница које треба да запамтите, јер толико програма, језика, компајлера и алата праве и одржавају кретени и идиоти.

А ово је само у вашем експертском пољу, које је малецни део укупне гунгуле свих ствари које постоје у компјутерској науци, а којих је толико, да кад помислите колико мало знате, пожелите да никада нисте ништа научили. Ниједна особа на свету не зна све шта се дешава у вашем рачунару. Зато вам и у случају проблема кажемо да их искључите и поново укључите у нади да ће уграђени механизми опоравка решити проблем који имате. И једини разлог због ког рачунари програмера боље раде од осталих је тај што људи који кодирају знају да су  рачунари шизофренична мала деца са ауто-имуним болестима тако да их не бијемо кад су лоши.

Доста посла се ради на интернету, и интернет је посебан круг пакла.

Сећате се приче о лошим људима и лошем коду? Интернет је управо такав, само што је буквално милион пута гори. Вебсајтови који су прослављени портали за куповину, са свега неколико динамичких страница, одржавају тимови људи, јер истина је да све пуца стално, свуда и свакоме. Управо сада, неко ко ради у Фејсбуку добија десетине хиљада порука о грешци и франатично ради на томе да пронађе проблем пре него што цела шарада падне. Неки тим у Гуглу већ трећи дан не спава. Негде је програмер базе података, који је окружен празним пивским флашама, и за кога супружник није сигуран да ли је жив. И ако ови људи стану, свет ће горети. Многи људи не знају шта раде систем администратори, али верујте, ако би сви они направили паузу у истом тренутку, не би стигли до продавнице пре него што испразните шаржер бранећи своје намирнице од тумарајуће хорде мутаната.

Не можете рестартовати интернет.

На жалост не можете. Стотине милијарди долара зависе на климавој мрежи незваничних договора и „добро је засад“ кода са коментарима попут „УРАДИТИ: ЗАКРПИ ОВО ЈАКО ЈЕ ОПАСНА РУПА, АЛИ НИЈЕ МИ ЈАСНО ШТА НИЈЕ У РЕДУ.“ који су написани пре десетак година. А нисам још поменуо легије типова који нападају различите делове интеренета због шпијунаже, профита или досаде. Чули за 4chan? Он вам може уништити живот и посао само зато што су одлучили да им се овог поподнева не свиђате. А и што да бринемо због 4chan-а кад још једна нуклеарка не прави битну разлику у нуклеарној зими.

На интернету, у реду је рећи „Знаш, ово функционише неко време ако употребиш праву технологију“ и БАМ!, сада је део интернета. Свако са пар стотина долара и рачунаром може себи да обезбеди део интернета и на њега постави свакакав код. Чак и добри програмери се не замарају учењем мистериозних спецификација које измишљају организације које треба да имплементирају неке једнороге - тако да је свако свестан да ништа не одговара ничему и да може да се сруши сваког тренутка. Онда ћемо само покушати да га сакријемо и надамо се да нико неће приметити.

Ево једног тајног правила интернета - 5 минута након што отворите веб браузер, клинац у Русији има ваше личне податке. Да ли сте потписали нешто? Рачунар у НСА аутоматски прати вашу локацију до краја живота. Послали сте имејл? Ваша имејл адреса је на билборду у Нигерији.

Ове ствари нису тачне због тога што не маримо за њих или што не покушавамо да их зауставимо. Тачне су зато што је све климаво јер нема довољно доброг кода. И сви покушавају само да омогуће да ствари функционишу. То је ваш посао као програмера - надате се да је последња ствар коју сте написали довољно добра да преживи пар сати како бисте могли да вечерате и одморите мало.

Још нисте довољно програмирали да бисте заиста проговорили на програмском језику. Људски мозак једноставно није довољно добар у једноставној логици  - а читава каријера вам се своди на рад у заиста комплексним логичким проблемима.

Велики ланци апстрактних услова и захтева треба да прођете да бисте отркили баналну грешку попут недостајућег зареза. Када ово радите читавог дана, доспете у стање афазије док гледате у људе који вам говоре и не знате да ли су завршили јер нигде нема тачка-зареза. На крају ћете пронаћи себе удављеног у потпуном бесмислу.

Ефекат уништавања мозга је очигледан када видимо програмске језике које су људи осмислили. Ово су примери програма у програмским језицима који заиста постоје.

Ево на пример:

 `r```````````.H.e.l.l.o. .w.o.r.l.di

Исти ефекат као и претходни, има и овај код:

#include
int main( int argc, char** argv ) {
std::cout return 0;
}

Да не буде досадно, ово је потпуно валидан код:

>+++++++++[<++++++++>-]+++++++[<++++>-]<+.+++++++..+++.[-] >++++++++[<++++>-] +++++++++++[<++++++++>-]<-.————.+++ .———.————.[-]>++++++++[<++++>- ]<+.[-]++++++++++.

као и ово:

#:: ::-| ::-| .-. :||-:: 0-| .-| ::||-| .:|-. :||
open(Q,$0);while("){if(/^#(.*)$/){for(split('-',$1)){$q=0;for(split){s/|
/:.:/xg;s/:/../g;$Q=$_?length:$_;$q+=$q?$Q:$Q*20;}print chr($q);}}}print"n";
#.: ::||-| .||-| :|||-| ::||-| ||-:: :|||-| .:|
"

Према аутору, овај последњи програм је „две линије кода које парсирају две линије уграђених коментара у коду, како би читали Мајанске бројеве који представљају појединачни ASCII карактери који чине наслов магазина, рендерован у АSCII слици ротираној за 90 степени“.

Овај програм је победио све остале. Да ли желите да живите у оваквом свету? Не. Ово је свет где можете попушити паклу цигарета дневно и да неко то не примети. „наравно да пуши паклу дневно, ко не би?“. На крају, сваки програмер се буди и пре него што је сасвим свестан, види читав свој свет и сваку везу у њему као парчиће кода и причају приче о томе као да су трипови које изазива поспаност нормална ствар која се дешава људима. Ово је свет у ком се људи одричу секса да би написали програмски језик за орангутане. Сви програмери терају своје мозгове да раде ствари за које мозгови нису предвиђени. И то често десет до петнаест сати дневно, седам дана недељно. И сваки лагано постаје луд.

Тако да: не, не носим около тешке ствари на послу. Мењао сам то за прилику да бријем Сатани пубичне длаке док он вечера у мојој отвореној лобањи, како би део интрента наставио да функционише још неки дан.

Ауторски текст Питера Велча можете наћи на mashable.com

Zato što je kreten, i hoće da urinira po vašim pahuljicama. hahaha

Објављено: 26.08.2014 01:26 - (thekgiga)


0
0
Brainfuck <3

Објављено: 12.06.2014 16:23 - (Vaha)


0
7

Ma kome jos treba programiranje u 21. veku... Treba znati sta su sinergija, optimizacija, implementacija i ostale opasne reci

al istina, programiranje ume da bude naporno


Објављено: 10.06.2014 22:11 - (menadjer)


0
17
25
2

Постави коментар

E-mail:
Коментар:
Антиспам:

18 + 5

Коментари пролазе модерацију, зато што смо тако у могућности