LINUX.ORG.RU

Один из лучших компиляторов C++ для Linux прекращает существование


2

0

Один из лучших компиляторов С++ для Linux, KAI C++, прекращает свое существование с 30 апреля 2002 года, через два года после покупки Kuck & Accociates Inc. компанией Intel. 30 апреля будут прекращены продажи, поддержка и исправление ошибок в существующих релизах будут продолжаться до конца 2003 года. Технологии KAI будут интегрированы в компиляторы Intel. В настоящее время компиляторы Intel уступают KAI как по уровню совместимости со стандартом, так и по возможностям оптимизации.

>>> Подробности



Проверено:

2 anonymous (*) (2002-05-18 12:57:46.509) А ты перечитай ещё раз дядьку Страуструпа, и разберись наконец-то чем виртуальная ф-ия отличается от невиртуальной. А то я смотрю у вас с вашим "гуру" на книжку которого ты ссылаешься каша в голове...

RoN

anonymous
()

Так. Какая польза от невиртуальной функции в примере Джойнера?
Еще раз. Он ругает то, что если разработчик какойто библиотеки,
по какой то причине, подумал, что функция не может виртуальной,
а ты думаешь иначе, то ты в пролёте.

anonymous
()

2anonymous (*) (2002-05-20 18:52:54.489):

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

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

anonymous
()

Ну вот есть невиртуальная функция (-утилита) 
A::F() и, соответсвенно, B::F().
Какой смысл в их совмесном существовании?
Не говоря уже о том, что мне кажется странной возможность
вызвать функцию A::F() для объекта класса B при наличии B::F().
Не зависимо от виртуальности/невиртуальности. 
Если хочешь вызвать функцию родителя, то, 
в других языках, есть "super" (или что-то в этом духе).

anonymous
()

Функции-утилиты я обычно не переопределяю - они выполняют свое мелкое, четко определенное дело. В случае же с переопределенной функцией - опять-таки, у меня встречалось именно то, что нужны обе - A::F() и B::F(). Очень хорошо это видно, когда классы A и B являются аргументами шаблона и F вызывается в одной из функций этого шаблона. Тогда виртуальность F может в некоторых случаях вредить и уж никогда не поможет.

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

Правда в грамотно спланированной библиотеке таких вопросов возникать не должно.

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

По крайней мере отсутствие нормальной реализации ключа export бъет значительно сильнее. Хотя, как мне кажется, можно реализовать _НОРМАЛЬНУЮ_ модульность без потери совместимости с С. Может быть я конечно и не прав.

anonymous
()

2anonymous (*) (2002-05-21 21:17:03.786):

Да и еще, насколько мне помнится, я видел программы, использующие эту особенность С++ (с ap->f()).

anonymous
()

по поводу -fprofile-arcs -fbranch-probabilities: сколько-нибудь заметного влияния на производительность на коде ленина не заметно.

а жаль :(

anonymous
()

Уважаемый hvv (*) (2002-05-12 10:47:25.539)

> А что такое edit-and-continue? Возможность редактировать значения пер-ных или редактировать код "на лету"? Если первое, то gdb это может.

Нет, именно второе :) И даже code в shared librarires :P

> Set Next Execution Statement gdb тоже может.

В MSVC можно *вернуться* к предыдущей команде. В gdb же можно только поставить breakpoint и запустить cont(inue), что отнюдь не то же самое

> И gdb еще имеет встроенный язык - с ним тоже можно unicode strings смотреть, > и если извращнуться, и содержимое stl-контейнеров.

Если извращнуться, можно DOS-приложение под VMS запустить ;)

YePhIcK
()

Уважаемый hvv (*) (2002-05-12 10:53:22.316)

> и что, такая оптимизация дала всего -1% загрузки CPU? Блин, и стоило так мучиться..

Да, стОило. Но не само по себе, а в комплекте с другими улучшениями. Кстати, мы говорим о CPU time, а не о wall clock time. Применив это к 96-процессорному HP монстру получается не так уж и дурственно (освобождается почти целый процессор как ресурс). Конечно, если мыслить категориями однопроцессорной домашней машины, которая должна сделать, к примеру, проверку орфограции 5-страничного текста, то, пожалуй, 1% никому и не нужен :)

YePhIcK
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.