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

 
 
> Использовать C++ как "улучшенный С" с классами, но в духе С...
winipuh
сообщение Sep 15 2013, 14:28
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 127
Регистрация: 31-10-12
Пользователь №: 74 189



Иными словами, в стиле структурного программирования, но с применением некоторых полезных, на мой взгляд, возможностей С++ ("синтаксического сахара"):
  • namespace — Имена констант/типов/функций обычно снабжаются приставками для предотвращения конфликта имен и/или обозначения принадлежности к кругу решаемых задач. Namespace делает это необязательным. Есть возможность чаще использовать короткие имена, и лишь в отдельных местах - полное имя (с квалификатором "::"). Определенные через #define целые константы можно заменить на enum, вещественные/строковые - на static const переменные, макросы - на static inline функции.
  • Перегрузка функций — Не требуется несколько функций с именами типа func(...) и func_ext(..., дополнительные параметры) и т.п. Сокращение количества имен функций, лучшая читаемость кода.
  • Параметры функций по умолчанию — Улучшение читаемости кода. Например, "стандартный" вызов функции проще и писать, и отличать от вызова с особыми условиями. Что-то типа show_mode(mode) и show_mode(mode, "Error") вместо show_mode(mode, NULL) и show_mode(mode, "Error")...
  • Классы — Без фанатизма. Часто есть некая структура (struct) и несколько функций для ее обработки, которым через параметр передается указатель на структуру. Класс делает тоже самое (неявно), но позволяет лучше логически связать стуктуру и функции. Плюс опять таки пространство имен.
Вот такие есть мысли о применении C++ в своих проектах в ближайшем будущем.

С другой стороны:
  • Много слышал о глубокой любви Линуса Торвальдса к С++. Дядечка этот умный и считаться с его мнением стоит
  • Некоторые полагают, что крайне опасно открывать двери к проекту для сферического С++ программиста. Честно говоря, такие посты как это или это самого наталкивают на такие мысли (ну или я чего-то не понимаю).
С учетом этого кажется, что от проекта на "С++ в духе С" лучше всем не станет, будет только яростная критика и со стороны "чистых С-программистов", и программистов на "чистом С++"...

Хотелось бы услышать мнение других. Приглашаю к дискуссии. sm.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Timmy
сообщение Sep 23 2013, 07:19
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 835
Регистрация: 9-08-08
Из: Санкт-Петербург
Пользователь №: 39 515



Цитата(winipuh @ Sep 15 2013, 18:28) *
С другой стороны:
  • Много слышал о глубокой любви Линуса Торвальдса к С++. Дядечка этот умный и считаться с его мнением стоит
  • Некоторые полагают, что крайне опасно открывать двери к проекту для сферического С++ программиста. Честно говоря, такие посты как это или это самого наталкивают на такие мысли (ну или я чего-то не понимаю).

Что касается Линуса, я думаю, он вполне обоснованно опасается толпы неграмотных кодеров, не способных правильно писать на C++, а также плохой совместимости между реализациями C++, что грозит адскими проблемами при портировании ядра. Но это всё не наш случай. Автор второго поста(из Интела) вроде бы вообще ничего, кроме GUI, не писал, но при этом требует использовать GUI паттерны для всех программ без исключения. И это тоже не наш случай. Я использовал в микроконтроллерах именно "С с классами", и остался вполне доволен - это удобнее простого С. А ещё в C++ стандартизованы инлайн функции, и шаблоны тоже можно использовать(без фанатизма). Причём на шаблонах можно сделать эмбеддерский аналог STL для контейнеров, без аллокаторов, с хранением узла прямо в структуре объекта, который кладётся в контейнер. Это в некоторой степени даже удобнее традиционного STL.
Go to the top of the page
 
+Quote Post
A. Fig Lee
сообщение Sep 23 2013, 11:32
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 974
Регистрация: 4-04-08
Из: далека
Пользователь №: 36 467



Цитата(Timmy @ Sep 23 2013, 03:19) *
... а также плохой совместимости между реализациями C++..

Там что, реализация каждую неделю, как Виндоус апдейт, а не раз в 10 лет?


--------------------
Верить нельзя никому, даже себе. Мне - можно.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- winipuh   Использовать C++ как "улучшенный С" с классами   Sep 15 2013, 14:28
- - Xenia   C++ никогда не порывал с духом C. Т.е. можно пис...   Sep 15 2013, 15:14
- - _Pasha   "Вольностей" хватает в gcc --std=gnu99 Е...   Sep 15 2013, 15:42
- - Tiro   Цитата(winipuh @ Sep 15 2013, 17:28) Хоте...   Sep 15 2013, 15:48
- - winipuh   Бзусловно, Вы правы, Xenia. Собственно я о том же ...   Sep 15 2013, 15:57
|- - kolobok0   Цитата(winipuh @ Sep 15 2013, 19:57) ...с...   Sep 15 2013, 19:20
|- - winipuh   Боюсь, что Вы меня не совсем правильно поняли Ци...   Sep 15 2013, 20:14
||- - Tiro   Цитата(winipuh @ Sep 15 2013, 23:14) Я зн...   Sep 15 2013, 20:40
||- - kolobok0   Цитата(winipuh @ Sep 16 2013, 00:14) ...П...   Sep 16 2013, 11:58
||- - DASM   Цитата(kolobok0 @ Sep 16 2013, 15:58) отв...   Sep 16 2013, 12:16
||- - kolobok0   Цитата(DASM @ Sep 16 2013, 16:16) ...моло...   Sep 16 2013, 12:46
|- - Misile_Inc   Цитата(kolobok0 @ Sep 15 2013, 22:20) ООП...   Sep 15 2013, 20:23
- - Misile_Inc   STL нужно использовать когда знаете, как ее правил...   Sep 15 2013, 17:10
- - Idle   Цитата(winipuh @ Sep 15 2013, 18:28) Дяде...   Sep 16 2013, 10:46
- - A. Fig Lee   Цитата(winipuh @ Sep 15 2013, 10:28) Иным...   Sep 16 2013, 12:39
- - DASM   А я дальше и читать не стал, после слов "есть...   Sep 16 2013, 12:54
- - AlexandrY   Цитата(Timmy @ Sep 23 2013, 10:19) не спо...   Sep 23 2013, 08:10
|- - Timmy   Цитата(AlexandrY @ Sep 23 2013, 12:10) От...   Sep 25 2013, 06:46
|- - AlexandrY   Цитата(Timmy @ Sep 25 2013, 09:46) И без ...   Sep 25 2013, 07:08
|- - MrYuran   Цитата(Timmy @ Sep 25 2013, 09:46) Интере...   Sep 25 2013, 07:20


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

 


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


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