LINUX.ORG.RU

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

Исправление vbr, (текущая версия) :

Я люблю пользоваться C, но к нему у меня накопился достаточно обширный список претензий. Я их не документирую, но вот некоторые, которые мне сразу в голову приходят:

  1. Нельзя объявить глобальную неинициализированную переменную.
  2. Нет удобного синтаксиса для доступа к битам.
  3. Ушибленная на голову стандартная библиотека, ещё и прибитая гвоздями к языку в некоторых, не всегда очевидных местах.
  4. Идиотский препроцессор, приводящий к макросам, которые порой без поллитра не разберёшь.
  5. Куча ненужных фич. Идиотский цикл for, ненужный цикл do-while. Цикла while хватит каждой домохозяйке, а вот break/continue на два уровня выше до сих пор не придумали. switch пофиксить надо было ещё сто лет назад. И такого много на самом деле.
  6. Вот в этой теме обсосали уже всё, что касается переполнения, это всё неправильно. Как надо: любое переполнение вызывает ошибку, но есть синтаксис, который игнорирует ошибку или позволяет проверить переполнение.
  7. Нет множественных возвращаемых значений, приходится извращаться со всякими указателями или структурами, это всё неудобно.
  8. Упоротые оптимизации, которые порой вызывают WTF. Такого не должно быть. Оптимизации должны помогать, а не мешать. Если я пишу пустой цикл из 1000 итераций, значит его надо компилировать, а не выпендриваться. Хочешь выпендриться - выдай warning. То же про выкидывание кода из-за UB при переполнении - такого не должно быть, я написал код, значит я его хочу, есть вопросы - выдавай warning, но компилируй как я написал.

Понятно, что почти всё из этого можно исправить всякими компиляторо-зависимыми трюками или просто жить с этим, но можно было бы лучше.

Исправление vbr, :

Я люблю пользоваться C, но к нему у меня накопился достаточно обширный список претензий. Я их не документирую, но вот некоторые, которые мне сразу в голову приходят:

  1. Нельзя объявить глобальную неинициализированную переменную.
  2. Нет удобного синтаксиса для доступа к битам.
  3. Ушибленная на голову стандартная библиотека, ещё и прибитая гвоздями к языку в некоторых, не всегда очевидных местах.
  4. Идиотский препроцессор, приводящий к макросам, которые порой без поллитра не разберёшь.
  5. Куча ненужных фич. Идиотский цикл for, ненужный цикл do-while. Цикла while хватит каждой домохозяйке, а вот break/continue на два уровня выше до сих пор не придумали. switch пофиксить надо было ещё сто лет назад. И такого много на самом деле.
  6. Вот в этой теме обсосали уже всё, что касается переполнения, это всё неправильно. Как надо: любое переполнение вызывает ошибку, но есть синтаксис, который игнорирует ошибку или позволяет проверить переполнение.
  7. Нет множественных возвращаемых значений, приходится извращаться со всякими указателями или структурами, это всё неудобно.
  8. Упоротые оптимизации, которые порой вызывают WTF. Такого не должно быть. Оптимизации должны помогать, а не мешать. Если я пишу пустой цикл из 1000 итераций, значит его надо компилировать, а не выпендриваться.

Понятно, что почти всё из этого можно исправить всякими компиляторо-зависимыми трюками или просто жить с этим, но можно было бы лучше.

Исходная версия vbr, :

Я люблю пользоваться C, но к нему у меня накопился достаточно обширный список претензий. Я их не документирую, но вот некоторые, которые мне сразу в голову приходят:

  1. Нельзя объявить глобальную неинициализированную переменную.
  2. Нет удобного синтаксиса для доступа к битам.
  3. Ушибленная на голову стандартная библиотека, ещё и прибитая гвоздями к языку в некоторых, не всегда очевидных местах.
  4. Идиотский препроцессор, приводящий к макросам, которые порой без поллитра не разберёшь.
  5. Куча ненужных фич. Идиотский цикл for, ненужный цикл do-while. Цикла while хватит каждой домохозяйке, а вот break/continue на два уровня выше до сих пор не придумали. switch пофиксить надо было ещё сто лет назад. И такого много на самом деле.
  6. Вот в этой теме обсосали уже всё, что касается переполнения, это всё неправильно. Как надо: любое переполнение вызывает ошибку, но есть синтаксис, который игнорирует ошибку или позволяет проверить переполнение.
  7. Нет множественных возвращаемых значений, приходится извращаться со всякими указателями или структурами, это всё неудобно.
  8. Упоротые оптимизации, которые порой вызывают WTF. Такого не должно быть. Оптимизации должны помогать, а не мешать. Если я пишу пустой цикл из 1000 итераций, значит его надо компилировать, а не выпендриваться.