ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
22 декабря
1039145 Топик полностью
Связанные сообщения
Cpp
Мнится мне, что кто-то уже записывал такие мысли на песках Сахары...2024-06-19
Вы просто не умеете его готовить. Я бы мог бесконечно показывать примеры, но это непробиваемо. Сразу авторитетно докажут, что у ...2022-09-30
Embedded Template Library (iar arm 9.20.4)2022-05-18
Наброшу.2021-12-06
Ты хочешь static_if, которого в C++ в чистом виде нет. constexpr if это совсем не то, т.к. он неизбежно будет компилиров...2020-07-02
В общем случае может быть 2-3 подхода перечисленных ниже. В базе всегда SFINAE -- шаблон откидывается и просматриваются следующи...2020-07-02
Надо понимать, что класс -- это не структура. Применительно к C++ мне больше нравится слово тип. Тип -- это сущность существующа...2020-04-26
Я говорю про другую типизацию. Не про int или long, и даже не про int или char*. Программа на ООП-языке существует в рамкой неко...2019-12-19
C#, Java и тем более Javascript -- это совсем другой код, нежели C++. На порядок менее оптимальный, если конечно задача не своди...2019-12-19
С языком очень даже связано. Компилирующие языки со статической типизацией (C++, C#, Java, C, Pascal) пропускают гораздо меньше ...2019-12-17
Не совсем. C++ -- это уход в сторону _типизированных_ ЯВУ, а Java или C# -- подвижка в сторону "управляемого кода" и что наиболе...2019-11-03
Да конечно, ну вот расскажи, как оно работает -->2019-10-25
Мне какой-то куб для Renesas вспомнился, лет 6 тому назад. Они хвалились, что у них код компилится сразу, как его пишешь. В итог...2019-10-25
Увы, часто нет. Ардуины не просто так возникли. МК подросли и стали возможны другие подходы к разработке. Видно же что делается:...2019-03-03
Не соглашусь, во-первых я чётко подвёл к мысли, что возможны разные классификации, существование одних не запрещает другие. И ес...2019-03-03
С этого стоило и начинать. С того, что язык скриптовый. И это уводит совсем в другую сторону, практически в параллельную вселенн...2019-03-01
EvgenyCD! Смотри ссылку! Я понял, что это круче чем swig, например, в определённых обстоятельствах. Правда руки применять надо...2017-02-09
fk0легенда (23.09.2020 00:30, просмотров: 975) ответил argus98 на ps Ещё вопрос. Вот в бейсике есть встроенные функции синус/косинус и протчая. А в плюсах они есть? (без библиотек, когда плюс сам по себе). И что такого может сделать С++, чего не могут сделать Бейсик с Паскалем, Фортраном и Ассемблером?
В C++ доступна вся C-библиотека. Когда C++ сам себе разумеется нет, а как ты себе представляешь? Можешь написать свою реализацию... Что может C++, чего не могут другие: 

1) метапрограммирование -- генерация кода программы по заданным программистам правилам, в частности, совместно с п. 4 это позволяет генерировать эффективный код в конкретных случаях;


2) C++ -- типизированный язык программирования позволяющий использование сильной типизации, что повышает надёжность ПО путём выявления ошибок ещё на этапе компиляции;


3) вычисления в момент компиляции и использование готовых значений в программе (constexpr или вычисления в пространстве типов), вместо вычислений в процессе работы;


4) статический полиморфизм в других языках носит существенно более ограниченную форму, в C++ он позволяет производить диспетчеризацию в момент компиляции, что опять же повышает надёжность ПО и выявляет ошибки в процессе компиляции, а не в процессе работы, кроме того позволяет оптимизатору лучше оптимизировать код;


5) C++ -- мультипарадигмальный язык программирования и позволяет относительно легко реализовывать концепции реализуемые на других языках, в частности реализует концепции объектно-ориентированного языка программирования, что позволяет эффективно вводить свои абстракции и решать задачи в рамках этих абстракций, и таким образом разделить задачу на множество более простых дискретных задач (классов), решение каждой можно отдельно проверить (протестировать), и таким образом ускорить в целом разработку (обычно для "спагетти-кода" на не ООП-языках требуется длительная отладка...)


6) некоторые концепции в других языках программирования не реализованы вовсе:


* множественное наследование: Java, Deplphi, C# ограничиваются только интерфейсами;


* argument dependent lookup позволяющий отделить реализацию операций над типами от определений самих типов -- нет нигде (из-за этого реализация арифметических операторов для самодельных типов превращается в C# в какой-то набор костылей...)


* шаблоны (классов, функций...) позволяющие получить полиморфную реализацию класса или функции зависящую от типа или численного аргумента... фактически это отдельный язык программирования управляющий компилятором в процессе компиляции.


7) C++ -- язык подходящий для системного программирования, на нём могут быть написаны операционные системы, среды исполнения программ на других языках, сам компилятор C++ может быть написан на C++... Для сравнения среда исполнения C# не может быть реализована на самом C# же и под низом лежит тот же C++.


8) C++ очень легко, прозрачно практически, интегрируется с C и программами/библиотеками для него;


9) C++ компилятор генерирует высокоэффективный машинный код, в то время как многие ЯВУ ограничиваются байт-кодом и/или генерацией слабо оптимизированного обобщённого машинного кода в момент исполнения (JIT).


10) В C++ нет автоматического управления памятью (garbage collector)... это может быть минусом. Есть smart-pointers и концепция RAII как-то решающая проблему, но в целом C++ требует более высокой квалификации программиста.


http://caxapa.ru/907638/ -- о языках программирования и метапрограммировании;

http://caxapa.ru/965849/ -- о многомерности C++ и программировании управлемом типам;

http://caxapa.ru/965825/ -- о преимуществах статического полиморфизма и метапрограммирования;

http://caxapa.ru/965513/ -- о преимуществах C++ по отношению к ошибкам.

http://caxapa.ru/956884/ -- в C++ скрытая сложность вытаскивается наружу, в Python, C# -- прячется, но она везде есть.

http://caxapa.ru/1035796 -- об ООП.

[ZX]