Коммик (stalinist) wrote,
Коммик
stalinist

Category:

Александр Степанов -- великий русский программист, или Наш человек в логове врага

Москвич 1950 г.р., выпускник мехмата МГУ. Уехал в США между 1976 и 1979 годами. Как уехал -- не знаю. Судя по фамилии, не так, как это делало тогда большинство наших бывших соотечественников.

Из статьи Standard Template Library в Wikipediи:

STL (Standard Template Library) была и является одним из самых существенных благ для программистов на C++: она дает программистам готовый к использованию набор классов, таких как контейнеры и ассоциированные массивы, которые могут быть использованы с любым встроенным или определенным программистом типом, поддерживающим некоторые элементарные операции вроде копирования и присвоения.

STL достигает своих результатов через использование templates (шаблонов). Этот подход -- очень мощный, предоставляющий полиморфизм на этапе компиляции, что часто более эффективно, чем традиционный полиморфизм на этапе выполнения программы. Современные компиляторы C++ настроены так, чтобы минимизировать любые издержки абстрагирования, возникающие из-за интенсивного использования STL.

C++ Standard Library определена международным стандартом ISO/IEC 14882.

Архитектура STL -- в значительной степени детище одного человека -- Александра Степанова.


Из интервью Степанова:

Вопрос: Я думаю, STL и Generic Programming отмечают определенный отход от общепринятого стиля программирования на C++, который я нахожу почти полностью выведенным из языка SmallTalk. Согласны?

Степанов: Да. STL не является объектно-ориентированным. Я думаю, объектно-ориентированность является почти такой же раздутой фальшивкой (hoax), как и теории искусственного интеллекта. Мне еще не попадался интересный кусок кода, который пришел бы от этих объектно-ориентированных людей.

... Я нахожу объектно-ориентированное программирование технически неосновательным. Оно пытается разложить мир на части в терминах интерфейсов, которые изменяются в пределах одного типа. Чтобы иметь дело с реальными проблемами, вам нужны многосортные алгебры -- семейства интерфейсов, которые простираются на многие типы.

Я нахожу объектно-ориентированное программирование философски нездоровым. Оно утверждает, что всё является объектом. Даже если это так, это не очень интересно: сказать, что всё является объектом -- значит, не сказать вообще ничего. Я нахожу объектно-ориентированное программирование неправильным методологически. Оно начинается с классов. Это как если бы математик начал с аксиом. Вы не начинаете с аксиом -- вы начинаете с доказательств. Только когда вы нашли кучу соотносящихся доказательств, вы предлагаете аксиомы. Вы заканчиваете аксиомами.

То же справедливо и в программировании: вы должны начать с интересных алгоритмов. Только когда вы хорошо их понимаете, вы можете предложить интерфейс, который позволит им работать.

Вопрос: Java -- это очень новый язык, но в нем до сих пор нет templates, что предотвращает использование Generic Programming. Всё должно быть классом. Что вы думаете о Java?

Степанов: Я потратил несколько месяцев, программируя на Java. Вопреки предсказаниям ее авторов, она не стала казаться мне значительнее по мере использования. Я не нашел никаких новых прозрений -- в первый раз в жизни программирование на новом языке не принесло мне никаких прозрений. Java сохраняет весь тот хлам, который я никогда не использую на C++ -- наследование, виртуальные функции -- объектно-ориентированное барахло -- и удалила вещи, которые я нахожу полезными. Она может быть успешной -- в конце концов, и MS DOS была успешной, -- и это может быть выгодно для всех ваших читателей изучать Java, но она не имеет интеллектуальной ценности напрочь.

Взгляните на их реализации хэш-таблиц. Взгляните на их сортирующие процедуры, которые приходят вместе с их "клёвой" сортирующей applet. Попробуйте использовать AWT. Лучший способ судить о языке -- посмотреть на код, написанный его поборниками. "Radix enim omnium malorum est cupiditas" ("Деньги -- корень всего зла") -- и Java представляет собой явный пример денежно-ориентированного программирования ( money oriented programming (MOP)). Как сказал мне главный пропагандист Java в компании "Silicon Graphics": "Alex, ты должен идти туда, где деньги." Но я лично не хочу идти туда, где деньги -- там обычно пахнет не очень хорошо.


Я всегда чувствовал, что американский программизм -- интеллектуальное убожество! И вот пришел русский человек и все без обиняков назвал своими именами! Правда, ему почему-то не дают работать...
Tags: computers
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic
  • 26 comments