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

 
 
> как писать на С в 2016 году
Jenya7
сообщение Jan 25 2016, 15:06
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



прочитал интересную статью. решил поделиться.
https://habrahabr.ru/company/inoventica/blog/275685/
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
sigmaN
сообщение Jan 31 2016, 12:56
Сообщение #2


I WANT TO BELIEVE
******

Группа: Свой
Сообщений: 2 617
Регистрация: 9-03-08
Пользователь №: 35 751



Цитата
Указатель на стуктуру более, чем достойный уровень абстракции и хорош, как минимум тем, что должен быть получен в процессе инициализации системы и будет иметь свое имя.
Номер-же порта эта не абстракция а муть бесфоменная - вызов какой-либо функции с номером порта '9' не говорит ни очем.
писать просто 9 это тоже не правильно даже с точки зрения ненавистного AlexandrY Фаулера. В программе не должно быть магических чисел, поэтому конствнта UART_9, определенная на все случаи жизни в том же хидере драйвера порта вполне бы подошла.
Конечно же и Фаулер и Совершенный Код, Макконнелла, тут тоже не в почете ибо они дескаать сделал карьеру на финансовых системах, а тут всё-же по большей части сидят представители "старой школы", привыкшие считать байты и такты порой даже тогда, когда этого делать не нужно. В то время как я в вышеупомянутых трудах не увидел вредных советов, способных ухудшить код и дизайн эмбеддед системы. Как раз с точностью до наоборот!

И абсолютно ясно, что в 2016году пора мыслить в категориях ООП и писать на С++. О чем кстати упоминалось в этой ветке уже.
И что C++ can be as efficient as C это уже не мечты и не легенды, тем кто в теме, тоже ясно.

Цитата
Но если используется номер порта, то добраться до любого эдемента стукруры можно только через пересчет номера порта в адрес этой же структкры.
А я говорю, что добираться до элемента структуры не надо вовсе, а работать с портом надо через интерфейс драйвера UART, который таки да, по номеру порта разберется с чем надо иметь дело и к какому регистру обратиться по запросу GetTXCompleteFlag(UART_9) и выдаст нужный результат. И за UART_9 может стоять хоть целый эзернет и удаленный на 1000км UART, хоть USB-UART переходник - не важно.
И таки никто не говорит, что сопоставление номера к регистру или вычисление адреса должно непременно происходить на этапе выполнения программы )

Так что учитывая, что внутренний формат хранения информации о порте и способ общения с ним скрыт за завесой драйвера и представлен для клиента лишь номером и интерфейсом драйвера - это отличный уровень абстракции. На столько отличный, что лучшего ничего до сих пор ничего и не придумано, как я понимаю. И уж точно получше захардкоденных в разных местах программы прямых обращений к полям структуры которая завтра может измениться.

Я вот исключительно из этих соображений оправдывал абстракцию API драйвера до номера порта. И таки да, я согласен, что если придется сопоставлять номер структуре в рантайме то это вносит некоторый оверхед и использовать регистры напрямую прям в коде это на много меньше лишних телодвижений. И что это меняет? Это отменяет необходимость профилирования и выявления узких мест чтобы вставить костыли ТОЛЬКО туда? НЕТ.

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

Когда-то я уже приводил тут одну замечательную статью о том, как можно эффективно реализовывать правильные с точки зрения и Фаулера и Макконнела вещи на 8ми битниках и без рантайм оверхеда. Очень советую ознакомиться. http://easyelectronics.ru/rabota-s-portami...erov-na-si.html
Пользуюсь лично и пока не видел лучшего решения поставленной задачи.
Считаю, что это и есть пример того, как нужно программировать в 2016г. Алсо с введением стандартов С++11 и 14 реализация этой библиотеки будет на много проще и компактнее.


--------------------
The truth is out there...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Jenya7   как писать на С в 2016 году   Jan 25 2016, 15:06
- - EvilWrecker   А где тут интересные моменты? Всегда считал данный...   Jan 25 2016, 15:25
|- - alexunder   Цитата(EvilWrecker @ Jan 25 2016, 16:25) ...   Jan 26 2016, 22:12
|- - TSerg   Цитата(alexunder @ Jan 27 2016, 01:12) но...   Jan 26 2016, 22:14
- - Эдди   Быдлохабра сейчас еще хуже стала, потому что интер...   Jan 25 2016, 15:35
- - AlexandrY   Цитата(Jenya7 @ Jan 25 2016, 17:06) прочи...   Jan 25 2016, 15:41
- - Jenya7   ну лично для меня много интересных моментов котор...   Jan 25 2016, 15:42
|- - zltigo   QUOTE (Jenya7 @ Jan 25 2016, 17:42) мелоч...   Jan 25 2016, 15:55
- - Эдди   Jenya7, не надо на этот бред внимания обращать, по...   Jan 25 2016, 15:53
- - EvilWrecker   ЦитатаБыдлохабра сейчас еще хуже стала, потому что...   Jan 25 2016, 15:54
- - Сергей Борщ   Вот если совсем коротко - в 2016 году надо писать ...   Jan 25 2016, 16:17
|- - zltigo   QUOTE (Сергей Борщ @ Jan 25 2016, 18:14) ...   Jan 25 2016, 16:17
|- - Сергей Борщ   Цитата(zltigo @ Jan 25 2016, 18:17) Локал...   Jan 25 2016, 16:22
|- - zltigo   QUOTE (Сергей Борщ @ Jan 25 2016, 18:22) ...   Jan 25 2016, 17:01
- - smalcom   Цитатапрочитал интересную статью. решил поделиться...   Jan 25 2016, 16:18
- - krux   пожалуйста, не надо такого. особенно в разделе для...   Jan 25 2016, 17:10
|- - zltigo   QUOTE (krux @ Jan 25 2016, 19:10) не надо...   Jan 25 2016, 18:16
|- - krux   Цитата(zltigo @ Jan 25 2016, 21:16) Вы не...   Jan 25 2016, 18:58
- - ViKo   Ну, одну пользу я уже извлек - char нужно произнос...   Jan 25 2016, 18:31
|- - Сергей Борщ   Цитата(ViKo @ Jan 25 2016, 20:31) void pr...   Jan 25 2016, 19:59
- - Hexel   господа программисты, прокомментируйте пожалуста в...   Jan 25 2016, 20:26
|- - Dog Pawlowa   Цитата(Hexel @ Jan 25 2016, 23:26) проком...   Jan 26 2016, 07:01
|- - Сергей Борщ   Цитата(Hexel @ Jan 25 2016, 22:26) проком...   Jan 26 2016, 08:36
|- - Dog Pawlowa   Цитата(Сергей Борщ @ Jan 26 2016, 11:36) ...   Jan 26 2016, 09:45
||- - AlexandrY   Цитата(Dog Pawlowa @ Jan 26 2016, 11:45) ...   Jan 26 2016, 10:04
|- - zltigo   QUOTE (Сергей Борщ @ Jan 26 2016, 10:36) ...   Jan 26 2016, 10:04
- - smalcom   ЦитатаNULL vs Nil nullptr ) Цитатакогда носители ...   Jan 26 2016, 13:35
- - Ga_ry   Статью разбили в пух и прах. Так как все таки писа...   Jan 26 2016, 13:59
- - smalcom   ЦитатаТак как все таки писать на си в 2016, у кого...   Jan 26 2016, 14:58
- - Quasar   Какая-то обезьянская статья, ошибками называются в...   Jan 26 2016, 17:22
- - nill   Цитата(zltigo @ Jan 26 2016, 16:04) Прили...   Jan 27 2016, 05:07
|- - zltigo   QUOTE (nill @ Jan 27 2016, 07:07) zltigo,...   Jan 27 2016, 15:07
- - Herz   Господа! К сожалению, ветка уклонилась в обсуж...   Jan 28 2016, 21:18
|- - adnega   Цитата(Herz @ Jan 29 2016, 00:18) Давайте...   Jan 29 2016, 06:23
- - ViKo   Изучая исходники с github, заметил, что в качестве...   Jan 29 2016, 07:17
- - smalcom   Приведите пример, пжл. Как помне, то это не очень ...   Jan 29 2016, 08:12
- - ViKo   http://libopencm3.github.io/docs/latest/us...550c1...   Jan 29 2016, 08:15
- - sigmaN   Цитата(ViKo @ Jan 29 2016, 10:17) Изучая ...   Jan 29 2016, 18:41
|- - ViKo   Цитата(sigmaN @ Jan 29 2016, 21:41) Кажет...   Jan 29 2016, 18:54
|- - demiurg_spb   Цитата(ViKo @ Jan 29 2016, 21:54) libopen...   Jan 30 2016, 19:29
- - sigmaN   Просто по вашему описанию и у меня и у smalcom, ка...   Jan 29 2016, 19:06
- - syoma   Не знаю на счет веб дизайна и компьютерщиков, но п...   Jan 29 2016, 20:03
|- - AlexandrY   Цитата(syoma @ Jan 29 2016, 22:03) И подх...   Jan 30 2016, 20:38
|- - zltigo   QUOTE (AlexandrY @ Jan 30 2016, 22:38) Ко...   Jan 31 2016, 11:16
- - sigmaN   Ну тоже, извините меня, глупо следовать жестким ст...   Jan 29 2016, 21:29
- - smalcom   Цитатаописывается какой-то "говнокод-подход...   Jan 29 2016, 22:12
- - sigmaN   ЦитатаТо что некоторые называют "говнокодом...   Jan 31 2016, 09:28
|- - AlexandrY   Цитата(sigmaN @ Jan 31 2016, 11:28) Т.е. ...   Jan 31 2016, 11:36
|- - zltigo   QUOTE (AlexandrY @ Jan 31 2016, 13:36) Да...   Jan 31 2016, 11:53
|- - zltigo   QUOTE (sigmaN @ Jan 31 2016, 14:56) А я г...   Jan 31 2016, 13:33
- - sigmaN   ЦитатаАга. Можно постараться и нагородить говнокод...   Jan 31 2016, 13:44
|- - zltigo   QUOTE (sigmaN @ Jan 31 2016, 15:44) Нет, ...   Jan 31 2016, 13:55
- - sigmaN   ЦитатаУ меня лет 20 уже тому назад в одной моей си...   Jan 31 2016, 14:29
- - zltigo   QUOTE (sigmaN @ Jan 31 2016, 16:29) так ч...   Jan 31 2016, 16:57


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

 


RSS Текстовая версия Сейчас: 24th June 2025 - 13:21
Рейтинг@Mail.ru


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