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


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

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

Расширения - вряд ли. А в 77-м динамических переменных тоже, насколько я помню, не было, так что тут они с IV-м равны.
К тому же n-арные деревья элементарно укладываются в одномерный массив. Деревья, у которых число потомков узла не ограничено, уложить, конечно, сложнее, но с ними и с помощью динамических переменных работать неудобно, поэтому их чаще всего просто трансформируют в бинарные.

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

Да ну? Опять пример из учебника:
--------
char ch;
int i;
float fl;
fl = i = ch = 'A';
--------
Что-то не вижу я здесь явных кастингов.

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

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

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

Это после #undef выругались? Что за компиляторы такие странные?

> А что за учебник-то?

М.Уэйт, С.Прата, Д.Мартин "Язык Си"

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

В Модуле-2 и Обероне - можно иметь, скажем, библиотеки Lib1 и Lib2 с функцией F(x) в каждой, и вызывать эти функции как Lib1.F(x) и Lib2.F(x) соответственно.
Собственно, слово "можно" в предыдущем предложении не совсем уместно - для каждой используемой библиотечной функции тем или иным образом должно быть явно указано, из какой библиотеки её следует брать.
А всё потому, что в самом языке есть понятие "библиотека" ("модуль", точнее).

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

"Приспичило" несколько другое - я же говорил о случае, когда для создания программы используются чьи-то чужие библиотеки. Вот как быть, если без них нельзя, а они конфликтуют таким вот образом?

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

А я с тобой и не спорил. Я, скорее, поддержал.

> PS. Весь плач по поводу ненадежности Си сводится к тому, что Си дает любому желающему возможность застрелиться.

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

Sun 15 Jul 2007 15:27 Mozilla/5.0 (OS/2; U; Warp 4.5; ru-RU; rv:1.7.12) Gecko/2005




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.