LINUX.ORG.RU
ФорумTalks

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

 ,


1

2

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

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

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

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

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

★★★★★

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

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

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

У меня тоже возникла потребность написать пару утилиток на плюсах где-то год назад. Решил заодно подучить новые фичи появившиеся со времён C++98. И должен сказать, что нынешние плюсы, а вернее новые фичи в STD делают его всё более похожим на современные инструменты. Я даже какое-то удовольствие получил от разработки на нём, прям не ожидал даже.

DawnCaster ★★
()

Стандартный ответ: только если вам это интересно.

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

Разве нет утилит для автоматического пакования джара в ехе?

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

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

То есть взять книжку Шилдта, дабы освежить память, уже не прокатит? =)

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

Заинтриговал прям…

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

автоматического пакования джара в ехе

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

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

То есть взять книжку Шилдта, дабы освежить память, уже не прокатит? =)

Чукча не читатель. У меня просто не так много свободного времени. Я лучше сразу поговнокожу с открытым в браузере cppreference.com.

Мой основной язык, всё-таки C#, я посчитал что уж со всякими новыми контейнерами-итераторами, многопоточностью и синхронизацией в плюсах я как-нибудь справлюсь. В целом так и получилось - всё довольно просто оказалось, как по мне.

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

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

Но - Qt до сих пор на древних, и приехали.

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

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

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

Первый устарел уже, что ли? Помню, книжка была просто отличная, до сих пор стоит на полке.

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

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

Zhbert ★★★★★
() автор топика

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

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

Я, честно говоря, не вижу смысла учить язык, если он не нравится. Вспоминание прошлого и требование рантайма, ИМХО, скорее сомнительные поводы.

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

fernandos ★★★
()

Есть необходимость

А конкретно для тебя в чём профит в первую очередь? Сделать заказ/помочь или всё же потыкать джаву и плюсы?

Если первое, то для

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

Бери .NET. Если оффтопиков дома не держишь, то

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

подключайся удалённо к этой винде и там кодь.

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

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

Язык действительно лучше чем раньше, можешь освежить и Шилдтом, но потом поковыряй разные Modern C++, какие-то summary по стандартам начаниая с C++11

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

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

Я тебе открою страшную тайну – умные указатели были в плюсах и 30 лет назад.

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

Всё уже было изобретено давно. Просто теперь это есть в STD и является частью стандарта С++11 и выше. А значит не нужны никакие boost’ы и не придётся мешать разные реализации вместе. И под понятием «поизучать новые плюсы» имелось ввиду именно вот это вот всё, не придирайтесь к словам.

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

про какой С++ речь ? стандарт ? С++ все больше питонизируется, и лично меня это очень радует. Указатели больше не нужны, реально, если это не эмбеддед, то сырыми указателями лучше не пользоваться и использовать умные указатели. А в 20 стандарте указатели не только умные, но и атомарные.

linuxoidspb
()

стоит ли снова трогать С++ после Java?

нет.

olelookoe ★★★
()

стоит ли снова трогать С++ после Java?

Разрешаю. Только руки помой.

ncrmnt ★★★★★
()

А как тебе питон, кстати, не зашел в итоге?

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

Просто теперь это есть в STD и является частью стандарта С++11 и выше.

В C++ не надо полагаться на std. В std всё сделано на от***сь и местами неюзабельно. Например 10 лет не могут завести в библиотеку future с пайплайнингом. Ну нахера такие future нужны? Очевидно, что ими никто не пользуется и все пишут свое. Тоже самое будет со всеми другими нововведениями. Так называемый «комитет» принимает очень компромиссные решения, которые в итоге никого не устраивают.

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

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

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

Пора уже знать, что язык — это не только определение грамматики. В С++ стандартная библиотека является неотъемлемой частью языка.

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

В современных плюсах давно уже есть всякие разные умные указатели, на любой вкус

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

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

Не языка, а так называемого «стандарта».

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

Это всё вторичные вещи. Вот что первично - так это создать ПО реализующую требуемую задачу, для начала на уровне MVP. Для этого и нужны стандартные алгоритмы. То что они неоптимальны - это дело десятое, потом уже, когда прототип готов - вещи которые работают плохо из-за алгоритмов, они уже переписываются.

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

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

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

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

Да всем насрать в чем оно, кроме того того что инновации в компиляторе сделали эти либы возможными.

Move, который позволил их написать в либе или нет?

Можно ли их было написать в VC++6 или Turbo C++?

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

Поставь Go/Rust и не мучайся сам, не мучай плюсы

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

let f = |x| x;
f(1i32);
f(1u32);

или все как обычно? :))

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