Цитата(zltigo @ Dec 14 2008, 18:45)

Угу. printf() использовать для сравнения смешно, прикрутить печать строки и печать числа банально можно, но зачем... Инетесует именно качество компиляции.
Качество компиляции и переносимость будут хуже. Качество "по определению". Переносимость, в связи с отсутствием конкуренции в этой области.
Все остальные претензии к языку в данной ветке, на мой взгляд, полный бред.
Возьмём русский язык.
1) Переведите английский текст на русский и сравните по длине.
2) Правильность и законченность построения языка.
3) Благозвучность и прочее...
Вопрос.
1)Почему вся конфа здесь на руссом языке?
Ответ.
1) Потому что язык лучше и позволяет лучше выразится.
2) Потому что английский не знаю.
3) Потому что на нём мне общаться комфортнее.
4) Потому что вокруг меня все на нём общаются.
Ответьте саме для себя на эти вопросы и проанализируйте это. Примерно тоже будет и с языками программирования.
Ниже моё мнение. То что сразу бросается в глаза при переходе с языка на язык.
Для микроконтроллеров конечно язык Си лучше по ряду преимуществ. Именно речь идёт о преимуществах языка, а не преимуществах компиляции/ переносимости/ доставаемости.
Все эти преимущества проявляются в условиях ограничения ресурсов. В противном случае - не существенны.
1) (Почему то никто не отметил, либо я не заметил) Возможность напрямую работать с битами.
Не через and/or а именно на прямую. Объявить UNION, поименовать и вперёд!
2) (Отмечали уже) Построение оператора выбора. Не часто но используется.
Всё остальное - удобство.
1) Лаконичность самого языка.
2) Множественные присваивания
3) Более удобная система работы с указателями.
4) Отсутствие ненужных проверок.
5) Простота операторов.
При обратном переходе вызывает сожаление только один момент. Парадоксально, но закоренелые Сишники

тут данный недостаток, пытались выставить как достоинство.
Более грамотное построение локальности/ глобальности переменных. Тут один уже говорил о возможности в Си объявить переменную прямо в цикле. Так вот, видимо он не знает всей правды.

Паскаль имеет иерархическое строение локальности (видимости). Включая процедуры. Схема такая
Код
A // (A1)
{
}
D
{
}
C
{
i,j // объявление (i1,j1)
A // объявление (A2)
{
i // объявление (i2)
// Тело процедуры A2 *
}
B // объявление
{
i,j // объявление (i3,j2)
// Тело процедуры B *
}
// Тело процедуры С ***
}
В месте "*" при вызове D-D. При обращении к i - i2, j-j1
В месте "**" при вызове A - вызовется A2, D-D. При обращении к i - i3, j-j2
В месте "***" при вызове A - вызовется A2, B-B, D-D. При обращении к i - i1, j-j1
Этого в Си не хватает.
В какой-то ветке писали, что GCC поддерживает вложенные процедуры. Интересно не то что он поддерживает это (согласно стандарта данная фича не описана), а интересно то, что кто-то
сделал, и что кто-то
пробовал.
На мой взгляд, это подтверждает, что данной фишки не хватает тем, кто это испробовал.
Я не буду в Си использовать это до тех пор, пока оно не будет поддержано на уровне стандарта.