В последнее время, как легко заметить, на прилагаемых к компьютерным журналам дисках совершенно не встречаются средства разработки. Нет их даже и на продаваемых во многих киосках пиратских дисках, а если есть, то обычно довольно старые версии. Эти диски заполнены всевозможными готовыми программами, разного рода игрушками, в лучшем случае редакторами для графических, аудио- и видеоматериалов. На самом деле это чёткий показатель изменения ориентиров пользователей в компьютерном мире, который стал частью мира потребления, а не созидания. Баланс сил пишущих и пользующихся явно нарушился.

Можно возразить: ну и что, читателей всегда было больше, чем писателей! Так-то оно так, только вот просто писать каждого из нас в школе худо-бедно научили, а писать программы учат далеко не всех, да и по большей части плохо. В то же время именно это, а не умение нажать интуитивно понятную кнопку и есть неотъемлемая составляющая компьютерной грамотности, и существует множество резонов делать некоторые вещи самому, а не скачивать сомнительные утилиты из Сети.

Резон первый: полного счастья не бывает. Очень редко вы получаете хорошую программу, удовлетворяющую всем вашим требованиям. Обычно по ходу дела возникают новые пожелания, которые разработчиком не предусмотрены.

Резон второй: не нужно ничего делать руками. Этот старый принцип работы означает, что если что-то делается на компьютере, не говоря уже о рутинных операциях, то это должно быть сразу автоматизировано, написана соответствующая программа. И кто же это сделает за вас? Здесь А. С. Пушкин один за всех не управится.

Резон третий: безопасность. В царском корпусе жандармов вновь принятым говорили, что доверять можно трём людям: Господу Богу, Царю-батюшке и себе. И хотя добавляли, что последнему не обязательно, но понятно, что к написанному для себя коду доверия больше, чем любому другому.

Резон четвёртый: независимость. Здесь, надеюсь, всё понятно.

Резон пятый и главный: искусство быть богом. Высшее образование позволяет человеку овладеть одним из мощных методов научного познания мира — анализом. Однако это ещё далеко не вершина. Разделение целого на части сопровождается потерей свойств, появляющихся в соединении этих частей, поскольку сумма целого за счёт синергетики всегда значительно больше суммы составляющих целое частей. Поэтому вершина интеллектуальной деятельности — это овладение методом, который называется синтез. Методом, который проявляется в планировании, проектировании, конструировании и программировании. Причём последнее сейчас наиболее доступно для самых широких масс. Поскольку только в программировании можно почти сразу увидеть результат, программист становится творцом, который учится создавать свои миры, свои парадигмы. В этом смысле, я не оговорился, программирование – это искусство быть богом.

Препятствие я вижу отчасти в известном засилье объектно-ориентированных языков (ООЯ) программирования высокого уровня (ЯВУ). На самом деле их трескучая фразеология часто только затуманивает самые простые вещи. Так, если обычному Бейсику я мог научить студентов за две лекции, то чтобы научить ООЯ, требуется не менее десяти, поскольку необходимо рассказать о самом объектно-ориентированном программировании (ООП) и его свойствах. Да и запись предложений любого ООЯ стала непомерно перегружена лишними словами. Например, в Java, чтобы напечатать строку текста, я теперь должен записать:
System.out.println("текст");

говоря таким образом, что метод println принадлежит встроенному классу System. В любом процедурном языке встроенные функции заведомо известны компилятору и достаточно написать println("текст").

Аналогично в ООП и с объявлением public, которое полностью аналогично extern в процедурных ЯВУ, а все остальные функции в процедурных ЯВУ — private по умолчанию. И нет необходимости в совершенно идиотской писанине. Для примера посмотрите, как объявляется в Java обычная функция main. Это просто шаманские заклинания!

class {static void main (String args[]); …}

static – говорит о том, что не создаётся экземпляр класса :); void – что функция не возвращает значений (наследие языка Си), а особенно раздражает, когда объявление String args[] в Java трактуют как массив экземпляров класса String, вместо того чтобы, не навешивая ОО-лапшу, сказать, что это обычный строковый массив. А что эта объектная ориентированность сделала с Фортраном — на язык стало просто страшно смотреть! Я совсем не против объектно-ориентированного программирования, но только не надо напускать вокруг этого завесу словесного тумана, которым жрецы того или иного ремесла отгораживают его от непосвященных. Непомерное насаждение ООП очень похоже на бюрократизацию программирования – правил поведения в нём становится всё больше, сами они всё запутаннее, а решение в итоге часто компонуется из самых разных средств, но программы надёжнее не становятся – вместо одного вида появляются всё новые классы ошибок. Вот и слышишь постоянно сетования (особенно от чиновников) по поводу того, как трудно написать операционную систему или СУБД и сколько народу нужно в таких проектх задействовать. Да вовсе не трудно, сами писали когда-то, только для этого надо воспитывать писателей, а не читателей.