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


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

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

А что плохого в этом примере? Что здесь неправильно работает? Я ни одной даже потенциальной проблемы не вижу. Числовые типы совместимы по присваиванию снизу вверх.

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

Чертыхания обычно связаны либо с кодом каких-то пионеров, либо с плохим алгоритмом, либо с плохими комментариями ну или с багами компилятора. Очень редко проблема возникает из-за Си как такового.
Хотя вполне согласен, что язык Си вовсе не шедевр. Тем не менее на нем проработаны многие задачи, к которым хрен пойми как подступиться из других языков.
К примеру, как на фортране написать обработчик прерываний? Как к фортрановской проге прикрутить паскалевскую библиотеку? Как на паскале описать функцию с переменным числом параметров?
И таких вопросов возникает миллион.

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

После #undef ессно не выругались. Компиляторы - Freescale CodeWarrior, MS C (не знаю какой, из XP DDK) и OW 1.6.


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

Убить об стену разработчиков библиотек. ;) Есть такая устоявшаяся практика - давать библиотечным функциям префиксы. Например все публичные функции в uIP начинаются с символов uip_. Все функции OS/2 имеют префикс Dos. А у PM обычно Win. И все работает изо всех языков.

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

Мне всегда и на всех языках было проще поставить скобки, чем вспоминать чего там написано в стандарте. Тебе то же самое советую :)

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

Совместимость есть, надо просто не юзать компилятороспецифичные вещи. Но ведь хочется :)
Проблемы регулярно возникают потому, что некоторые люди ничего кроме GCC не используют и о существовании других компиляторов не осведомлены. И пишут проги для GCC, почему-то утверждая что это язык Си. Уж их бьют по рукам как могут, но все никак не доходит. Не так давно была ругань в X, когда очередной герой нафтыкал GCC-измов. В результате на некоторых платформах "суперпортабельный" X-сервер невозможно было скомпилировать.



Sun 15 Jul 2007 17:25 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.