Меня последние годы не покидает стойкое сомнение в психической адекватности этих людей. Уже давно понятно, что C++ превратился в уродливого монстра, даже полное изучение и использование которого требует непомерных затрат, не говоря уже о реализации и поддержке, но они упорно двигают его все дальше и дальше.
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Меня последние годы не покидает стойкое сомнение в психической адекватности этих людей. Уже давно понятно, что C++ превратился в уродливого монстра, даже полное изучение и использование которого требует непомерных затрат, не говоря уже о реализации и поддержке, но они упорно двигают его все дальше и дальше.
Если уж и создатель его не особо понимает (писал тут кто-то про это), то это шедевр
ЕМ>Меня последние годы не покидает стойкое сомнение в психической адекватности этих людей. Уже давно понятно, что C++ превратился в уродливого монстра, даже полное изучение и использование которого требует непомерных затрат, не говоря уже о реализации и поддержке, но они упорно двигают его все дальше и дальше.
Я че-т не понимаю, вам кто-то зажал пальцы в дверь и заставляет использовать С++ что ли?
Здравствуйте, RonWilson, Вы писали:
ЕМ>>Меня последние годы не покидает стойкое сомнение в психической адекватности этих людей. Уже давно понятно, что C++ превратился в уродливого монстра, даже полное изучение и использование которого требует непомерных затрат, не говоря уже о реализации и поддержке, но они упорно двигают его все дальше и дальше.
RW>Если уж и создатель его не особо понимает (писал тут кто-то про это), то это шедевр
C++20 is the first release of C++ that added a feature that made the standard smaller. When I talk about the importance of simplifying C++ by judiciously adding features that let programmers express their intent directly, some people legitimately object that adding a feature makes C++ bigger and more complex. I reply “but it makes C++ code simpler” and “if it replaces something more complex then we can teach a simpler C++ for new code,” but those effects have been hard to measure concretely. Now in C++20 for the first time we added a new feature that made the standard smaller: We added the C++20 spaceship operator to the language, but we also applied it throughout the C++ standard library and that made the library specification nearly 20 pages shorter — a net reduction. So for the first time we can measure that, yes, adding a feature to C++ can make C++ smaller.
Мелочь, а приятно. И там же выше он пишет, что
C++20 is the first ever “D&E-complete” release of C++. In February, we completed C++20, which is the first release of Standard C++ that includes every feature that Bjarne Stroustrup envisioned for C++’s evolution in his 1994 book The Design and Evolution of C++ (aka D&E), including concepts, coroutines, modules, and more, except only for one minor feature (unified function call syntax).
Оба примера, на мой взгляд, сравнимы с началом раздела "16 Library introduction" на странице 458 в стандарте C++20, особенно учитывая, что стандартная библиотека С++ содержит в себе и всю библиотеку С впридачу.
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Меня последние годы не покидает стойкое сомнение в психической адекватности этих людей. Уже давно понятно, что C++ превратился в уродливого монстра, даже полное изучение и использование которого требует непомерных затрат, не говоря уже о реализации и поддержке, но они упорно двигают его все дальше и дальше.
А когда он не менялся, со всех сторон было "язык умер! желанную фичу не добавляют! как можно пользоваться языком застрявшим в 90-х!". Всем не угодишь
Здравствуйте, kaa.python, Вы писали:
KP>А когда он не менялся, со всех сторон было "язык умер! желанную фичу не добавляют! как можно пользоваться языком застрявшим в 90-х!".
Так и надо было развивать язык в рамках подхода, обеспечившего успех и C, и C++ — всю работу выполняют функции, а встроенные средства языка лишь определяют сущности и операции над ними. При таком подходе на языке можно с одинаковым удобством и эффективностью писать программы для простейших микроконтроллеров, ядра ОС, драйверы, мелкие программы и навороченные комплексы. В этом была уникальность языка и основная причина его популярности.
А потом среди поклонников (и разработчиков стандарта) возобладал традиционный подход к ЯП — "чтобы реализовать такой-то алгоритм, нужно написать вот это и вот это". Подавляющее большинство C++-программистов уже давно не понимает, что у программы внутри, как она взаимодействует со средой выполнения, какие конструкции порождают компактный код, а какие — развесистый, не умеет оптимизировать без профайлера и т.п., а просто кодирует алгоритм мало-мальски подходящими конструкциями языка и стандартной библиотеки, которая тоже превратилась в паровоз, нахлобученный на легковушку. Для всего этого уже было 100500 самых разных языков, и регулярно появляются новые, какой был смысл тащить туда еще и C++?
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>При таком подходе на языке можно с одинаковым удобством и эффективностью писать программы для простейших микроконтроллеров, ядра ОС, драйверы, мелкие программы и навороченные комплексы.
Нет, навороченные комплексы даже на "Си с классами" было сложно делать. Хотя и проще, чем на чистом Си. Но реально удобно это стало делать лишь после того как C++ приобрел основные черты C++98, т.е. обзавелся шаблонами и исключениями. Вся последующая эволюция С++ до C++17 включительно -- это лишь доведение C++98 до ума. Кардинальные перемены могут наступить в C++20 с его модулями, концептами, operator<=>, короутинами.
ЕМ>В этом была уникальность языка и основная причина его популярности.
Скорее просто на момент завоевания популярности у C++ не было достойных конкурентов, которые бы сочетали достаточную выразительность и высокую эффективность. Что в условиях слабых компьютеров тех лет было чрезвычайно важным конкурентным преимуществом. Но оно стало таять уже где-то к концу 1990-х.
PM>C++20 is the first ever “D&E-complete” release of C++. In February, we completed C++20, which is the first release of Standard C++ that includes every feature that Bjarne Stroustrup envisioned for C++’s evolution in his 1994 book The Design and Evolution of C++ (aka D&E), including concepts, coroutines, modules, and more, except only for one minor feature (unified function call syntax).
Ничего себе, minor feature (UFCS). В сравнении с концептами — может быть, но эта штука давно присутствует в других языках и давно ожидаема в С++.
PM>>C++20 is the first ever “D&E-complete” release of C++. In February, we completed C++20, which is the first release of Standard C++ that includes every feature that Bjarne Stroustrup envisioned for C++’s evolution in his 1994 book The Design and Evolution of C++ (aka D&E), including concepts, coroutines, modules, and more, except only for one minor feature (unified function call syntax).
F>Ничего себе, minor feature (UFCS). В сравнении с концептами — может быть, но эта штука давно присутствует в других языках и давно ожидаема в С++.
Да, наверно UFCS вещь нужная, но для меня важнее набор перечисленных выше новых штук, которые успели зарелизить в С++20.
Почему это "даже"? Эта версия стандарта за 1000 страниц скорее всего с диффом по сравнению с предыдущей версией стандарта. В "чистом" RM Ada2012 меньше 1000 страниц.
Что логично, так как при разработке Ады не было требования тащить совместимость с AT&T'шным уродцем, C, и язык получился более целостным и самостоятельным с т.з. парадигмы.