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

Кажется я "разделяю мнение" с предыдущими товарищами :/ что ты просто болтун и ламер.

Settler
()

>> что ты просто болтун и ламер

А я и не скрываю того, что я ламер.

И поболтать я люблю - ну где можно подчерпнуть столько классной маркетинговой информации, как не во флейме!

Ну объясните мне почему:

class A { public static void main(Stringp[] args) { Integer i; System.out.println("" + i); } }

выдаст мне ошибку на этапе javac компиляции, а C не выдаст ошибку

при

struct timespec *ts; ...

Вы объясните это мне, ламерку, а не переходите на личности.

NikS
()

Re:счет на C++

2 NikS:

> Кроме того, я разделяю мнение, что счетные задачи на C++ - это нонсенс. Для > этого есть Фортран.

Не сочтите за попытку оскорбления, но все-таки определенная предрасположенность к [садо]мазохизму у Вас все-таки есть. C++ хорошо подходит для достаточно широкого класса счетных задач, особенно если требуется счет как аналитический, так и численный - FORTRAN просто НЕ годится. [ Не надо только разводить спор про то, что для аналитического счета Ocaml лучше - это не всегда так, пример - вычисление радиационных поправок. ] Я уж не говорю о том, насколько проще писАть и отлаживать C++ код по сравнению с FORTRAN [если вообще таковой может быть написан на FORTRAN]. Тот, кому приходилось иметь дело с cernlib'-ами, меня поймет.

P.S. Все-таки перед тем, как что-то сказать/написать, надо хоть чуть-чуть подумать. А если вы чего-то не знаете, спросите у тех, кто этим занимается. P.P.S. Когда мерзость под названием FORTRAN таки загнется, многие вздохнут с облегчением.

Dselect ★★★
()
Ответ на: Re:счет на C++ от Dselect

>> предрасположенность к [садо]мазохизму у Вас все-таки есть

Платят не за мазохизм, а за перевод приложений с Си на Джава. А для этого надо узнать самые неожиданные аргументы pro & contra. "Предупрежден - значит вооружен".

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

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

NikS
()

to NikS

Алан Голуб такой же профан в программировании на С++, как и Вы. Читать его книгу просто смешно. Вот для Java его советы проходят полностью.

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

>> Алан Голуб такой же профан в программировании на С++, как и Вы.

Насчет Голуба не знаю, но я и не скрываю, что я профан в C++. Я только поинтересовался, почему компайлер не отловил ошибку и почему у icc и gcc 2.9x разное поведение при работе. А мне сказали "сам дурак". Ну объясните профану, ну почему поведение 2.9x и 3.2.x столь разительно отличаются.

>> Читать его книгу просто смешно.

Для профана книга Голуба сгодится.

>> Вот для Java его советы проходят полностью.

Чует Голуб откуда ветер дует. Будете проверять профан я в Джава или доверитесь BBench и Sun? ("String" - "p" я набрал случайно: AC опечаток не прощает:()

NikS
()

2NikS (*) (2002-12-05 13:40:08.131)
школьник ты наш, если ты не понимаешь, то объяняю тебе еще раз.
При обределении не глобальных переменных их значение по умалачанию не обределено, а именно оно равно тому есть в памяти где они размещены. С gcc тебе везет, и сегменты памяти выделяются так, что ты можешь писать по адресу на который указывает указатель. А вот то что gcc выдает предупреждение и говорит что переменная не инициализирована ты конечно не знаешь. Короче ламер ты и gcc видишь в первый раз в жизни.И не пытайся отбрехаться от того что ты ошибку сделал специально.


[14:28:25 paranoic:/tmp/test]
paranoic $gcc -O2 -Wall test.c
test.c:5: warning: return-type defaults to `int'
test.c: In function `main':
test.c:6: warning: `ts' might be used uninitialized in this function
test.c:9: warning: control reaches end of non-void function
/tmp/cciuTAkC.o: In function `main':
/tmp/cciuTAkC.o(.text+0xd): undefined reference to `clock_gettime'
collect2: ld returned 1 exit status

[14:28:27 paranoic:/tmp/test]
paranoic $gcc --version
2.95.4

anonymous
()

Я тоже присоединюсь к общественному мнению ;)
Глупые отмазки и совершенно недопустимый код ни в каком случае.
Даже если вдруг какой-то конкретный компилятор такое компилирует без
Segmentation fault.

Может быть сервера приложений и хорошо писать на Java. Тут не поспоришь - Java-технология имеет достаточно правильную идеологию. Веб-сервисы приятно на ней пишутся...
Вообщем все в ней хорошо, кроме самой Java как языка. Убогий, примитивный. Как гарлемский жаргон в сравнении с английским скажем Шекспира ;) Это как раз и пыталась исправить Microsoft в своем C#.

Тем не менее существует целый класс задач, даже превосходящий по объему все сервера приложений вместе взятые, где применение Java просто недопустимо, а C/C++, напротив, весьма оправданно. Например, операционные системы и их компоненты, приложения вроде MS Office (видел я один офис на Java, нормально работающий только на 512 памяти ;) ), современные игры, всевозможные CAD системы, моделирование и т.д. Вообщем везде, где требуется не просто работать, а _быстро_ работать и кушать при этом поменьше памяти.

Eugeny_Balakhonov ★★
()

2NikS

class A { public static void main(Stringp[] args) { Integer i; System.out.println("" + i); } }

Попробуй в этой конструкции обратится к переменной класса
Например так

class A
{
public int m_i;
public static void main(Stringp[] args)
{
m_i = 1;
System.out.println("" + m_i);
}
}

Попробовал?
Экземпляр класса в этом случае не создается. В этом случае класс работает просто как name space.

А вот так заработает

class A
{
public int m_i;
public static void main(Stringp[] args)
{
A a = new A();
a.m_i = 1;
System.out.println("" + a.m_i);
}
}

О чем тебе и пытались сказать, что в Java без New хрен что получится с созданием экземпляра класса.
Метод System.out.println(); - тоже статический

Тебя и азам Java учить приходится, раз ты такое ляпаешь.

Eugeny_Balakhonov ★★
()

>> Убогий, примитивный. >> Как гарлемский жаргон в сравнении с английским скажем Шекспира ;)

Ну со знатоком Шекспира и Ebonics'a я спорить не буду, тем более что в самом NY я не был.

>> всевозможные CAD системы

Так значит это Вы написали пакет CATIA?

>> где требуется не просто работать, а _быстро_ работать >> и кушать при этом поменьше памяти.

Ну на Белорусском металлургическом заводе круче спецы чем в Montpellier, Languedoc, FR или Raleigh, NC, USA. Так что я сдаюсь.

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

>> Тебя и азам Java учить приходится, раз ты такое ляпаешь.

Господи, Вы хоть понимаете, что это был пример на обязательность проверки создания экземпляра класса _оболочки_ (wrapper-class).

...

Integer i = new Integer(1);

System.out.println(i);

...

Вы (все таки "Вы") не могли бы тогда прокомментировать JDBC код?

PS Сходите на www.barinbench.com. Не поленитесь проверить id=2900312. Хорошо?

NikS
()
Ответ на: gcc все-таки более кривой, чем Intel. от NikS

> Вопрос был не в этом (ответ-то я знал заранее;)). А в том, что gcc допускает такие конструкции ("struct timespec *ts" вместо "struct timespec ts")

Это не gcc допускает такие конструкции, это их допускает ANSI C, да и другие С-flavours. Указатели - это базовое свойство языка C, если вы не в курсе.

> причем скомпилированная gcc программа НЕ выдаст Segmentation fault. Вывод - все-таки использовать Intel компайлер.

Специально показываю:

localhost:~> cat>file.c
#include <time.h>
#include <stdio.h>

main ()
{
struct timespec *ts;

clock_gettime(CLOCK_REALTIME, ts);
}
^D
localhost:~> gcc file.c -lrt
localhost:~> valgrind ./a.out
==6312== valgrind-1.0.4, a memory error detector for x86 GNU/Linux.
==6312== Copyright (C) 2000-2002, and GNU GPL'd, by Julian Seward.
==6312== Estimated CPU clock rate is 1533 MHz
==6312== For more details, rerun with: -v
==6312==
==6312== Use of uninitialised value of size 4
==6312== at 0x4026A863: clock_gettime (in /lib/librt-2.2.5.so)
==6312== by 0x8048463: main (in /home/user/a.out)
==6312== by 0x4028F1C4: __libc_start_main (in /lib/libc-2.2.5.so)
==6312== by 0x8048371: clock_gettime@@GLIBC_2.2 (in /home/user/a.out)
==6312==
==6312== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
==6312== malloc/free: in use at exit: 200 bytes in 1 blocks.
==6312== malloc/free: 2 allocs, 1 frees, 224 bytes allocated.
==6312== For a detailed leak analysis, rerun with: --leak-check=yes
==6312== For counts of detected errors, rerun with: -v

При чем здесь разница между gcc и icc? В неинициализированном указателе лежит мусор, а уж куда он попадет - такой результат и будет. Если этот код скомпилять gcc на платформе с более строгим контролем памяти (типа sparc) или засунуть код, скажем, модулем в ядро, получите fault по полной программе.

> можете посмотреть мои результаты теста по ANSI C и C++. Может быть, Вы конечно, Master Level;))

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

Короче, раз облажались, имейте хотя бы смелость признать это. Отмазки удручают еще больше.... включая то, что так спешили оправдаться, что запостили еще одну лажу аж 6 раз :-)

anonymous
()

>>Так значит это Вы написали пакет CATI

Нет, но я писал например плагины для IMSI TurboCAD ;)

>> Ну на Белорусском металлургическом заводе круче спецы чем в >> Montpellier, Languedoc, FR или Raleigh, NC, USA. Так что я сдаюсь

Ну во-первых я давно не там работаю, на LOR просто регистрацию сменить не получается.

Во-вторых что-то как-то не видно широкое распространение продуктов вышеописанных вами компаний. Наверное поэтому? ;))) То-то SAP сначала сделал SAPGUI на Java, а потом испугался результата и переписал все на C++ ;)

В-третьих не думай, что на вышеописанном заводе я с коллегами лаптем щи хлебал ;) Сделали к примеру 2 системы управления (именно управления, а не только мониторинг и отчетность) электросталеплавильными печами (100 т. 70 МВт.), одна термомодель кушала 200 метров памяти на расчетные матрицы размером мегабайта по 3 каждая. Ох как бы это работало на Java! Пришлось бы покупать 8-процессорный сервак с 8 Гигами ОЗУ минимум :)))

Eugeny_Balakhonov ★★
()

>>Так значит это Вы написали пакет CATI

Нет, но я писал например плагины для IMSI TurboCAD ;)

>> Ну на Белорусском металлургическом заводе круче спецы чем в
>> Montpellier, Languedoc, FR или Raleigh, NC, USA. Так что я сдаюсь

Ну во-первых я давно не там работаю, на LOR просто регистрацию сменить не получается.

Во-вторых что-то как-то не видно широкое распространение продуктов вышеописанных вами компаний. Наверное поэтому? ;)))
То-то SAP сначала сделал SAPGUI на Java, а потом испугался результата и переписал все на C++ ;)

В-третьих не думай, что на вышеописанном заводе я с коллегами лаптем щи хлебал ;) Сделали к примеру 2 системы управления (именно управления, а не только мониторинг и отчетность) электросталеплавильными печами (100 т. 70 МВт.), одна термомодель кушала 200 метров памяти на расчетные матрицы размером мегабайта по 3 каждая. Ох как бы это работало на Java! Пришлось бы покупать 8-процессорный сервак с 8 Гигами ОЗУ минимум :)))

Eugeny_Balakhonov ★★
()

>> как профессионалы, так и такие, как вы.

Позвольте, я уже говорил, что я не работаю как C программист c 1996 года. И не требуют на работе с меня знания C/C++. Так что я просто задаю ламерские вопросы, дабы сравнить полезность использования Java по сравнению с C++ или наоборот. Я также не знаю перла, фортрана, php4 - ну и что?

Вопрос был почему gcc 2.9x не выдает Segmentation fault? И, простите, как Вы будете отлаживать СЕРВЕРНЫЕ приложения? - это вопрос просто ради всамомделешнего моего интереса, конструктивный ответ был бы весьма интересен.

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

<Корпоративные Guidelines. Знаете что это такое?>

Знаю.

< Так вот либо COBOL для z/OS либо Java для всех архитектур. >

Да что вы говорите? Слушайте, так прилюдно, и не стесняясь демонстрировать свою ограниченность -- это надо уметь. На всякий случай -- мир НЕ ИЗМЕРЯЕТСЯ базой данных Employee.

<Только вот пойдите к _реальному_ заказчику и скажите ему, что сервер приложений будем лабать на C++ >

Мир НЕ ИЗМЕРЯЕТСЯ серверами приложений, упрямец. ЕСТЬ и другие задачи. И их МАССА. CAD -- это не реальные приложения? Геометрическое моделирование -- это не реальные приложения? Скажите это тысячам инженеров, работающих с ними каждый божий день. Так вот -- _например_, в этих областях, в _реальной_ работе ни Java, ни COBOL и не _пахнет_. Пахнет С++ и даже С.

<Я Вам в третий раз повторяю, что icc и gcc 3.2 отрабатывают отсутствие выделения памяти корректно>

А я вам в третий раз говорю, что тут нельзя говорить о корректности. Откройте стандарт, хоть С++, хоть C, и почитайте, наконец. Когда вы научитесь читать хоть что-то, кроме Голуба? Так вот -- _нигде_ не сказано, что указатель должен адресовать _определенную_вами_ область памяти. И значение указателя по умолчанию _не_определено_. Поэтому, с точки зрения _компилятора_, в вашем коде _нет_никакой_ошибки. А как от таких проблем с неопределенным поведением избавится -- проще пареной репы -- писать
Type* p_type = 0;
Всегда. _Административно_. Вы ж такие решения любите. И все -- код в этом аспекте ничем не будет отличаться от любимой вами Джавы. Точно также будет отпадать по null pointer exception, если память не распределена.

<Что такое "распределить объект"? Я знаю что такое "создать объект". И Вы тут опять продемонстрировали поверхностность познаний: >

Слушайте, вы утомили. Вбейте в гугле "allocate object", и увидите, что это вполне терминология. То, что вам она неизвестна -- это всего навсего проблемы вашей ограниченности.

<Где же тут "new", позвольте Вас спросить? >

Где-то внутри getConnection, не так ли? или еще в каком методе у класса объекта DriverManager.

<Вы найдите ошибку (javasphere.hotmail.ru)>

У вас там все зазиповано -- лень.

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

> Connection c = DriverManager.getConnection("jdbc:db2:sample");

> Где же тут "new", позвольте Вас спросить?

Давайте передергивать не будем. Это все-таки factory method, и new, заверяю вас, там есть, хоть и не в самом Driver Manager, а в классе драйвера. Если вы не знаете, что такое factory method, то не знаю уж, с какого бодуна вам дали ваши сертификаты.

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

> Позвольте, я уже говорил, что я не работаю как C программист c 1996 года. И не требуют на работе с меня знания C/C++. Так что я просто задаю ламерские вопросы

К сожалению, вы не задаете ламерские вопросы, а безапелляционно делаете ламерские выводы. (Напоминаю: "Вывод - все-таки использовать Intel компайлер."). Это было бы обоснованным, скажем, если бы вы написали программу по обсчету матриц с плавающей точкой и она после icc работала бы на 40% быстрее, чем после gcc. Тогда такие слова приемлемы (и то, в контексте, конечно). А так....

>, дабы сравнить полезность использования Java по сравнению с C++ или наоборот. Я также не знаю перла, фортрана, php4 - ну и что?

Ничего. За это вас никто не ругает, ибо вы не блистаете своим незнанием, раздражая окружающих.

> Вопрос был почему gcc 2.9x не выдает Segmentation fault?

Вам минимум 5 раз объяснили, почему.

> И, простите, как Вы будете отлаживать СЕРВЕРНЫЕ приложения?

А в чем специфика серверных приложений? Не буду делать таких глупых ошибок, вот и все. Я серверов пописал немало на C, знаете, ни разу не приходилось ловить в собственном коде коредампы или искать ошибки внешним отладчиком типа ef. Разве что когда в университете учился, но там и сам бог велел.

Или вы имеете в виду, что наличие segfault в работающем сервере вам сильно поможет с отладкой? :-)) А не стыдно программу до такого состояния доводить, чтобы она дохла в зависимости вот от такого "везения"?

anonymous
()

2NikS (*) (2002-12-05 12:03:59.062):

> причем скомпилированная gcc программа НЕ выдаст Segmentation fault.
> Вывод - все-таки использовать Intel компайлер.

IMHO программа и не должна выдавать Segfault. Надо внимательнее маны
читать. Ситуация с "левым" указателем штатно обрабатывается, при
этом возвращается соответствующий код ошибки.

Так что не гони на gcc. :-)


man clock_gettime()

badger
()

2AC (*) (2002-12-05 04:05:34.038):

> Эй, "реальный enterprise-программист", автор книжек и прочия,

NIKS книжек не пишет. Это недоразумение или, если хотите, легенда.
Что-то из области единорогов.

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

>> НЕ ИЗМЕРЯЕТСЯ серверами приложений

Моя зарплата измеряется серверами приложений. Я особо и никогда не скрывал, что все, что не IBM WAS или Sun J2EE, то мне competitors. А то что говорить тому, кто скажет "мы все сервера приложений на C++ напишем, не надо нам никаких EJB" я сегодня понял - за что всем спасибо.

Естественно симуляция ошибок при proof-of-concept обязательна, и аргументы программера-энтузиаста пассионарно заявляющего "я не допущу ошибку в указателе" не действуют на менеджера этого программера. (Ох не зря еще и C# кроме Java придумали!) Так что мне была интересна и "жесткая" критика. (Заодно и отчет написАл;))

>> allocate object

"Расположить", "разместить" объект. Согласны? "Распределить" немножко другое.

>> Где-то внутри getConnection, не так ли?

Поинтереснее. Я уже подготовил новую "новость" (про IBM JDK). Там и пофлеймим.;) (запаситесь Jenlain'ом или что там у Вас?)

>> У вас там все зазиповано -- лень.

Вопрос был о корректности моего кода C JNI и как я там с указателями обошелся. И все. Есть ли там ошибки?

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

>> IMHO программа и не должна выдавать Segfault.

Стоп!

gcc 3.20 _выдает_ на этом же самом примере Segfault. Равно, как и icc 7. Вопрос о разности поведения и о "подводных камнях" переноса.

NikS
()

>> Вы (все таки "Вы") не могли бы тогда прокомментировать JDBC код?
Какой? Создание Connection?

Шас

Вам знакомо понятие фабрики класса? Тогда я приведу пример как это сделано в JDBC

class Some
{
private int b;
public A()
{
b = 0;
}

}

class SomeFactory
{
public static makeSome()
{
return new Some();
}
}


>> PS Сходите на www.barinbench.com. Не поленитесь проверить
>> id=2900312. Хорошо?

А зачем? Возможно
а) вам там подсказывали
б) сдано с 1000 раза от упорства, когда все ответы уже найдены. Вопросы то там повторяются ;) Причем многие ответы давались без какого-либо понимания что стоит за ними.


Eugeny_Balakhonov ★★
()

2NikS (*) (2002-12-05 15:55:07.3):

> gcc 3.20 _выдает_ на этом же самом примере Segfault.
> Равно, как и icc 7.

2.95.4 на FreeBSD завершается корректно с EFAULT.

badger
()

>> вам там подсказывали

Жена наверное, подсказывала.

>> сдано с 1000 раза от упорства

Упорство это хорошо. Только сколько же времени потребуется так для сдачи около 30 экзаменов? (Я же еще и работаю - сейчас, например, параллельно, отчет о proof of concept Java 2 vs. C++ пишу ;))

А на SCP тоже подсказывают? А на IBM AIX?

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

>> 2.95.4 на FreeBSD завершается корректно с EFAULT.

А вот это уже конструктивно! Так и пишу - "разница в поведении скомпилированных программ". (У меня RH 7.2 gcc 2.96)

NikS
()

>> PS Сходите на www.barinbench.com. Не поленитесь проверить >> id=2900312. Хорошо?

Во первых не barinbanch, а brainbench. А во вторых я пулучил мастера, ещё в те времена, когда этот сайт назывался tekmetrics.com (если мне не изменяет память) и на то время занимал шестую позию в рейтинге. Но я не вижу здесь повода для бахвальства.

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

<Я особо и никогда не скрывал, что все, что не IBM WAS или Sun J2EE>

Ну, тогда и ведите себя скромнее -- не обобщайте и не рассуждайте типа с умным видом про _реальную_ жизнь. Когда пишете про реальную жизнь и реальных заказчиков, пишите "в _моей_ реальной жизни" (ничему там кроме джава и zOS места нет), "_моим_ реальным заказчикам" (нужны только сервера приложений). Так оно лучше будет. Для всех.

<аргументы программера-энтузиаста пассионарно заявляющего "я не допущу ошибку в указателе" не действуют>

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

<Поинтереснее. >

Все равно, в конечном итоге память под объект в джава распределяется с помощью new. Будете спорить и с этим очевидным утверждением?

<Вопрос о разности поведения и о "подводных камнях" переноса. >

Да какой тут вопрос. Каждый компилятор обрабатывает undefined и unspecified behaviour по-своему. Вот и все, что надо знать на эту тему. Ну да и еще когда оно (behaviour) имеется.
А вы еще скажите, что "подводных камней" переноса между разными версиями JDK и JvM нет. В отличие от С++, на джаву _вообще_ нет никакого стандарта не имеется.

<И все. Есть ли там ошибки? >

Ваш код элементарно в неудобной форме. А отмываться (после такого ляпа) нужно _вам_.

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

>Моя зарплата измеряется серверами приложений. Я особо и никогда не скрывал, что все, что не IBM WAS или Sun J2EE, то мне competitors. А то что говорить тому, кто скажет "мы все сервера приложений на C++ напишем, не надо нам никаких EJB" я сегодня понял - за что всем спасибо.

Еще одно подтверждение (для меня, по крайней мере) того, что зарплата все-таки в значительной (если не в определяющей степени) зависит не от квалификации "программера", а от его умения надувать щеки и правильно манипулировать "менеджером этого программера", пока сам менеджером не станет. Блин, это просто уже тип человека такой - "бла-бла-бла" до посинения.

anonymous
()

>> В отличие от С++, на джаву _вообще_ нет никакого стандарта не имеется

Вот и хорошо, что не имеется - гарантировано, что у меня минимальны затраты по переносу.

>> Ваш код элементарно в неудобной форме. 

Так где ошибки-то? Не уходите от вопроса.
Я сказал, что 6 лет на C не программировал - мне это не нужно. (Знаю Си++ только по аналогии с Java) Только вместо того, чтобы объяснить мне преимущества написания кода на Cи Вы с оргромнейшим удовольствием перешли на мою личность.

>> на то время занимал шестую позию в рейтинге

Cool! Я C только по аналогии с Java помню. А можно Ваш результат посмотреть? Дайте id, pls.;)

Теперь о главном.
В Java есть проверка кода по всей цепочки наследования. Для упрощенного примера:

// -----------------------------------------------
// это некоторый framework

class C
{
   private int i = 10;

   public int getI()
   {
       return i;
   }
}

class B 
{
   private static C c;
   
   public static C getC()
   {
       return new C();
   }
}

// -----------------------------------------
// это требуется конкретному заказчику 

class A
{
   public static void main(String[] args)
   {
       C c = B.getC();

       System.out.println(c.getI());
   }
}
    

И согласитесь, если я реализую только class A (то есть свое коммерческое приложение), то вероятность совершить  ошибку у меня минимальна. Так что и требовалось доказать. На личности переходить можете сколько угодно - дорога Вам туда же куда отправились Taligent, OpenDoc, BeOS и иеже с ними.

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

>> зависит не от квалификации "программера", >> а от его умения надувать щеки и правильно >> манипулировать "менеджером этого программера", >> пока сам менеджером не станет.

Вот такое я ...! Как там в анекдоте про крокодила и мартышку: "Дура не дура, а полтинник ..."

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

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

<Вот и хорошо, что не имеется - гарантировано, что у меня минимальны затраты по переносу.>

Хм. Более чем странная логика.

<Так где ошибки-то? Не уходите от вопроса.>

Послушайте. Я должен пойти на ваш сайт, скачать оттуда архивов, раскрыть их куда-то, посмотреть на ваш код -- а оно мне надо?

<(Знаю Си++ только по аналогии с Java)>

Ну так не знаете -- и не "рассуждайте" с напыщенным видом, и главное, с такой твердолобой уверенностью, типа собаку съели. Кстати, как же вы пишете proof-of-concept про то, в чем, как сами признались, ни капли не разбираетесь?

<чтобы объяснить мне преимущества написания кода на Cи>

Зачем это мне надо. В вашей реальной жизни оно вам все равно ни к чему. Не буду же я вам уподобляться:)

<Для упрощенного примера:>

Что-то ваш пример не слишком понятен. В С++ можно сделать тоже самое. Намутить какой угодно фреймворк, избавиться от большинства проблем с указателями, и т.д.

<то вероятность совершить ошибку у меня минимальна.>

Да. Но больно уж дорого за это приходится платить.

<Taligent, OpenDoc, BeOS и иеже с ними.>

Контор, _не_ использующих джаву, существенно больше, чем ее использующих. Уж больно у джавы ограниченная область применения.

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

>На самом деле, когда Вы дорастете до моего сороколетнего возраста, то поймете, что "A customer needs a benifit, not features"

По стилю общения Вы тянете максимум на двадцать ;)

Кроме того, не совсем ясно как в Вашем понимании согласуется benefit customer'а со степенью надутости щек "программера". Мне, например, кажется, что корреляция здесь может быть только отрицательной.
С другой стороны, для меня остается загадкой, какую прибыль может принести фирме Ваш отчет Java vs. C++, учитывая Ваши "глубокие" познания по крайней мере в C/C++.

anonymous
()

>> Более чем странная логика.

Ваше право так считать. Я констатирую только разницу в обработке ошибок в icc 7, gcc 2.96, gcc 3.20 и, как мне подсказали, gcc 2.95.

>> а оно мне надо?

Ваше право так считать.

>> типа собаку съели

Вопрос в BrainBench - если Java 2 программист может сдать по аналогии C и C++, то это не мои проблемы.

>> В вашей реальной жизни оно вам все равно ни к чему.

Это уже, извините, мне решать.

>> от большинства проблем с указателями

А в Java избавиться от ВСЕХ проблем с указателями.

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

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

Конторы использующие Java - это крупные серьезные корпорации, а не шараж-монтаж. Вы скорее всего post graduated student по обмену? (Могу ошибиться;)) Слушайте, но я немного знаю про то что и во Франции и США люди стремятся пойти в серьезную фирму, а не сесть на ничтожное университетское жалование.

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

А не скажет ли мне уважаемый анонимус, когда в C++ чистая виртуальная функция-член (pure virtual member function) обязана иметь тело?

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

>> обязана иметь тело?

Анонимный гроссмейстер, мастер Brainbench продолжает думать...

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

>А не скажет ли мне уважаемый анонимус, когда в C++ чистая виртуальная функция-член (pure virtual member function) обязана иметь тело?

Функция-член обязана иметь тело? Это уже из области эротики :)

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

>> Функция-член обязана иметь тело

Вам подсказать что такое "чистая виртуальная функция, член класса"? Я жду ответа еще 10 минут.

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

>Вам подсказать что такое "чистая виртуальная функция, член класса"?

Будьте так любезны. Но вообще, учитывая наличие анонимуса и то, что функция-член - чистая, то это скорее ближе к порнографии :)

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

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

В каких случае в C++ pure virtual member function ОБЯЗАНА иметь body (тело, внешнюю реализацию). Приведите, пожалуйста пример. Будьте любезны. Время то идет.

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

<Я констатирую только разницу в обработке ошибок в icc 7, gcc 2.96, gcc 3.20 и, как мне подсказали, gcc 2.95. >

А я вижу разницу, когда один и тот же код прекрасно работает под одной JVM, и вылетает под segfault на первом и единственном dynamic_cast в нэйтив-коде на другой. И ни суппорт компании интел, ни суппорт покойной компании Kuck & Associates, ничего с этим поделать не может. Потому что дело в JVM.
И, в десятый раз вам повторю -- код, приведенный вами, по стандарту вызывает undefined behaviour. Все. А как может быть _гарантирована_ совместимость реализаций джава, если нет _вообще_ никакой бумажки, определяющей, когда что делать, вообще неясно.

<если Java 2 программист может сдать по аналогии C и C++, то это не мои проблемы. >

Ну, если вы сами признали, что bb тесты по C и C++ -- туфта, тогда и не делайте выводов, что вы знаете эти языки.

<Конторы использующие Java - это крупные серьезные корпорации,>

Корпорации используют джаву для _корпоративных_информационных_систем_. Все. Это -- _единственная_ область применения джавы. Например, в моей области джавой даже не пахнет.

<а не шараж-монтаж. >

Ну, не знал, что Dassault -- шараш-монтаж. Спасибо, просветили.

<Вы скорее всего post graduated student по обмену? (Могу ошибиться;))>

Ошибаетесь.

<но я немного знаю про то что и во Франции и США люди стремятся пойти в серьезную фирму>

Вы действительно _немного_ знаете. Как и С++ -- нахватались вершков.

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

>Естественно я вычитал про эту проблемку из Internet, а не сам ее придумал - я то на Java пишу, C++ мне вроде бы как и не к чему...

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

Если задан конкретный вопрос, за который на NikS'а нельзя наехать лично, то гроссмейстер "Master Brainbench 6 место" сбежит с форума как заяц.

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

>> Dassault

Кстати, на Дассо работает IBM z/OS, DB2 и Java - у них корпоративное соглашение (не зря же я затронул CATIA).

PS Вы не могли бы помочь бедному анонимосу Mister'у Brainbench по поводу pure member functions?

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

>В каких случае в C++ pure virtual member function ОБЯЗАНА иметь body (тело, внешнюю реализацию). Приведите, пожалуйста пример. Будьте любезны. Время то идет.

Если серьезно, то я не тот анонимус, который шестое место. И привычки чтения на ночь стандартов за собой не замечал. За себя скажу, что в моей практике такого не случалось. Так что мой ответ - _практически_ никогда.

anonymous
()

to NikS

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

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

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

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

>> Так что мой ответ - _практически_ никогда.

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

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

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