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

Знаю C++ мощный, но и возможности Java интересны. Надеюсь, кто-то сможет расставить "За" и "Против" насчет каждого, чтобы уже не сомневаться, на каком языке ставить акцент и больше развиваться.
Ответы (10)
Сортировать по:
  • 1
    Решение
    Графики langpop.com/,
    если на википедии не забанили то еще сравнение
    А вообще решите что именно писать собираетесь, просто учить язык смысла немного. А имея задачу в голове можно и язык под нее подобрать поудобней, я до сих пор всякие кодогенераторы на perl пишу, потому что для части задач он удобен.
    Для просто для развлечения можно и brainfuck выучить.
  • 4
    Решение
    смотря что считать "распространенными задачами" ...

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

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

    а весь цимес в том что не надо говорить "Java" или "C++", надо говорить "Java" и "C++", за счёт того что есть JNI вы спокойно можете вынести все нагруженные вычисления в С\С++, а в Java оставить всё остальное, и получить лучшее из двух миров.
  • 1
    Решение
    Все зависит от задач. Наверное, которые больше интересуют.

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

    Java проще в изучении и скорости написания. Из коробки, кросс платформенный (запустится на windows, linux и mac без дополнительных колнудств). Примеры задач на Java - энтерпрайз, бекенды для веба, андройд.
    Из минусов - немного проигрывает в производительности, сильнее - в потребляемой памяти.
  • 3
    Всякие кодеры нужны, всякие кодеры важны.
    Советую посмотреть на каком-нибудь хэдхантерском сайте, каких спецов более разыскивают и за что.
  • 1
    Проблема С++ в том что он уже давно не рекламируется на каждом шагу, про него итак все знают, а из-за этого создается ощущение, что язык мертв\забыт\ненужен, а если учесть на всяких hh обычно нормальных вакансий не постят, а весь смак всегда впервую очередь расходится по знакомым, так вообще кажется что нет ни одной причины юзать С++, а еще и вечная критика. Для начинания есть QT, весьма неплохая вещь. Это я к тому что в таком вопросе конечно победит как всегда Жава, а про С++ ничего хорошего как всегда не скажут.
  • 1
    Для саморазвития? Учите все что нравится. Любые знаний это не только информация, но еще и идеи, мысли, концепции и др. ваших предшественников.

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

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

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

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

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

    Из последнего. Под Windows написал программу под Mac не имея оного. Поправил пару строчек и все работает.
  • 8
    Про Java не знаю, но я расскажу про C++ и C#, даром что последний сравнивают с Java.
    Макросы, нетипизированные шаблоны, частичная реализация этих самых шаблонов, указатели, константные ссылки, константные методы, перегрузка унарных операторов, разделение памяти на стек и кучу, - это только часть того, по чем я скучаю, программируя на C#.

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

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

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

    Да, C++ строг и беспощаден, его изучение сравни с игрой в шахматы с превосходящим по силе соперником, где любая мелкая ошибка может оказаться фатальной. Но работая на C++ (работая, а не кодя так, чтоб отвязались) вы получите гораздо больше в понимании того, как устроены It-технологии, на чем зиждются и в чем их ограничения.
  • 1
    Я год занимался С++\Qt, но потом свалил с него в пользу Java, несмотря на выход С++11.

    Заработать можно и там и там, С++ хорош но всё-таки он устаревает. Выберете Джаву - не пожалеете!
  • 2
    По своему опыту могу сказать что Java лучше для начала карьеры. Год назад после вуза активно искал работу для начала карьеры программистом, хотел писать на C/C++. В основном везде хотели джависта. Помыкался пару месяцев, плюнул, устроился на интересную работу с обучением по Java. Сейчас лишь иногда решаю небольшие задачки на плюсах, Java очень радует.
  • 3
    Удивляюсь почему в сравнении Java vs C++ многие упоминают, что Java кросс-плафторменна. Си++ тоже кросс-платформенный ЯП. Программа написанная на нем может быть скомпилирована практически под любой платформой. Да, программу на си++ нельзя перенести на уровне бинарников, но часто ли вы видели универсальные бинарники?
    Для Си++ есть множество очень полезных библиотек позволяющих писать красивый и быстрый GUI ( единственная известная мне хорошая GUI программа написанная на Джаве - Eclipse ). Большинство же десктопных приложений пишется именно на плюсах.
    В новом стандарте появилась нативная многопоточность ( впрочем раньше никто не мешал использовать одну из множества кросс-платформенных библиотек для достижения тех же целей ).

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

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

Войти через TM ID