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 ★★★★★
()
Вы не можете добавлять комментарии в эту тему: топик перемещен в архив.