Дилемма выбора между C++ и Java
=================================

 Здравствуйте. Введу немного в курс событий.  

До поступления в ВУЗ я развлекался с Джавой, месяц-два, ничего серьезного, просто было интересно, на ООП завис. Когда началась учеба мы начали учить Си, относился я к нему с прохладной. А вот во втором семестре начали С++ ООП, что поначалу меня испугало, а со временем безумно начало восхищать. Сразу оговорюсь, что программирование у нас не профильный предмет и многое прошло мимо нас.  

Год закончился, на втором курсе программирования не будет. И вот у меня возникает вопрос, а что учить то? То ли продолжить C++, то ли на Джаву вернутся. Джава по не понятным мне причинам нравится больше, а С++ кажется более серьезным языком, единственно что вызывает сомнения по поводу С++ — это сложность разработки, в том числе и под Андроид (сужу по наслышкам).  

  

Ниже опишу в общих чертах, чего я хочу от языка:  

1. Попробовать Андроид разработку (не знаю насколько это затруднительно если использовать C++ вместо Джавы);  

2. Инди геймдев (безумно восхищен Нотчем и опять таки, не знаю насколько было бы накладно реализовать Майнкрафт на С++);  

3. Разработка десктопного софта. В некоторой степени — это моделирование физ. процессов и программ которые считают «большие цифры», вообщем связаны с наукой (вторично и ради забавы);  

4. Рассматриваю возможность подработки в ближайшее время.  

  

Хабралюди, вся надежда на вас. Возможно список ожиданий расплывчатый, если будут вопросы — спрашивайте. 

 >> Джава по не понятным мне причинам нравится больше  

Пишите на Java. Если захочется, на с++ сможете перебраться, хоть и не без труда. 

 Я, конечно, не специалист, и сильно больше, чем на ИМХО, не претендую. Но моё ИМХО — таки JAVA.  

  

1. Под Android'ом JAVA — это все-таки более-менее нативная технология, что снимает массу проблем.  

2. В плане инди-геймдева JAVA как минимум предлагает вполне себе жизнеспособную кроссплатформенность.  

3. Не берусь, ибо не сталкивался.  

4. Корпоративный сектор точно давно и прочно в JAVA заинтересован, так что тоже проблем быть по идее не должно. 

 Выбор между с++ и java (добавьте сюда .net c# ) это больше не выбор между языками программирования и синтаксическим сахаром, а выбор между фреймворками (библиотеками) которые идут вместе (или для) с этим языком как 'стандарт по умолчанию'.  

Тем более эти языки на столько похожи, они вышли то и одного лона 'старого c++'!  

  

А это значит выбирайте то что вам нравится, но будьте готовы просто выучить еще один фреймворк (и чуть чуть языковых конструкций), ведь программист, не готовый изучать что то новое… слабовато выглядит и заранее обречен на провал. 

 Начните с C++ и С, лучше сразу с C++11 и С11, а потом изучите Java если нужно будет, в обратном направлении слишком сложно будет, как говорится — чтобы хорошо уметь писать на Java\C# нужно знать С. 

 C++, Java и С# — все это одинаково серьезные языки. Не стоит переживать. Выбирайте, что нравится. Лучше — всего по-немного попробуйте. Добавьте к списку Python и Ruby.  

Однако, коллега rPman прав. В реальной жизни важнее фреймворки. Я бы еще добавил важность [шаблонов проектирования](http://ru.wikipedia.org/wiki/%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F) (паттернов).  

  

Поищите курсы по языкам программирования на [Coursera](http://www.coursera.org/) и [edX](http://www.edx.org/): там очень много вкусного и полезного, часто есть русские субтитры. И кстати, да. Важнее всего — выучить английский! :) 

 Как по мне, если вы нормально понимаете ООП в С++, то можете смело идти в Java, если вам она нравится, она действительно дружелюбнее по началу. С++ же дает гораздо больше средств работы с компьютером, нежели java. Думаю, Нотча любили бы еще больше, если бы Майнкрафт был сделан на С++. Тогда он бы скорее всего к этому времени, не требовал столько RAM для нормальной игры. 

 Java. И к Clojure присматривайтесь =)  

  

У меня счас хороший знакомый программист который в прошлом ( и настоящем ) — C'шник,   

изучает Android — пишет прогу, для моделирования жидкости.   

Ещё он игрушку хочет написать на Android,   

клон какой-нибудь…  

  

Могу познакомить — вместе будете писать.)   

  

А по каким критериям Вам Java больше нравится? 

 1. C++ **И** Java в случае игр. Иначе хватит только Java.  

2. В зависимости от платформы. Может и C# в Unity хватить.  

3. C#.  

4. Если ПОДработка — то для PHP, Ruby найти ее проще. 

 Если НЕ планируете заниматься низкоуровневым системным программированием и написанием драйверов, то ОДНОЗНАЧНО JAVA.