Модераторы: LSD

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Java > C++, Кого слушать? 
:(
    Опции темы
MAKCim
Дата 7.6.2008, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 8
Всего: 207



блин, даже если скомпилировать под конкретный C2D
Код

# icc -O3 -xT Test.c -o Test

real    0m2.338s
user    0m2.336s
sys     0m0.000s

все равно больше, чем у GCC
 smile 


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Мастер
Дата 7.6.2008, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 0
Регистрация: 17.5.2008

Репутация: нет
Всего: нет



Цитата(MAKCim @ 7.6.2008,  14:19)
ICC порвет всех

Вот что я нашел в сети: http://www.linux.org.ru/view-message.jsp?m...9413&page=3
Цитата
По всем тестам ВС++ превосходит GCC, а с icc одна проблема - это [censored33! Пожалуйста, соблюдайте элементарные правила приличия при общении на форуме] выдает иногда неправильный код. И вообще на фиг мне усрался этот icc. A GCC не кроссплатформенна твою мать. МинГовно это не GCC.

PM MAIL   Вверх
Lazin
Дата 7.6.2008, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 4
Всего: 154



Цитата(Мастер @  7.6.2008,  14:24 Найти цитируемый пост)
Ну это ты зря...
Java освобождает тебя от мыслей о том, как это сделано. Ты просто юзаешь удобную, современную вещь. При этом, то, что ты написал, будет работать везде, на любой железке, на которой реализована Java (если, конечно, у железяки мощи хватит исполнить твой код). 

а что, программирование на Java освобождает программиста от заботы о синхронизации потоков? smile 
что будет если 1 поток будет добавлять элементы в список, а другие читать этот список?

PM MAIL Skype GTalk   Вверх
Мастер
Дата 7.6.2008, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 0
Регистрация: 17.5.2008

Репутация: нет
Всего: нет



Цитата
а что, программирование на Java освобождает программиста от заботы о синхронизации потоков?
Ты задаёшь вопросы, на которые лень отвечать. (Ты сам на них можешь ответить.)
Цитата
что будет если 1 поток будет добавлять элементы в список, а другие читать этот список?
Для этого и нужен механизм синхронизации. (Он нужен, чтоб коллизий не возникало и, если уж они случились - чтоб разрешить коллизию.)

Это сообщение отредактировал(а) Мастер - 7.6.2008, 15:03
PM MAIL   Вверх
Lazin
Дата 7.6.2008, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 4
Всего: 154



Цитата(Мастер @  7.6.2008,  14:54 Найти цитируемый пост)
Ты задаёшь вопросы, на которые лень отвечать. (Та сам на них можешь ответить.)


Цитата(Мастер @  7.6.2008,  14:54 Найти цитируемый пост)
Для этого и нужен мехпнизм синхронизации. (Он нужен, чтоб коллизий не возникало и, если уж они случились - чтоб разрешить коллизию.) 


я просто пытаюсь понять, чем Java в этом плане так принципиально отличается от того-же С++, чем она мне помогает.

поможет ли Java отследить race condition, deadlock или падение производительности из-за неправильного использования многопоточности.

например С++ программисту  сложно понять даст ли преимущество в скорости распараллеливание цикла, или только добавит тормозов, или - стоит лочить данный объект, или это приведет к простою других потоков, которые его все равно не изменяют...
такие вещи, по идее, должны быть лучше известны компилятору, чем программисту, но на практике это все выполняется вручную...
PM MAIL Skype GTalk   Вверх
Мастер
Дата 7.6.2008, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 0
Регистрация: 17.5.2008

Репутация: нет
Всего: нет



Цитата
race condition, deadlock
Я не знаю - что это такое. Когда я писал на Си, там такого(кажется) не было. Впрочем, прошло много лет, мог и забыть.
К Java можно относиться как к продвинутому Shell поверх базовых натв-функций. (К весьма продвинотому Shell.)
Набора стандартных возможностей, которые предоставляет Java, как правил - хватает (ну, или - должно хватать), чтобы реализовать большинство практических задачь, на большинстве процессоров и архитектур. Эти возможности реализованы в библиотеках и в самой JVM. Библиотеки универсальны, реализованы и отлажены профессионалами. Есть исходники, их можно посмотреть, изучить, научится правильно программировать. Что ещё нужно программисту.
Цитата
например С++ программисту  сложно понять даст ли преимущество в скорости распараллеливание цикла, или только добавит тормозов, или - стоит лочить данный объект, или это приведет к простою других потоков, которые его все равно не изменяют...
такие вещи, по идее, должны быть лучше известны компилятору, чем программисту, но на практике это все выполняется вручную...
Согласен. Программист не может оторваться от архитектуры. Если код написан для двух, или даже - четырёх, ядерного процессора, то - не факт, что его не придётся переписыать для машины с архитектурой РИСК. В этой архитектуре уаждый процессор - маленькая  JVM,  а писюке в одном процессоре может их быть несколько(если есть необходимость). Поэтому процесс оптимизауии Java кода нужно изучать исходники библиотек для конкретной архитектуры. Но, если вы работаете в рамках одной из этих двух архитектур, то код, видимо, переписывать не придётся.

Это сообщение отредактировал(а) Мастер - 7.6.2008, 15:24
PM MAIL   Вверх
Lazin
Дата 7.6.2008, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 4
Всего: 154



Цитата(Мастер @  7.6.2008,  15:14 Найти цитируемый пост)
Если код написан для двух, или даже - четырёх, ядерного процессора, то - не факт, что его не придётся переписыать для машины с архитектурой РИСК. В этой архитектуре уаждый процессор - маленькая  JVM,  а писюке в одном процессоре может их быть несколько(если есть необходимость).

о сколько нам открытий чудных... smile

Добавлено через 39 секунд
Цитата(Мастер @  7.6.2008,  15:14 Найти цитируемый пост)
К Java можно относиться как к продвинутому Shell поверх базовых натв-функций. (К весьма продвинотому Shell.)

странно, а разве это не ЯП общего назначения?

Добавлено через 1 минуту и 59 секунд
Цитата(Мастер @  7.6.2008,  15:14 Найти цитируемый пост)
Набора стандартных возможностей, которые предоставляет Java, как правил - хватает (ну, или - должно хватать), чтобы реализовать большинство практических задачь, на большинстве процессоров и архитектур. Эти возможности реализованы в библиотеках и в самой JVM. Библиотеки универсальны, реализованы и отлажены профессионалами. Есть исходники, их можно посмотреть, изучить, научится правильно программировать. Что ещё нужно программисту.

ну так кто спорит, что на Java можно (и даже удобно) программировать, вопрос только в том что там есть такого особенного для "синхронизации процессов" как вы говорить smile 
PM MAIL Skype GTalk   Вверх
W4FhLF
Дата 7.6.2008, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 2
Всего: 121



Цитата(Мастер @  7.6.2008,  15:14 Найти цитируемый пост)
Я не знаю - что это такое. Когда я писал на Си, там такого(кажется) не было. Впрочем, прошло много лет, мог и забыть.


Это от языка не зависит smile Но понять можно, в 80х всё было однозадачным, куда уж там smile


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
Мастер
Дата 7.6.2008, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 0
Регистрация: 17.5.2008

Репутация: нет
Всего: нет



Цитата
странно, а разве это не ЯП общего назначения?
Конечно язык программирования. А когда вы .bat пишите, вы - не программируете разве?
Цитата
ну так кто спорит, что на Java можно (и даже удобно) программировать, вопрос только в том что там есть такого особенного для "синхронизации процессов" как вы говорить
Вопервых Java - ООП-зык, а Си - процедурный. Одного этого достаточно, чтоб отказаться от Си, как языка программирования на параллельной архитектуре или - для многозадачного программирования. Язык Java заточен под параллельное программирование. В ней проработан механизм синхронизации и разрешения коллизий. Что ещё нужно?
Цитата
Это от языка не зависит  Но понять можно, в 80х всё было однозадачным, куда уж там
Именно так. Но, никому из нас в голову бы не пришло распараллеливать Си(или Фортран). Это - противоестественно. Процедурные языки для этого непригодны впринципе.

Это сообщение отредактировал(а) Мастер - 7.6.2008, 16:06
PM MAIL   Вверх
Lazin
Дата 7.6.2008, 16:25 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 4
Всего: 154



Цитата(Мастер @  7.6.2008,  15:54 Найти цитируемый пост)
Именно так. Но, никому из нас в голову бы не пришло распараллеливать Си(или Фортран). Это - противоестественно. Процедурные языки для этого непригодны впринципе.

Java - это императивный яп, то-есть язык, в котором программист определяет порядок вычислений, в этом плане Java от C ничем не отличается, а ООП это просто способ удобной структуризации кода, вот и все...
Ну так вот, императивный стиль программирования входит в противоречие с параллельным программированием, так как порядок выполнения конструкций языка не определен (вернее определен, но только для одного трэда, а как они там друг на друга наложатся никто не знает), а вся эта синхронизация нужна только для того, что-бы хотя-бы на уровне методов одного объекта, мыслить категориями 80-х годов зная, что другие потоки в данный момент стоят и ждут пока метод отработает в этом потоке...
Что то новое могут предложить функциональные языки, там порядок вычислений неважен, а вместо общей памяти, для связи между потоками данные копируются, поэтому все эти локи-анлоки, там не нужны.
PM MAIL Skype GTalk   Вверх
W4FhLF
Дата 7.6.2008, 16:27 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 2
Всего: 121



Цитата(Мастер @  7.6.2008,  15:54 Найти цитируемый пост)
 Это - противоестественно. Процедурные языки для этого непригодны впринципе.


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


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
JackYF
Дата 7.6.2008, 16:47 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 2
Всего: 162



Цитата(Мастер @  7.6.2008,  13:24 Найти цитируемый пост)
При этом, то, что ты написал, будет работать везде, на любой железке, на которой реализована Java

Ещё раз: тебя не смущает, что GCC доступен на большем количестве архитектур, чем Java? smile

Добавлено через 5 минут и 33 секунды
Цитата(Мастер @  7.6.2008,  13:37 Найти цитируемый пост)
По всем тестам ВС++ превосходит GCC, а с icc одна проблема - это [censored33! Пожалуйста, соблюдайте элементарные правила приличия при общении на форуме] выдает иногда неправильный код. И вообще на фиг мне усрался этот icc. A GCC не кроссплатформенна твою мать. МинГовно это не GCC.

Я фигею, дорогая редакция. Нашёл, блин, авторитетный источник - анонимуса на ЛОРе  smile 


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Мастер
Дата 7.6.2008, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 0
Регистрация: 17.5.2008

Репутация: нет
Всего: нет



Цитата
Вы реализуете на Java
В данный момент у меня нетокмо JDK не установлен, но и JRE присутствует в отсутствии. (Я пытаюсь заставить себя писать магазин, но - мои усилия тщетны.)
К этому можно было бы вернуться, позже, но у меня задачи пока нет на Java. (Сори.)
Впринципе, если вы хотите быстро с Си перейти на Java, могу дать совет и прислать примеры.
Совет: Есть такая книга: "Программирование на Java, 1001 совет" Марк с. Чен, Стивен В. Грифис, Энтони Ф. Изи, Издательство Попури, 1997 год.
Книга, хотя и старая, но ничего лучше я нет видел. У меня есть приеры(0.8М) к ней, и, кажется, английский вариант этой книги в электронном виде.
Ссылка: Введение в Java
Цитата
Нашёл... авторитетный источник...
Я пытался узнать, что есь ICC. Выяснил, что это - сишный компилятор для какого-то типа процессоров. (Ну и это.)
Скорость исполнения Java байткода увеличится, и будет не хуже чем у Си, если его компильнуть, но при этом может увеличиться обём кода, что не всегда допустимо.
Скорость выполнения кода часто не так важна, как сам факт того, что он(пусть медленно но) работает.

Это сообщение отредактировал(а) Мастер - 7.6.2008, 17:16
PM MAIL   Вверх
JackYF
Дата 7.6.2008, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 2
Всего: 162



Цитата(Мастер @  7.6.2008,  16:03 Найти цитируемый пост)
Скорость выполнения кода часто не так важна

... и поэтому, наверное, пользователи жалуются, что то тормозит, это тормозит... smile


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Lazin
Дата 7.6.2008, 19:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 4
Всего: 154



Ну, для многих применений Java очень даже хороша, многие вещи там делаются намного проще чем на С++ и часто более экономически оправдано. Если к примеру основную нагрузку на систему создает работа СУБД, то на чем написана программа которая с ней работает уже вопрос третий smile 
Но все-же, неприятно когда ты это запускаешь, а оно как начнет тормозить smile 
PM MAIL Skype GTalk   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила ведения Религиозных войн
Smartov
1. Уважайте собеседника
2. Собеседник != враг
3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez"

С уважением, Smartov.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Религиозные войны | Следующая тема »


 




[ Время генерации скрипта: 0.1119 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.