Best of #02

Еще раз о настоящих программистах - Каким надо быть высокомерным идиотом для того, чтобы изобрести обучающий язык таким, как Паскаль.

<b>Еще раз о настоящих программистах</b> - Каким надо быть высокомерным идиотом для того, чтобы
изобрести обучающий язык таким, как Паскаль.
		      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



Другие статьи номера:

Еще раз о настоящих программистах - Каким надо быть высокомерным идиотом для того, чтобы изобрести обучающий язык таким, как Паскаль.


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
MY CITY - ЗАРEКА: Рaён oчeнь бoльшoй и стaрый...
Статья - 2035.
Ликбез - Ассемблер взгляд издалека: Что такое стек. Определение области стека.
ASCII графика - Как просматривать ASCII? Как научиться ASCII. Существуют ли вспомогательные программы для ASCII.
Switch 3.5' - Как юзать 3.5 привод после его подключения.

В этот день...   25 апреля