RU/2: Форум. Общение пользователей и разработчиков OS/2 (eCS). : Может я не прав, но..


Список сообщений | Написать новое | Ответить на сообщение | Домой Поиск:
Предыдущее сообщение | Следующее сообщение
From : LightElf
To : Юрий Пронякин
Subj : Может я не прав, но..

> > Я вот как-то не уверен, что они писали компайлеры на Фортран IV.
>
> Я с ними работал в конце 80-х годов, а компиляторы они писали ещё до того, как я туда пришёл. Какой это мог быть фортран?

скорее всего 77 или какие-то специфические расширения использовали ИМХО.

> > Брр. Это как? Любой компилятор выругается на несоответствие типов.
>
> В языке, в котором отсутствует строгая типизация (а С ведь такой, не так ли?) полно ситуаций, когда выполняется автоматическое преобразование типов, поэтому компилятору в них ругаться просто не на что.

Си имеет весьма строгую типизацию. Другое дело, что он дает возможность эту типизацию обойти при необходимости. Можно чего угодно куда угодно закастить, явно это указав. Но это уж никто не заставляет делать.

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

Ну какой смысл рассуждать о временах Очакова и покоренья Крыма. В K&R сях ессно много было упрощений и допущений. Дык им и не пользуется никто.

> По поводу undef Славик уже сказал (я, кстати, именно об этом и думал, когда писал). Но вот сейчас передо мной лежит учебник по С, и в нём такой пример напечатан:
> ---------
> #define HUGE 5
> [...]
> #define HUGE 10 /* HUGE переопределён как 10 */
> ---------
> и никаких #undef между ними...
> Должен ли я не верить учебнику?

Я Славику уже на это ответил. Из трех мной используемых компиляторов Си все три выругались. У кого warning, у кого error. Молча ни один не сожрал. А что за учебник-то?

> >> Или случай, когда в двух используемых библиотеках имеются одноимённые функции - тоже кровь попортить может.
> >
> > Линкер тебе сообщит, что имеются одноименные функции (укажет имена) в двух либах (укажет либы) и чего-то некругло.
>
> Во-первых, линкер - не компилятор. Во-вторых, что с того, что он скажет? Мне же программу сделать нужно. А как, если мне для этого нужны обе библиотеки? Ведь язык не даёт мне возможности явно указать, из какой именно библиотеки я хочу функцию использовать.

Стоп. А в каком языке (кроме пожалуй явы) такое вообще возможно? В Сях имя функции - идентификатор, который обязан быть уникальным. Это, так сказать, правило языка. Если кому приспичило сделать неуникальные идентификаторы, то наверно ему стоило бы подумать о последствиях таких действий?

> У меня в университетет был такой предмет - "Логика". Так там наc учили, что из ложных утверждений вполне может следовать истинный вывод :-)

Из ложных утверждений никаких определенных выводов сделать нельзя. Меня в университете учили так. ;)

PS. Весь плач по поводу ненадежности Си сводится к тому, что Си дает любому желающему возможность застрелиться. Дело вкуса в общем-то. А о вкусах как известно не спорят. Мне лично язык, постоянно держащий за подтяжки, утомителен.


Sun 15 Jul 2007 14:04 Mozilla/5.0 (OS/2; U; Warp 4.5; en-US; rv:1.8.1.4) Gecko/200




Programmed by Dmitri Maximovich, Dmitry I. Platonoff, Eugen Kuleshov.
25.09.99 (c) 1999, RU/2. All rights reserved.
Rewritten by Dmitry Ban. All rights ignored.