Другие языки программирования и технологии

Семь управляющих структур. Два способа их объединения. 28 ключевых слов. Так почему же язык Си считают сложным?

AI
Azim Iliyazov
3 817
Потому что все остальное нужно писать самому. Сложный потому что слишком простой.
Расул Хириев
Расул Хириев
29 336
Лучший ответ
Не знаю. Когда он только появился, я в него просто был влюблён! После Фортрана - это просто сказка!!!
Н.
Николай .
82 945
Денис Горбанёв Не писали Вы на ассемблере...
Azim Iliyazov У формулы транслятор иные же цели.
Так считают только плохие преподаватели, не способные его толком объяснить, и фанаты Паскаля, которым просто нравится Паскаль.
ST
Sultan Totai
61 161
Потому что в нем много подводных камней. Пример: строка из пяти букв "Hello". Но для ее размещения нужен массив из шести char! А последняя буква имеет индекс 4.
О более сложных вещах вроде double(*mas[2])(int,double); лучше промолчать ;)
С построен по принципу "два пишем, три в уме".
C, вообще говоря, не считают особо сложным. С++ сложнее.
А сложности что в C, что в C++ связаны в основном с ненавязчивостью компилятора - ну, не привел типы, не освободил память, не проверил пределы массива - программист должен знать, что он делает, компилятор не будет ругаться. А потом непонятные глюки всплывают.
Мирослав Проза А какой сказкой были плюсы после С.
1. Откуда взялись такие цифры? Ключевых слов всяко больше 30, по крайней мере, я могу назвать 32. Кроме того, вы забыли про библиотеку поддержки, она тоже часть языка.

2. Очень странно, что в "таком простом языке" описание стандарта занимает 650 страниц (150 - собственно язык, 350 - стандартная библиотека, 20 станиц - грамматика, + дополнения)

Это кажущаяся простота, но она по крайней мере хорошо документирована.
Но она выглядит проще, чем описание С# и .NET.

ЗЫ
Я искренне рад, что язык С для вас простой. Хотелось бы надеяться, что вы не переборщили с самоуверенностью.

ЗЗЫ
Открыл драфт стандарта C99, ключевых слов 37. Я в печали, тоже не знаю С :-(
auto break case char const continue default do double else
enum extern float for goto if inline int long register
restrict return short signed sizeof static struct switch typedef union
unsigned void volatile while _Bool _Complex _Imaginary

Я пропустил: register restrict _Bool _Complex _Imaginary
Виталий Комар
Виталий Комар
11 112
Azim Iliyazov да мне простительно. я не айтишник.
http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf