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
Ответ на: комментарий от NikS

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

Про идиотов это не я написал, хотя Вы обращаетесь явно ко мне...
Так таки пример практического использования в студию. Кстати, что будет если в java в методе finalize (или как он там называется, не специалист), связать финализируемый объект с живущим? Ась? Вопрос явно более насущный, чем абстрактный деструктор.

P.S. Насчет OWL Вы опять облажались по полной :) Открою Вам секрет, что OWL была и под Windows и абстрактные функции использовались не только в OWL.

anonymous
()

А потому что согласно стандарту ISO C++ в строке 4 ошибка. Да и с ::end ошибка.

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

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

Уважаемый NikS! Я вам даже подсказываю -- да, он действительно не компилируется, и до работы программы дело не дойдет. В этом, собственно, и был вопрос -- ПОЧЕМУ? И ЧТО скажет компилятор? Отвечайте на этот вопрос _сами_ -- и БЕЗ компиляции. У вас сколько-то там минут. Жду.

AC
()

>>>

Открою Вам секрет, что OWL была и под Windows и абстрактные функции использовались не только в OWL.

>>>

И в чем же тогда "облажался", если "использовались"?

NikS
()

2niks: а компилироваться не будет просто потому, что неконстантные члены необходимо инициализировать используя синтаксис инициализатора конструктора, примерно так:

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

при этом совершенно все равно, абстрактный класс или нет.

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

У вас ошибка в строке 4. ISO C++ это не пропустит.

кроме того "endl", а не "end".

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

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

А может, вам задать вопросик про шаблоны? Не боитесь.

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

Наследование интерфейсов -- это, в общем-то, терминологическая неточность. Как можно наследовать объектам без состояния (ну, хорошо, типа с единственным)? Говоря про наследование интерфейсов, правильнее, скорее говорить про множественное "определение" (по аналогии с definition-declaration), или множественное "уточнение".
Вообще, сам по себе термин "наследование" не слишком верен. В реальных ситуациях (а ООП это типа "моделирование" реального мира) очень часто наследник не _содержит_в_себе_ предка (что мы имеем в большинстве языков ООП), а _является_ им, и _уточняет_ некоторые его свойства. Поэтому правильнее было бы говорить не "наследование", а "уточнение".
class A refines B {
}

AC
()

==============================================================
#include <iostream>
struct A {
virtual void f() {std::cout << "f" << std::endl;}
const 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();
}
================================================================

Опять детали. А так? Что _должен_ сказать компилятор, и где?

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

>> равно, абстрактный класс или нет.

??? Я не понял юмора. Если нужна инициализация:

#include <iostream>

using namespace std;

struct A {

static int i;

};

int A::i = 4;

main() { A *a = new A; cout << a->i << endl; return 0;

}

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

>И в чем же тогда "облажался", если "использовались"?

Ну как бы Вам объяснить доходчивей: представьте, что Вы сомневаетесь в том, что я знаю что такое овощи, на том основании, что мне не известно, сколько стоит килограмм помидоров в магазине напротив Вашего дома; а я, оправдываясь, говорю: помидоры и напротив моего дома продаются и даже огурцы. Вы облажались в том, что пытались использовать в споре это вероятное мое незнание. И это свидетельствует о том, что либо у Вас с логикой не все в порядке, либо Вы сознательно занимаетесь демагогией...

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

Я уже сказал - ругнется в строке 4 - это несмоответствие ISO C++. (На end и незакрытые скобки внимания не обращаю.)

Так что спасибо зе еще один камушек в огород C++.

NikS
()

>> Вы сознательно занимаетесь демагогией...

Конечно! Демагогия - это же "ведение народа". Только вот пример с PVMF показывает (еще лишний раз показывает) насколько запутан C++ по сравнению с Java 2.

NikS
()

<Я уже сказал - ругнется в строке 4 - это несмоответствие ISO C++>

static const int i = 0; естественно.

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

>> static const int i = 0; естественно.

Позвольте, но как же можно играть, если правила игры все время изменяются.

NikS
()

<Позвольте, но как же можно играть, если правила игры все время изменяются. >

Аа, не нравится! Ну а мне не нравится, когда так делаете вы. Квиты. А теперь -- что ж все-таки в примере будет с виртуальными функциями.

AC
()

никс, не меняейте опять тему когда чувствуете паленым запахло.

static в оригинале не было. было вот что:

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

на вопрос вы так и не ответили(за полчаса). чем подтвердили свою репутацию "нахватался по верхам" правильный ответ вам привели, но у вас избирательная внимательность :)

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

>Только вот пример с PVMF показывает (еще лишний раз показывает) насколько запутан C++ по сравнению с Java 2.

Вы таки не ответили на вопрос о финализаторах и не привели практический пример использования заявленной Вами возможности.

anonymous
()

Подведем резюме. Как говорится "в чужом глазу пылинку видим, а в своем бревна не различаем."

В Java в отличие от C++ очень четкая и понятная инициализации.

Например:

class D { Integer i;

public static void main(STring[] args) { System.out.println(i); } }

Получим null, поскольку Integer имеет ссылочный тип (это wrapper-class).

Если int i; то получим 0, ибо i - это примитивный тип.

Ибо так написано в книге Гослинга и Java 2 ExamCram.

А инициализация очень проста

static Integer i = new Integer(4); // получим 4

PS Ну а шибко умные, но неоцененные работодателями, крутые программеры могут иметь свое собственное мнение по любому вопросу.

NikS
()

>> static в оригинале не было. было вот что

Я ответил, что допущена ошибка в строке 4. Что еще Вам надо? Вы мой начальник? В мои служебные обязанности входит править написанный с грубыми ошибками код? С каких это пор личное недовольство востребованности своего таланта, перенесенное в личную неприязнь стало аргументом? Пойдите к своему работодатлю и скажите, что Вам такому умному, забившему тупого Java программера-ремесленника платят не по чину.

NikS
()

ну да, static Integer i = new Integer(4); // получим 4 это точно проще static int i = 4; намного проще.

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

<Подведем резюме. Как говорится "в чужом глазу пылинку видим, а в своем бревна не различаем.">

Ну, действительно, подведем. Кстати, подводят итоги.
1. Чем линковка с С-библиотекой отличается от линковки с С++-библиотекой, вы _не_ знаете.
2. Как работать с указателями, вы _не_ знаете.
3. Пример с деструктором вы привели _не_ правильный.
4. Как в С++ работает dynamic storage duration, вы _не_ знаете.
5. Как работают чистые виртуальные функции в С++, вы _не_ знаете, поскольку не нашли правильного ответа на поставленный вам вопрос.

> public static void main(STring[] args) { System.out.println(i); } }

#include <iostream>
int main(int argc,char* argv[])
{
int* p_i;
std::cout << *p_i << std::endl;
return 0;
}

получим -- undefined behaviour

>Если int i; то получим 0, ибо i - это примитивный тип.

Во-первых, i -- _примитивного_ типа, а не примитивный тип. Элементарная терминология.
Во-вторых,
если
int i;
std::cout << i << std::endl;
получим 0, поскольку область памяти, занимаемая объектом скалярного интегрального типа (и не только), по умолчанию инициализируется 0.

<Ибо так написано в книге Гослинга и Java 2 ExamCram. >

Ибо так написано не в _книге_, а в _стандарте_ языка С++ ISO/IEC 14482

<могут иметь свое собственное мнение по любому вопросу. >

Ну, а единственное правильное мнение -- несомненно ваше. Ясно. В сад.

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

>> точно проще static int i = 4; намного проще

Ну передайте в WSTK от WebSphere примитивный тип данных, а не экземпляр wrapper-class'а. Зачем Гослинг ввел понятие wrapper классов?

P.S. Не сочтите за личным вопросик - а все таки по жизни чем Вы на хлеб зарабатываете? Ну просто сгораю я от любопытства, честное слово. Неужто Microsoft Office или Photoshop пишите? Ну не востребован C++ в серьезных проектах (даже центр управления DB2 и то на Java написан;)).

NikS
()

>> Пример с деструктором вы привели _не_ правильный.

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

P.S. Да, чуть не забыл. В Java нет указателей.

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

<Зачем Гослинг ввел понятие wrapper классов? >

Наверное, потому что чтобы не усложнять компилятор. Как результат -- врапперы -- источник нехреновых торомозов. Обворачиваться каждый раз при доступе к хэш-таблице -- это очень "приятно". Зато авторам всяких java performance tips есть, что кюшать.

AC
()

>Зачем Гослинг ввел понятие wrapper классов?

а хрен его знает, расскажите? а занимаюсь я моделированием, численными рассчетами, написанием систем управления железом. и польза от С++ я вижу не по наслышке.

>Ну передайте в WSTK от WebSphere примитивный тип данных, а не экземпляр wrapper-class'а. ну это вообще уже перепирательство на уровне детского сада. тож самое могу сказать, запользуйте полиморфизм времени компиляции на жабе, напишите что-нить вроде mtl (искать в гугле matrix template library)

anonymous
()

Симметричный ответ:

1. Чем работа Sun Java отличается от IBM Java вы _не_ знаете. 2. Как работать wrapper-classaми, вы _не_ знаете. 3. Пример с Java классами вы привели _не_ правильный. 4. Как в Java работает HotSpot, вы _не_ знаете. 5. Как работают Just-In-Time, вы _не_ знаете.

Это можно продолжить для бесконечности. Интересно, только, почему Вас это задело? Неужто сокращается число программ, для которых требуется C++ ? (судя по www.dice.com - это так)

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

>> польза от С++ я вижу не по наслышке

>> занимаюсь я моделированием, численными рассчетами, >> написанием систем управления железом

Но это же абсолютно не корпоративная работа. В каком-нить НИИ что-ли (хоть бы и импортном)?

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

<Укажите, что там неправильно. Приведите правильный пример. >

Я ж вам объяснял. Но мне не в лом и повторить. По стандарту, чистая виртуальная функция должна быть определена, только если вызывается. Дестуктор вызывается или явно, или при явном освобождении памяти. По стандарту, деструктор не будет вызван неявно, если не вызван явно. Соответственно, например, при завершении программы деструкторы динамически размещенных объектов неявно вызваны не будут. В вашем примере деструктор явно не вызывается, память явно не освобождается. Поэтому, он вызван не будет, соответственно стандарту, его определение не нужно. Следовательно, требования g++ определения деструктора -- несовместимость со стандартом. Так понятней?

AC
()

>> Как результат -- врапперы -- источник нехреновых торомозов.

Удивляюсь я Вам - ну нет у нас машин хуже Pentium IV 2000 1GB RAM. Сам видел как нехилую технику в Дассо и Аэроспасьяль из Монпелье откружали. Неужто Вы в своем Нанте в нищем юниверситете на социальном пособии сидите?

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

"Если на клетке слона написано буйвол - не верь глазам своим"

Алексей (? - Alex), Вы просто решили пофлеймить.

У Вас компайлер есть?

Запустите мой пример:

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

// A::~A() { }

class B : public A
{
};

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


Будет у Вас undefined reference!
Ну не построится он у Вас, пока Вы не откомментируете:

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

A::~A() { }

class B : public A
{
};

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


У Вас есть gcc компайлер?

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

<Удивляюсь я Вам - ну нет у нас машин хуже Pentium IV 2000 1GB RAM.>

Повторю в десятый раз доставший аргумент -- машина должна РАБОТАТЬ, а не заниматься ерундой типа разворачивания/оборачивания. Если у нее много мегагерц, она должна или быстрее "решать" имевшуюся задачу, или решать за то же время более сложную задачу -- а не решать ту же за такое же время или медленнее -- но зато новомодно-понтовым способом от какого-нибудь очередного "гуру". Это маразм высшей пробы -- когда при часто нужной операции (доступ к хэш-таблице) чуть ли не половина времени тратится на _ерунду_, без которой прекрасно можно было бы обойтись всего-навсего при наличии чуть более умного компилятора. Да, кстати, в MS, наверное, такие глупые нищие уроды работают, не понимают супер-ентреприз-программера Никса, у которого машина об 2 гигагерца -- заморачиваются каким-то идиотским unboxing, чтобы компилятор -- какой кошмар! -- делал более эффективный код. Зачем?? Хихахерцев же есть!

<Сам видел как нехилую технику в Дассо и Аэроспасьяль из Монпелье откружали>

И? Вы еще скажите, что CATIA (особенно счетная часть) написана на джаве. А я посмеюсь.

<в нищем юниверситете на социальном пособии>

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

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

>> cледовательно, требования g++ определения деструктора -- >> несовместимость со стандартом.

Еще раз проверил с icc 7. Те же эффекты, что и в gcc.

>> Так понятней? Так понятней?

P.S.У Вас установлен icc 7?

NikS
()

>> CATIA (особенно счетная часть) написана на джаве. А я посмеюсь.

Я такого не говорил - не пердергивайте.

>> Во-первых, я не в университете.

ВО-первых, если в Дассо, то должны знать, на чем (какой СУБД) сидит CATIA. И что является управляющей программой этой СУБД.

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

NikS
()

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

да, пример не соберется, косяк gcc, на icc позже проверю. хотя можно уподобиться вам и докопаться до:

main()

{

...

return 0;

}

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

<"Если на клетке слона написано буйвол - не верь глазам своим" У Вас есть gcc компайлер?>

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

AC
()

>>>>>

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

>>>>>

Хорошо, но в таком случае почему никто не возмутился использованием Java & etc. компайлеров? Где оппозиция IBM, Sun и MS? Почему Вы, лично Вы или кто-то разделяющий Вашу точку зрения, ни Гейтсу, ни Гослингу об этом не доложили? Значит все-таки не зря тратятся мегагерцы на то, чтобы не было ошибок с указателями?

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

>> Ладно.

Алексей (я правильно имя называю - там написано Alex) давайте на мировую. Прошу прошения, если я в пылу полемики перешел на личности - подводит холерический темперамент. Ну завожусь я иногда без тормозов, когда тема интересная. Так что спасибо за интересную дискуссию и за интересные идеи, пожалуйста, извините, за личностный неконструктивный флейм. Успехов Вам в работе.

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

<Хорошо, но в таком случае почему никто не возмутился использованием Java & etc. компайлеров?>

Зачем возмущаться? Просто там, где нужна эффективность, эти технологии не используются. А там, где некритично -- пожалуйста.

<ни Гейтсу, ни Гослингу об этом не доложили?>

Гейтс и сам об этом знает.

<Значит все-таки не зря тратятся мегагерцы на то, чтобы не было ошибок с указателями?>


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

AC
()

>> вы-же во-первых начали бахвалиться своими сертификатами,

Я как то говорил в дискуссии про LPI сертификацию, что BBench - ну типа развлечения, азарт охотничий. А так они, по большому счету, в отличие от SCP не нужны.

>> а во-вторых сами постили глупые вопросы и при этом с умным видом устраивали "экзамены".

Какие еще "экзамены"? Просто я завелся, доказывая свое понимания преимуществ Java перед C++. Извините, если переборщил.

NikS
()

>>>>

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

>>>

В Samlltalk'e (включая IBM VAST) это так и было.

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

<давайте на мировую. >

ок.

<Успехов Вам в работе. >

аналогично.

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

<В Samlltalk'e (включая IBM VAST) это так и было. >

Знаю. Спасение утопающего. VASTом я занимался, продвигал.

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

так -- общее замечание gcc отлавливает pure virtual method call т.е не следует строго стандарту (где-то 2.95) ?;) (в стандарте сказано - undefined ?;) но я ни в коем случае ничего другого сказать нихочу .... ж) и не могли бы Вы все объяснить на кой .... развели бред .... ? -- кстати статик члены нужно инициализировать вне класса ?;() (кругом такие гении - я просто весь в смущении)

1) кто нибудь ложил где нибудь icc на ftp - вроде бы в начале разговор шел о нем ? 2) кто нибудь может дать c++ standart draft в электоронном виде ?

P.S. при чем тут Java ..... ????? весь в недоумении

yeolahim
()

Хотелось бы все-таки узнать, насколько (не)выгоднее использовать Intel compiler вместо gcc (по быстродействию, совместимости и т.д.)?

anonymous
()

>кто нибудь ложил где нибудь icc на ftp

А зачем? Ведь с Intel-овского сайта прекрасно качается. Я, например, только что закачал с европейского зеркала.

anonymous
()

---- OFFTOPIC ---- Господа! Я _ОЧЕНЬ_ люблю читать форумы LOR, где число сообщений буквально зашкаливает. Сразу видно, что кто-то из достопочтенных сэров, читающих наизусть высокопоэтичные тексты, ласково называя свой родной язык именем грязной амфибии, восстал во весь свой могучий n-летний рост, и, грозно потрясая написанными книгами, и опухшим от гордости brainbench'eвым достоинством, пытается что-то доказать почтенной публике. Этот пухлый, уже в годах, сэр смешно надувает свои красные щёки, как 18-летний юнец, видимо рассчитывая на всеобщее признание и поклонение.

Я в шоке. Я не думал что n так велико. Может пора остепениться? ---- OFFTOPIC ----

Господа, прошу прощения за оффтопик, но может кто-нибудь тут будет говорить по теме и приведёт ещё немного примеров в пользу использования того или иного компилятора для ряда задач, а то Вы что-то немного удалились от темы.

anonymous
()

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

anonymous
()

Так все-таки , никто не собирал ядро с помощью icc ?

anonymous
()

2 NikS:

>> FORTRAN просто НЕ годится.

Совершенно верно, не годится FORTRAN для аналитических вычислений.

> Простите, а это случайно не Вы ли были в открытом мною треде про C# с > Фортран-анонимусом? Я только следил, но не вмешивался. Хотя любитель > Фортрана оказался молодцом - он отвечал конкретными аргументами, а не > парировал переходом на личности.

По поводу FORTRAN я с Antichrist'-ом спорил в треде про Pascal - точнее, FORTRAN как-то боком зацепили, основной темой было сравнение GiNaC vs Ocaml; но я бы не сказал, что г-ну Antichrist'-у нравится FORTRAN. В конце концов мы пришли к мнению, что числодробильню лучше считать на FORTRAN'-е, если пользоваться ifc либо родным компилятором для Linux/Alpha - в данном случае высокая производительность оправдывает использование столь убогого языка ( в конце концов, пишут же люди на asm'-е вычислительные вещи, например, libcln ).

P.S. А Вам что-нибудь на FORTRAN'-е (с cernlib'-ами) приходилось считать? Если да, то не возникало ли у Вас после этого желания удушить того, кто этот самый FORTRAN придумал?

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