История изменений
Исправление KivApple, (текущая версия) :
Синтаксис то это как раз ерунда и действительно лечится чтением документации и просто опытом работы.
А вот как быть с:
1) Только ручное управление памятью
2) Отсутствие синтаксического сахара для ООП (== при необходимости нагородить ООП требуется писать кучу boiler plate кода)
Это объективные недостатки, поскольку необходимость постоянно держать в голове, что ты где выделил и где освободил, а также писать кучу однотипного кода, который не приходится писать на других языках - достоинствами быть не могут.
Однако, есть и достоинства:
1) Из-за ручного управления памятью можно добиться оптимального потребления этой самой памяти, а не жрать память как не в себя. Плюс нет подвисаний при работе GC.
2) Низкоуровневые структуры данных позволяют абсолютно точно контролировать каждый байт каждой структуры.
Фактически, эти достоинства и недостатки являются следствием одних и тех же свойств языка, но с разных точек зрения. Знание этих фактов позволяет легко определить область применимости языка:
1) Там где важна скорость написания кода - Си такое себе решение
2) Там где важна супер-производительность и предсказуемость поведения на низком уровне - Си отличное решение.
Недостатки это не всегда плохо. Это нормально.
Исходная версия KivApple, :
Синтаксис то это как раз ерунда и действительно лечится чтением документации и просто опытом работы.
А вот как быть с:
1) Только ручное управление памятью
2) Отсутствие синтаксического сахара для ООП (== при необходимости нагородить ООП требуется писать кучу boiler plate кода)
Это объективные недостатки, поскольку необходимость постоянно держать в голове, что ты где выделил и где освободил, а также писать кучу однотипного кода, который не приходится писать на других языках - достоинствами быть не могут.
Однако, есть и достоинства:
1) Из-за ручного управления памятью можно добиться оптимального потребления этой самой памяти, а не жрать память как не в себя. Плюс нет подвисаний при работе GC.
2) Низкоуровневые структуры данных позволяют абсолютно точно контролировать каждый байт каждой структуры.
Фактически, эти достоинства и недостатки являются следствием одних и тех же свойств языка, но с разных точек зрения. Знание этих фактов позволяет легко определить область применимости языка:
1) Там где важна скорость написания кода - Си такое себе решение
2) Там где важна супер-производительность и предсказуемость поведения на низком уровне - Си отличное решение