Информация об изменениях

Сообщение Re[3]: С++ всё? Rust навсегда? Простота от 07.07.2020 7:41

Изменено 07.07.2020 8:05 velkin

Re[3]: С++ всё? Rust навсегда? Простота
Здравствуйте, Erop, Вы писали:

E>Ну всё-таки для С++ уровень нужен повыше. И если задачи совсем простые -- типа клепания 100500 шаблонных формочек и отчётов, то С++ таки избыточен


А я сейчас решил почитать "Язык программирования C++. Специальное издание" Бьёрна Страуструпа.

Часть конспекта по 4.1 Фундаментальные типы:
+------------------------+
|фундаментальные типы    |
+-------------+----------+
|название     |типы      |
+-------------+----------+------------+--------------+
|логические   |bool      |            |              |
|символьные   |char      |интегральные|              |
|целые        |int       |(целые)     |арифметические|
+-------------+----------+------------+              |
|вещественные |double    |                           |
+-------------+----------+---------------------------+
|перечислимые |enum      |определяемые пользователем |
+-------------+----------+---------------------------+
|отсутствующие|void      |
+-------------+----------+
|построенные поверх типов|
+-------------+----------+
|указательные |тип*      |
|массивы      |тип[]     |
|ссылочные    |тип&      |
+-------------+----------+---------------------------+
|структуры    |struct    |определяемые пользователем |
|классы       |class     |                           |
+-------------+----------+---------------------------+

И он дальше пишет:

Фундаментальные типы языка C++ вместе с указателями и массивами предоставляют программисту отражение этого машинного уровня в манере, относительно независимой от конкретной реализации.

В большинстве приложений можно обойтись типом bool ддя логики, типом char для символов, типом int для целых чисел и типом double — для дробных (чисел с плавающей запятой). Остальные фундаментальные типы являются вариациями, предназначенными для оптимизации и решения специальных задач, и их лучше до поры игнорировать. Но, разумеется, их нужно знать для чтения существующего стороннего кода на С и C++.

Он буквально говорит,
1) арифметические типы имеют прямое отражение в машинном коде.
2) существует лишь 4-е арифметических типа: bool, char, int, double.

Я то, конечно, знаю, что можно породить кучу типов из каждого, и каждая операция будет преобразована в соответствующие команды процессора.

Продолжение конспекта:

оптимизация арифметических типов:
1) объём занимаемой памяти
2) точность представления
3) диапазоны значений

без оптимизации рекомендуется использовать арифметические типы:
1) логика bool
2) символы char
3) целые int
4) вещественные double


И опять же помимо этого поверх можно построить:
1) указатель (константный указатель, указатель на константу, константный указатель на константу)
2) массив (многомерный массив)
3) ссылку (ссылку на константу)

И чем дальше в лес, тем толще партизаны. По словам Страуструпа я могу сделать вывод, что даже float это оптимизация. А программисты могли бы не париться и запомнить четыре арифметических типа.

А что насчёт языков программирования где нет оптимизации арифметических типов? Могу ли я сказать, что вот здесь нет такой оптимизации и это хорошо? А что если я последую советам Страуструпа и не буду использовать в C++ оптимизации?

Очевидна одна из проблем заключается в принципе:

Если в начале пьесы на стене висит ружье, то к концу пьесы оно должно выстрелить


Если людям дали возможность разделить класс физически на заголовочный файл и единицу компиляции, то мы же не можем этим не воспользоваться, не так ли? Мы уже не можем написать всё в одном файле, чтобы программирование в C++ напоминало программирование в скрипте. Вы разве не видите, что висит ружьё? Следовательно оно должно выстрелить. А в C++ очень много таких ружей.

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

Или проведём умственный эксперимент. А что если бы программист не знал про оптимизации арифметических типов в C++? Вот пожалуйста, снижение требований как к программистам, так и к программным системам.

То же множественное наследование вне интерфейсов в C++, так не хочешь, не пользуйся. Но нет, мы же не можем отказаться, на стене висит ружьё: — "Надо Федя, надо". Но почему его отсутствие превратилось в преимущество C# или других языков программирования лично я не понимаю.

А вывод у меня такой. Дело не в том, что C++ запредельно сложен, а в том, что не все умеют использовать его по простому. Я, например, не умею, потому и решил почитать Страуструпа.

Афоризмы и цитаты о простоте

Усложнять просто, упрощать сложно.
«Закон Мейера»

Все должно быть изложено так просто, как только возможно, но не проще.
Альберт Эйнштейн

Будь проще, и ты поймешь, что проще некуда.
Геннадий Малкин

Нужно усложнять, чтобы в результате все стало проще, а не упрощать, чтобы в результате все стало сложнее.
Веслав Брудзиньский

Если существует более сложный способ делать что либо, кто нибудь непременно его откроет.
Ралф Рус

На всякого мудреца простоты не напасешься.
Леонид Леонидов

Не корчите из себя ничего; простота есть отпечаток гения.
К. Берне

Простота есть ближайшая родственница ума и дарований.
Ф. Глинка

Простота делает жизнь не только более приятной, но… и более чистой и прекрасной.
М. Монтень

Простота есть необходимое условие прекрасного.
Лев Николаевич Толстой

Язык правды прост.
Сенека Ауций Анней (Младший)

Чем проще человек выражается, тем легче его понимают.
Джеймс Фенимор Купер

В характере, в манерах, в стиле, во всем самое прекрасное — это простота.
Генри Уодсуорт Лонгфелло

Нет ничего проще, чем величие; воистину, быть простым — значит быть великим.
Ралф Уолдо Эмерсон

Простота — это то, что труднее всего на свете; это крайний предел опытности и последнее усилие гения.
Жорж Санд

Стремление к простоте жизни является у сложнейших душ, а все простое стремится к сложности.
Михаил Михайлович Пришвин

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

Ничто так, как простота, не содействует сближению людей.
Лев Николаевич Толстой

Простота есть необходимое условие прекрасного.
Лев Николаевич Толстой

Re[3]: С++ всё? Rust навсегда? Простота
Здравствуйте, Erop, Вы писали:

E>Ну всё-таки для С++ уровень нужен повыше. И если задачи совсем простые -- типа клепания 100500 шаблонных формочек и отчётов, то С++ таки избыточен


А я сейчас решил почитать "Язык программирования C++. Специальное издание" Бьёрна Страуструпа.

Часть конспекта по 4.1 Фундаментальные типы:
типы C++
+-------------+----------+-------------------------------+
|название     |типы      |категория                      |
+-------------+----------+------------+--+---------------+
|логические   |bool      |            |  |               |
|символьные   |char      |интегральные|  |               |
|целые        |int       |(целые)     |  |               |
+-------------+----------+------------+  |фундаментальные|
|вещественные |double    |арифметические |(встроенные)   |
+-------------+----------+---------------+               |
|отсутствующие|void      |                               |
+-------------+----------+-------------------------------+
|указательные |тип*      |                               |
|массивы      |тип[]     |построенные поверх типов       |
|ссылочные    |тип&      |                               |
+-------------+----------+-------------------------------+
|перечислимые |enum      |                               |
|структуры    |struct    |определяемые пользователем     |
|классы       |class     |                               |
+-------------+----------+-------------------------------+

И он дальше пишет:

Фундаментальные типы языка C++ вместе с указателями и массивами предоставляют программисту отражение этого машинного уровня в манере, относительно независимой от конкретной реализации.

В большинстве приложений можно обойтись типом bool ддя логики, типом char для символов, типом int для целых чисел и типом double — для дробных (чисел с плавающей запятой). Остальные фундаментальные типы являются вариациями, предназначенными для оптимизации и решения специальных задач, и их лучше до поры игнорировать. Но, разумеется, их нужно знать для чтения существующего стороннего кода на С и C++.

Он буквально говорит,
1) арифметические типы имеют прямое отражение в машинном коде.
2) существует лишь 4-е арифметических типа: bool, char, int, double.

Я то, конечно, знаю, что можно породить кучу типов из каждого, и каждая операция будет преобразована в соответствующие команды процессора.

Продолжение конспекта:

оптимизация арифметических типов:
1) объём занимаемой памяти
2) точность представления
3) диапазоны значений

без оптимизации рекомендуется использовать арифметические типы:
1) логика bool
2) символы char
3) целые int
4) вещественные double


И опять же помимо этого поверх можно построить:
1) указатель (константный указатель, указатель на константу, константный указатель на константу)
2) массив (многомерный массив)
3) ссылку (ссылку на константу)

И чем дальше в лес, тем толще партизаны. По словам Страуструпа я могу сделать вывод, что даже float это оптимизация. А программисты могли бы не париться и запомнить четыре арифметических типа.

А что насчёт языков программирования где нет оптимизации арифметических типов? Могу ли я сказать, что вот здесь нет такой оптимизации и это хорошо? А что если я последую советам Страуструпа и не буду использовать в C++ оптимизации?

Очевидно одна из проблем заключается в принципе:

Если в начале пьесы на стене висит ружье, то к концу пьесы оно должно выстрелить


Если людям дали возможность разделить класс физически на заголовочный файл и единицу компиляции, то мы же не можем этим не воспользоваться, не так ли? Мы уже не можем написать всё в одном файле, чтобы программирование в C++ напоминало программирование в скрипте. Вы разве не видите, что висит ружьё? Следовательно оно должно выстрелить. А в C++ очень много таких ружей.

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

Или проведём умственный эксперимент. А что если бы программист не знал про оптимизации арифметических типов в C++? Вот пожалуйста, снижение требований как к программистам, так и к программным системам.

То же множественное наследование вне интерфейсов в C++, так не хочешь, не пользуйся. Но нет, мы же не можем отказаться, на стене висит ружьё: — "Надо Федя, надо". Но почему его отсутствие превратилось в преимущество C# или других языков программирования лично я не понимаю.

А вывод у меня такой. Дело не в том, что C++ запредельно сложен, а в том, что не все умеют использовать его по простому. Я, например, не умею, потому и решил почитать Страуструпа.

Афоризмы и цитаты о простоте

Усложнять просто, упрощать сложно.
Все должно быть изложено так просто, как только возможно, но не проще.
Будь проще, и ты поймешь, что проще некуда.
Нужно усложнять, чтобы в результате все стало проще, а не упрощать,
чтобы в результате все стало сложнее.
Если существует более сложный способ делать что либо, кто нибудь
непременно его откроет.
На всякого мудреца простоты не напасешься.
Не корчите из себя ничего; простота есть отпечаток гения.
Простота есть ближайшая родственница ума и дарований.
Простота делает жизнь не только более приятной, но… и более чистой и
прекрасной.
Простота есть необходимое условие прекрасного.
Язык правды прост.
Чем проще человек выражается, тем легче его понимают.
В характере, в манерах, в стиле, во всем самое прекрасное — это
простота.
Нет ничего проще, чем величие; воистину, быть простым — значит быть
великим.
Простота — это то, что труднее всего на свете; это крайний предел
опытности и последнее усилие гения.
Стремление к простоте жизни является у сложнейших душ, а все простое
стремится к сложности.
Все люди, занятые истинно важным делом, всегда просты, потому что не
имеют времени придумывать лишнее.
Ничто так, как простота, не содействует сближению людей.
Простота есть необходимое условие прекрасного.