Каким надо быть высокомерным идиотом для того, чтобы изобрести обучающий язык таким, как Паскаль. Все ученики и последователи Никлауса Вирта будут великолепно читать комментарии и понимать, что BEGIN
значит НАЧАЛО
, а END
- КОНЕЦ. На большее потянуть они не смогут.
Если уж кому-то в голову пришло, что программированию надо учить на языках высокого уровня, то для этой цели можно использовать ФОРТ, в крайнем случае СИ (если не выделять в нем приемы структурного программирования).
В этом случае,
по крайней мере, придется приложить мозговые усилия для решения той или иной задачи. Язык программирования, который своими средствами не способен вывести из строя систему, не может считаться гибким и не должен считаться языком программирования вообще.
На самом деле для воспитания хороших программистов необходимо преподавать в качестве обучающего языка Ассемблер, причем не один, а несколько (естественно, с возможностью свободного творчества на данном Ассемблере). Тогда будущ ий программист столкнется с реальными условиями.
Для того, чтобы отделить потенциальных программистов от сосунков, нужно на самой ранней стадии обучения посадить группу за терминалы и посмотреть, чем каждый из них будет заниматься.
Сосунок будет исправно решать поставленную преподавателем задачу, а потенциальный настоящий программист залезет в машину учителя, вытащит оттуда ТЕТРИС, за 3 минуты до конца занятия сворует программу у соседа и исправит в соответствии с
о своим заданием.
Второго смело можно подпускать к программированию.
Первого лучше отправить изучать Паскаль, и так, чтобы он занимался этим как можно дольше. Лучше всего - всю жизнь.
Выделив будущих программистов, обучать их можно по разному.
Наиболее эффективен следующий способ.
Ученику выдается компьютер и некоторое количество программных средств, с которыми ему в дальнейшем придется работать. Описаний к этим программам либо не выдается совсем, либо выдается минимальный набор. Если происходит обучение какому-либо языку программ ирования, в качестве руководства желательно использовать литературу на языке, заведомо незнакомом обучающемуся, либо произведения советских авторов.
Когда будет замечено, что ученик работает с программой (языком программирования) довольно сносно, можно предложить ему для изучения исчерпывающие руководства. Они будут прочитаны как захватывающий детектив. Затем, после небольшого пери ода переваривания полученных знаний, программист готов к активной деятельности.
Специалист, прошедший обучение подобным образом, как правило, удивляет других "программистов" приемами программирования. Не исключено, что вместо шестнадцатиричной системы исчисления он будет использовать десятичную (если ему до прохождения курса никто не объяснял, что программировать нужно в шестнадцатиричной системе). Программы, написанные таким специалистом, будут совершенны в работе, но перед желающим их улучшить или узменить встанет практически неразрешимая задача (за и сключением случаев, когда с этой задачей сталкивается такой же специалист), так как прочитать эти программы и понять их суть крайне тяжело, например, нелегко обычному программисту прочитать программу на Ассемблере, в которой все числа - десятичные.
Программист, изучавший таким способом Ассемблер, наверняка знает коды всех мнемоник в восьмеричной, десятичной и шестнадцатиричной системе счисления и может писать программы емкостью до нескольких килобайт непосредственно в машинном ко де, вводя программу десятичными или шестнадцатиричными числами.
Вообще говоря, программистов, подготовленных таким образом, можно и должно называть хакерами.
В слово хакер вложен отрицательный смысл (почему - объясню ниже), но каждый из них гордо носит свое имя.
Хакера не волнует сложность поставленной задачи, но заниматься ею он будет только в том случае, если она ему интересна. Заставить хакера работать вне его интересов доступно лишь исключительно талантливым организаторам.
Наиболее интересная область для хакера - это программы с защитами. Снятие защит - это одна из сложнейших задач, с которой может столкнуться программист. Любому понятно, что ни одному сосунку, ратующему за структурное программи рование, эта проблема не по силам, для этого необходим талант.
В советских условиях хакер необходим по той простой причине, что пойти в магазин и купить дискету с пакетом P-CAD для IBM PC весьма затруднительно, поэтому приходится его воровать. Своровать программу без хакера невозможно, так как пра ктически любая фирменная дискета или кассета защищена от копирования.
Загнивающих предпринимателей слово хакер приводит в ужас, но я делаю различие между хакером и компьютерным пиратом (термин SOFTWARE PIRACY вполне официален и является предметом пристального внимания ИНТЕРПОЛА). Не исключено, ч то хакер может заниматься распространением программ, с которых снял защиты, но это характеризует его как человека, но не как программиста. Еще больше отрицательных эмоций (в основном у тех, кто пользуется ворованными программами, т.е. у советских програм мистов) вызывают хакеры, занимающиеся изготовлением разного рода вирусов.
Надо заметить, что для хакера не менее интересны и задачи, обратные предыдущим, а именно, изобретение защит и написание антивирусов (то-есть программ, выслеживающих и уничтожающих вирусы), посему фирмы, производящие программный продукт , не гнушаются ничем, чтобы получить хакера себе в сотрудники. Вообще говоря, любая фирма, занимающаяся программными разработками, развалится, если на нее не будет работать несколько хакеров.
Теперь ряд штрихов, характеризующих хакера:
Внешний вид хакера может шокировать непривычного человека. Советский программист обычно представляется слегка лысоватым, с 8-килограммовой фортрановской распечаткой в коричневом портфеле и колодой перфокарт под мышкой. Хакер же может отпустить волосы до пояса, слушать тяжелый рок и носить в портфеле школьные учебники.
Интереснее всего хакерам живется в Советском Союзе.
Во-первых, они вольны в своих действиях, так как здесь хакеров в тюрьму не сажают и штрафам не подвергают;
во-вторых, документация на программу или язык программирования появляется у хакера уже после того, как он окончательно разобрался с интересующим его вопросом (я, например, получил описание процессора Z80 сразу, как только понял использование регистра I,
то есть самое сложное, что в этом процессоре есть).
Если же хакер решил изучить язык программирования и купил о нем книжку в киоске Союзпечать, это еще больше активизирует процесс интеллектуальной деятельности. Я готов пожать руку даже программисту на Паскале, если он смог разобраться в книге "Начала
программирования на языке Паскаль" (С.А. Абрамов, Е.В. Зима, Москва, Наука, 1987) до того, как научился писать комментарии и выделять двумя пробелами конструкцию REPEAT ... UNTIL. Он скорее всего хакер и Паскаль забросит довольно скоро.
Поскольку сейчас в советских магазинах нельзя купить не только пакет P-CAD для IBM PC, но и колбасу, хакер часто начинает с того, что собственными силами собирает компьютер. Естественно, что это игрушка для дома и семьи с восьмиразрядн ым процессором и памятью в пределах 64К, но именно на таком аппарате хакер начинает воистину вытворять чудеса. Описать ощущения, вызываемые сообщением языка Си "Числа с плавающей запятой не поддерживаются" после 3-х минутной подгрузки библиотек и stdio.h с магнитофона, невозможно, это надо прочуствовать. Тем не менее, даже в таких условиях хакеру удается написать самообучающуюся программу игры в дурака, не используя библиотеки вообще.
Интересные ситуации возникают при встрече двух или более хакеров. Ни один структурный программист не поймет сути вопроса, обсуждаемого хакерами, так как один хакер может изъясняться в шестнадцатиричной системе, другой - в десятичной, т ретий не изъясняться вообще, и все будут прекрасно понимать друг друга.
Первый раз в своей жизни встретив другого хакера, я был немало удивлен тем, что меня понимали с полуслова и мне не приходилось все разжевывать и повторять по пять-шесть раз в размеренном темпе. Меня не переспрашивали, какую систему счи сления я употребил в данный момент времени и задавали вопросы, на которые можно было дать ответ. Судя по удивлению в глазах моего коллеги, он, как и я, никогда прежде не сталкивался с другими хакерами.
Беседы между хакерами приносят весьма ощутимую пользу, однако подпускать к одной ЭВМ двух хакеров одновременно недопустимо. К положительным результатам это не приведет, более того, может закончиться кровопролитием. При всем том, не иск лючается, что разняв двух дерущихся хакеров и посадив их в разные комнаты, можно получить абсолютно идентичные программы.
Хакер - человек спокойный, но и его можно вывести из себя вопросом "Какой командой процессора колобок ест черта?" или "Каким образом снять защиту от копирования с программы Infiltrator?".
Работа хакера напоминает работу столяра, забивающего гвоздь одним ударом молотка. Хакер некоторое время ходит вокруг машины (радиус хождения может составлять до нескольких тысяч километров), затем садится за клавиатуру и делает за один вечер то, на что было выделено 15 дней. Не надо думать, что четырнадцать дней, которые хакер потратил на хождение вокруг машины пропали даром: все это время хакер подсознательно обдумывал поставленную задачу. Другое дело, была ли необходимость в этих ра здумьях.
Когда хакер заканчивает какую-либо работу, он твердо уверен: все, что он сделал - хлам, однако вслух это мнение не высказывает, так как заказчик всегда остается доволен. Хакер, конечно, расстроится, если случайно уничтожит шестимесячну ю работу, но глубоко в душе он будет рад тому, что, расставшись с хламом, он сможет решить задачу гораздо красивее. Однако... смотри начало абзаца.
Н. Родионов 07.90
P.S. Написать этот опус меня побудила статья "Настоящие программисты не используют Паскаль" в журнале "Datamation".
Автор этой статьи - настоящий хакер, и мне не хотелось бы, чтобы "мое" сравнивали с "его", поскольку его уровень на несколько порядков выше.
Last Modified