Проблемы программирования Сети

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

Этот опус можно считать продолжением книги автора «Языки программирования: концепции и принципы». Факт, что эта книга не устарела и через 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