LINUX.ORG.RU

История изменений

Исправление 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++, я их прекрасно знаю.