[an error occurred while processing this directive]
Ой, а что там не по-детски? (+)
(«Телесистемы»: Конференция «Языки описания аппаратуры (VHDL и др.))

миниатюрный аудио-видеорекордер mAVR

Отправлено dxp 11 февраля 2005 г. 11:14
В ответ на: Позвольте с Вами не согласиться. отправлено A_S_N 10 февраля 2005 г. 15:45

Можно спокойно написать

short a;
long b;
...
a = b;

И не получить никаких предупреждений. Это вполне допустимо правилами языка - стандартные преобразования.

С++, конечно, занчительно лучше типизирован, чем тот же С (именно лучше, а не сильнее, хотя выглядит оно "сильнее") - в нем типизация, во-первых, разумная, т.е. нет лишних вопросов как в примере выше, с другой стороны, где есть опасность, он не позволяет делать что попало, как в случае присваивания объекту перечислимого типа целых; во-вторых, он предоставляет средства легко обойти типизацию - путем явного преобразования типа. В этом случае компилятор умывает руки и явное преобразование типов означает, что программист в этом конкретном случае берет ответственность за последствия на себя. А чтобы эти места лучше было видно в исходном тексте, в С++ ввели новый синтаксис кастов, благодаря уродскому синтаксису которых, такие места неприятно мозолят глаза и заставляют лишний раз подумать, стоит ли прибегать к явному преобразованию типов, или лучше перепроектировать программу.

С++ не ставит задачу удержать программиста в конкретных рамках - Старуструп совершенно правильно писал, что при желании любой программист сможет обмануть любую защиту (путем хаков), только последствия этого будут еще хуже, чем в случае, когда этой защиты не было бы. С++ своими правилами преследует лишь цель защитить от случайных ошибок.

Что касается тенденции "HEX -> ASM -> C -> C++ -> C#", то, имхо, С++ совсем не идет в сторону C#. C# - это вообще другая ниша. Конкурент C# - это Java.

Насчет асма соглашусь только в рамках общего программирования - писание общего кода проекта. На процессорнозависимых вещах, где важен каждый такт, на DSP асм чувствует себя очень неплохо и, видимо, еще долго не будет иметь достойной альтернативы.

С->С++ - пожалуй, да. Но во многом это благодаря тому, что С++ является по сути надмножеством С.

Аду почти не знаю, но, помнится, такие фокусы, как в приведенном выше примере, там не проходят - т.е. именно она-то и не дает подобных вольностей.



Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru