LINUX.ORG.RU

C++&Boost vs Java ?


0

0

Прошу людей, которые серьезно(в коллективе) занимались разработкой приложений/софта/платформ, разъяснить насколько концептуально от/у- ступает связка Буста & Си++ от Java по:
1. Сложности разработки
2. Сложности сопровождения
3. Возможностям самого языка - *ОП
4. Вертикальной интеграции готового проекта
5. ...на ваше усмотрение
6. ...

Спасибо за любые разумные разъяснения.

На Java, очевидно, проще писать. Соответственно ту же логику можно написать меньшими усилиями, чем на плюсах.

Если нет доводов за то, что строго нужны плюсы (например, совместимость или требование realtime'а), стоит взять Java.

Kpoxman ★★
()

Не сравнивайте, пожалуйста, тёплое с мягким.

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

Java - вещь в себе. Это огромная платформа с чёртовой кучей библиотек и каркасов (framework) "на все случаи жизни". По-этому сравнивать их, на мой взгляд, некорректно.

ЗЫ: Кого поразил убогостью мысли - извиняйте.

ЗЗЫ: ЛИСПоводам говорю заранее: "многаскобак - ниасилил" (с) где-то..

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

> тут нет драйверов баз данных
но есть прямые API

>что очень многие вещи из Boost попадают в следующую версию стандарта C++
Кардинально ничего не изменит

>Java - вещь в себе. Это огромная платформа с чёртовой кучей библиотек и каркасов (framework) "на все случаи жизни".
Отсюда вопрос и вырос, но судя по всему придется уступить обществу(бизнесу).

insidex
() автор топика

А вообще к Жабе какое-то наращенное отвращение есть,наверное, со времен ассемблера и реверсинга (:

insidex
() автор топика

Имхо, основное преимущество Java -- виртуальная машина и JRE, которые гарантированно работают одинаково на любых платформах, где есть JRE. Грубо говоря, к примеру, ты можешь просто взять скомпилированный класс и передать его по сети как binary blob, не заботясь об endians и тд на другой хост (который может работать на другой архитектуре под другой ос), где он легко сможет подцепиться ClassLoader'ом и сразу заработать так, как ты расчитывал.

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

Казалось бы, причём тут пёрл со цпаном? А ни при чём.

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

>Имхо, основное преимущество Java -- виртуальная машина и JRE, которые гарантированно работают одинаково на любых платформах, где есть JRE. Грубо говоря, к примеру, ты можешь просто взять скомпилированный класс и передать его по сети как binary blob, не заботясь об endians и тд на другой хост (который может работать на другой архитектуре под другой ос), где он легко сможет подцепиться ClassLoader'ом и сразу заработать так, как ты расчитывал.

К сожалению (или к счастью?) за всё это приходиться платить чудовищным падением производительности. (Сейчас мне раскажут, что жаба - для труЪ-ынтэрпрайза, и что там не проблема добавить десяток лишних процов;)...)

Sectoid ★★★★★
()
Ответ на: комментарий от insidex

>но есть прямые API

Бесспорно. Качество API (да и вообще проектирование) Boost'а на весьма высоком уровне.

>Отсюда вопрос и вырос, но судя по всему придется уступить обществу(бизнесу).

Советую также взглянуть в сторону Trolltech Qt.

Собственно мне приходилось немало писать с использованием связки C++/Boost/Qt. Впечатление весьма приятные (как у меня и команды, так и у заказчика).

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

Спасибо, вообщем на небольшой доклад уже накапал, дальше дело за вышестоящими)

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

insidex
() автор топика
Ответ на: комментарий от swizard

> и сразу заработать так, как ты расчитывал.

И сразу сказать, что ему не хватает библиотеки, прибитой к йавовской проге на исходном хосте через ffi.

mv ★★★★★
()
Ответ на: комментарий от fura13

А как звать его, того "мну"?

Передай мну, что он ахтунг полный

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

>К сожалению (или к счастью?) за всё это приходиться платить чудовищным падением производительности. (Сейчас мне раскажут, что жаба - для труЪ-ынтэрпрайза,

Нет, сейчас тибе скажут, что может быть стоит почетать умных книжек, например, таких как http://gzip.rsdn.ru/forum/message/2585839.flat.aspx#2585839

Аффтар пишет граматна и уже четвертый раз. Книжка считается бестселлером

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

С++ + Qt -вполне достойный выбор, если не нужны такие слова, как "ынтерпрайз".

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

> К сожалению (или к счастью?) за всё это приходиться платить чудовищным падением производительности.

Ну это ты зря так. Just-In-Time compiler -- падение производительности незначительное (если не считать время старта), а удобства с лихвой в этом случае все перекрывают.

Кроме того, как ты можешь заметить, производительность сейчас все меньшую роль играет в выборе инструмента, в угоду скорости разработки. Люди вообще налегли на интерпретируемые языки с динамической типизацией :)

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

> И сразу сказать, что ему не хватает библиотеки, прибитой к йавовской проге на исходном хосте через ffi.

Стандартного java runtime в 99% случаях вполне достаточно, чтобы не испольовать JNI :)

swizard
()

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

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

> Остались очень приятные впечатления после использования всяких лямбда-спирит штучек, входящих в состав boost`а. пишу и сейчас на этом.

А читаешь?

По-моему, Perl - вершина читабельности по сравнению с heavily-boosted C++.

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

Если ты даже Лисп ниасилил - то тебе и на бейсике песать нельзя, а уж на Жабе и подавно.

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

java появилась после C++, но ничего принципиально нового (как язык)
не внесла, зато "упростила" многие вещи. Согласен с автором
http://www.leptonica.com/design-principles.html#EXTREMISM
Можно рассматривать java, как диалект C++.
C++ лучше java (для меня лично), потому что "роднее" :)

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

> По-моему, Perl - вершина читабельности по сравнению с heavily-boosted C++.

Перл я не пробовал, но не думаю, что даст приимущества, например, в задачах обработки видео. В тоже время, для несложного сетевого приложения он, может, и подойдет лучше буста+какойто_сетевой_либы+С++.

ierton ★★
()
Ответ на: комментарий от Valeriy_Onuchin

> ava появилась после C++, но ничего принципиально нового (как язык) не внесла, зато "упростила" многие вещи.

А какже автоматическая сборка мусора? Это, возможно не нечто _совсем_ новое, но шаг вперед по сравнению с С++. Конечно, используя умные указатели в С++ можно добиться похожего результата, но это требует некоторой культуры программирования. В жабе же, пройдет любая расточительность.

Вообще, про культуру: мне приходилось работать с людьми, которые писали на яве, а потом перешли (в нашу контору) на С++ писать. По началу они вообще не думали об освобождении ресурсов.

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

>По началу они вообще не думали об освобождении ресурсов.
школьники?

как это часто бывает одна и та же вещь - это и хорошо, и плохо ..
я про GC. После того, как наступила эпоха valgrind, GC - это неактуально

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

> После того, как наступила эпоха valgrind, GC - это неактуально

Ути-пути, смешной какой человечек. У него уже и GC неактуально...

Ладно бы оно тявкнуло про region analisys, так нет, банальный трассировщик ему GC заменяет.

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

> за свою жизнь я написал более мульона линий C++ кода обходясь без GC

Ну я и говорю - ламерьё ты полное. Другой бы на твоём месте написал бы десять тысяч строк кода на Лиспе, которые делали бы то же самое, что твой быдлокод на быдло-C++, только лучше и быстрее.

Ну тупой ты, тупой, потому и не догоняешь в силу своей безмерной ограниченности: GC эффективнее. Во первых, GC позволяет использовать функциональный подход к работе со структурами данных - много-много копирований. Это с одной стороны даёт транзакционность на халяву, с другой - высокую эффективность разделения элементов структур. Если бы ты не был таким непроходимым тупицей (а все сиплюсисты - непроходимые тупицы), то ты бы почитал Криса Окасаки и обрёл бы просветление.

Во вторых, GC позволяет эффективно распределить время, расходуемое на освобождение памяти. У тебя, приплюснутого дурилки, да ещё и пользующего такое отстойное говнище, как root, на удаление разлапистого, большого дерева и уйдёт O(N), где N - количество узлов. В случае с GC это время будет распределено разумным образом, и не скажется на латентности отклика приложения.

В третьих, компактифицирующие GC повышают производительность иногда в разы, за счёт того, что структуры данных, используемые совместно в одно время имеют шанс попасть в кэш целиком. При замшелом и ублюдочном способе выделения памяти, который доступен в C++, практически нереально гарантировать выделение связанных между собой объектов в одной области памяти.

Про realtime GC, про автоматический region inference и про много чего ещё я тебе и рассказывать не стану - уж этого ты гарантированно не поймёшь, умом ущербен ибо.

Так что, ламер, иди, дрочи свой root дальше. Только не вылезай тут со своими идиотичными до крайности советами и со своим ущербным, безграмотным мнением. Ок?

anonymous
()

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

По пунктам.

> 1. Сложности разработки

На саму сложность задачи никак не может влиять (вообще-то есть разные мнения), но вот от рутины избавляет, и очень сильно избавляет. Заметно упрощает тестирование. По трейсам намного проще определить где упало, и почему. И тому подобное.

Но требует другого подхода в работе с памятью. Сборщик мусор не избавляет от проблем, и никогда не сможет избавить от них. Он просто переводит их в другую плоскость. Нужно мыслить немного не так, как это принято в мире C/C++.

> 2. Сложности сопровождения

Вероятно, Java проще.

> 3. Возможностям самого языка - *ОП

Java ближе к ООП (спорить ни с кем не буду, ибо нет ни времени, ни желания :) ).

> 4. Вертикальной интеграции готового проекта

Хм. Что это такое? Вероятно, опять Java... :)

dave ★★★★★
()
Ответ на: комментарий от Valeriy_Onuchin

P.S. И вообще, какое право имеет чмошник, не знающий ни хера кроме C++, сравнивать С++ с другими технологиями и вообще иметь мнение?

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

Браво =)

ЗЫ: но до луговского все равно немного не дотягивает

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

Не обращайте внимания. Это - единственный способ защиты от хамства здесь. А хамят почти всем. Даже тем, в чьей врожденной интеллигентности не приходится сомневаться... Такая селяви.

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

> А хамят почти всем.

Это ложь. Заткнись ничтожество!

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

> Перл я не пробовал, но не думаю, что даст приимущества, например, в задачах обработки видео.

А boost::lambda или, упаси бог, boost::spirit в них зачем может понадобиться?

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

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

> ...и в перле есть родные лямбды и замыкания ;)

Смею заметить, что в Java 1.7 они тоже должны, вроде как, быть.

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

> А boost::lambda или, упаси бог, boost::spirit в них зачем может понадобиться?

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

> большая часть boost-а - это пример использования неплохого инструмента (плюсовые шаблоны) не по назначению.

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

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

>Аффтар пишет граматна и уже четвертый раз. Книжка считается бестселлером

Этот аффтар в последнее время все чаще хаит жабу и восхваляет Питон. Планируется выход книжки "Thinking in Python" А вообще книжки конечно хорошие, но для начинающих...

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

И еще - имхо С++ стоит знать только для того чтобы не возникало соблазна на нем писать. Python наше все - идеальный clue language. Пишем на нем логику остальное юзаем из либы/через биндинги/ctypes или пишем на чем угодно сами + биндинги опять же. Для жабы могу посоветовать jython - приятная вещица. Гораздо лучше голой жабы.

imp ★★
()

если собираешься писать на java большой проект
сначало стоит начать все таки ознакомление с страницы:
http://bugs.sun.com/bugdatabase/index.jsp
у вас все будет замечательно до того момента пока не наткнетесь на какой либо баг.
постить на bugs.sun.com баги бесполезно так как все равно вы не дождетесь что его исправят.
ни для кого не секрет что существует куча багов тянущихся еще с древнего 1.4.
когда их будут исправлять совершенно не понятно.

anonymous2 ★★★★★
()
Ответ на: комментарий от ierton

> > А boost::lambda или, упаси бог, boost::spirit в них зачем может понадобиться?

> буст-спирит может пригодится везде, где требуется парсер чего-нибудь. например, гдето в туториалах к нему видел парсер TCP-пакетов.

Я бы не эстетствовал, а взял бы отдельный от языка генератор парсеров - ANTLR или Ragel или даже flex+bison.

> > большая часть boost-а - это пример использования неплохого инструмента (плюсовые шаблоны) не по назначению.

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

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

anonymous
()

Вопрос решен :) ... в пользу: "C++ - Engine Core/platform , Python - scripting support for the search engine and some apps" . Вот так вот)

insidex
() автор топика
Ответ на: комментарий от ubber

> У вас снобизьм зашкаливает, я щитаю. ;)
> ^ ^
> Как минимум, словарь руССкого языка.

Да, книжка действительно неплохая ;-)

m0rph ★★★★★
()
Ответ на: комментарий от swizard

> ...и в перле есть родные лямбды и замыкания ;)

Как ни странно - да. И это в языке, заслуженно считающемся говном.

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

> > У вас снобизьм зашкаливает, я щитаю. ;)
> > ^ ^
> > Как минимум, словарь руССкого языка.

> Да, книжка действительно неплохая ;-) 

Ви мене обидеть хотите, да?

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

> Вопрос решен :) ... в пользу: "C++ - Engine Core/platform , Python - scripting support for the search engine and some apps"

Хороший выбор.

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