Best of #02 |
|
Еще раз о настоящих программистах - Каким надо быть высокомерным идиотом для того, чтобы изобрести обучающий язык таким, как Паскаль.
OLDMAN ПРЕДСТАВЛЯЕТ: ПРИЛОЖЕНИЕ К КОМПЬЮТЕРНОЙ ГАЗЕТЕ "ON-LINE" ──────────────────────────────────────────── ■ўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўў■ ▒░░░░║║║║║║░░░║║║║║║░░░║║║║║░░║║║║║║░░░░░░░░░║║║║║░░░║║║║║║░░░░▒ ▒░░░░║║░░░║║░░║║░░░░░░║║░░░░░░░░║║░░░░░░░░░░║║░░░║║░░║║░░░░░░░░▒ ▒░░░░║║║║║║░░░║║║║║░░░░║║║║║░░░░║║░░░░░░░░░░║║░░░║║░░║║║║║░░░░░▒ ▒░░░░║║░░░║║░░║║░░░░░░░░░░░║║░░░║║░░░░░░░░░░║║░░░║║░░║║░░░░░░░░▒ ▒░░░░║║║║║║░░░║║║║║║░░║║║║║║░░░░║║░░░░░░░░░░░║║║║║░░░║║░░░ N2 ░▒ ■ўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўў■ ┌────────────────────────────────────────────────────────────┐ │ ЕЩЕ РАЗ О НАСТОЯЩИХ ПРОГРАММИСТАХ │ └────────────────────────────────────────────────────────────┘ Каким надо быть высокомерным идиотом для того, чтобы изобрести обучающий язык таким, как Паскаль. Все ученики и последователи Клауса Вирта будут великолеп- но читать комментарии и понимать, что BEGIN значит НАЧАЛО, а END - КОНЕЦ. а большее потянуть они не смогут. Если уж кому-то в голову пришло, что программированию на- до учить на языках высокого уровня, то для этой цели можно ис- пользовать ФОРТ, в крайнем случае СИ (если не выделять в нем приемы структурного программирования). В этом случае, по край- ней мере, придется приложить мозговые усилия для решения той или иной задачи. Язык программирования, который своими сред- ствами не способен вывести из строя систему, не может счи- таться гибким и не должен считаться языком программирования вообще. На самом деле для воспитания хороших программистов необ- ходимо преподавать в качестве обучающего языка Ассемблер, при- чем не один, а несколько (естественно, с возможностью свобод- ного творчества на данном Ассемблере). Тогда будущий програм- мист столкнется с реальными условиями. Для того, чтобы отделить потенциальных программистов от сосунков, нужно на самой ранней стадии обучения посадить груп- пу за терминалы и посмотреть, чем каждый из них будет зани- маться. Сосунок будет исправно решать поставленную преподава- телем задачу, а потенциальный настоящий программист залезет в машину учителя, вытащит оттуда ТЕТРИС, за 3 минуты до конца занятия сворует программу у соседа и исправит в соответствии со своим заданием. Второго смело можно подпускать к программированию. Перво- го лучше отправить изучать Паскаль, и так, чтобы он занимался этим как можно дольше. Лучше всего - всю жизнь. Выделив будущих программистов, обучать их можно по разно- му. Наиболее эффективен следующий способ. Ученику выдается компьютер и некоторое количество прог- раммных средств, с которыми ему в дальнейшем придется рабо- тать. Описаний к этим программам либо не выдается совсем, ли- бо выдается минимальный набор. Если происходит обучение како- му-либо языку программирования, в качестве руководства жела- тельно использовать литературу на языке, заведомо незнакомом обучающемуся, либо произведения советских авторов. Когда будет замечено, что ученик работает с программой (языком программирования) довольно сносно, можно предложить ему для изучения исчерпывающие руководства. Они будут прочита- ны как захватывающий детектив. Затем, после небольшого перио- да переваривания полученных знаний, программист готов к актив- ной деятельности. Специалист, прошедший обучение подобным образом, как пра- вило, удивляет других "программистов" приемами программирова- ния. Не исключено, что вместо шестнадцатиричной системы счис- ления он будет использовать десятичную (если ему до прохожде- ния курса никто не объяснял, что программировать нужно в шес- тнадцатиричной системе). Программы, написанные таким специа- листом, будут совершенны в работе, но перед желающим их улуч- шить или узменить встанет практически неразрешимая задача (за исключением случаев, когда с этой задачей сталкивается такой же специалист), так как прочитать эти программы и понять их суть крайне тяжело, например, нелегко обычному программисту прочитать программу на Ассемблере, в которой все числа - деся- тичные. Программист, изучавший таким способом Ассемблер, наверня- ка знает коды всех мнемоник в восьмеричной, десятичной и шес- тнадцатиричной системе счисления и может писать программы ем- костью до нескольких килобайт непосредственно в машинном коде, вводя программу десятичными или шестнадцатиричными числами. Вообще говоря, программистов, подготовленных таким обра- зом, можно и должно называть хакерами. В слово хакер вложен отрицательный смысл (почему - объяс- ню ниже), но каждый из них гордо носит свое имя. Хакера не волнует сложность поставленной задачи, но зани- маться ею он будет только в том случае, если она ему интерес- на. Заставить хакера работать вне его интересов доступно лишь исключительно талантливым организаторам. Наиболее интересная область для хакера - это программы с защитами. Снятие защит - это одна из сложнейших задач, с кото- рой может столкнуться программист. Любому понятно, что ни од- ному сосунку, ратующему за структурное программирование, эта проблема не по силам, для этого необходим талант. В советских условиях хакер необходим по той простой при- чине, что пойти в магазин и купить дискету с пакетом P-CAD для IBM PC весьма затруднительно, поэтому приходится его воровать. Своровать программу без хакера невозможно, так как практичес- ки любая фирменная дискета или кассета защищена от копирования. Загнивающих предпринимателей слово хакер приводит в ужас, но я делаю различие между хакером и компьютерным пиратом (тер- мин SOFTWARE PIRACY вполне официален и является предметом пристального внимания ИТЕРПОЛА). е исключено, что хакер может заниматься распространением программ, с которых снял защиты, но это характеризует его как человека, но не как программиста. Еще больше отрицательных эмоций (в основном у тех, кто пользуется ворованными программами, т.е. у советских програм- мистов) вызывают хакеры, занимающиеся изготовлением разного рода вирусов. Надо заметить, что для хакера не менее интересны и зада- чи, обратные предыдущим, а именно, изобретение защит и написа- ние антивирусов (то-есть программ, выслеживающих и уничтожаю- щих вирусы), посему фирмы, производящие программный продукт, не гнушаются ничем, чтобы получить хакера себе в сотрудники. Вообще говоря, любая фирма, занимающаяся программными разра- ботками, развалится, если на нее не будет работать несколько хакеров. Теперь ряд штрихов, характеризующих хакера: - как уже говорилось, хакера трудно заставить работать, но ес- ли его заинтересовать, то результат почти всегда - шедевр; - хакеру тяжело что-либо начать, но уйдя в работу, он потерян для общества вплоть до завершения той или иной стадии; - при выборе программных средств для своей деятельности хакер часто удивляет других программистов. Как правило, это опре- деляется не тем, что программа умеет, а тем, как она написа- на (этот текст, например, набирается в текстовом редакторе, никоим образом не связанным с русским языком, но уж очень редактор хорош); - все, что хакер делает, он не считает работой, и если фирма платит ему деньги, то, вероятно, только для того, чтобы он иногда произносил фразу: "Я работаю на фирме ..."; - хакер часто смеется, когда читает литературу по программиро- ванию (особенно советскую); - лучшая литература для хакера - распечатка программы; - хакер не всегда знает язык программирования, с которым он в данный момент работает; - хакер способен объяснять по телефону способ, которым можно найти ячейку памяти, определяющую количество жизней в игре SABOTEUR, одновременно восстанавливая содержимое диска с полностью испорченной директорией, используя DISC DOCTOR фирмы Technology Research (программу, написанную либо пья- ным, либо сумасшедшим); - хакер предпочитает работать ночью, так как в это время су- ток закрыты пивные заведения, а телефон почти не звонит. Если он зазвонил, то это звонок другого хакера; - музыка может быть помехой во время чтения художественной ли- тературы, но не во время работы (работы?!); - как правило, критику хакер воспринимает без мордобития, всегда находит оправдание, но указанную ошибку исправляет (если ее не исправил другой хакер); - хакер может страдать тяжелой формой мании величия, но всег- да об этом предупреждает; - мыслительный процесс идет у хакера подсознательно. Это иног- да приводит к тому, что ложась с женщиной в постель, хакер вскакивает, осознав, что в пятисотой строке его программы стоит неправильное условие перехода на метку QWERTASDF (та- кая метка также в порядке вещей, так как хакеру не хватает энергии не только на написание комментариев, но и на приду- мывание удобочитаемых меток - гораздо проще провести кула- ком по клавиатуре). Внешний вид хакера может шокировать непривычного челове- ка. Советский программист обычно представляется слегка лысова- тым, с 8-килограммовой фортрановской распечаткой в коричневом портфеле и колодой перфокарт под мышкой. Хакер же может отпус- тить волосы до пояса, слушать тяжелый рок и носить в портфеле школьные учебники. Интереснее всего хакерам живется в Советском Союзе. Во-первых, они вольны в своих действиях, так как здесь хаке- ров в тюрьму не сажают и штрафам не подвергают; во-вторых, до- кументация на программу или язык программирования появляется у хакера уже после того, как он окончательно разобрался с инте- ресующим его вопросом (я, например, получил описание процессо- ра Z80 сразу, как только понял использование регистра I, то есть самое сложное, что в этом процессоре есть). Если же ха- кер решил изучить язык программирования и купил о нем книжку в киоске Союзпечать, это еще больше активизирует процесс интел- лектуальной деятельности. Я готов пожать руку даже программис- ту на Паскале, если он смог разобраться в книге "Начала прог- раммирования на языке Паскаль" (С.А. Абрамов, Е.В. Зима, Мос- ква <<Наука>>, 1987) до того, как научился писать комментарии и выделять двумя пробелами конструкцию REPEAT ... UNTIL. Он скорее всего хакер и Паскаль забросит довольно скоро. Поскольку сейчас в советских магазинах нельзя купить не только пакет P-CAD для IBM PC, но и колбасу, хакер часто начи- нает с того, что собственными силами собирает компьютер. Естественно, что это игрушка для дома и семьи с восьмиразряд- ным процессором и памятью в пределах 64К, но именно на таком аппарате хакер начинает воистину вытворять чудеса. Описать ощущения, вызываемые сообщением языка Си "Числа с плавающей запятой не поддерживаются" после 3-х минутной подгрузки биб- лиотеки stdio.h с магнитофона, невозможно, это надо прочуство- вать. Тем не менее, даже в таких условиях хакеру удается напи- сать самообучающуюся программу игры в дурака, не используя библиотеки вообще. Интересные ситуации возникают при встрече двух или более хакеров. и один структурный программист не поймет сути вопро- са, обсуждаемого хакерами, так как один хакер может изъяс- няться в шестнадцатиричной системе, другой - в десятичной, третий не изъясняться вообще, и все будут прекрасно понимать друг друга. Первый раз в своей жизни встретив другого хакера, я был немало удивлен тем, что меня понимали с полуслова и мне не приходилось все разжевывать и повторять по пять-шесть раз в размеренном темпе. Меня не переспрашивали, какую систему счис- ления я употребил в данный момент времени и задавали вопросы, на которые можно было дать ответ. Судя по удивлению в глазах моего коллеги, он, как и я, никогда прежде не сталкивался с другими хакерами. Беседы между хакерами приносят весьма ощутимую пользу, однако подпускать к одной ЭВМ двух хакеров одновременно недо- пустимо. К положительным результатам это не приведет, более того, может закончиться кровопролитием. При всем том, не ис- ключается, что разняв двух дерущихся хакеров и посадив их в разные комнаты, можно получить абсолютно идентичные программы. Хакер - человек спокойный, но и его можно вывести из се- бя вопросом "Какой командой процессора колобок ест черта?" или "Каким образом снять защиту от копирования с программы Infiltrator?". Работа хакера напоминает работу столяра, забивающего гвоздь одним ударом молотка. Хакер некоторое время ходит вок- руг машины (радиус хождения может составлять до нескольких ты- сяч километров), затем садится за клавиатуру и делает за один вечер то, на что было выделено 15 дней. Не надо думать, что четырнадцать дней, которые хакер потратил на хождение вокруг машины пропали даром: все это время хакер подсознательно обду- мывал поставленную задачу. Другое дело, была ли необходимость в этих раздумьях. Когда хакер заканчивает какую-либо работу, он твердо уве- рен: все, что он сделал - хлам, однако вслух это мнение не высказывает, так как заказчик всегда остается доволен. Хакер, конечно, расстроится, если случайно уничтожит шестимесячную работу, но глубоко в душе он будет рад тому, что, расставшись с хламом, он сможет решить задачу гораздо красивее. Однако... смотри начало абзаца. Н. Родионов 07.1990 P.S. Написать этот опус меня побудила статья "Настоящие прог- раммисты не используют Паскаль" в журнале "Datamation". Автор этой статьи - настоящий хакер, и мне не хотелось бы, чтобы "мое" сравнивали с "его", поскольку его уро- вень на несколько порядков выше. ────────────────────────────────────────────────────────────── Исходный текст предоставлен: BBS 454-6696;00:00/09:00 Стас @ sts.msk.ru Восстановлен после некорректной перекачки с IBM, сформа- тирован и отредактирован: BBS 164-1684;22:45/07:20 Алексей @ alex.msk.ru On: ГРАФИК (на BBS) Читалку пришил: MDM 496-8508;12:00/21:00 Дмитрий @ oldman.msk.ru
Другие статьи номера:
Еще раз о настоящих программистах - Каким надо быть высокомерным идиотом для того, чтобы изобрести обучающий язык таким, как Паскаль. |
Похожие статьи:
В этот день... 21 ноября