LINUX.ORG.RU

Производительность Java, C и C++

 , , ,


4

6

Предположим я не тролль, а правда знаю C, C++ и Java.

Java умеет оптимизировать «горячий путь», т.е. в среднем должна быть быстрее на этом пути, чем программы на C или C++. С другой стороны при отклонении от этого «горячего пути» начинаются тормоза.

В большинстве случаев в интерпрайзе(вэб/промышленное ПО) применение java оправдано(там где регулярно выполняется всего 10 основных действий). Т.к. порог вхождения у java ниже - можно найти больше программистов, следовательно дешевле разработка.

Вопрос: чем вызвано массовое увлечение написанием десктопного ПО на java, ведь явного «горячего пути» в десктопных ПО обычно не существует?

ЗЫ программисты на Qt, а не на C++ проходите мимо, вопрос к людям постарше.


Ответ на: комментарий от eao197

В современном-то C++ что не так с производительностью?

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

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

Не было ни Heartbleed, ни Cloudbleed.

и что? ошибки программирования. это не проблема языка

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

не причина скатываться до уровня обслуживания тупой школоты.

Проблема в том, что мы все тупая школота (хотя уровень тупости разный). Только ты боишься в этом признаться.

tailgunner ★★★★★
()
Последнее исправление: tailgunner (всего исправлений: 1)
Ответ на: комментарий от Iron_Bug

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

Конкретные примеры будут? Или опять отделаемся общими фразами про большой опыт и клиентов из 15 стран?

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

Скажите, а в 2017-м году еще осталось программирование без слов «продукт», «бабки», «продажи»? Я пошел в программирование, так как все вышеперечисленное мне глубоко омерзительно. Я вообще кто, программист или торгаш?

Если это не учебное программирование, то я сильно сомневаюсь. вам в любом случае придётся с этим столкнуться.

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

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

Rust в этом не лучше? я просто не в теме с системными языками.

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

Хорошо, что из Свердловска ты, похоже, уже не вылезешь, и к серьёзной разработке, вроде автопилотов, тебя с таким «20-летним опытом» никто не подпустит.

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

Если это не учебное программирование, то я сильно сомневаюсь. вам в любом случае придётся с этим столкнуться.

Если попадет гребцом на галеру рядовым программистом в крупную аутсорсинговую компанию, то может и не столкнуться. Будет иметь дело разве что с тасками, тикетами, репортами и дедлайнами.

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

Конкретные примеры будут? Или опять отделаемся общими фразами про большой опыт и клиентов из 15 стран?

хотел было накидать примеров, но потом подумал, что это легко и пусть она потрудится — может че про с++ почитает там, полезно ведь

так что я тут попишу о том, какие вещи в си (без плюсов) отданы на откуп компилятору и их нельзя изменить вручную — и это плохо

их можно разделить на 2 категории:

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

2. времени компиляции (т.е. их вроде как можно обойти, не тормознув программу)

навскидку это:

1A. calling conventions в широком понимании этого слова, т.е., переходя к конкретным хотелкам, это: naked functions (а-ля фортран), совместимые с си calling conventions для замыканий, изготовление собственных trampolines (типа как в расширениях gcc) и т.п.; ну а че, может мне нужен spaghetti stack для данной конкретной задачи?

1B. то, что указатель имеет право указывать только на непрерывную область значений

2A. то, что ++ над указателем инкрементирует на sizeof

2B. type promotion — я бы назвал ее совершенно идиотской

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

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

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

применять до тех пор, пока не сформируется стойкое понимание того, что:

1. при программировании ошибок не меньше, чем при игре в шахматы

2. компилятор мог бы точно так же ловить ошибки программирования, как stockfish ловит шахматные ошибки

www_linux_org_ru ★★★★★
()
Последнее исправление: www_linux_org_ru (всего исправлений: 1)
Ответ на: комментарий от www_linux_org_ru

так что я тут попишу о том

Вопрос был о том, что в «современном» С++ ухудшилось в сравнении со «старым» С++. В приведенном списке ничего подобного не обнаружилось (хотя может это уже из-за старпёрской тупости).

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

можно было бы начать с вопроса о том, что ухудшилось (в определенном смысле) в с++ по сравнению с си — но, понятное дело, своим постом я на этот вопрос не ответил (дабы побудить Iron_Bug почитать че-нить про с++) — а ответил о том, что ухудшилось в си по сравнению с ассемблером

после ее ответа я че-нить добавлю по теме

www_linux_org_ru ★★★★★
()
Последнее исправление: www_linux_org_ru (всего исправлений: 1)
Ответ на: комментарий от www_linux_org_ru

что ухудшилось (в определенном смысле) в с++ по сравнению с си

Мне, в общем-то, даже это не интересно. Вопрос был именно про разницу между «современным» и «старым» С++.

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

Вопрос был о том, что в «современном» С++ ухудшилось в сравнении со «старым» С++. В приведенном списке ничего подобного не обнаружилось

т.е. я понял тему вот так:

Что именно в современных плюсах: a) ведет к монстроузности? b) ведет к потере оптимальности? Производительность Java, C и C++ (комментарий)

но если интересует разбивка по истории развития с++, то это вопрос сложнее — т.к. я точно не знаю, в каком стандарте была добавлена та или иная фича в плюсы

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

Мне, в общем-то, даже это не интересно. Вопрос был именно про разницу между «современным» и «старым» С++.

как ты определяешь старый с++? не обязательно именно год стандарта, можно надергать фич из разных стандартов

update: может твой вопрос это «если мы пишем на вот таком подмножестве с++ (тут описание подмножества) и компилируем современным компилятором, то чем это хуже чем си» ?

www_linux_org_ru ★★★★★
()
Последнее исправление: www_linux_org_ru (всего исправлений: 2)
Ответ на: комментарий от eao197

Если про какой-нибудь сервер-сайд или middleware, то здесь ситуация совсем другая и непонятно, нафига туда вообще нужно тянуть Qt.

Не то, чтобы я агитировал, но оно предлагает неплохие альтернативы для некоторых частей - работа с сокетами (включая tcp/udp сокет), «человеческий» (на самом деле нет, но лучше, чем оригинальный) интерфейс к dbus, http запросы и их обработка (включая json), стандартный интерфейс к sql базам данных, какие то обертки для стандартных типов (ненужный теперь qvariant, qstring/qstringlist), локализация (тут я не уверен, на самом деле). Да, большую часть из этого можно заменить бустом (или, что хуже, какой то маргинальной либой-оберткой), но какая принципиальная разница - буст или qt.

arcanis ★★★★
()
Последнее исправление: arcanis (всего исправлений: 2)
Ответ на: комментарий от rumgot

Посмотри сколько ресурсов требовал Project Looking Glass. Что-то я думаю, что требовал он гораздо меньше чем сегодняшняя плазма на JavaScipt'е.

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

но какая принципиальная разница - буст или qt.

Смотря по какому критерию. Если в плане производительности, то сильно сомневаюсь, что поддержка сети в Qt сделана настолько же эффективно, как в Boost-е (или в ACE/libev/libevent/libuv).

Да и если нужен, например, SQL, то есть ли у Qt какие-то преимущества перед намного меньшими по размеру SOCI и OTL?

Ну и если мы говорим про размер зависимости, то практически все эти же средства (не уверен на счет dbus и локализации), можно получить в намного более компактной POCO.

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

Если в плане производительности

Да, сорян, этот аспект я обычно упускаю, специфика немного другая.

Да и если нужен, например, SQL, то есть ли у Qt какие-то преимущества перед намного меньшими по размеру SOCI и OTL?

Не скажу. Я sql в qt использовал только раз и вкупе с другими частями.

То есть да, следует уточнить, что ради полутора фич qt тянуть, конечно, не надо :)

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

как же хорошо что в жабе есть «удобный инструмент для работы с потоками» а больше нигде нету. кроме раста, вроде бы там тоже браузер запилили который на простой вкладке с linux.org.ru 330 потоков создал и сдох.

ckotinko ☆☆☆
()
Ответ на: комментарий от Iron_Bug

если бы это не портило производительность - хрен бы с ним

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

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

а gcc может в такие платформы? в проце zcpu пришлось инструкции вводить специальные для gcc потому что он дуреет.

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

Понятия не имею на счет gcc. У меня знакомый в конце 90-х писал свой компилятор C++ для встраиваемых устройств и DSP, он рассказывал про наличие платформ, на которых все целочисленные типы по 32 бита и ничего с этим не сделать.

Но Iron_Bug ведет себя в разговоре так, как будто круче нее только горы, вокруг одна школота безграмотная и никто здесь даже пороху не нюхал... Вот и хотелось услышать чего-нить эдакого :)

eao197 ★★★★★
()

ЗЫ программисты использующие библиотеки проходите мимо, вопрос к людям помладше.

fixed

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

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

так такие инструменты сейчас везде и не в единственном экземпляре

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

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

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

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

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

эталонная профдеформация сишника-байтоёба.

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

ты и сам себя так ведёшь в тредах про сами знаем что

Примеры приведете так же, как это сделал RazrFalcon?

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

Можно поинтересоваться, что не так с RAII?

Настоящие программисты устраивают заход Солнца только вручную.

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

Настоящие программисты устраивают заход Солнца только вручную.

в этом нет ничего плохого, но только когда это оправдано

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

Вопрос: чем вызвано массовое увлечение написанием десктопного ПО на java

Массовое увлечение - это про бложики с обрывками кода, в т.ч. и на цепепе, где авторы друг перед другом вот уже много лет демонстрирует публике свои-мысли-свои-скакуны :-) А написание десктопного софта на Java - это про бизнес, а не про увлечения :-) Это тебе не бложики про «ужас-ужас, тут лишняя аллокация» или про «а как вы относитесь что в моём цепепе коде присутствуют функции из стандартного C?» :-) Бизнес занят зарабатыванием денег, а не борьбой с собственными тараканами :-) Поэтому, пока в каком-нибудь микро-сообществе того же цепепе днями и ночами вот уже долгие-долгие годы обсуждаются проблемы грандиозного масштаба типа «использовать ли нам чёрточки_в_идентификаторах вместоКэмэлаКэйса», на Java пишется реально работающий софт :-) И пишется не для того, что показать читателям бложика свою неимоверную крутость в написании никому ненужных шаблонов на цепепе или макросов на лиспе, а потому что это бизнес, где важен прагматизм, а не фанатизм :-)

PS. Так, для сведения, всего за пару лет на Java написали IDE для цепепе - Clion :-) Хоть что-то более-менее качественное и доступное :-) Попробуй-ка напиши аналог на сверхбыстром цепепе :-) Лол :-)

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

это бизнес, где важен прагматизм, а не фанатизм :-)

с позиции бизнеса как раз все очень прозрачно, но все-таки вопрос был больше про pet-проекты

Так, для сведения, всего за пару лет на Java написали IDE для цепепе - Clion :-) Хоть что-то более-менее качественное и доступное :-) Попробуй-ка напиши аналог на сверхбыстром цепепе :-) Лол :-)

но-но, не передергивайте. CLion написала крупная IT-компания, у которой ява-кодеры составляют основу штата. Были б средства и кадры - на асме или хаскеле за год бы накодили.

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

CLion написала крупная IT-компания, у которой ява-кодеры составляют основу штата.

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

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

с позиции бизнеса как раз все очень прозрачно, но все-таки вопрос был больше про pet-проекты

Кому они нужны, собственно? :-)

но-но, не передергивайте. CLion написала крупная IT-компания

По сравнению? :-)

у которой ява-кодеры составляют основу штата.

Потому что основной язык у них Java :-)

Были б средства и кадры - на асме или хаскеле за год бы накодили.

Причём тут асм или хаскель? :-) Ты спрашивал про Java :-) Или теперь ты сам себя убеждаешь, что «асм и хаскель тоже хороши, были б средства, то вполне!!11»? :-) Лол :-)

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

Потому что основной язык у них Java :-)

выше eao197 более точно сформулировал почему JetBrains может клепать не менее чем по одному новому IDE в месяц

Причём тут асм или хаскель? :-) Ты спрашивал про Java :-) Или теперь ты сам себя убеждаешь, что «асм и хаскель тоже хороши, были б средства, то вполне!!11»? :-) Лол :-)

«непонял что написано, но ответ написал»(ц)

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

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

выше eao197 более точно сформулировал почему JetBrains может клепать не менее чем по одному новому IDE в месяц

Это факт :-) Факт и то, что клепают на Java :-) За JetBrains можно только порадоваться :-)

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

Такое впечатление, что разговариваю с юношей :-) Юноша, пойми тот факт, что JetBrains, как и многие-многие компании пишет именно на Java, а не Хаскель :-) Если ты не понимаешь, что такое индустрия, то открой вакансии и посмотри, сколько требуется программистов на Java, и сколько требуется программистов на Хаскель :-) Может тогда дойдёт :-)

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

А написание десктопного софта на Java - это про бизнес, а не про увлечения

Какой софт, кроме IDE есть на java под десктоп?

Как-то очень сомнительно, что java для бизнеса это desktop приложения.

Надо: Просмотр картинок, pdf (с возможностью выделения текста и хайлайта) Терминал, serial terminal ssh клиент, vnc/rdp hex editor Графический редактор растровый/векторный Видеоредактор Браузер timetracker календарь-планировщик

Пока получается, что JRE хорошо сидит на специфическом вебе/RPC, в нише IDE для java, а во всех других областях провал.

Почему бизнес не выпускает массовых продуктов на java?

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

Как-то очень сомнительно, что java для бизнеса это desktop приложения.

Сказал уже про платные IDE от одной из компаний :-) Взгляни на тот же популярный среди разработчиков БД коммерческий инструмент dbWrench :-) Кстати, его делает один человек, а не «крупная IT-компания» :-) Ты не сомневайся :-)

Надо: Просмотр картинок, pdf (с возможностью выделения текста и хайлайта) Терминал, serial terminal ssh клиент, vnc/rdp hex editor Графический редактор растровый/векторный Видеоредактор Браузер timetracker календарь-планировщик

Я не против :-) Мне тоже надо :-) Ещё мне надо качественную IDE, коммерческую, само собой :-) Чтобы с поддержкой :-) Вот люди и покупают десктопный софт на Java :-)

Пока получается, что JRE хорошо сидит на специфическом вебе/RPC, в нише IDE для java, а во всех других областях провал.

В каком ещё специфическом вебе? :-) Лол :-) Этот сайт, по-моему, тоже на Java написан :-) Какой провал, ты о чём вообще? :-) Пока иные красноглазые специалисты обсуждают флейм Qt vs FLTK vs wxWidgets, в Java просто берётся стандартный пакет для GUI и пишется рабочий софт :-)

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

Такое впечатление, что разговариваю с юношей :-) Юноша, пойми тот факт, что JetBrains, как и многие-многие компании пишет именно на Java, а не Хаскель :-) Если ты не понимаешь, что такое индустрия, то открой вакансии и посмотри, сколько требуется программистов на Java, и сколько требуется программистов на Хаскель :-) Может тогда дойдёт :-)

ты либо читать не умеешь, либо идиот

при чем тут конкретно Хаскель?) он там как пример

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

ты либо читать не умеешь, либо идиот

Теперь я понял, что ты не простой юноша :-) Тебе объяснять бесполезно :-) Когда создашь свою компанию, возьмёшь Хаскель с асмом и удивишь мир своей поделкой, тогда вернёмся к обсуждению :-) А пока продолжай удивляться про Java с верою в мощь Хаскеля при наличии команды и ресурсов :-)

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

Теперь я понял, что ты не простой юноша :-) Тебе объяснять бесполезно :-) Когда создашь свою компанию, возьмёшь Хаскель с асмом и удивишь мир своей поделкой, тогда вернёмся к обсуждению :-) А пока продолжай удивляться про Java с верою в мощь Хаскеля при наличии команды и ресурсов :-)

тебя похоже били и насиловали программисты на Хаскеле, от его упоминания вскользь у тебя слишком сильно бомбит)

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

Почему бизнес не выпускает массовых продуктов на java?

может быть боится потерять аудиторию?

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

тебя похоже били и насиловали программисты на Хаскеле

Ты бредишь :-) Займись делом :-) Напиши что-нибудь дельное на Java :-) Хаскель, кроме понтов, ничего тебе не даст :-) А то так и будешь с дырками в карманах ходить неудовлетворённый, закорючки в уме сочинять :-) Лол :-)

anonymous
()

ведь явного «горячего пути» в десктопных ПО обычно не существует

Поэтому браузер надо взять на UI, а бекенд пилить на джаве и будет всем счастье ) Это еще SaaS называется.

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

может быть боится потерять аудиторию?

Скорее не хотят переписывать с нуля и набирать новое ядро разрабов.

Почему бизнес не выпускает массовых продуктов на java?

Выпускает, просто на сервер-сайде она не видна.

foror ★★★★★
()
Последнее исправление: foror (всего исправлений: 1)
Ответ на: комментарий от foror

Поэтому браузер надо взять на UI, а бекенд пилить на джаве и будет всем счастье ) Это еще SaaS называется.

да ты у нас самый модный в этом чате!

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