Проблемы программирования Сети
Рассмотрены
фундаментальные
проблемы современного
программирования.
Обсуждены
подходы к
решению этих
проблем.
Отобраны только
те подходы,
которые, по
мнению автора,
претендуют
на долгую
жизнь в
практическом
программировании.
Этот
опус можно
считать
продолжением
книги автора
«Языки
программирования:
концепции и
принципы».
Факт, что эта
книга не
устарела и
через 20 лет
после своего
написания, о
чём
свидетельcтвует
её
переиздание
в серии
«Классика программирования»,
вдохновил автора
продожить
линию, уделив
особое внимание
тем аспектам
программирования,
с которыми он
работает
последние 20+
лет в программной
индустрии.
Автор
стремится
представить
цельную систему
ориентиров в
области программирования
Сети, которая
призвана не
только
объяснять
существующие
особенности
программирования,
но и увидеть
перспективы
его развития.
Вместе
с тем автор
сознательно
стремится не
столько
утверждать,
сколько
стимулировать
дискуссии.
Написано
программистом
для
программистов
и студентов,
а также всех
интересующихся
сутью как
программирования,
так и Сети.
© Кауфман В.Ш.,
2010-2013
Предыдущая моя книга «Языки программирования: концепции и принципы» (ниже для краткости просто «ЯП») возникла совершенно естественно как итог курса лекций, которые я читал много лет в качестве профессора МГУ им. Ломоносова. В сущности, я был вынужден её написать, потому что устраивающего меня материала для обучения студентов фундаментальным принципам и концепциям языков программирования просто не существовало в природе.
Жизнь сложилась таким образом, что почти сразу же после сдачи моей книги в набор резко изменилась не только моя жизнь, но и жизнь всех бывших советстких людей. Я стал работать (и до сих пор работаю) в Финляндии. и не в университете, а в программной индустрии.
Долгие годы я был настолько перегружен текущими проблемами собственно программирования, что даже помыслить не мог об изготовлении чего-нибудь, кроме собственно программных изделий. Однако со временем меня всё активнее стали донимать мысли о том, что волею судьбы я обладаю богатством, которым грех не поделиться с программистским сообществом.
Дело в том, что свои личные проблемы программиста-практика я по привычке старался осмысливать на уровне абстракции и ясности, которые были бы достойны опытного исследователя и преподавателя. Смею надеяться, что если проблемы такого характера мучали и мучают меня, то они актуальны и для других профессионалов.
Стоит подчеркнуть: характер наших проблем таков, что сами они не исчезнут. Мы с завидным упрямством наступаем на одни и те же грабли, при самых благих намерениях продолжая затруднять жизнь как самим себе, так и нашим клиентам.
В силу многих причин я принял решение считать себя совершенно свободным от академических условностей по части, скажем, полноты ссылок или углублённого изучения всех затрагиваемых вопросов. Я достаточно хорошо осознаю как возможные дефекты, так и очевидные преимущества такого подхода, и потому совершенно сознательно позволю себе писать «как пишется» (пользуюсь случаем ещё раз поблагодарить академика Андрея Петровича Ершова, в своё время прочитавшего мою первую книгу и поддержавшего именно такой стиль моего письма).
Работающему в нашей области довольно очевидны многие недостатки современной программистской практики, о них думают и говорят, что называется, в кулуарах, однако чётко их сформулировать – отдельная очень непростая работа, а публично высказать по многим причинам представляется возможным далеко не всем. У меня сложились обстоятельства, когда на успех в формулировании вполне можно надеяться, а остальные ограничения отошли на задний план.
Поэтому в книге уделено немало места и таким сторонам современного программирования, которые автору представляются неприемлемыми со стратегических позиций.
Таким образом, читателю предлагается не столько монография или учебник, сколько эссе о программировании и Сети, временами скорее даже «свободный полёт мысли» на тему о работе и жизни, которое содержит
· постановку и обсуждение реальных проблем практического программирования
· ориентиры для постановки и решения таких проблем
· анализ реальных историй-примеров
· попытку отобрать только такие ориентиры, идеи, концепции и принципы, которые, с большой вероятностью, не устареют в обозримой перспективе
a. Конечно, риск неудачного отбора в нашей области особенно велик. С этой точки зрения особенно уязвимы истории-примеры, многие детали которых уж точно устареют быстро.
b. С другой стороны, автора не оставляет надежда, что уровень взаимопонимания с читателем окажется настолько высоким, чтобы даже относительно устаревшие детали не помешали увидеть то, что (к счастью или к сожалению) устареет ещё не скоро.
· Предисловие
o Начало начал
o Миссия программиста
o Проблема ответственности производителей программных услуг
o Проблема сложности в программировании
o Проблема душевного и физического здоровья
o Проблема адекватности (взаимопонимания)
o Проблема осторожности и привычнология
o Проблема программистских кадров
· Фундаментальные проблемы программирования
o Выделение тиражируемой услуги – сервис-проблема
o Развитие работающего комплекса услуг – проблема выживания
o Проблема систематизации выразительных средств
o Проблема: убогость языковой основы современной Сети
o Проблема: конфликт систематизации выразительных средств с открытостью Сети
· Проблемы сетевого программирования
o Проблема взаимодействия с коллективом исполнителей
o Проблема поиска
o Проблема адекватности (взаимопонимания)
o Проблема осторожности
o Проблема безопасности
o Проблема интеграции
o Проблема эффективности
· Проблемы программиста-практика
o Проблема безответственности производителей программных изделий
o Ужасающее качество диагностики в действующих программах
o На пути к интеллектуальной диагностике
o Катастрофическая «оптимизация»
o О пользе «привычнологической экспертизы»
o Непрофессиональное умолчание
o Сервис-проблема как ключевая практическая проблема программиста, желающего следовать важнейшему закону программирования – избегай дублирования
o Проблема выживания
o Проблема применения «продуктов сторонних производителей»
o Проблема мелочей
o Проблема «авось заработает»
· Подходы к решению проблем
· Горизонт планирования
· Доказательность
· Стандартизация
· Религиозность
· Рефакторинг
· Обратная связь
· Привычнология
· Культура открытого кода
· Сервисы вместо объектов
· Модели веб-сервисов
o ASMX
o WCF
· Комплекс разработчика вместо «системы программирования»
· Облачные технологии как шаг к мировому компьютеру
· Системы управления контентом (CMS)
· Сверхживучие системы
o
SHAMAN
o
NARA
Transcontinental Persistent Archive Prototype
o Бессмертие в Сети
· Выдающиеся программистские проекты
© Кауфман
В.Ш., 2010-2015