реклама на сайте
подробности

 
 
> Переделка проекта, Скорее риторический
SasaVitebsk
сообщение Oct 3 2007, 21:58
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Раньше на ASM работал. Два года назад перешёл на Си. Жутко жалею потерянного времени.
Анализируя причины почему раньше не переходил, пришёл к выводу что их две. Первая - костность. (Банальная лень осваивать новый пакет). Вторая - уверенность в том, что компилятор генерит код значительно хуже чем пишет человек. Причём эта уверенность у меня была непоколебимая. Я даже исследования не проводил и никого не расспрашивал. Я просто был уверен, что хороший компилятор создать нельзя. Эта уверенность у меня сохранилась даже на момент перехода на Си. Причина перехода на Си банальна. Я задолбался переносить те несколько проектов которые сопровождал и развивал на другие камни. Поэтому выбирал мультипроцессорный Си. Выбрал IAR. Был просто шокирован качеством герерируемого им кода. Если бы мне про это рассказали - не поверил бы. Теперь привык. Прошло два года. Сделал 4 маленьких проекта и один крупный (для меня). Крупный начинал с самого начала освоения Си. То есть прямо на нём учился писать. Теперь немного переосмысливаю свои подходы и свои заблуждения.

Очень заставила задуматься недавняя ветка со спором С vs C++. И особенно сильное впечатление произвела история zltigo об опыте написания оконного интерфейса на С++. В смысле уменьшения объёма результирующего кода. То есть до этого я рассматривал только аспект удобства/ прозрачностности/ целостности. То есть рассматривал только проектирование. Задумался над этим. Особенно в свете того, что я несколько ранее считал неоспоримым кодогенерацию в Си. Вижу действительно при использовании общих свойств и методов и при широком использовании наследования, действительно можно получить выигрыш. С учётом того, конечно, что в ручную, без серьёзного продумывания будет сложно так написать. А в С++ это получается как бы само собой. Точнее тебя заставляют таким образом строить программу.

Перечитал ещё раз, примеряя всё это на себя. в принципе всё это уже знаю, но как то не было желания на себя примерять. Можно и в С++ писать простым и понятным, а главное привычным процедурным языком. smile.gif


Дело в том, что этот мой большой проект, похоже прекрасно ложился на C++.
Кратко - так. Само устр-во исполняет команды (структуры). Команды поступают извне. Сам транспортный уровень развязан. То есть самому устр-ву до лампочки каким образом они поступают. RS485/I2C-EEPROM/MMC. Возможно будут и другие виды интерфейсов. Во всяком случае планирую какой-нибудь радио-интерфейс, возможно ethernet. Поступают они как из файла - последовательность байтов с байтстафингом. По метке начала команды - определяется команда. Команды имеют разные поля(параметры) и разную длину. В начале команды идут поля идентичные во всех командах. Для этого я имею мифическую несуществующую структуру и сначала прикладываю её. По ней узнаю имя команды её длину (соответственно) и некоторые другие общие поля. После этого, я уже накладываю реальную структуру и работаю с реальными полями структуры. Разные команды имеют общие поля. Но разный их набор. Ну и так далее. Короче сейчас мне очевидно, что вся эта прога неплохо бы легла на объекты и С++ соответственно.

Честно говоря - всё вылизано и прекрасно работает. Возвращаться к этому не очень хочется. Но проект развивается и будет развиваться впредь. Будет переносится на другие камни и будет другие возможности иметь.


И вот теперь вопрос. Понимаю конечно, что за меня никто это решение не примет. Поэтому вопрос скорее риторический, но всё же. Стоит ли перетаскивать/перелопачивать проект? Кто как делал?

Может кто какую историю раскажет или своё мнение выскажет. Или поделится соображениями на этот счёт.

Скажу так. Вылизывал я детали и тонкости месяца четыре не меньше. Команды, да ещё параметры. То границы кое-где, то ещё что. То быстродействие отрабатывал. Но есть мне момент, который не очень нравится. А именно процесс выделения/освобождения памяти. Работа с кучей короче. Я её в камне упростил, а контроль делаю в компе. И то такой - совещательный. smile.gif
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 11:03
Рейтинг@Mail.ru


Страница сгенерированна за 0.01365 секунд с 7
ELECTRONIX ©2004-2016