LINUX.ORG.RU
ФорумTalks

Давно я не вбрасывал: стоит ли снова трогать С++ после Java?

 ,


1

2

Хоть и не пятница, но все же. Есть необходимость написать пару-тройку простеньких утилиток, что-то для заказчика, что-то просто другу в помощь, который сейчас пытается с нуля на производстве одну сложную хренотень поднять, что-то для себя. Целевая ОС (кроме меня) - винда.

Для себя я такие писал по привычке либо на питоне (без гуя), либо на джаве со свингом (с гуем). А тут че-то на волне новости про новые культи и их креатор меня поперло вновь потыкать в плюсы. Ведь когда-то я на них писал, собирал «дистрибутивы» под все ОС, что меня дико радовало. Я даже поставил креатор с кьютом, посмотрел на дефолтный код…

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

Об абзаце выше: когда отдаешь человеку, который комп умеет только включать и мышевозить по заданному алгоритму, нативное приложение (читай екзешник), то он его просто запускает и оно работает. Не важно, что рядом с ним лежат dll файлы кьюта, оно просто работает. Если отдавать ему джавашное приложение, то нужно либо как-то учить его ставить нужную джаву и объяснять, как стартануть джарник (проходили такой процесс, такое себе), либо паковать нужную джаву в «дистрибутив» и писать промежуточное нативное стартовалово (либо екзешник, либо батник), что добавляет немного лишних действий при распространении утилиты.

Вопроса как бы и нет. Просто мысли вслух. А стоит ли?

★★★★★

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

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

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

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

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

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

Ладно, убедил, раз не компилируется твое говно, то язык на помойку. Как вообще можно программировать если не компилируется какая-то фигня?

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

Ага, вон многих ад С++ строк почему-то не научил что некоторые вещи просто должны быть в стандартной библиотеке, пусть даже с недостатками.

В Rust то же самое с обработкой ошибок, сильно геморно сделали, теперь там тоже зоопарк. Нужно было больше эргономики

vertexua ★★★★★
()
Последнее исправление: vertexua (всего исправлений: 1)

По теме. С++ подталкивает к переусложнению. Там где можно решить задачу несколькими функциями, на плюсах часто выливается в россыпь интерфейсов и реализаций с нетривиальными связями. Учитывая твой Java-бэеграунд, оверинженеринг почти гарантирован. И тут всплывает то, что поддерживать это на плюсах выходит сложнее чем на Java.

Но все же плюсы прикольные, один из нескольких языков, от которых я получаю кайф.

filosofia
()

нужно либо как-то учить его ставить нужную джаву

В джаве давно можно собирать дистриб под все ОС. Почитай современные доки. В винде же я просто создаю ярлык с javaw -jar myapp.jar и работает как обычный экзешник. В линуксе есть binfmt через который сделать все jar исполняемыми.

foror ★★★★★
()

Целевая ОС (кроме меня) - винда.

Возьми C# и не выделывайся.

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

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

Lrrr ★★★★★
()

А стоит ли?

Быть пацаном - поставь .net будет и экзешник и куча возможно нужных интеграций и познаешь новое :D :D . Можно даже на mono, а потом для винды на vs собрать. Я полтора года назад на c#.

vtVitus ★★★★★
()

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

Лет пятнадцать, если не больше, JAR-файлы не нуждаются во внешнем батнике для своего старта, нужна только установленная JRE. Ты где был все эти годы?!

iZEN ★★★★★
()
Последнее исправление: iZEN (всего исправлений: 1)

Когда ты пишешь на Qt, ты пишешь на Qt, а не на C++. Там всё скрыто и задрапировано, ручной работы практически не нужно. Не боись.

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

С другой стороны - установка нужной джавы, это уже не моя проблема.

JRE уже все кому не лень с собой в архиве тащят.

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

Вспомнить можно, но если интересны именно новые возможности, то вот, но как по мне с полвиной из них писать говнокод только проще становится, поэтому как и всегда - всё хорошо в меру. В остальном же всё-таки при написании в Qt по моему хорошее правило использовать только кьютовые возможности. Кстати как вариант освежить память рекомендую почитать как раз книжку Бланшетта и Саммерфилда по кьюту

AKonia ★★
()
Последнее исправление: AKonia (всего исправлений: 1)

ну а почему нет то, если хочется?

zgen ★★★★★
()

что потребует изменения мышления и ломки мозга

Вот поэтому и стоит в это ввязываться. Чтобы посмотреть что во круг происходит и мозг потренировать.

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

С другой стороны - установка нужной джавы, это уже не моя проблема.

Так вроде есть же javapackager который может собрать исполняемый бандл со всем необходимым classpath и с jre. Смотреть тут и тут, думаю еще стоит поискать инфу по dzone.com. Я сам не пользовался, но читал про эту фичу.

Aber ★★★★★
()

Используй jpackage @Zhbert

Его добавили в Java 14. Через пару недель выйдет Java 17 LTS - самое время начать этим пользоваться.

https://www.youtube.com/watch?v=ZGW9AalZLN4

Около года назад я тоже заинтересовался было современным C++, но поковыряв его какое-то время решил, что оно ещё не готово.

hummer
()

Я когда то пробовал.
Не выдержал.

grim ★★☆☆
()

«Давненько не брал я в руки шашки!»

rupert ★★★★★
()

Нет, в самом деле, а почему не 1С?

Shulman
()

Я недавно кваркус попробовал. Он в нативном режиме собирает совсем небольшой бинарник. Запускается моментально. Не знаю, зачем теперь нужны другие языки кроме Java. Просто пока не все в курсе. Скоро зелёные треды допилят и можно смело сдавать весь современный IT в утиль, Java тупо лучше всего, что есть. Ну может для операционных систем и встроенных систем C/C++/Rust ещё полезны, но никак не для приложений для конечного пользователя.

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

Не знаю, зачем теперь нужны другие языки кроме Java. Просто пока не все в курсе.

Осталось самую малость: убедить множество программистов на других языках использовать Java в своих проектах.

Скоро зелёные треды допилят и можно смело сдавать весь современный IT в утиль

Было уже на Sun Solaris (на процессорах SPARC). Не взлетело.

Java тупо лучше всего, что есть.

Почему не Eiffel, чёрт возьми?!

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

Вот потому плюсистов и не любит никто. Типичный NIH синдром-же, а не «комитет во всём не прав». Смотришь чужие наработки на гитхабе, и видишь что проще с нуля переписать чем переиспользовать, но потом понимаешь что тогда ты тоже создашь своё ни с чем несовместимое говно. А потом просто берёшь нормальный язык/среду с не таким упоротым сообществом и просто делаешь то что задумал, а не реализуешь с нуля по 100500-му разу базовые алгоритмы, которые в стандартной библиотеке по мнению сообщества недостаточно кошерные.

Потому, что большинство языков делает один человек или одна группа людей. У них одна основная реализация. И единственный компромисс, про который нужно думать - обратная совместимость. Поэтому и результат лучше. У С++ всё по-другому. Но и свои плюсы, конечно, в модели С++ тоже есть.

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

Осталось самую малость: убедить множество программистов на других языках использовать Java в своих проектах.

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

Скоро зелёные треды допилят и можно смело сдавать весь современный IT в утиль

Было уже на Sun Solaris (на процессорах SPARC). Не взлетело.

А сейчас взлетит. Кто такой этот солярис, кто его видел? Никто не видел. А сейчас везде будет в крутом виде, как в Go, только ещё доработанней.

Почему не Eiffel, чёрт возьми?!

Не знаю, что это.

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

https://wiki.openjdk.java.net/display/loom/Main

Будет возможность использовать обычное API для потоков, но при этом реально будут использоваться легковесные потоки, которые не занимают память и не требуют ОС для переключения.

По сути вся эта возня с реактивной асинхронщиной резкой станет ненужной.

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

самое крутое, что в тиобе наконец-то добавили иконки для языков!

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

Можно и так сказать. Аналогично тому, как это сделано в го.

Legioner ★★★★★
()

как может пионер компьютерной науки, известный своим вкладом в создание языка программирования C и операционной системы UNIX, спроектировать плохой язык программирования?что не так с GO?

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

всем насрать std - часть языка или нет

Это мог бы быть и не std. Reset именно об этом и говорит.

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