Гісторыя Мел з'яўляецца адпаведнай артыкуле. ]
Яшчэ ў старыя добрыя часы - "Залатая эра" кампутараў - гэта было лёгка аддзяліць мужчын ад хлопчыкаў (часам званыя "сапраўдныя мужчыны" і "киче пажыральнікаў" у літаратуры). На працягу гэтага перыяду, сапраўдныя мужчыны былі тыя, хто разумеў праграмавання, і киче Пажыральнікі былі тыя, хто гэтага не зрабіў. Рэальны праграміст сказаў рэчы, як "DO 10 I = 1,10" і "ABEND" (яны на самой справе казаў загалоўнымі літарамі, вы разумееце), і астатняй свет сказаў, напрыклад, "кампутары занадта складаныя для мяне" і "Я не магу ставіцца да кампутараў - яны так безасабовае". (Папярэдняй працы [1] паказвае, што сапраўдныя мужчыны не "звязаныя" ні да чаго, і не баяцца быць безасабовыя.)
Але, як звычайна, часы мяняюцца. Мы сёння сутыкаемся з светам, у якім бабулькі могуць атрымаць кампутары ў мікрахвалевых печаў, 12-гадовы дзеці могуць ўдар сапраўдных мужчын з вады гулялі Астэроіды і Pac-Man, і кожны можа купляць і нават зразумець іх вельмі асабістым кампутар. Рэальны праграміст знаходзіцца пад пагрозай вымірання, быць замененыя школьнікаў з трэш-80-х гадоў.
Існуе відавочная неабходнасць паказаць на адрозненні паміж тыповай сярэдняй школе малодшых гульцоў Pac-Man і сапраўдным праграмістам. Калі гэта адрозненне ясна, гэта дасць гэтым дзецям што-то імкнуцца да - ролі мадэлі, фігуры бацькі. Гэта таксама дапаможа растлумачыць працадаўцам сапраўдных праграмістаў, чаму гэта не было б памылкай замяніць сапраўдных праграмістаў на сваіх супрацоўнікаў з 12-гадовага гульца Pac-Man (пры значнай эканоміі заработнай платы).
Самы просты спосаб даведацца, сапраўдным праграмістам з натоўпу на мове праграмавання ён (ці яна) выкарыстоўвае. Сапраўдныя праграмісты выкарыстоўваць Fortran. Киче Пажыральнікі выкарыстоўваць Паскаль. Ніклаўс Вірт, дызайнер Паскаль, выступіў з дакладам адзін раз, пры якой ён спытаў: "Як вы прамаўляеце ваша імя?". Ён адказаў: "Вы можаце называць мяне па імені, прамаўляючы гэта Veert", або патэлефануеце мне па значэнні, 'Загрузіць'. " Можна сказаць адразу, што гэты каментар Ніклаўс Вірт киче Eater. Адзіны параметр, механізм перадачы адобраны сапраўдных праграмістаў, гэта патэлефанаваць па значэнні зваротнага, як гэта рэалізавана ў IBM/370 Fortran G і H кампілятараў. Сапраўдныя праграмісты не патрэбны ўсе гэтыя абстрактныя паняцці, каб атрымаць сваю працу, - яны цалкам задаволеныя перфаратара, кампілятара Fortran IV, і піва.
Калі вы не можаце зрабіць гэта ў Fortran, зрабіць гэта на асэмблеры. Калі вы не можаце гэта зрабіць на асэмблеры, гэта не варта рабіць.
Вучоных у галіне камп'ютэрных навук атрымаў у "структурнага праграмавання" каляіны на працягу апошніх некалькіх гадоў. Яны сцвярджаюць, што праграмы больш зразумелымі, калі праграміст выкарыстоўвае некаторыя адмысловыя моўныя канструкцыі і метады. Яны не ўсе згодныя з якой менавіта канструкцыі, вядома, і прыклад іх выкарыстоўваць, каб паказаць свой пункт гледжання заўсёды змяшчаюцца на адной старонцы нейкі смутнай часопіс ці іншай - відавочна не дастаткова Напрыклад, каб пераканаць усіх. Калі я выйшаў з школы, я думаў, што я быў лепшым праграмістам у свеце. Я мог бы напісаць непераўзыдзеным праграмы Tic-Tac-Toe, выкарыстоўваць пяць розных моў праграмавання, а таксама стварыць 1000 праграм лініі, якія працавалі (действительно!). Тады я выйшаў у рэальны свет. Мая першая задача ў рэальным свеце было прачытаць і зразумець, 200000 лініі Fortran праграмы, то хуткасць яго па два разы. Любы рэальны праграміст скажа вам, што ўсе структураванага кадавання ў свеце не дапаможа вам вырашыць праблемы, як, што - ён прымае фактычнае талент. Некаторыя заўвагі па хуткай сапраўдных праграмістаў і структурнага праграмавання:
Структуры дадзеных таксама атрымалі шмат прэсы, у апошні час. Абстрактныя тыпы дадзеных, структуры, паказальнікі, спісы і радкі сталі папулярныя ў пэўных колах. Вірт (вышэй згадвалася киче Eater) на самай справе напісаў цэлую кнігу [2], сцвярджаючы, што вы маглі б напісаць праграму, заснаваную на дадзеных структурах, а не наадварот. Як і ўсе Сапраўдныя праграмісты ведаюць, толькі карысныя структуры дадзеных Array. Радкі, спісы, структуры, наборы - усе гэтыя прыватныя выпадкі масівы і можа разглядацца так жа, як лёгка, не псуючы ваш мова праграмавання з разнастайнымі ўскладненнямі. Горш за ўсё фантазіі тыпаў даных з'яўляецца тое, што вы павінны абвясьціць іх, і рэальны Мовы праграмавання, як мы ўсе ведаем, ёсць няяўнай тыпізацыі заснаваная на першую літару (шэсць знакаў) імя зменнай.
Якая аперацыйная сістэма выкарыстоўваецца сапраўдным праграмістам? CP/M? Не дай Бог - CP/M, у рэшце рэшт, у асноўным сістэмы цацка аперацыйнай. Нават маленькія старыя дамы і класа школьнікі могуць разумець і выкарыстоўваць CP/M.
Unix з'яўляецца значна больш складаным, вядома, - тыповы хакер Unix ніколі не можа ўспомніць, што каманду "Друкаваць" называецца на гэтым тыдні, - але калі ён атрымлівае прама да яе, Unix з'яўляецца славуты відэагульні. Людзі не робяць сур'ёзную працу на сістэмах Unix: яны адпраўляюць жарты па ўсім свеце на UUCP-сеткі і пісаць прыгодніцкія гульні і навукова-даследчых работ.
Не, ваш рэальны праграміст выкарыстоўвае OS/370. Добры праграміст можа знайсці і зразумець апісанне памылкі IJK305I ён толькі што атрымаў у сваім кіраўніцтве JCL. Вялікі праграміст можа напісаць JCL, не звяртаючыся да кіраўніцтва на ўсіх. Сапраўды выбітны праграміст можа знайсці памылкі пахаваны ў 6 мегабайт дампа памяці без выкарыстання Hex калькулятар. (На самай справе я бачыў гэта зрабіць.)
АС сапраўды выдатная аперацыйная сістэма. Можна знішчыць дзён працы з аднаго недарэчныя прасторы, так пільнасць у праграмаванні персаналу вітаецца. Лепшы спосаб наблізіцца да сістэмы праз перфаратара. Некаторыя людзі сцвярджаюць, што гэта час сістэмы размеркавання, якая працуе на OS/370, але пасля стараннага вывучэння я прыйшоў да высновы, што яны памыляліся.
Якія інструменты робіць рэальнае выкарыстанне праграміст? У тэорыі, сапраўдным праграмістам можа запусціць свае праграмы па ўводу іх у пярэдняй панэлі кампутара. Яшчэ ў тыя часы, калі кампутары былі пярэдняй панэлі, гэта было на самой справе робіцца часам. Ваш тыповы сапраўдным праграмістам ведаў увесь загрузчык па памяці ў шаснаццатковым, і перамыкаецца гэта кожны раз, калі ў яго атрымаў знішчаны яго праграмы. (У той час, памяць была памяццю -. Ён не сыходзіў, калі ўлада пайшла сёння, памяць альбо забывае рэчы, калі вы не жадаеце, каб ён, ці памятае рэчы доўга пасля яны лепш забыць.) Легенда, што Сеймур Крей, вынаходнік Cray я суперкампутар, і большасць з кампутараў кіравання дадзенымі, на самай справе ўключаецца першая аперацыйная сістэма для CDC7600 ў на пярэдняй панэлі з памяці, калі ён быў упершыню ўключаны. Сеймур, зразумела, з'яўляецца сапраўдным праграмістам.
Адзін з маіх любімых сапраўдных праграмістаў быў сістэмным праграмістам у кампаніі Texas Instruments. Аднойчы ён атрымаў вялікае адлегласць званок ад карыстальніка, сістэма разбіўся ў сярэдзіне эканоміі некаторыя важныя працы. Джым быў у стане рамонту пашкоджанняў па тэлефоне, атрымліваць карыстальнік для пераключэння ў дыскавай ўводу/вываду інструкцыі на пярэдняй панэлі, рамонт сістэмных табліц у шаснаццатковым, чытанні змесціва рэгістра таму па тэлефоне. Мараль гэтай гісторыі: у той час як сапраўдным праграмістам звычайна ўключае перфаратара і лініі друкаркі ў яго інструментарый, ён можа атрымаць толькі разам з пярэдняй панэлі і тэлефон у надзвычайных сітуацыях.
У некаторых кампаніях, рэдагаванне тэкстаў больш не складаецца з дзесяці інжынераў стаяць у чарзе ў 029 перфаратара. На самай справе, будынак Я працую ў не ўтрымлівае ні аднаго перфаратара. Рэальны праграміст у гэтай сітуацыі павінен рабіць сваю працу з "тэкставы рэдактар" праграмы. Большасць сістэм водазабеспячэння некалькі тэкставых рэдактараў, каб выбраць з, і сапраўдным праграмістам павінны быць асцярожныя, каб выбраць той, які адлюстроўвае яго асабісты стыль. Многія людзі лічаць, што лепшы тэкставых рэдактараў ў свеце былі напісаны ў Xerox Palo Alto Research Center для выкарыстання на сваіх Alto і Dorado кампутараў [3]. На жаль, ніякіх рэальных праграміст ніколі не выкарыстоўваць кампутар якога аперацыйная сістэма завецца Smalltalk, і, вядома, не гаварыць з камп'ютэрам з дапамогай мышы.
Некаторыя з канцэпцый гэтых рэдактараў Xerox былі ўключаныя ў рэдактараў, якія працуюць на больш разумна імя аперацыйнай сістэмы - EMACS і VI быць два. Праблема з гэтымі рэдактарамі, што рэальныя праграмісты лічаць "што вы бачыце, што вы атрымаеце", каб быць гэтак жа дрэнным канцэпцыі ў тэкставых рэдактарах, як і ў жанчын. Не, сапраўдным праграмістам хоча "Вы прасілі пра гэта, вы яго атрымалі" тэкставы рэдактар - складаныя, загадкавыя, магутны, няўмольны, небяспечна. ТЕКО, калі быць дакладным.
Было адзначана, што паслядоўнасць каманд TECO больш нагадвае перадачу шуму лініі, чым чытаны тэкст [4]. Адзін з больш цікавых гульняў з TECO гэта ўвесці сваё імя ў якасці каманднага радка і спрабаваць адгадаць, што ён робіць. Проста аб магчымым памылка друку падчас размовы з TECO, верагодна, разбурыць вашу праграму, ці яшчэ горш - ўводзіць тонкія і таямнічыя памылкі ў раз працоўныя падпраграмы.
Па гэтай прычыне Сапраўдныя праграмісты не хочуць, каб фактычна змяніць праграму, якая блізкая да працоўных. Яны знаходзяць яе значна прасцей проста патч двайковы код аб'екта непасрэдна, выкарыстоўваючы выдатныя праграмы пад назвай SUPERZAP (або яго эквівалент на не-машын IBM). Гэта працуе так добра, што многія рабочыя праграмы на сістэмах IBM не маюць ніякага дачынення да арыгінальнай код Fortran. У многіх выпадках, зыходны код больш не даступны. Калі прыходзіць час, каб выправіць праграму, як гэта, не менеджэр б нават думаць пра адпраўкі нешта меншае, чым сапраўдным праграмістам, каб зрабіць працу - няма киче Рэстараны структураваных праграміст б нават не ведаю з чаго пачаць. Гэта называецца "занятасці".
Некаторыя праграмныя сродкі не выкарыстоўваюцца сапраўдных праграмістаў:
Дзе тыповых сапраўдным праграмістам працаваць? Якія праграмы годныя намаганні гэтак таленавіты чалавек? Вы можаце быць упэўнены, што ніякай рэальнай праграміст будзе злоўлены мёртвых Даць рахункі-запазычанасці праграм у COBOL, або сартаванне спісаў рассылання для часопіса Людзі. Рэальны праграміст хоча задачы каласальныя значэнне (у літаральным сэнсе).
Некаторыя з самых дзіўных Сапраўдныя праграмісты ўсіх работ у Лабараторыі рэактыўнага руху ў Каліфорніі. Многія з іх ведаюць ўсю аперацыйную сістэму ад Pioneer і Вояджэр "на памяць. У спалучэнні з вялікіх наземных Fortran праграм і малога касмічнага апарата-праграм на асэмблеры, яны ў стане зрабіць неверагодныя подзвігі навігацыі і імправізацыі - удары на дзесяткі кіламетраў раскінулася шырокімі вокнамі на Сатурн пасля шасці гадоў у прасторы, рамонту або ў абыход пашкоджаных датчык платформаў, радыёпрыёмнікі і акумулятары. Сцвярджаецца, што адзін рэальны праграміст атрымалася Tuck шаблоне праграму ў некалькі сот байт нескарыстанай памяці карабля Voyager, што шукалі, размешчаных, і сфатаграфавала новую луну Юпітэра.
Бягучы план па касмічным апаратам "Галілеа з'яўляецца выкарыстанне гравітацыйны манеўр траекторыі мінулым Марса на шляху да Юпітэра. Гэтая траекторыя праходзіць у 80 +/- 3 км ад паверхні Марса. Ніхто не збіраецца давяраць праграме Паскаль (Pascal або праграміст) для навігацыі на гэтыя допускі.
Што вы можаце сказаць, шматлікія з сапраўдных праграмістаў працы ў свеце для ўрада ЗША - у асноўным Міністэрства абароны. Гэта так і павінна быць. Аднак у апошні час, чорныя аблокі фармуюцца на гарызонце сапраўдным праграмістам. Здаецца, што некаторыя высокапастаўленыя киче Пажыральнікі на Міністэрства абароны вырашыла, што ўсе абаронныя праграмы павінны быць напісаны ў некаторых вялікага аб'яднання мове завецца "ADA" ((С), DoD). Нейкі час здавалася, што ADA наканавана было стаць мову, які пайшоў супраць усіх запаведзяў рэальнага праграмавання - мова са структурай, мову з тыпамі даных, строгая тыпізацыя, і кропкі з коскай. Карацей кажучы, мова прызначаны для калекай творчасці тыповых сапраўдным праграмістам. На шчасце, мова прынятыя МО было досыць цікавыя асаблівасці, каб зрабіць яго даступным - гэта неверагодна складаны, уключае ў сябе метады важдацца з аперацыйнай сістэмай і перастаўляючы памяці, і Эдсгер Дейкстра не падабаецца, [6]. (Дейкстра, як я ўпэўнены, вы ведаеце, быў аўтарам "GOTOs лічацца шкоднымі" - арыенцір у рабоце метадалогіі праграмавання, апладзіравалі Паскаль Праграмісты і киче Пажыральнікі так.) Акрамя таго, вызначаецца гэтым праграмістам можаце напісаць Fortran праграм у на любой мове.
Рэальны праграміст можа паставіць пад пагрозу свае прынцыпы і працаваць на тое, крыху больш, чым трывіяльнае разбурэнне жыцця, як мы яе ведаем. Прадастаўленне ёсць дастаткова грошай на гэта. Ёсць некалькі сапраўдных праграмістаў будынак відэа гульні на Atari, напрыклад. (Але не гуляць у іх - сапраўдны праграміст ведае, як перамагчы машыну кожны раз:. Задача не ў тым, што) Кожны, хто працуе ў LucasFilm з'яўляецца сапраўдным праграмістам. (Было б быць вар'ятам, каб адмовіцца ад грошай пяцідзесяці мільёнаў прыхільнікаў зоркі Trek.) Доля праграмістаў Рэальны ў галіне камп'ютэрнай графікі некалькі ніжэй, чым норма, у асноўным таму што ніхто не знайшоў выкарыстоўваць для камп'ютэрнай графікі яшчэ. З іншага боку, усе Кампутарная графіка гэта робіцца ў Fortran, так Ёсць нямала людзей, якія робяць Графіка, каб пазбегнуць таго, каб напісаць COBOL праграм.
Як правіла, сапраўдным праграмістам гуляе такую ж, як ён працуе - з кампутарамі. Ён пастаянна здзіўлены, што яго працадаўца фактычна плаціць яму рабіць тое, што ён будзе рабіць для задавальнення ў любым выпадку (хоць ён стараецца не выяўляць гэтае меркаванне услых). Часам, сапраўдным праграмістам робіць крок з Упраўлення па глыток свежага паветра і піва ці два. Некалькі саветаў аб прызнанні сапраўдных праграмістаў ад камп'ютэрнага залы:
Якая сераду робіць Рэальныя функцыі праграміст лепшых у? Гэта важнае пытанне для мэнэджэраў сапраўдных праграмістаў. Улічваючы колькасць грошай гэта каштуе, каб трымаць у штаце, лепш змясціць яго (або яе) ў асяроддзі, дзе ён можа атрымаць яго працу.
Тыповыя сапраўдным праграмістам жыцця перад камп'ютэрных тэрміналам. Бліжэйшыя гэтага тэрмінала:
Рэальны праграміст здольны працаваць 30, 40, нават 50 гадзін запар, пад моцным ціскам. На самай справе, ён аддае перавагу гэта такім чынам. Bad час водгуку не турбуе сапраўдным праграмістам - гэта дае яму шанец злавіць трохі паспаць паміж кампілюе. Калі не хапае ціску план па сапраўдным праграмістам, ён імкнецца зрабіць рэчы больш складаныя, працуючы на невялікі, але цікавай часткай праблемы за першыя дзевяць тыдняў, затым аздабленне адпачынак у на мінулым тыдні, у два ці тры 50 -гадзіннага марафону. Гэта не толькі ўражвае, да д'ябла, яго менеджэр, які быў страціўшы надзею калі-небудзь атрымаць праекта зрабілі своечасова, але і стварае зручнае апраўданне не рабіць дакументацыю. Увогуле:
Што ў будучыні? Гэта выклікае пэўную заклапочанасць у сапраўдных праграмістаў, што апошняе пакаленне праграмістаў не выхоўваюцца з тым жа поглядам на жыццё, як іх старэйшынамі. Многія з іх ніколі не бачылі кампутар з пярэдняй панэлі. Наўрад ці хто скончыў школу ў гэтыя дні можна зрабіць Hex арыфметычных без калькулятара. Выпускнікі каледжа, у гэтыя дні не стануць мяккімі - абаронены ад рэалій праграмавання адладчык ўзроўню крыніцы, тэкставыя рэдактары, што кол дужках, і "дружалюбным" аперацыйных сістэм. Горш за ўсё, што некаторыя з гэтых нібыта "навукоўцы кампутар" удалося атрымаць градусаў, нават не навучанне Fortran! Няўжо мы наканавана стаць прамысловасці хакераў Unix і Паскаль праграмістаў?
З майго вопыту, я магу толькі паведаміць, што светлую будучыню для сапраўдных праграмістаў ва ўсім свеце. Ні OS/370, ні Фартран паказваюць якіх-небудзь прыкмет вымірання, нягледзячы на ўсе намаганні Па-кал праграмістаў ва ўсім свеце. Яшчэ больш тонкія прыёмы, як даданне структураваных канструкцый кода на Fortran, пацярпелі няўдачу. Так, вядома, некаторыя кампутарныя вытворцы выйшлі з кампілятары Fortran 77, але кожны з іх мае спосаб пераўтварэння сябе назад у кампілятар Fortran 66 на падзенне дадатковай карты - для кампіляцыі DO завес, як Бога азначала, каб яны былі.
Нават Unix можа быць не так дрэнна на Праграмісты рэальна, як гэта было раней. Апошні выпуск Unix мае патэнцыял аперацыйнай сістэмы годным якога-небудзь рэальнага праграміста - два розных і несумяшчальных тонка карыстацкіх інтэрфейсаў, тайных і складаных тэлетайп кіроўца, віртуальнай памяці. Калі ў вас ігнараваць той факт, што гэта "структураванай", нават праграмавання "З" можа быць ацэнена сапраўдным праграмістам: у рэшце рэшт, няма праверкі тыпаў, імёны зменных сем (1008?) Сімвалаў, і дадатковы бонус тып паказальніка дадзеных кінулі у - як мець лепшыя часткі мовы Фартран і мовы асэмблера ў адным месцы. (Не кажучы ўжо пра некаторых з больш творча выкарыстоўвае для # вызначыць.)
Не, будучыня не ўсё так дрэнна. Чаму, у апошнія некалькі гадоў, папулярная прэса нават пракаментаваў яркі новы ўраджай кампутара батанікаў і хакераў ([7], [8]), пакідаючы месца, як Стэнфард і MIT для рэальнага свету. З усіх доказаў, дух гэтага праграмавання жыве ў гэтых маладых мужчын і жанчын. Пакуль Ёсць дрэнна вызначаны мэты, дзіўныя памылкі, і нерэалістычныя графікі, будзе Сапраўдныя праграмісты гатовыя скакаць і вырашыць гэтую праблему, эканомячы дакументацыю на потым. Няхай жыве Fortran!
Спіс літаратуры:
[1] Feirstein, Б., "сапраўдныя мужчыны не ядуць киче", Нью-Ёрк, Pocket Books, 1982.
[2] Вірт Н., "Алгарытмы + Структуры дадзеных = Праграмы", Prentice Hall, 1976.
[3] Ilson Р., "Апошнія даследаванні ў апрацоўка тэксту", IEEE Trans. Праф Commun., Vol. PC-23, № 4, 4 снежня 1980 года.
[4] Finseth, К., "Тэорыя і практыка Тэкставыя рэдактары - або - Павараная кніга для Emacs", Б. С. Дысертацыя, MIT/LCS/TM-165, Масачусэцкі тэхналягічны інстытут, Май 1980 года.
[5] Вайнберга, Г., "Псіхалогія праграмавання", Нью-Ёрк, М.: Свет Рейнгольд, 1971, p. 110.
[6] Дейкстра Э., "Аб мове ЗЯЛЁНЫ прадстаўлены МО", SIGPLAN заўважае, Vol. 3, № 10, кастрычнік 1978 года.
[7] Роза, Франк, "Радасць Узлом", Навука 82, Vol. 3, № 9, лістапад 1982 г., стар 58-66.
[8] "Хакер даклады", "Psychology Today, жнівень 1980 года.
ACKNOWLEGEMENT
---------------------------------
Я хацеў бы падзякаваць Яна Я., Дэйв С., Рыч Г. Я. Багатыя за дапамогу ў характарызуюць сапраўдным праграмістам, Хізэр Б. для ілюстрацыі, Кэці E. за цярпенне, з ім, і ATD avsdS!: знак для пачатковага натхнення.