История изменений
Исправление rmammoth, (текущая версия) :
Было бы интересно узнать, какие и в чём.
Перечислите спорные решения. Интересно.
... но это на любителя.
Спорить о вкусах — пустая трата времени. Впрочем... Сугубо ИМХО:
-- стандартизация «де-факто» против вменяемых стандартов у С/С++ не есть хорошо и приводит к наличию версий и диалектов
-- begin end как ограничители блоков кода дольше набираются и хуже читаются в сложных конструкциях
-- отсутствие операторов изменения типа ++ — *= /= += -= и т.п. вынуждают писать лишний код value = value * 10; частично выручают inc и dec.
-- нет аналога тернарному ?: , что тоже вынуждает писать лишние if then begin end else begin end
-- нет аналога оператору следования "," — редко, но бывает нужно
-- отсутствие у оператора присваивания возвращаемого значения не дает писать цепочечные присваивания и использовать результат присваивания в выражениях типа if((value = tryGetValue()) != 0) { /* do something with value */ }
-- про возвращаемое значение функций уже писали, return при правильном использовании всё же позволяет писать более лаконичный и понятный код.
-- отсутствие break и continue в базовом варианте сильно усложняло логику циклов, впрочем, поправлено в диалектах
-- цикл for в стиле С/C++ куда гибче и не завязан исключительно на целочисленное итерирование, как for to/downto в Pascal
-- разделение на процедуры и функции совершенно излишне, представление о процедуре как функции без возвращаемого значения вполне себе адекватно описывает все различия
Впрочем, еще раз, всё перечисленное — сугубо на правах ИМХО, уверен, в любом языке есть недочеты дизайна, спорные решения и неудовлетворенные личные предпочтения. Не надо разворачивать бурную дискуссию о недостатках C/C++, я их прекрасно знаю.
Исходная версия rmammoth, :
Было бы интересно узнать, какие и в чём.
Перечислите спорные решения. Интересно.
... но это на любителя.
Спорить о вкусах — пустая трата времени. Впрочем... Сугубо ИМХО:
-- стандартизация «де-факто» против вменяемых стандартов у С/С++ не есть хорошо и приводит к наличию версий и диалектов
-- begin end как ограничители блоков кода дольше набираются и хуже читаются в сложных конструкциях
-- отсутствие операторов изменения типа ++ — *= /= += -= и т.п. вынуждают писать лишний код value = value * 10; частично выручают inc и dec.
-- нет аналога тернарному ?: , что тоже вынуждает писать лишние if then begin end else begin end
-- нет аналога оператору следования "," — редко, но бывает нужно
-- отсутствие у оператора присваивания возвращаемого значения не дает писать цепочечные присваивания и использовать результат присваивания в выражениях типа if((value = tryGetValue()) != 0) { /* do something with value */ }
-- про возвращаемое значение функций уже писали, return при правильном использовании всё же позволяет писать более лаконичный и понятный код.
-- отсутствие break и continue в базовом варианте сильно усложняло логику циклов, впрочем, поправлено в диалектах
-- разделение на процедуры и функции совершенно излишне, представление о процедуре как функции без возвращаемого значения вполне себе адекватно описывает все различия
Впрочем, еще раз, всё перечисленное — сугубо на правах ИМХО, уверен, в любом языке есть недочеты дизайна, спорные решения и неудовлетворенные личные предпочтения. Не надо разворачивать бурную дискуссию о недостатках C/C++, я их прекрасно знаю.