Сегодня 23 февраля - первый выпуск
рассылки "Программирование программных систем".Данную дату гораздо проще запомнить,
так как она бывает только один раз в год. ;-)
Пользуясь случаем, хочу поздравить мужскую часть подписчиков с днем Защитника
Отечества и пожелать им усиленной борьбы со своим Я и ОНА (жизнь, а вы что подумали).
Еще хочется поздравить и женскую половину подписчиков (к моему сожалению их гораздо
меньше половины), без которых вряд ли существовал бы мужской род
(да и женский тоже) ;-)
Я получил много писем, в которых благодарите меня за столь полезную рассылку
. Спасибо. Только вот я думаю, если все 1700 с хвостиком подписчиков напишут мне
письма... А впрочем: сколько людей - столько и мнений. Работать, так работать.
Нулевой выпуск, вернее письма, присланные вами, помогли мне сделать несколько
важных выводов:
1. Среди моих подписчиков очень много тезок, то есть Сергеев. ;-) Если воспользоваться
кармальной теорией и влиянием имени человека на... Ой ! Пора прекращать такие умонастроения.
;-)
2. Теперь о серьезном. Более половины подписчиков выбрали эту рассылку в качестве
средства для обучения, что само по себе очень приятно и похвально. Люди, понимающие
что такое технология программирования, наверняка (и я это знаю!) не отвечали на простой
вопрос, заданный мной для теста): Стоит ли включить в рассылку практические вопросы,
связанные с конкретными языками программирования. . Люди мало знакомые с CASE средствами
отвечали, что да. Некоторые хотели C++, некоторые Java
. Я думаю через несколько выпусков вы поймете, почему
данный вопрос не существенен.
3. Почти все, приславшие мне свои письма, подтвердили мою позицию в отношении
рассылки. В основном (!) каждая рассылка будет состоять из двух разделов: теория,
излагаемая систематически, (возможны и отклонения, связанные с вашими запросами)
и ответы на ваши вопросы.
4. Нетрудно было предсказать, что основную массу подписчиков интересуют фактически
CASE средства.
В связи с тем, что теорию всегда желательно подкреплять практикой, у меня к вам
ОГРОМНАЯ просьба. Присылайте свои практические опыты разработки программ, применения
CASE средств, использования новых технологий программирования в альтернативных областях
и т.п. Не плохо было бы, если вы будете присылать рекомендации, советы, ваш опыт
по использованию конкретных CASE средств (BPWin, ErWin, CASE Аналитик, Oracle, Designer/
CPN, Easy CASE, SilverRun, Rational Rose и др.).Я буду очень рад опубликовать их,
особенно если они будут с моей точки зрения затрагивать теоретические аспекты. Все
ваши копирайты будут сохранены.
Присылайте свои вопросы, мы вместе с подписчиками
попытаемся ответить на них.
Наш опыт ограничен, но мы это
наверстаем ! // придумал я ;-)
Извините за долгое вступление, просто было что сказать. Надеюсь, вы поддержите
эту рассылку, сообщите о ней своим знакомым, родственникам, друзьям, коллегам
Начну, собственно, сегодняшнюю тему с письма:
Сергей, прочитав 0-ю рассылку я вспомнил лекцию о построении систем, которую
читали нам на 5-м курсе ЛЭТИ(Ленинградский электротехнический). Лектор совершенно
серьезным тоном зачитал: "Этапы построения сложных систем.
1. Эйфория.
2. Протрезвление.
3. Поиски виновных.
4. Наказание невиновных
5. Награждение непричастных."
И на этом закончил лекцию. Позднее, занимаясь разработками действительно сложных
систем, я осознал точность и справедливость того, что в студенчестве мы считали преподавательским
юмором.
В последнее время, особенно начиная
с 90-х годов, понятие программирования несколько размылось, теперь каждый человек,
более или менее владеющий различными средствами быстрой разработки приложений (Delphi,
C++ Builder, MS VC++, VB и т.п.) считает себя программистом. Появилась даже серия
замечательных книг, с интригующим названием для чайника . Конечно же это неплохо
внедрение искусства в массы, что было целью многих поколений программистов, которые
с ужасом вспоминают те мгновения, когда приходилось объяснять своему руководителю
почему работает программа и как заставить ее работать (особенно в НИИ), что такое
компьютер и пр.
Немного отвлекаясь от темы, скажем, что на Западе понятие программиста уже давно
разбилось на несколько категорий:
- аналитик (он же алгоритмизатор) - проектирование структуры программы, взаимодействий
между различными частями проекта и т.п.
- кодировщик - человек, реализующий поставленную задачу на определенном языке
программирования.
- тестер - тестирует программы.
В России же понятие программиста еще с давних времен приобрело более широкое понятие,
то есть включает все выше приведенные специальности. Поэтому невозможно считать программистом
человека, который пишет ТОЛЬКО код программы. Но, в принципе, аналитика можно считать
программистом, так как дело обстоит за малым: набор текста ! Как это ни странно,
мы приближаемся к западным меркам, что в действительности очень сильно огорчает своей
безысходностью...
Возвращаясь к первоначальной теме, можно сказать, что практически все основы программирования
(подходы, идеологии, методы и пр.) были заложены уже давно, еще в 70-е годы. То есть
на самом деле мы, используя новейшие системы для написания программ, так или иначе
сталкиваемся с проблемами, которые уже давно решены. Здесь нет место идеологии программирования
под Windows, Dos, OS/2, Unix и т.п.. Все охватывается общими принципами, позволяющим
писать программные системы.
У меня к вам небольшой вопрос. Какие разделы программирования вы хотели бы изучить
? Динамическое распределение памяти ? Алгоритмы сортировки и поиска ?
Если вы выбрали любой из этих или подобных им разделов, то вам, возможно, свойственен
недостаток крайнее пристрастие к ТЕХНИКЕ программирования, но не к ПРИНЦИПАМ и
ТЕХНОЛОГИЯМ программирования.
Принципиальные вопросы обычно не пользуются популярностью у программистов, так
как эти вопросы кажутся им слишком неопределенными и общими, а наши программисты
предпочитают тратить время на обсуждение более практических и полезных вещей.
Следует напомнить, что в основном программисты считают своим предназначением изобретение
новых умных алгоритмов, а не выполнение полезной работы.
Какими качествами обладает хороший программист ?
Ответ на этот вопрос очень многогранен. Я думаю, вы сами можете дать определение
хорошему программисту Но не кажется ли вам, что ваш ответ содержит очень много ваших
личных качеств ?
Возможен другой подход к данному определению: рассматривать программиста с точки
зрения его продвижения по карьерной лестнице. В данном случае разве скажется ваша
способность придумывать новые алгоритмы ? Боюсь, что нет.
На основе исследований Саксмана, Эриксона и Гранта, можно утверждать, что опытность
программиста ни в коей мере не сказывается на разрабатываемую им программу. Возможно,
код программы не очень эффективен, но он создан за необходимый промежуток времени
и программа выполняет поставленную задачу. Стоит ли здесь вопрос о эффективности
самого алгоритма ? (авторы провели исследования среди опытных и начинающих программистов,
поручив им решить две задачи принципиально разных направлений логическую и математическую).
Почему данные исследования привели к столь неожиданным результатам ?
Я не зря затронул эту тему: кто такой хороший программист ? Существует много аналогичных
тем: что такое хорошая программа, какое тестирование считать предпочтительным, какой
язык программирования лучше
Думаю и надеюсь, что двусторонняя связь в нашей рассылке приобретет массовый характер.
Так как все вопросы, которые я рассматриваю, имеют не один ответ. Поэтому я призываю
вас присылать ваши ответы, чем вы сделаете рассылку намного полезней и эффективней.
В данной рассылке я задаю вам следующие вопросы:
Кто такой хороший программист ?
Почему исследования Саксмана, Эриксона и Гранта показали такой результат ?
Что такое хорошая программа ?
Почему применение новых технологий вызвало на Западе цепную реакцию, а у нас
нет ?
Я думаю достаточно вопросов. Я жду от всех своих подписчиков реакции (особенно
их ответы). Можете ответить всего на один вопрос, можете на два-три Главное ваше
участие.
Еще раз замечу, что эти вопросы имеют субъективный ответ, то есть неоднозначный.
Пишите ! Ваши ответы я буду публиковать с общей точки зрения, то есть моей ;-).
Вопрос читателя:
К сожалению он мало относится к
тематике рассылки, но все же он пока единственный
При добавлении в форму ACCESS Маршрутизатора папок Microsoft он "ругается",
что "
не зарегистрирован
сервер OLE". Что я недопонимаю?
И как его можно подключить? .