[an error occurred while processing this directive]
|
Можно спокойно написать
short a;
long b;
...
a = b;
И не получить никаких предупреждений. Это вполне допустимо правилами языка - стандартные преобразования.
С++, конечно, занчительно лучше типизирован, чем тот же С (именно лучше, а не сильнее, хотя выглядит оно "сильнее") - в нем типизация, во-первых, разумная, т.е. нет лишних вопросов как в примере выше, с другой стороны, где есть опасность, он не позволяет делать что попало, как в случае присваивания объекту перечислимого типа целых; во-вторых, он предоставляет средства легко обойти типизацию - путем явного преобразования типа. В этом случае компилятор умывает руки и явное преобразование типов означает, что программист в этом конкретном случае берет ответственность за последствия на себя. А чтобы эти места лучше было видно в исходном тексте, в С++ ввели новый синтаксис кастов, благодаря уродскому синтаксису которых, такие места неприятно мозолят глаза и заставляют лишний раз подумать, стоит ли прибегать к явному преобразованию типов, или лучше перепроектировать программу.
С++ не ставит задачу удержать программиста в конкретных рамках - Старуструп совершенно правильно писал, что при желании любой программист сможет обмануть любую защиту (путем хаков), только последствия этого будут еще хуже, чем в случае, когда этой защиты не было бы. С++ своими правилами преследует лишь цель защитить от случайных ошибок.
Что касается тенденции "HEX -> ASM -> C -> C++ -> C#", то, имхо, С++ совсем не идет в сторону C#. C# - это вообще другая ниша. Конкурент C# - это Java.
Насчет асма соглашусь только в рамках общего программирования - писание общего кода проекта. На процессорнозависимых вещах, где важен каждый такт, на DSP асм чувствует себя очень неплохо и, видимо, еще долго не будет иметь достойной альтернативы.
С->С++ - пожалуй, да. Но во многом это благодаря тому, что С++ является по сути надмножеством С.
Аду почти не знаю, но, помнится, такие фокусы, как в приведенном выше примере, там не проходят - т.е. именно она-то и не дает подобных вольностей.
E-mail: info@telesys.ru