Добро пожаловать, Гость. Пожалуйста авторизуйтесь здесь.
FGHIGate на GaNJa NeTWoRK ST@Ti0N - Просмотр сообщения в эхоконференции RU.LINUX
Введите FGHI ссылку:


Присутствуют сообщения из эхоконференции RU.LINUX с датами от 24 Jan 02 06:01:34 до 12 May 24 13:25:46, всего сообщений: 8286
Ответить на сообщение К списку сообщений Предыдущее сообщение Следующее сообщение
= Сообщение: 7024 из 8286 ========================================= RU.LINUX =
От   : Alexandr S. Agranovsky           2:5020/400         02 Jan 03 00:39:26
Кому : Vladimir Bormotov                                   02 Jan 03 00:39:26
Тема : Re: Re: <none>
FGHI : area://RU.LINUX?msgid=udmnet.ru+310b59cb
На   : area://RU.LINUX?msgid=vb.dn.ua+ec2e664e
= Кодировка сообщения определена как: IBM866 =================================
==============================================================================
From: "Alexandr S. Agranovsky" <llb@udmnet.ru>



  Hi, Vladimir Bormotov
VB>  PY>  У меня есть знания в области С++, но просто яникогда не писал проги в
VB>  PY>  Линукс использую оконный интерфейс...

VB>  Знания C++ никому не мешали.   Hо, из факта наличия знаний С++ не следует
VB>  что их нужно применять всегда.  Для написания оконного интерфейса в *nix
VB>  знания C++ нужны чуть ли не в последнюю очередь.
 
Мда...   Согласен.   Я   нижецитируемую   статьу  (автор  не  я)
приберегал,  не  хотел  без  нужды постить, но, похоже, наступил
такой   момент.   Считайте   его  аргументом  против  бездумного
применения С++

=======cut
ОБЪЕКТHО-ОРИЕHТИРОВАHHЫЙ СТИЛЬ "В ЖИЗHИ"
Мне  приходилось довольно много контактировать с программистами,
в  основном  -  разработчиками  прикладных программ. Большинство
этих вполне толковых и умных людей пишут на С++. Мне не повезло:
я  ни  разу не видел программ, написанных на этом модном языке с
интенсивными   применением  его  инструментария  (как  например,
глубокое    наследование   классов   и   использование   private
элементов), которые превосходили бы свои аналоги на допотопном С
хотя бы по одному из следующих критериев :

Читаемость и понятность кода
Величина исполняемого модуля
Быстродействие.

Hо вот обратных примеров более чем достаточно. В разрабатываемой
нами  довольно  сложной машине один из сигналов датчика оказался
довольно  зашумлённым и содержащим резкие выбросы. Поскольку вся
обработка  этого  сигнала  и  использование  её результатов были
реализованы в программе на С++, решение проблемы было достаточно
тривиальным.  Я  написал  простенькую программу на С, включающую
медианный  фильтр  и  "скользящее  среднее" и выбрал необходимые
значения  пары параметров. Всё выглядело довольно скромно: длина
обрабатываемого  массива  не  превышала  2  тысяч  чисел,  а оба
фильтра  надо  было  применять  по скользящей последовательности
7-13  элементов.  Вся  программа  содержала  строк  30-40      и
выполнялась за несколько миллисекунд на процессоре 486 - 66 МГц.
Так  что  не  думая худого, я приготовил описание программы (оно
потребовало  уже  нескольких  страниц) и отдал программистам для
кодировки.

То,  что  случилось  потом, я бы не смог себе представить даже в
кошмарном  сне.  Через  пару  недель  работы  первая версия была
готова, и мне предложили проверить, всё ли в порядке. Я запустил
её  с  одним  из файлов данных, на котором отрабатывал алгоритм.
Всего  лишь  за  полсекунды  (Пентиум - 166МГц) программа выдала
какой-то  случайный  (как мне казалось) набор чисел. Мои попытки
убедить  программистов, что что-то не в порядке, привели к тому,
что  мне  было предложено самому найти ошибку. Когда я глянул на
программу,  то  понял, почему им так трудно. Во-первых, это была
распечатка   страниц   на   семь.   Во-вторых,  никаких  простых
одномерных  массивов  не  было  - они были заменены коллекциями,
услужливо   поставляемыми   какой-то   стандартной   библиотекой
классов.  Единственная  ошибка была в том, что коллекции не были
отсортированы  по  времени  поступления реальных данных (то есть
естественный  порядок входных данных был утерян в самом начале).
Ещё  полчаса  заняло  исправление ошибок - и всё было в порядке.
Всё считалось правильно - всего лишь за секунду на серию данных.
Много  позже  (тогда я уже работал в другом проекте) этот этап -
обработка данных - стал лимитировать быстродействие робота (т.е.
механическая   подвижка   образца  и  оптические  измерения  шли
быстрее,  чем  простой  счёт). Как и следовало ожидать, написать
более  быструю  программу  никто  не  предложил  -  было  решено
поставить более сильный процессор и добавить память.

Примерно  через год я держал в руках резюме парня, претендующего
занять   вакантное   место   программиста   на  С++.  Он  прошёл
основательный  курс  обучения  этому  языку  (примерно полгода),
включавший  несколько проектов. Один из них назывался "программа
решения  квадратного  уравнения".  Я  не  поверил своим глазам и
связался  с  претендентом,  чтобы узнать подробности. Оказалось,
что  проект  включал  четыре  класса  с  наследованием.  Судя по
энтузиазму,  с  которым  парень  описывал  проект, можно было не
сомневаться:  когда  ему  потребуется  вставить алгоритм решения
квадратного   уравнения,   он   будет  использовать  только  эту
разработку.  После  этого  мне  стали  понятны причины изысков с
сортировками коллекций в предыдущем эпизоде.
=======cut


- ---
Alexandr S. Agranovsky llb@udmnet.ru


--- ifmail v.2.15dev5
* Origin: LLB, LLC (2:5020/400)

К главной странице гейта
Powered by NoSFeRaTU`s FGHIGate
Открытие страницы: 0.059283 секунды