LINUX.ORG.RU

Новые версии компиляторов Intel C++ 7.0 и Intel Fortran 7.0 под Windows и Linux


0

1

Только что прочёл на iXBT эту новость:
http://www.ixbt.com/news/hard/archive...
Смотрите информацию от самой Intel по линку в подробностях.
Также можно попробовать 30 дневную версию каждого из компиляторов:
http://www.intel.com/software/product...

Самое интересное, список возможностей и требований к системе каждого
из них, можно узнать тут:
Intel C++ Compiler 7.0 for Linux
http://www.intel.com/software/product...
Intel C++ Compiler 7.0 for Windows
http://www.intel.com/software/product...
Intel Fortran Compiler 7.0 for Linux
http://www.intel.com/software/product...
Intel Fortran Compiler 7.0 for Windows
http://www.intel.com/software/product...

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

anonymous

Проверено: maxcom

Сорри, я не большой спец по ОО: а чем pure virtual отличается от просто virtual? Определение дайте, пожалуйста, хоть сколько-нибудь строгое.

gregbg
()

2nIKs, вы определенно идиот, функция обязана иметь тело тогда, когда оно кому-нибудь нужно (где-то вызывается) или вам надо перечень?

PS. в том и прелесть С++, что то, что тебе не нужно тебе не мешает.

PPS. а вот про "разное поведение при ошибках тра-ля-ля" это идиотизм, это не ошибка компилятора, это не ошибка языка, это ваша ошибка, а, т.к. в стандарте прямо сказано, что поведение не определено, то вот оно и разное в разных случаях (может быть разное от запуска к запуску программы)

вас-же не возмущает, что int i; f(i); это ошибка, причем такого-же рода, и указатели тут ни при чем, это простое "использование до присвоения значения" это очевидно можно получить во всех языках, и максимум, что может сделать компилятор, это выдать предупреждение, что возможно использование, до без инициализации/присваивания.

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

anonymous
()
Ответ на: комментарий от anonymous

>> 1) функция вызываеться в обязательном порядке, >> 2) я знаю только одну такую - это деструктор.

Требуется даже и без явного вызова деструктора.

class A { public: A() {} virtual ~A() = 0; };

A::~A() {} // !!!

class B : public A { };

main() { B *b = new B; }

P.S. Господа анонимусы: все-таки регистрация - вещь удобная.

-------------------------------------------------------------------- P.S.2. А вот еще вопросик. Что в наследуемости поддерживает C#, а C++ и Java не поддерживает? --------------------------------------------------------------------

NikS
()
Ответ на: комментарий от anonymous

>> 1) функция вызываеться в обязательном порядке, >> 2) я знаю только одну такую - это деструктор.

Требуется даже и без явного вызова деструктора.

class A { public: A() {} virtual ~A() = 0; };

A::~A() {} // !!!

class B : public A { };

main() { B *b = new B; }

P.S. Господа анонимусы: все-таки регистрация - вещь удобная.

-------------------------------------------------------------------- P.S.2. А вот еще вопросик. Что в наследуемости поддерживает C#, а C++ и Java не поддерживает? --------------------------------------------------------------------

NikS
()
Ответ на: комментарий от anonymous

>> вы определенно идиот

Вопрос теперь такой а может ли чистая виртуальная функция не иметь тела? Так кто идиот?

NikS
()

безусловно удобная, но в данном случае бессмысленная, мне от вас ничего не нужно. деструкторы вообще почти никто(кроме писателей распределителей памяти) явно не вызывает, и что это меняет? все равно вызывается явно/неявно какая разница в данном случае?

PS. на C# мне всеравно. совсем. ибо нет шаблонов (про множественное наследование не знаю)

PPS. и не надо людям экзамен устраивать с умным видом если сами нихрена не знаете про С++ навскидку: шаблоны, шаблоны-члены-шаблонов(auto_ptr), виртуальные/невиртуальные базовые классы.

anonymous
()

Дорогой NikS, при всем уважении к тебе, но ты перевел разговор из pure C на C++. Это два достаточно разных языка. Тот ляп, что ты допустил раннем постем никак твоими глубокими познаниями из ОО не компенсируешь, к сожалению.

gregbg
()

to NikS

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

Каксательно данного примера - это из серии тех вещей, которые не стоит делать никогда. Просто фокусы, которые демонстрируються для показа недостатков языка С++ :-).

По поводу последнего вопроса ничего не могу сказать - не знаком с С#.

P.S. Воспользовался вашим советом о регистрации.

Gavrila
()

В раннем посте, то бишь ;)

gregbg
()

очевидно может, и большинство их не имеет, за ненадобностью.

anonymous
()

И еще насчет ICC-

Скомпилированный им LAPACK (Linear Algebra PACKage) работает ровно вдвое быстрее по сравнению с gcc.

gregbg
()
Ответ на: комментарий от NikS

>> 1) функция вызываеться в обязательном порядке, >> 2) я знаю только одну такую - это деструктор.

Если бы Вы еще показали практическую ценность сей конструкции, да так, чтобы Ваша фирма получила несомненный benefit от ее использования, я был бы Вам очень благодарен. Знаете, ни одному нормальному человеку сделать деструктор = 0 в голову не прийдет.

anonymous
()

to anonymous

Да никакой практической пользы :-). Единственное, что я могу придумать, это запрет на создание экземпляров класса. Пришлось бы объявлять dummy функции абстрактную, а так можно использовать для этого деструктор. Но ещё раз повторю, если я вижу подобные вещи в коде работающих со мной программистов, начинаю очень злиться и принимать меры :-).

Gavrila
()
Ответ на: комментарий от NikS

<Требуется даже и без явного вызова деструктора. >

Неверно. Открываем стандарт и смотрим пункт 10.4
"A pure virtual function need to be defined only if explicitly called with the qualifier-id syntax"
Смотрим пункт 3.8 и читаем
"if there is no explicit call to the destructor or if a delete-expression is not used to release the storage, the destructor shall not be implicitly called and any program that depends on the side effects produced by the destructor has undefined behavior".

Думаем, и понимаем, что вы неправы.

AC
()

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

anonymous
()
Ответ на: комментарий от Gavrila

На самом деле это Brainbench вопросик (может попасться). Сначала спросят типа "может ли чистая виртуальная функция иметь тело?". А потом "А в каких случаях PVMF ОБЯЗАНА иметь тело"

#include <iostream> using namespace std;

class A { public: A() {} void virtual f() = 0; };

void A::f() { cout << "PVMF" << endl;}

class B : public A { public: void f(); };

void B::f() { cout << "F" << endl; }

main() { B *b = new B; b->f(); return 0; }

Ну а теперь, специалист по вызовам PVMF, попытайтесь вызовать PVMF. ;))

A *a = new A; // свалитесь - класс то абстрактный!

Тут уж компайлер Вас пошлет далеко и надолго.

Так что

#include <iostream> using namespace std;

class A { public: // void virtual f() = 0; // класс будет конкретным void virtual f(); };

void A::f() { cout << "AF" << endl;}

class B : public A { public: void f(); };

void B::f() { cout << "F" << endl; }

main() { B *b = new B; b->f();

A *a = new A; a->f();

return 0; }

Создать инстанцию класса с PVMF нельзя, не говоря уж об вызове PVMF.

NikS
()
Ответ на: комментарий от anonymous

>to anonymous Сарказм здесь неуместен.

Блин, неужели не понятно, NiKS манипулятор от Бога, с такими людьми нет смысла разговаривать серьезно - ты ему про Фому, а он про Ерему. Вообще, с какого рожна я обязан ему отвечать про этот самый финт ушами, может я C++ вообще не знаю. Я на брайнбенче мест не занимал.
Я ответил честно: в моей практике такого не встречалось, использовать рискованные конструкции я не люблю.
Пускай он теперь покажет пример того, как это можно на практике использовать... Или тоже в интернете вычитал.

P.S. Но тему он перевел классно. Опять-таки про искусство надувать щеки.

anonymous
()

>> ни одному нормальному человеку сделать деструктор = 0 в голову не прийдет

А в каком пакете использовались PVMF?

NikS
()
Ответ на: комментарий от AC

>> Думаем, и понимаем, что вы неправы

Думать вредно. Примерчики свои я положил ни куда нибудь, а в текст Форума. g++ у Вас на машине - и вперед. Хорошо?

Я же все тестирую, а потом clipboard в форум.

NikS
()

Одно время я сталкивался близко с IBM, это же вообще другой мир. Вы NikS живёте в нём и пытаетесь нам преподнести свою идеологию. Занятие абсолютно бессмысленное. Несмотря на все ваши заявления огромное количество софта пишеться на С/С++ и так будет ещё очень долго.

Gavrila
()
Ответ на: комментарий от anonymous

>> насчет C#, ты имеешь ввиду abstract классы

Нет, циркулярную наследуемость (у Мигеля на www.go-mono.org даже примерчик был. Кстати, это было в IBM VisualAge for C++ 4.0 - к счастью продукт загнулся)

NikS
()
Ответ на: комментарий от Gavrila

>> вообще другой мир

Я не сотрудник IBM. Вы умрете со скуки, если будете работать в штате IBM EE/A на Бахрушина, 18. Здесь хоть пофлеймить можно. Но Вы правы - я сейчас из одного проекта постораюсь вышибить C++ и заменить его на Sun J2EE или IBM WebSphere.

NikS
()
Ответ на: комментарий от Gavrila

>Да никакой практической пользы :-). Единственное, что я могу придумать, это запрет на создание экземпляров класса.

Вообще-то для этого куда проще использовать protected конструктор.

anonymous
()

"циркулярную наследуемость" чего ? приведи будь добр англиское название сего термина

anonymous
()

nIKs: опять тупим? детский сад прямо.

struct A { virtual void f(void)=0; };

void A::f(void) {std::cout << "A";}

struct B : public A { void f(void); };

void B::f(void) {A::f(); std::cout << "B"; }

int main(void) {B *b=new B; b->f(); return 0;}

то-есть таки можно вызвать A::f если у нее есть тело.

anonymous
()
Ответ на: комментарий от NikS

<Думать вредно. Примерчики свои я положил ни куда нибудь, а в текст Форума. g++ у Вас на машине - и вперед. Хорошо? >

Нет, не хорошо. g++ -- не мерило стандарта, а его _реализация_. А что написано в стандарте, я вам привел. Если g++ ведет себя не так -- это несовместимость со стандартом. Все.

Кстати, может и вам вопросик задать?
#include <iostream>
struct A {
virtual void f() {std::cout << "f" << std::end;}
int i = 0;
};

struct B: public A {
void f() = 0;
};

struct C: public B {
void f() const {std::cout << "f" << ":" << i << std::endl;
};

void my_func()
{
A* pa = new C;
pa -> f();
}

Что произойдет в строчке pa -> f(); ?

AC
()
Ответ на: комментарий от anonymous

>> protected конструктор

А есть ли в C++ интерфейсы, как в Java? (Вопрос риторическо-наводящий, дабы меня ни в чем не обвинили)

NikS
()
Ответ на: комментарий от AC

да, и во избежание тупых придирок
void f() const {std::cout << "f" << ":" << i << std::endl;

не хватает закрывающей скобки. То есть она там должна быть.

AC
()

Вот взял и стянул Фортран и смотрю внутрь этого тара. Во-первых, 2/3 из файла мне не нужны, понеже не имею я пока Итаниума, к моему сожалению, ессессено. Во-вторых, при операциях с ихним рпм, начинаются матюки на нарушение сумм и т.д. Может кто-то уже туда трояна запихнул?

anonymous
()
Ответ на: комментарий от AC

>> Что произойдет

Простите, Вы утверждаете, что данный пример откомпилируется? Я Вас правильно понял, чтобы не было недоразумений?

NikS
()

Никс, урод, задолбал нах уже! Если ты утверждаешь, что Java-компилятор отлавливает неопределенные переменные, то ты глубоко ошибаешься. Вот ЭТОТ код javac пропускает? Пропускает. Хотя, в принципе, ситуация совпадает с твоим C'шным примером фактически 1-в-1. Статическая переменная явно не определена? Не определена. Компиляция прошла? Прошла. Все, разговор закончен. И не надо "ля-ля", что "я так не пишу" - ни один нормальный человек тоже не пишет на С так, как в твоем примере.
public class aa {
static int i;
public static void main(String p[]) {
System.out.println("i="+i);
}
}
P.S.: я, вообще-то, тоже на баринобенче имел "мастера" по Java - еще в 2000 году, так что это - не показатель

anonymous
()
Ответ на: комментарий от AC

>> Они отличаются от жавских

Спрашиваю Вас максимально осторожно: что Вы имеете в виду под словом "отличаются"? (Сейчас прийдем потихонечку к ромбовидной наследуемости в Java.)

NikS
()
Ответ на: комментарий от NikS

<Простите, Вы утверждаете, что данный пример откомпилируется? Я Вас правильно понял, чтобы не было недоразумений? >

заменяйте в классе А int i = 10; на const int i = 10; и думайте.
надеюсь, вы достаточно честны, чтобы ответить _без_ компилятора.

AC
()
Ответ на: комментарий от anonymous

>> Все, разговор закончен

А что такое, мистер Brainbench wrapper classes? Зачем тогда еще и они нужны? (Дали бы id - посмотрели бы, подивились бы на Ваш резалт)

>> С так, как в твоем примере

Так все же в какой библиотеке использовались PVMF? (Под OS/2 еще была, не IBM.)

NikS
()

> А есть ли в C++ интерфейсы, как в Java? (Вопрос риторическо-наводящий, дабы меня ни в чем не обвинили)

Встречный вопрос. А есть ли в Джава шаблоны, множественное наследование и переопределение операций ?

Gavrila
()

Уважаемый NiKS. Вот Ваши два высказывания:

"а самом деле, когда Вы дорастете до моего сороколетнего возраста, то поймете, что "A customer needs a benifit, not features". И то что кто то занял первое место на BBench по C++, еще не значит, что он принесет фирме прибыль. Ценят за умение сдать работоспособную программу в срок (адаптивность, усердие, умение работать в команде), а не за знание, скажем, десяти языков программирования, включая диалекты C++ gcc 3.20 и icc 7."

">> Так что мой ответ - _практически_ никогда.
А теперь правильный ответ: "Если эта PVMF является деструктором". Пример нужен?

PS На каждого мудреца довольно простоты."

Либо пример практического использования в студию, либо таки "бла-бла-бла"...

anonymous
()
Ответ на: комментарий от NikS

< что Вы имеете в виду под словом "отличаются"? >

например то, что интерфейсы в джаве, в отличие от абстрактных классов в плюсах, не могут иметь неконстантных членов.

AC
()

>> А есть ли в Джава шаблоны, множественное наследование и >> переопределение операций ?

Хороший вопрос!

1. Шаблоны - нет. (Кстати, завтра, на трезвую голову задам красивый вопросик про шаблоны в C++.)

2. Множественное наследование. Есть (AC радостно потирает руки - сейчас я его поймал! - но, ай!...) не для классов, а для интерфейсов.

3. переопределение операций - только для конката строк.

P.S. Java не ориентируется на features, а ориентируется на benifit.

NikS
()

to NikS

Вы неправильно определили мистера BrainBench :-). К сожалению я не помню id, это было давно, тогда ещё эта компания называлась ТекМетрикс. Не уверен, что мои результаты сохранились - если мне не изменяет память, то это был год 98-99 и тест по С++ был намного сложнее нынешнего. Однажды я помогал получить мастера своему товарищу :-) Это к тому, чего стоят эти сертификаты :-).

Gavrila
()
Ответ на: комментарий от NikS

>Так все же в какой библиотеке использовались PVMF?

Вопрос уровня: в какой библиотеке использовался оператор присваивания? (Под DOS еще была, не MS.) Ась? Ответ в студию, жду десять минут...

anonymous
()

ау товарищ всезнайка, так что такое "циркулярную наследуемость". Можно все таки узнать оригинальный термин. Приведенная ссылка ведет в никуда, это все равно что дать ссылку на google :)

anonymous
()

молодец гаврила :) а про pure virtual niks усох определенно, сразу тему стал менять как понял что опять облажался (см пример у anonymous ([96]*) (2002-12-05 18:50:22.821) )

anonymous
()
Ответ на: комментарий от AC

>> А int i = 10; на const int i = 10

Ну пример, конечно, не рабочий. Ваша программа просто работать не будет - но переходить на личности и радоваться Вашим ошибкам я не буду. Договорились?

NikS
()

Ты никс, скажи, чудила, почему мой jav'ский пример компилируется? И чем такая "компилируемость" и падучесть в JRE лучше, чем падение с export MALLOC_CHECK_=2 или с информацией от EFence? Анонимус "aa.java" :-)

anonymous
()
Ответ на: комментарий от AC

>> А int i = 10; на const int i = 10

Ну пример, конечно, не рабочий. Ваша программа просто работать не будет - но переходить на личности и радоваться Вашим ошибкам я не буду. Договорились?

NikS
()

Да уж! Вот такие идиоты гордо называют себя профессионалами :(
Обидно однако...

anonymous
()

>> такие идиоты

Вас задело, то что Вы не смогли ответить на вопрос про виртуальные функции? Так значит Вы в эпоху IBM OS/2 и Borland OWL для него пешком под стол ходили. Кстати, юноша, мне интересно спорить с AC, хотя я стараюсь его максимально завести, с Gavrila, но не с Вами - ибо ничего конструктивного от Вас я не наблюдаю. Так что я просто буду игнорировать анонимусов, хорошо?

NikS
()

2niks: >> А int i = 10; на const int i = 10

Ну пример, конечно, не рабочий. Ваша программа просто работать не будет - но переходить на личности и радоваться Вашим ошибкам я не буду. Договорились?

а почему не работает знаете? жду ответа 5 минут :)

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