dabich
@dabich
Web Developer

Java vs C++. Что полезнее?

Начал учить Java, до того неплохо знал C++. Сейчас вот интересует вопрос, какой язык сейчас больше актуальнее для распространенных задач? Какой более нужен и приветствуется больше?

Знаю C++ мощный, но и возможности Java интересны. Надеюсь, кто-то сможет расставить "За" и "Против" насчет каждого, чтобы уже не сомневаться, на каком языке ставить акцент и больше развиваться.
  • Вопрос задан
  • 94869 просмотров
Решения вопроса 3
@ProkletyiPirat
смотря что считать "распространенными задачами" ...

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

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

а весь цимес в том что не надо говорить "Java" или "C++", надо говорить "Java" и "C++", за счёт того что есть JNI вы спокойно можете вынести все нагруженные вычисления в С\С++, а в Java оставить всё остальное, и получить лучшее из двух миров.
Ответ написан
Комментировать
icelaba
@icelaba
Знаю и умею всё
Графики langpop.com/,
если на википедии не забанили то еще сравнение
А вообще решите что именно писать собираетесь, просто учить язык смысла немного. А имея задачу в голове можно и язык под нее подобрать поудобней, я до сих пор всякие кодогенераторы на perl пишу, потому что для части задач он удобен.
Для просто для развлечения можно и brainfuck выучить.
Ответ написан
LucemFerre
@LucemFerre
Все зависит от задач. Наверное, которые больше интересуют.

C++ хорош для работы, в которой очень критична производительность, выделяемаяя память. Как примеры, когда надо работать с железом, игры, сложные математические расчеты.
Из минусов - писать на С++ сложнее. Намного больше способов "выстрелить себе в ногу".

Java проще в изучении и скорости написания. Из коробки, кросс платформенный (запустится на windows, linux и mac без дополнительных колнудств). Примеры задач на Java - энтерпрайз, бекенды для веба, андройд.
Из минусов - немного проигрывает в производительности, сильнее - в потребляемой памяти.
Ответ написан
Пригласить эксперта
Ответы на вопрос 9
@DancingOnWater
Про Java не знаю, но я расскажу про C++ и C#, даром что последний сравнивают с Java.
Макросы, нетипизированные шаблоны, частичная реализация этих самых шаблонов, указатели, константные ссылки, константные методы, перегрузка унарных операторов, разделение памяти на стек и кучу, - это только часть того, по чем я скучаю, программируя на C#.

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

Также стоит заметить, что C++ не заканчивается на голом синтаксисе и STL, после того как вы познакомитесь с ними перед вами откроется целый мир различных библотек. От того обилия высококласных математических библиотек, что есть на C\C++ (а первый вы совершенно спокойно можете подлинковать к проекту и использовать без проблем) у меня слюны все клавиатуру заливают. А Qt с его сигналами и слотами.... И да, не верьте, что многопоточные приложения сложны плюсах, Qt и C++11 упрощают до предела.

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

Да, C++ строг и беспощаден, его изучение сравни с игрой в шахматы с превосходящим по силе соперником, где любая мелкая ошибка может оказаться фатальной. Но работая на C++ (работая, а не кодя так, чтоб отвязались) вы получите гораздо больше в понимании того, как устроены It-технологии, на чем зиждются и в чем их ограничения.
Ответ написан
svd71
@svd71
Всякие кодеры нужны, всякие кодеры важны.
Советую посмотреть на каком-нибудь хэдхантерском сайте, каких спецов более разыскивают и за что.
Ответ написан
Комментировать
bogolt
@bogolt
Удивляюсь почему в сравнении Java vs C++ многие упоминают, что Java кросс-плафторменна. Си++ тоже кросс-платформенный ЯП. Программа написанная на нем может быть скомпилирована практически под любой платформой. Да, программу на си++ нельзя перенести на уровне бинарников, но часто ли вы видели универсальные бинарники?
Для Си++ есть множество очень полезных библиотек позволяющих писать красивый и быстрый GUI ( единственная известная мне хорошая GUI программа написанная на Джаве - Eclipse ). Большинство же десктопных приложений пишется именно на плюсах.
В новом стандарте появилась нативная многопоточность ( впрочем раньше никто не мешал использовать одну из множества кросс-платформенных библиотек для достижения тех же целей ).

Из основных недостатков си++ скажу что первые 2 года работы с этим языком программист больше вредит, нежели помогает. Это учитывая что он неплохо уже знает синтаксис и уже пишет на нем какие-то программы. Огромное количество скрытых ям, граблей, заряженный ружей - заботливо разложены создателями нескольких версий стандартов, в безумной мечте об обратной совместимости языка ( что конечно очень круто ).
Ответ написан
Для саморазвития? Учите все что нравится. Любые знаний это не только информация, но еще и идеи, мысли, концепции и др. ваших предшественников.

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

Фриланс? Еще проще. Берите Java или C# для программ настольных компьютеров или приложений под Android и Windows Phone. Эти языки и технологии похожи. Если хотите веб, то тут немного по другому. Если цель - заработать денег - то начните с PHP и быстрее придете к конверсии ваших усилий в деньги. Если хотите саморазвитие + фриланс. Можете писать на PHP и не стеснятся этого, но параллельно учите еще один язык. Можно Python / Ruby или те же C++ / Java.

Работа над какой-то задачей? Выберите тот язык, который больше подойдет.

Преимущества, которые выделил я для C++:
1. ООП вместе с преимуществами Си;
2. Компиляторы под все платформы;
3. Скорость.

Преимущества, которые выделил я для Java:
1. Кроссплатформенность;
2. Удобство;
3. Схожесть на C# (точнее наоборот, много пишу на C#);

Из последнего. Под Windows написал программу под Mac не имея оного. Поправил пару строчек и все работает.
Ответ написан
@coodan
Согласен с DancingOnWater. C++ - это игра в шахматы с гроссмейстером. После таких игр и только после таких понимаешь, что есть шахматы. Но это требует безумного напряжения, беспощадности к себе, времени и большого желания.

Практичен ли С++ для говнокодерства? Нет. Он будет беспощаден. И в этой беспощадности его сила. Код, написанный идеально, будет работать идеально. Но где этот идеал? И сколько времени Вам понадобится, чтобы найти свое в С++ нуля?

Зачем играть в шахматы с гроссмейстером, если можно легко обыгрывать соседей? И что даст Вам такая игра? К чему Вы стремитесь? На эти вопросы можете ответить только Вы.

Вместе с тем, не совсем согласен с ним же в том, что он упоминает STL несколько пренебрежительно. Уже один только STL, но не только базовые контейнеры вместо массивов, как его обычно используют, а во всей полноте его подхода, вместе с Boost, который его концептуально расширяет - вот удар для неподготовленного сознания. И вот мощь, которую необходимо обрести тому, кто желает играть в шахматы с гроссмейстерами.
Ответ написан
@Tim06ka
Java developer
По своему опыту могу сказать что Java лучше для начала карьеры. Год назад после вуза активно искал работу для начала карьеры программистом, хотел писать на C/C++. В основном везде хотели джависта. Помыкался пару месяцев, плюнул, устроился на интересную работу с обучением по Java. Сейчас лишь иногда решаю небольшие задачки на плюсах, Java очень радует.
Ответ написан
kciray
@kciray
Студент
Я год занимался С++\Qt, но потом свалил с него в пользу Java, несмотря на выход С++11.

Заработать можно и там и там, С++ хорош но всё-таки он устаревает. Выберете Джаву - не пожалеете!
Ответ написан
@Pantene742
Смотря где применять ? то там и полезнее. у джавы есть большой плюс. Она практический во всех сферах задействована, и хороша для определенных задач в каждой из сфер своего применения. Например в вебэ оч круто можно применить, сервер видеочатов, онлайн кинотеатра с псевдостримингом и рекламными паузами без джавы не написать. (Node, Python, Ruby с модулями и каракулями будут такое уметь, за php молчу). Но это не повод учить джаву. Так как крупный функциональный проэкт заказывают только у фирм. А для небольшого сайтика своему другу только php + WP или Laravel. Веду к тому что для мелких задач мощный инструмент также некоректен как и не мощный для сложной задачи. Java впринцыпе умеет делать все тоже что и C++, только суть джави в том чтоб пожертвовать производительность но отвязать пользователя от работы с памятью, и API операционной системы(WIN API, POSIX). JVM как бы слой между етими сложными вещами и твоей джава программкой. Вообще джаву юзают вовсю там где ненадо производительности ее оч любят работники гугла и яндекса. Когда дело доходит до критической производительности сразу слезы на глазах и "о нет опять этот C++ глюки при зборке, опенсорсовские возможно з глюками плагины к GCC или библиотеки для конкретных могут выдать 1000 ошибок при зборке + их мощные компы иногда собирают 10 часов проэкты СПП" из за этого рабочие гугла (ребята участвующе в разработке Unix и Java еще в SUN Microsystems) которым надоел C++ создали GO для своих задач. Да C++ мощный, его сделали мощным и впихнули туда все что только можно, но пожертвовали всем. Это инструмент для крупных корпораций где над глюком будуть ломать голову минимум 10 чел. Если есть желание таки попробовать то советую под WIN API писать в Visual Studio. там оч много стандартов. и получить уникальный глюк очень сложно. и как правило есть ответы на многие глюки. как то так.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы