събота, 28 юли 2012 г.

Истинският програмист не пише на PASCAL

Истинският програмист не пише на PASCAL почти по Ед Пост
  Едно  време, в  златния век   на компютрите,  беше лесно  да се
отделят истинските  мъже от момченцата. По  това време истинските
мъже бяха тези, които разбираха  от програмиране, а кърмачетата -
които не разбираха. Истинският програмист казваше "DO 10 I= 1,10"
а останалият свят - "Компютрите са  нещо прекалено сложно и зага-
дъчно" или "Не мога да се обвързвам с тях,те са толкова безлични"
В своя  труд  "Истинските  мъже  не  ядат  попара"  В.Фойерщайн е
отбелязал ясно,  че истинските програмисти не  се страхуват да се
"обвържат" с нещо сложно и не се страхуват да минат за безлични.
  Но  времената се  менят. Днес  живеем в  свят, в  който малките
стари дами имат готварска печка с микропроцесор, а дванадесет го-
дишни  хлапаци  могат  да  засрамят  истинските  мъже при игра на
Invaders, Digger  или SopWith. Истинските програмисти  са в опас-
ност да бъдат изместени от  гимназисти с 8-битови домашни компют-
ри или  от недоучили студенти по  математика със своите 16-битови
персонални сметалки.
  Все пак  има съществена разлика  между тези две  категории нат-
рапници и  истинския МЪЖ-ПРОГРАМИСТ. Познаването  на тези разлики
би могло да  даде на хлапаците образец, към  който макар и безна-
деждно да се стремят.
     Най-лесният начин да се определи кой е Истински програмист,е
по езика,който използва. Когато Истинският програмист програмира,
той пише на FORTRAN  (някои по-консервативни Истински програмисти
държат на версията IV, но  Големият програмист приема при нужда и
версия 77), а кърмачетата пишат на PASCAL (съвсем непрогледналите
даже на  версиите TURBO). Истинските  програмисти нямат нужда  от
абстрактни концепции  за да си  свършат работата -  те са напълно
щастливи  с перфоратор,  компилатор за  FORTRAN и  бира. Когато в
последно време на Истинските програмисти се налага да програмират
на  персонални компютри  те благосклонно  се съгласяват,  че след
някои тайнствени доработки и предефинирания дори от BASIC(естест-
вено  става дума  за компилатор)  може да  се получи един поносим
език за програмиране.Накратко: ако не можете да направите нещо на
FORTRAN или BASIC, направете го на ASSEMBLER. Ако не можете да го
направите и на ASSEMBLER, не си  струва да го правите изобщо. Ако
все пак трябва да се направи а  Вие можете да го напишете само на
"нещо"  от  рода  на  PASCAL,  най-добре  възложете  работата  на
Истински програмист, очевидно е, че Вие не сте за тази работа.
  Когато завърших  университета мислех, че  съм най-добрият прог-
рамист. Можех да напиша непобедима  програма за игра на кръстчета
и нули, да използвам пет езика за програмиране и да пиша програми
от по  хиляда реда, които дори  работеха и дори да  изпия на един
дъх  две бири.  След това   попаднах в  реалния свят.  Първата ми
задача беше  да прочета и  разбера програма на  FORTRAN от двеста
хиляди  оператора, след  което да  я направя  два пъти  по-бърза.
Всеки  Истински  програмист  ще  Ви  каже,  че  цялото структурно
програмиране  на света  не може   да Ви  помогне да  решите такъв
проблем, нужни са талант и много бира.
     Постепенно  стигнах  до   някои  заключения   за  Истинските
програмисти и структурното програмиране:
     - Истинският програмист не пише на PASCAL ;
     - Истинският програмист не се страхува да използва GOTO ;
     - Истинският програмист може да пише цикли заемащи цели 
       страници без да се обърка ;
     - Истинският програмист харесва аритметичния IF,  защото той
       прави програмата по-интересна ;
     - Истинският програмист пише самомодифициращи програми, 
       особено ако това спестява 20 наносекунди на някой 
       еднократен преход;
     - Истинският програмист  няма  нужда от коментари, за него
       програмите са очевидни .
  Каква операционна система използва Истинският програмист? CP/M?
UNIX? Пази боже! Даже малките  стари дами и гимназистите могат да
ги разберат. При UNIX обикновеният  човек, разбира се, не може да
запомни какво  прави командата PRINT  тази седмица, но  това не е
достатъчно. Не! Истинският  програмист работи с OS/370.  OS/370 е
наистина  забележителна операционна  система. Тя  позволява да се
унищожи няколко-дневна работа само с една шпация на грешно място.
По този начин се стимулира бдителността на персонала.
  Добрият програмист може да намери  в ръководството и да разбере
току що появилото се съобщение IIK305I.  Големият програмист може
да пише на JCL без  справочник. Великият Истински Програмист може
да   открие  грешка,   погребана  в   шест-мегабайтов  дъмп   без
шестнайсетичен калкулатор, а при липса на хартия за широкия печат
дори и без целия дъмп.
  Истинският  програмист  трябва  да  подбере  и текстов редактор
който да подхожда  най-добре на душевната му нагласа,  както и на
вратовръзката  подарена  от  тъщата  за  по-миналия професионален
празник   на   програмистите.  Проблемът   е  там, че  Истинският
програмист   не  харесва   концепцията  "Каквото   виждате,  това
получавате".  Той иска  редактор от  типа "Искаш  и получаваш", а
какво получавате е тема  на съвсем отделно изследване. Редакторът
трябва  да е  сложен, тайнствен,  мощен, непрощаващ  и опасен,  с
тънко и своеобразно  чувство за хумор. Някоя грешка  при работа с
него  да   унищожи  цялата  програма   или  само  най-важните   и
трудно-настройващи  се  сегменти.  Друга  грешка  (или  същата  в
зависимост  от  фазата  на  Луната)  да  запълва  с  двоични нули
масивите, защитени от изтриване  и неправомерен достъп, съдържащи
данните от измерванията и  изчисленията на група от четиринадесет
висококвалифицирани  и нервни  специалисти (двама  от които  едно
време са се колебали между  чистата наука и професионалния бокс).
Хубаво би  било редакторът от  време на време  да вмъква тънка  и
загадъчна грешка в подпрограма, която сработва само веднъж.
  Къде  работи Истинският  програмист? Какви  програми заслужават
вниманието Му? Можете да бъдете  сигурни, че никой Истински прог-
рамист  няма да  бъде заварен  да пише  статистически програми на
PASCAL, да  сортира адреси за  някое списание с  помощта на Lotus
или да прави  табулограми за малките стари дами,  минали на меди-
цинска  комисия за  презаверка на  шофьорските книжки. Истинският
програмист иска задачи с разтърсваща света сложност.
  Някои   от   Най-Страшните   Истински   Програмисти  работят  в
космическата лаборатория  на NASA в Калифорния.  До голяма степен
на  тях  се  дължи  отиването  на  хора  на Луната. Компютрите на
космическата  совалка  са  програмирани  от Истински програмисти.
Много от  тамошните програмисти знаят  наизуст целите операционни
системи на Pioneer и Voyager и при нужда оправят нещата от Земята
по радиото без да гледат source-текстовете. С комбинация от дълги
програми на  FORTRAN на Земята и  къси на ASSEMBLER в  Космоса те
могат да извършат невероятни подвизи в навигацията и управлението
- например  след  шестгодишен  полет  да улучат десеткилометровия
процеп  в  пръстените  на  Сатурн;  да  сменят  някой  датчик или
кондензатор 83  секунди преди да  се е повредил  и други подобни.
Казват, че  един Истински програмист решил  да напъха програма за
разпознаване  на  образи  в  останалите  няколкостотин  байта  от
паметта на Voyager. В последствие тази програма откри нов спътник
на Юпитер.
  Истинският програмист може да  направи и компромис с принципите
си,  работейки върху  нещо малко  по-тривиално, стига  то да носи
достатъчно  пари.  Например  някои  Истински  програмисти  правят
видеоигри, без  обаче сами да играят.  Истинският програмист знае
как да бие всеки път компютъра или поне да се впише в началото на
таблицата  с  резултатите,  затова  не  вижда предизвикателство в
играта. Също така всички работещи за Лукас са Истински програмис-
ти, защото би  било глупаво да не се  приберат парите на петдесет
милиона почитатели на "Междузвездни войни". Малко по малко Истин-
ските програмисти  започват да се занимават  и с машинна графика,
главно защото никой още не и е намерил разумно приложение и тя за
сега е едно малко странно хоби.
  Изобщо Истинският  програмист се забавлява така  както работи -
т.е. с компютри. Той постоянно  се учудва защо неговият работода-
тел му плаща за работа,която иначе би вършил само за удоволствие,
но естествено  не изразява гласно такива  мисли пред началниците.
От време на  време Истинският програмист все пак  излиза от служ-
бата си за глътка чист въздух и една-две бири.
  В каква среда работи най-добре Истинският програмист? Типичният
Истински  програмист  живее  пред  терминала,  заобиколен от лис-
тингите на всички програми, които някога е написал. Те са нареде-
ни в строго хронологичен ред,натрупани на места, чието разположе-
ние обаче  е така организирано,  че само по  себе си представлява
изключително интересен проблем в  областта на случайните събития.
Ще  видите и  пет-шест чаши,  наполовина пълни  с дълго престояло
кафе. Понякога  в тях плуват  кибритени клечки, угарки  от пури и
много  други  неща.  В  някои  случаи  някои  чаши съдържат бледа
течност с цвят на чай, силно  миришеща на много ром с малко лимо-
нов сок. Не  са наблюдавани случаи на недоизпита  бира. Освен ако
програмистът не е изключително опитен, ще намерите ръководство за
програмиране на  JCL, и справочник по  ASSEMBLER отворен на някоя
особено интересна страница. На пода  се въргалят опаковки от сухи
бисквити, празни пакети от тютюн за лула и билети за Онзи Концерт
На Който Трябваше Да Отида С Жена Си. Някъде наблизо вероятно има
и забутан шаблон за блок-схеми.
  Подложен на  силен натиск Истинският програмист  може да работи
петдесет часа без прекъсване.  Всъщност той предпочита този стил.
Дългото време за  отговор на системата не го  безпокои, защото му
дава  възможност  да  подремне  между  две  компилации. Ако не го
стягат  достатъчно, Истинският  програмист работи,  първите девет
седмици,  по  една  малка,  но  изключително  интересна  част  от
проблема. През последната седмица завършва работата си за два-три
петдесет-часови маратона. Това  не само впечатлява ръководството,
но и създава удобен претекст да не пише документация.
  Ето и някои правила за разпознаване на Истинския програмист:
  - Истинският програмист  по  принцип  не носи  вратовръзка,  но
    когато  се налага  слага  вратовръзка,  без да изневерява  на
    принципите си.
  - Истинският програмист  отива на  работа по  обяд.  Ако  отиде
    по-рано значи е объркал нещо.
  - Истинският програмист може да знае или  да не знае  рождената
    дата на съпругата си, но знае наизуст ASCII - таблицата.
  - Истинският програмист  не знае да готви. Когато  се налага да
    сготви, поради  липса на алгоритъм,  той готви по  метода  на
    пробите и грешките и не  обича  формален  контрол.   Понякога
    успява.
  - Истинският  програмист използва водата  за миене (в  комбина-
    ция със сапун  или паста за зъби). Ако не  трябва да се пие
    алкохол, той пие кафе или бира.
  - На забава  Истинските програмисти стоят в ъгъла  и говорят за
    защити на операционните системи и начини за преодоляването им
  - На футболен мач сравнява играта със своя листинг.
  - На плажа чертае блок-схеми по пясъка.
  - Отива  на  дискотека  за  да открие  системата в  работата на
    светлинните ефекти.
  - На погребение  Истинският програмист  казва: "Бедният Джордж!
    Програмата му за сортиране почти тръгна преди инфаркта".
   
    Всъщност и  бъдещето не е  толкова лошо. Докато  има лошо дефи-
    нирани задачи, изтънчени грешки , нереални графици и павилиони за
    бира, ще има  ИСТИНСКИ ПРОГРАМИСТИ,  жадуващи да  се втурнат и да 
    решат проблема, оставяйки документацията за после.

              Долу PASCAL, да живее FORTRAN! 

Оргинален адрес: http://bultext.tripod.com/Greatprg.txt

Иначе откраднато то Дончо: http://blog.doncho.net/ :)