Поделиться

суббота, 3 июля 2010 г.

Жизненный путь: Паскаль

С написанием программ я завязал в 2004 году. Последней программой стала разработанная в качестве расчетной для кандидатской диссертации. На время завязал или навсегда - не знаю, но, учитывая, что первую программу на Sinclair ZX Spectrum я написал в 7 лет в 1985 году (я знаю, что много раз об этом говорил, но еще неоднократно, наверное, об этом вспомню - горжусь), можно сказать, что у меня к 2004 году было 19 лет практики - не стыдно уже и переключиться на что-нибудь другое.

Давно хотел подвести некую черту, посчитать/вспомнить сколько и чего я создал за все эти годы. Начать решил с Паскаля. С этим языком я познакомился в 1995 году на первом курсе института, в который пришел с отличным знанием 8-ми диалектов Бейсика (gw, Q, Spectrum, Yamaha, БК - не помню, правда, какой именно диалект и т.д.), подозревая, что существуют и другие языки, но не имея опыта работы с ними.

Собственно, все лабораторные работы на первом курсе писались именно на Паскале (Borland Turbo Pascal 7.0). Объектно-ориентированным программированием на нем в моем исполнении разве что только "пахло" - было несколько небольших программ-примеров. Беготни и восторгов по поводу Delphi я не разделял. В свободное время тоже кое-что писалось (я разрывался между тягой к программированию и фанатизмом по установке и сносу Windows 95). По инерции на втором курсе было написано еще несколько программ на Паскале, после чего произошла смена курса - в жизнь пришли C/C++ (к сожалению, сразу вместе) и не желали покидать ее вплоть до 2004 года, смеясь в мозгу над всеми новомодными время от времени появлявшимися новыми языками.

Поскольку в общей сумме на Паскале было написано не так уж много, я взял за труд пересчитать все свои LOC (англ. Lines Of Code - строки кода) во всех файлах, которые смог найти. С ужасом предвижу, что будет, когда я дойду до C++ - там тысячи файлов, разбросанных по сотням каталогов за период в 10 лет. С Паскалем все было проще: программы в основном по одному файлу, под DOS, без излишеств в интерфейсах (зачастую интерфейсом служит командная строка), минимум адресной арифметики, чистые реализации придуманных или позаимствованных алгоритмов в разных комбинациях плюс обработка данных. Жизнь была куда проще, как мне кажется.

Именно по причине таких ясных и относительно простых взаимоотношений с Паскалем я до сих пор считаю его одним из лучших инструментов для обучения будущих программистов. Теоретически те же чистые, понятные лабораторки, предназначенные для формирования представления об алгоритмах и программах вообще, можно давать и на других языках, например, тех же C/C++. Но это теоретически, а на практике в этих языках любое взаимодействие даже с такими базовыми конструкциями, как строки и массивы, требует априорных знаний ("пререквизита") относительно архитектуры компьютера и адресной арифметики, что мне не кажется правильным - человека сначала надо увлечь, а пугать и мучить можно уже потом, когда подсядет. И, вдобавок, Паскаль в качестве первого языка программирования расширяет кругозор - от C/C++ программисту все равно никуда не деться, рано или поздно ему придется их изучить, но нехорошо, если окромя них он ничего в жизни не видел. Есть, конечно, и свои минусы в описанной мною практике, но сейчас не об этом.

При подсчете строк я, естественно, выкидывал пустые, а вот комментарии учитывал - не зря же я их писал в назидание себе и потомкам! Еще, думаю, стоит упомянуть, что в качестве стиля расстановки скобок и отступов я всегда использовал так называемый "расширенный стиль" или "стиль Олмана" (конечно, только с тех пор, как узнал, что такое отступы, что такое стиль в кодировании, выработал хоть какой-то свой и решил его придерживаться). Это важно, потому что стиль Олмана предполагает, например, размещение каждого оператора (begin/end) или операторной скобки в отдельной строке, что, естественно, увеличивает общее число строк.

Итак, в общей сложности я насчитал 21 366 строк кода на Паскале. Из них:
  • 11 778 строк - это, собственно, лабораторные работы по программированию (I курс, осень 1995 - июнь 1996 гг.);
  • 5 709 строк - это лабораторные работы по другим дисциплинам (периодически на протяжении обучения с 1995 по 2000 я решал, что все-таки стоит использовать Паскаль для программ, где не требуется интерфейс, которые по характеру являются чисто расчетными) например по таким, как:
    • "Физика" - работа по визуализации действия законов Брюстера и Маллюса;
    • "Формальные языки и формальные грамматики" - вычисление лишних правил в контекстно-чувствительных грамматиках;
    • "Анализ алгоритмов" - задача о восьми ферзях;
    • "Технология разработки ПО" - сейчас уже не могу ни вспомнить, ни понять, что именно это было, так странно оно выглядит;
    • "Оптимальное управление" - программа численного решения однопродуктовой задачи и т.д.;
  • оставшиеся 3 879 строк - это то что писалось для души, например:
    • шифровка и архивация файлов с применением бинарного дерева по методу Хаффмана;
    • всякая мелочь с применением Turbo Vision (хотя любая "мелочь" с применением Turbo Vision превращается в большую программу) - кто не знает, есть такая библиотека оконных классов для DOS (и в консольных окнах отлично работает), собственно, на ее основе реализованы пользовательские интерфейсы самого Turbo Pascal 7.0, других продуктов Borland и не только Borland той эпохи;
    • фракталы (посмотрел сейчас на них - ну и жуть);
    • модули общего назначения для отображения меню;
    • несколько программ для Windows на чистом Паскале и т.д.
Интересно копаться в старых программах - рекомендую. Иногда находятся весьма любопытные творения. Я, например, уже который год восхищаюсь своим опусом под названием chtoto.pas. Году так в 2001, если не изменяет память, я уже пытался вспомнить/понять, что же эта программа рисует. Основных версий было 2: то ли она визуализирует какие-то данные, то ли пытается вращать куб в странной проекции. Нужно сказать, что я писал ее на раннем жизненном этапе и, видимо, в расширенном сознании, потому что ни одного отступа в коде нет, ни одного комментария нет плюс программа объектно-ориентированная (по-моему, на Паскале она таковая чуть ли не единственная более-менее крупная, остальные так - "Hello world!"). Так вот тогда в 2001 я отчаялся, переименовал ее в chtoto.pas и забросил. C той поры я раз в год повторяю эту процедуру: открываю, смотрю, забрасываю. Традиция...

Комментариев нет:

Отправить комментарий