LINUX.ORG.RU
ФорумTalks

Переход с Java на C++

 , , ,


1

5

За свою карьеру встречал немалое число программистов, пришедших в Java из C/C++, а наоборот практически не встречал. Помню лишь одного, решившего уйти в C++, но по личным причинам - нежелании работать под руководством конкретного Java тимлида. Однако это весьма редкое исключение или даже казус, обсуждать который не стоит. Мне вот интересно, а какие у вас наблюдения и что вы вообще думаете о переходе с Java на современный C++ (не на C)? Скажем, как минимум на C++14.

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

То есть считаешь, что это невозможно или переход на C++, для джаваиста, это дауншифтинг?

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

Я пишу на C++ уже лет 6-7. В принципе, если бы отмотать время назад, то я бы из этих двух вероятно выбрал бы Java. Потому что в случае C++ много времени приходится тратить на изучение самого языка, а не предметной области. А сейчас мне уже лень снова с джуна начинать и по з.п. спускаться обратно.

rumgot ★★★★★
()

По-моему, Java более предпочтительна в плане поиска работы. Я живу в Java мире, везде вижу только джавистов. Возможно, профессиональный перекос.

Irben ★★★
()

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

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

По сложности языка Java тоже не стоит на месте. По-моему основное различие в привлекательности C++ и Java - это их экосистемы и методологии разработки. Засилие препроцессорных директив, делающих целые куски кода опциональными, засилие typedef-ов на typedef-ы, архаичные системы сборки и масса проблем с ними, нестандартные и несовместимые между собой расширения компиляторов, очень большой объём довольно древнего кода. Обычно это либо отпугивает, либо является аргументом для бывших сишников не возвращаться во всё это после Java или C#. Но ведь и C++ и его экосистема тоже не стоит на месте и в принципе на современном C++ и с современными инструментами тоже можно довольно комфортно программировать?

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

Эти языки применяются для разного. Эта тема - не о выборе языка программирования, а о смене карьеры.

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

Да, знаю. Это всё кровавый энтерпрайз, которого просто больше. Но речь ведь не о выборе новичка, что ему учить. При желании можно сочетать разработку на Java и на C++. Знаю не мало контор, где есть и то и другое.

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

на современном C++ и с современными инструментами тоже можно довольно комфортно программировать?

Нет.

Miguel ★★★★★
()

Писал на обоих языках, пусть и не «профессионально». С джавы на плюсы бы не перешел однозначно.

Zhbert ★★★★★
()

о переходе с Java на современный C++ (не на C)?

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

vtVitus ★★★★★
()

Просто даже личный опыт - в 2008 году, у меня в резюме была java, с++ (linux qt, win directx + опыт в преподавании с++ и с) ну и перлятина. По java было 100500 предложений самых-самых разных. по с одно в моторолу, которая уже продавалась гуглу - собеседования ещё проводились, но уже никого не брали, ну и одно по перлу - поддержка системы пока её переписывают на java. По с++ не было ни одного даже намёка. Так что куда переходить ? :D

vtVitus ★★★★★
()

Я бы не перешёл с плюсов на продуктовые языки вроде джавы или го, потому что у нас тут своя атмосфера. Можно систему сборки свелосипедить или язычок описания тестов. А сколько компайл-тайм веселья можно придумать, особенно на последних стандартах! Куда интереснее чем композировать абстрактные фабрики или микросервисы.

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

Куда интереснее видеть как бизнес логика хорошо и красиво ложится на архитектуру предложенную тобой. Или как то что ты написал используют несколько тыщЪ людей на работе каждый день уже 10 лет и от чего зависит работа одного из крупнейших предпреятий. Это прям реальных кайф. А велосипедить на самом деле скучно.

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

Можешь дать более развёрнутый ответ?

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

Сишка - читаемый ассемблер. Хай перформанц делать. А формочки на нём лепить не надо

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

Комфортно, когда знаешь. Но C++ полностью знать - это возможно ли. Кто-то больше программирует с использование шаблонов, кто-то на C++ но в стиле C. Кто-то вообще программирует вроде на C++ но ощущение, что использовали как можно больше синтаксических конструкций, чтобы другой программист делал это с максимально возможной сложностью (привет boot.spirit). Умные указатели те же. Где-то они используются, а где-то один хер используют свою реализацию аналогичных указателей (например OpenSceneGraph). Шаблоны те же, не спорю, словил себя на мысли, что интересно бывает с ними разбираться, но сложность языка при этом возрастает троекратно.

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

К сожалению, да. Тоже аргумент не пользу C++. Еще появляются вакансии, и hr-ы вроде периодически предложения шлют, но в одном и том же регионе количество вакансий C++ и Java/Python/JS может отличаться в 5-10 раз.

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

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

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

А зачем системы сборки велосипедить? У вас же есть Mesa, CMake, Ninja. Разве этого недостаточно?

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

А сколько компайл-тайм веселья можно придумать, особенно на последних стандартах!

Вот именно, компайл-тайм веселья. Как я и писал выше, в C++ херову тучу времени мы изучаем сам язык и занимаемся камасутрой с шаблонами, типа «а если я вот так на шоблоне e*ану», вместо того, чтобы изучать предметную область и решать прикладные проблемы.

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

в C++ херову тучу времени мы изучаем сам язык и занимаемся камасутрой с шаблонами, типа «а если я вот так на шоблоне e*ану», вместо того, чтобы изучать предметную область и решать прикладные проблемы

нет, конечно.

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

Это обыкновенное заблуждение джавистов, будто они делают «архитектуру». Вы складываете мозаику из паттернов, по одним и тем же зазубренным принципам. Мы байтодрочим — дисциплина тоже хорошо изученная. Гошники вон херачат свои микросервисы на кубернетесах с закрытыми глазами. И вы, и мы, и они в конечном счете решаем некоторые бизнес-задачи (в разных сферах, но это не важно). У каждого своя атмосфера, не хуже и не лучше других — кому что по душе.

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

А зачем системы сборки велосипедить? У вас же есть Mesa, CMake, Ninja. Разве этого недостаточно?

Не достаточно, у всех есть фатальный недостаток.

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

Вы складываете мозаику из паттернов, по одним и тем же зазубренным принципам.

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

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

Как я и писал выше, в C++ херову тучу времени мы изучаем сам язык и занимаемся камасутрой с шаблонами, типа «а если я вот так на шоблоне e*ану», вместо того, чтобы изучать предметную область и решать прикладные проблемы.

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

Во-вторых, это лишь путь решения прикладной задачи.

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

Ой, да не нужно мне этой бравады. Cравни с Python и посмотри, насколько там решительно нечего.

Ты сам написал про компайл-тайм веселье. Это одна из точных фраз, которые отлично характеризуют C++.

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

Сишка - читаемый ассемблер. Хай перформанц делать.

C - может быть и ассемблер, но C++ уже нет, хотя и вынужден поддерживать почти тот же язык внутри себя. А современный C++ и современные методологии разработки на нём уже совсем не те, что были 20 и более лет назад. Например современные программисты на C++ уже почти перестали пользоваться операторами new и delete.

А формочки на нём лепить не надо

Речь вовсе не о формочках, а о системном программировании и о вещах, близких к backend в Java.

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

Всегда удивлюсь таким вопросам сишников. В мире Java почему-то нет такого явления, как сравнение пиписек по количеству строк кода.

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

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

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

количество-> переходит в качество же?

так дело не в пыпыськах.

может он 30-50кLOC написал за несколько лет, участвовал в крупных проектах и прочее, и это для него все ещё входит в категорию «непрофессионально».

такие количества уже точно потребуют какого-то проффесионализма.

или для него «непрофессионально» значит что это было посути неоплачиваемое применения пограмиздских навыков?

n_play
()

Думаю, что в 21 веке нужно работать на высоко-уровневом языке и чем он выше, тем лучше.

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

Ой, да не нужно мне этой бравады. Cравни с Python и посмотри, насколько там решительно нечего.

Да нет никакой бравады. В каждой области своё «веселье», везде сложное. Вон джавист щеки дует, как он бизнес-флоу архитектирует. Каждый второй питонщик заткнет того архитектора NLP и прочим матаном. Спарковец так вообще лютейший дэйта процессинг мутит. Гошник будет втирать о монорепозитории с триллиардом микросервисов. Веселья вагон! И все профессии нужны, все профессии важны.

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

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

WitcherGeralt ★★
()

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

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

Я живу в Java мире, везде вижу только джавистов.

Я вообще с Java не пересекаюсь, не считая ведроида. Единственная прога на Java, которую я использую, - это IDEA. Других даже не знаю.

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

Но ведь и C++ и его экосистема тоже не стоит на месте и в принципе на современном C++ и с современными инструментами тоже можно довольно комфортно программировать?

Ниет. Тут даже пакетного менеджера до сих пор нет.

RazrFalcon ★★★★★
()

Java и C++ совершенно разные платформы, между Java и JavaScript и то больше общего. Разработка на C++ крайне не продуктивна, сложна и т.п., хуже и сложнее языка ещё поискать нужно (для прикладного софта)… так что неудивительно, что C++ очень многие люди «терпеть не могут»

menangen ★★★★★
()

Я в четырнадцатом так перешел, живой и счастливый

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

Тут даже пакетного менеджера до сих пор нет.

Тут это где? apt, rpm, pacman, emerge и есть пакетный менеджер для инфрасктуры С/C++.

baist ★★
()

а зачем? ведь уже есть Rust

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

Java и JavaScript и то больше общего

Дальше можно не читать.

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

Тут это где? apt, rpm, pacman, emerge и есть пакетный менеджер для инфрасктуры С/C++.

Щас тебе расто-проблемы на глобус натягивать будут, жди. Stable API у них is nonsense.

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

filosofia
()

Платят больше, мозгов иметь нужно меньше. Какой смысл переходить? Да и кто возьмет, если 88% этих самых явистов бит то байта с трудом отличают?

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

Это не то. Я не могу собрать свою либу с нужной версией и флагами.

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