Как сделать правильный выбор между C# и Java?

Здравствуйте.
В далеком прошлом, я занимался пустой тратой времени. А именно - выбором языков программирования.
Но со временем я выбрал для себя 4 языка программирования. C++/C#/PHP/Python.
C# и Python стояли важнее всех.
Сейчас у меня стали появляться новые задачи, и я задумался над тем, стоит ли продолжать изучать C#, может, выбрать вместо него Java, или изучать 2 одновременно.
В начале хочу сказать, что думаю об этих двух языках.
C# как по мнению многих попытка Microsoft создать собственный Java.
По синтаксису эти языки программирования очень схожи. Но в C# есть преимущества на мой взгляд, делегаты, события, свойства.
Но, к сожалению, стек технологий у Java шире и больше, по сравнению с C#. Простому разработчику, наверное, все равно, но разработчику, который в будущем будет искать работу...
Просмотрев вакансии я понял, что от C# джуниора требуют меньше, чем от Java джуниора.
На википедии есть статья сравнение C# и Java, и там есть очень хорошая цитата.
Кик Рэдек из Microsoft считает С# более сложным языком, чем Java. По его мнению, «язык Java был построен таким образом, чтобы уберечь разработчика от стрельбы себе в ногу» (англ. «Java was built to keep a developer from shooting himself in the foot»), а «С# был построен так, чтобы дать разработчику пистолет, но оставить его на предохранителе» (англ. «C# was built to give the developer a gun but leave the safety turned on»).
На Кворо 1 из разработчиков писал, что Java более многословен, а C# более точен и менее многословен.
В целом, C# мне нравится больше, чем Java. С C# я начал, C# изучал, много практиковался, даже разрабатывал какие-то полезные вещи. Java более многословен, и все таки это другой язык программирования.
Изначально, у меня были следующие цели и задачи:
Разработка настольных приложений, разработка клиент-серверных приложений, разработка игр.
Все бы ничего, C# способен решать эти задачи. Но сейчас появились новые:
Работа с робототехникой (Для этого, в основном, изучаю C++ и Python);
Программирование под Android;
Разработка различных устройств. К примеру, недавно, был в ГМС (в Украине) и делал паспорт. Там был сенсор, куда прикладываешь пальцы, а он сканирует отпечатки и пробивает по базе. Также была специальная ручка, которой ведешь по сенсору свою роспись, а он записывает ее в базу.
Ладно, робототехнику можно опустить, так как C++ и Python подходят для этого лучше.
Программирование под Android. Есть Xamarin. Но на столько же ли это эффективно, как Java?
Разработка таких штук с сенсорами. Вряд ли это можно реализовать на C#...
Что я потеряю, изучая C#, что потеряю, изучая Java?
Как сделать правильный выбор между этими двумя языками программирования, или изучать оба?
Возможно ли в принципе изучение двух этих языков одновременно, и на сколько это эффективно в моем случаи?
Заранее благодарен за ответ!
  • Вопрос задан
  • 20591 просмотр
Решения вопроса 4
Sputterspark
@Sputterspark
В далеком прошлом, я занимался пустой тратой времени. А именно - выбором языков программирования.

И продолжаешь этим заниматься.
Ответ написан
Комментировать
MalkovVladimir73
@MalkovVladimir73
Fullstack (node + vue.js)
Как человек, который 1.5 года учился java, а потом вышел работать с C# - точно могу сказать, разница несущественна. Специалисту всё равно какой инструмент он использует. Хотите наиболее производительное мобильное приложение - используете java, хотите desktop windows, вэб бэкенд, игры - C# (имхо). ML - python. Микроконтроллеры - C (C++). Хотите делать качественное ПО для всего вышеперечисленного, тогда я вам огорчу, серебряной пули нет придется использовать разные инструменты, но с опытом, вы поймёте, что различия весьма преувеличены.
Ответ написан
@StainlessDespair
Изучение двух языков одновременно в принципе возможно. Но если ты нацелен на работу, то забудь про это, так как знание синтаксиса языка мало что тебе даст. Нужно изучать технологии. И у java, и у c# есть начальный стек который рекомендуется знать для уровн, джуна. Хороший уровень их знания увеличивает шансы получить оффер (впрочем не сильно).
Отвечая на конкретные вопросы, изучая с# потеряешь все то что дает jvm, изучая java потеряешь возможность делать нативные приложения из коробки. Если сложно сделать выбор, взгляни в сторону мобильной разработки (читай kotlin). Там энтерпрайз не такой кровавый и все в плане выбора однозначней.
Ответ написан
Комментировать
@metajiji
Сформулируйте ещё раз задачу. Например зачем вам вообще изучать какой-то ЯП? Разработка только под Винду и вы уже знаете с#? Так продолжайте, если это ваша работа. Если хочется чего-то нового в этой сфере, попробуйте .Net. Java тут явно лишняя, она не очень хорошо подходит для десктопных программ, как и python или не дай бог php. Не спорю их можно писать на этих языках, но согласитесь это legacy, у .net или c# как минимум больше Профит в этом.
Если вдруг встанет вопрос о кроссплатформености GUI приложения, то я бы рекомендовал Qt, там под капотом c++, можно конечно и python опять же через Легаси костыли типа pyqt, а pygtk так себе.

А вот на c# сделать веб приложение будет проблема, в отличие от рнр или python, да даже на java будет легче :) и главное кроссплатформенность, но сейчас не об этом.

Вам нужно выбрать свою нишу деятельности, отсюда язык сам выберется.
Микроконтроллеры это c и c++ тут без вариантов, как бонус для развития ассемблер можете изучать.
Под андройды конечно же java, как бонус kotlin.
Но учтите мобилки и контроллеры это 2 разных направления, а десктопные ещё и под Винду это вообще 3 направление развития.
Ответ написан
Пригласить эксперта
Ответы на вопрос 6
@eccrs
АвтоКуА
То, что ты написал - это жуткий трешак.

А то, что ты 4 языка параллельно изучаешь... От того, что ты можешь написать hello world на 10 языках, тебя никто на работу не возьмёт. Только если в вуз преподавать за 20к.

Вообще ответ очевиден, C# больше всего нужен только в экосистеме майкрософта, и на нем только корпоративная фигня.

А у Java есть JVM, мобилки, 90% автоматизации тестирования ведётся на Java, да и Scala с Kotlin есть. Ну и куда же без Spring
Ответ написан
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Простому разработчику, наверное, все равно, но разработчику, который в будущем будет искать работу...
Простого разработчика - всегда ищет работа!
А разработчик-лентяй - ищет сам работу, чтобы обучаться и ещё за это получать деньги!
Советую, вначале, стать простым разработчиком. ;)
Ответ написан
@atawerrus
Скажу на сообственном примере, я программирую на php и фреймворкe laravel более двух лет, получаю хорошую ЗП всегда полно работы, работаю удаленно на зарубеж, отлично знаю эти технологии и не парюсь, и люди выбирают и платят именно мне, потому что я профи именно в этом.
Ответ написан
Комментировать
LeEnot
@LeEnot
Енот-андроид
Если вы хотите использовать преимущества JVM, но вам не нравится Java как язык, для платформы есть множество других вариантов: Groovy, Scala, Clojure... Я бы рекомендовал Kotlin. Он красивый, удобный, современный и на него сейчас многие топ компании переходят. Собственно в части Android и backend разработки.
Вообще, многое зависит от специализации. Как только вы перестанете распыляться и определитесь с тем, чем будете заниматься профессионально, тогда можно будет и средства разработки выбрать.
Ответ написан
azerphoenix
@azerphoenix Куратор тега Java
Java Software Engineer
Я не являюсь профессиональным разработчиком и скорее, это даже хобби. Но предпочитаю работать на java. Ни в коем случае не хочу умалять возможности С# и даже отмечу, что в сфере game development'a c# превосходит.. наверное тем, что есть прекрасный движок Unity поддерживающий c#, js и т.д. Хотя, на Java tcnm libgdx jmonkey и другие.
Ответ написан
Комментировать
nexmean
@nexmean
погромист
Выбрать Haskell.
Ответ написан
Ваш ответ на вопрос

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

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