@Ig0rizm

Java или C++ в качестве первого языка. Что выбрать?

Пожалуйста, аргументируйте свой ответ
  • Вопрос задан
  • 1833 просмотра
Решения вопроса 1
@Mercury13
Программист на «си с крестами» и не только
Только Java. Почему…
1. Достаточно удачная стандартная библиотека.
2. Проверка массивов на индекс — для начинающего бесценно.
3. Не настолько полагается на указатели, когда человек ещё толком не знает, что это такое.
4. Очень строгая проверка типов.
5. Статическая типизация, Си-подобный синтаксис (хотя всё это у обоих).
6. Сообщения об ошибках не настолько страшны (стандартная библиотека Си++ полагается на шаблоны).
Вторым языком человек уже съест что угодно, но Си без плюсов — один из худших первых. Си++ не так плох, но Java, по-видимому, лучше.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
devalone
@devalone
̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
Python. А вообще без разницы, бери любой мейстримный.
Ответ написан
solotony
@solotony
покоряю пик Балмера
начни с обычного "С" (без плюсиков). и чтения дедушки Кнута. но это в том случае если хочешь научиться программировать.
Ответ написан
@Ariox41
Возможно, хорошим вариантом будет Rust . Это молодой язык, и не факт, что он пригодится вам в ближайшие пару лет, но для обучения у него есть несколько преимуществ:
  • С одной стороны, он предсказуем, как и C++, т.е. обычно достаточно очевидно, как будет выполняться тот или иной кусок кода на низком уровне. С другой, он достаточно прост (ненамного сложнее JAVA) и автоматизирует управление ресурсами (без сборщика мусора, но так даже лучше).
  • Как и в C++, можно использовать абстракции с нулевой стоимостью (чего в Java нет в принципе), и для этого не требуется сложный шаблонный код.
  • Компилятор обругает вас за допущенные ошибки. Если не обругает компилятор - в большинстве случаев будет ошибка времени выполнения. C++ тоже часто находит ошибки во время компиляции, но в Rust это реализовано лучше, при этом на C++ сложнее искать ошибки времени выполнения. В JAVA ошибки по большей части возникают во время выполнения, что не очень хорошо для обучения - многие ошибки на простых примерах просто не возникают.
  • Модель управления ресурсами изначально учитывает многопоточность, что снижает вероятность возникновения ошибок в многопоточных программах.
  • Есть стандартный менеджер пакетов и система сборки, чего сильно не хватает C++. У Java тоже есть неплохие менеджеры пакетов, но их несколько, пусть и совместимых, что иногда осложняет жизнь.
  • У него неплохой стандартный учебник, в том числе на русском, в который я в любом случае рекомендую заглянуть: rurust.github.io/rust_book_ru/README.html . Правда, у С++ и Java тоже с этим особых проблем нет, разве что сложнее выбрать подходящий.


Если вы всё же выбираете между C++ и Java - выбор в основном должен зависеть от того, сколько времени вы готовы потратить на изучение. Для изучения C++ нужно несколько лет (существует мнение, что около 5 лет), при этом нет смысла изучать C++ на базовом уровне - его достоинства проявляются только при хорошем знании языка. Java проще для изучения, довольно быстро можно достичь уровня, необходимого для устройства на работу, многие перспективные инструменты изначально разрабатываются на/для Java (например, экосистема BigData сейчас вертится вокруг Java и Scala, многие СУБД тоже ориентированы на Java). Но в случае выбора другого языка для изучения Java потом при необходимости можно будет быстро освоить, да и популярные инструменты обычно предоставляют интерфейсы для других языков, так что ориентироваться на конкретные инструменты не стоит.

P.S. Я сам программирую на C++, Java (а чаще - Scala) использую только для научной работы (BigData и т.п.), и в целом C++ мне нравится больше. Но в будущем планирую перейти на Rust в качестве основного языка.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы