LINUX.ORG.RU

C# vs Java в 2020. Что выбрать?

 , , , ,


2

8

Приветствую. Учусь на 1 курсе технического вуза. На 1 курсе у нас C. Я на него забил, просто написал программу на C++, предъявил преподу, мол я шарю, и все. Для работы избрал Python/Django. Интересует удаленка, желательно на Европейского или Американского работодателя. Под собственные задачи не хватает нормального языка программирования. Что значит нормального? Python держится на библиотеках. Динамическая типизация просто? Увольте. Я не рискнул бы писать крупный (не веб) проект на Python. Почему? Потому что большинство ошибок вылавливаются во время работы самого кода. Вот вам и динамическая типизация, и интерпретация. Посмотрите, как используется язык. В веб проектах, потому что Django надежен. Как по мне Python+Django много лучше PHP, да хотя бы и из-за Django Rest. Но кроме веба, Big data, машинного обучения и автоматизации, Python нигде не применяется. Игры, крупные приложения, как правило, Python страхует C++. А скорее, он работает внутри него. Ладно, окей, под Windows игру написать можно. Но вдруг пришла идея запрограммировать что-то под Android. Смотрим. Kivy. Пробуем и убеждаемся, что тут и выходит, молотком вкручиваем лампочку, никак иначе. В общем, нужен второй язык. Язык, где якобы больше кода и т.д, но который по факту надежнее, и работать будет производительнее, и ошибки отдавать на компиляции. Понятно, что C++/C#/Java. Иного не дано. Посидев, повздыхав, я выкинул C++ в помойку. Причины:

  1. Когда делал на C++ работу для универа, 6 часов убабахал на это. На установку VS, на подключение QT, на изучение возможностей для написания простого текстового редактора с менюшкой, где открыть, сохранить и выход, потом еще это не компилировалось из-за ошибок, связанных с библиотекой… В общем, 6 часов. Если такое будет каждый раз с новой библиотекой…
  2. Пообщался с C++ разработчиками. Если проект, который на C#/Java пишется за неделю/две, на C++ я буду пилить 3 месяца…
  3. Удовольствие от разработки самого алгоритма программы. Логики программы. Но никак не от работы с памятью и прочими заморочками на низком уровне. Пусть компилятор сделает, как надо, нежели я где-то допущу ошибку, в одном месте, а потом из-за нее будет ошибка на несколько окон, и за ней многочасовой поиск места с ошибкой. В итоге, C# vs Java. Учитывая, что ранее я работал с C#, начал читать всякие статьи «C# vs Java». На форумы тоже писал. Но моя главная цель была заработок. Сейчас же разработка приложений по моим интересам. Почитав понял, что никакого четкого вывода нет. Прошло время, когда C# был лишь под Windows. С одной стороны, C# круче. Развивается, Microsoft кидают туда все, что нужно и не нужно. С другой стороны. Давайте посмотрим правде в глаза. Где сейчас применяется C#? Под Windows. Все сервера на Windows Server. Какие приложения (не игры) разработаны под Android с C#? Я не знаю таковых. Исследуя рынок понимаем, что по Java и вакансий больше, и зарплаты выше. Естественно, зарплаты то у синьоров. У джунов и мидлов примерно одинаково, но Java таки немного выше. А открывая вакансии я понимаю, что меня не ожидает с C# карьера. Ибо не сдался мне ASP.NET, если я уже на Django. Других вакансий нет. У Java тут все, что хочешь. И веб, и сервера, и приложения под Android. Но есть еще 2 момента:
  4. .NET Foundation. Кроме того, планируется объединить .NET и .NET Core. Выстрелит ли это? Возможно. Но я не думаю, что все сразу бросятся переписывать сервера с Java на .NET, а кто сидел на Windows Server будут переписывать под Linux;
  5. Kotlin. Всей душенькой ненавижу этот язык, и не спрашивайте, почему. А сейчас много где его используют наравне с Java, и вместо Java. Открываем сравнения производительности, и понимаем, что по производительностью C# давно обогнал Java. В общем. Уважаемые девелоперы. Желательно те, кто знаком и с той и с той технологией. Озвучьте пожалуйста ваше мнение по вопросу «C# vs Java в 2020. Что выбрать?». Как следует делать выбор? На что ориентироваться? На что обратить внимание? В общем все возможное и не возможное по этой теме. C# и Java очень и очень схожи, но хочется для себя провести между ними различие, дабы выбрать нужный инструмент. Заранее благодарен!

Ничего по теме не знаю. Но в Java несколько GC, когда в C# только один, так же в Java автовекторизация есть, в C# ее нету. И где какой нибудь Hadoop на C#? Ну а lombok приближает Java к нормальному языку, и вообще показывает какие могут быть возможности по расширению, C# на такое кстати не способен. Ну и смешные статьи выходили пару лет назад, где писалось что вот вот, через год или два, C# aka Net Core заменит Java... Я думаю такие же статьи и на момент появления C# были.

Запартные скриптушные эксперты могут начать опровергать.

stasolog
()

Java развязывает руки. От сервера до десктопа и мобилок (Сам пилю под Android уже 5 лет). Имхо, лучше её. Все остальные языки более узконаправленные. Я не говорю, что это плохо, просто с поиском работы потом будет явно сложнее.

Jefail ★★★★
()

C# слабо связан с Linux’ом, это больше Win-Only продукт.

Для Linux лучше выбирать Java или точнее JVM, под которую кроме Java есть Scala, Groovy, Kotlin и даже Clojure.

EXL ★★★★★
()

Такое чувство, что ты уже выбрал java. Правда, я не вчитывался в каждую строку этого большого текста

dave ★★★★★
()

Только ты смотри больше на то, какие прикладные области тебе самому больше нравятся. Для одних задач жаба хороша, а вот в некоторых областях ее даже за порог никогда не пустят, ибо нет ей там места и не будет.

dave ★★★★★
()
Ответ на: комментарий от Jefail

до десктопа

То-то от десктопных программ на яве рябит глаза (на самом деле это просто заблеваный монитор).

Im_not_a_robot ★★★★★
()
Ответ на: комментарий от Jefail

java бюрократен да и шарп в ту же степь ибо индустрии нужно.

qulinxao3 ★★
()
Ответ на: комментарий от Jefail

Это три разные Java, а не одна какая-то.

По теме, автор, учти что нет никакого Build Once Run Everywhere уже сто лет как. В жабе в основном что-то приличное пишут под сервер. Мобилки это уже совсем другой ад^W мир похлеще PHP местами. Десктопная Java это практически non-existent.

Как пробовавший все вышеперечисленное понемножку, а где-то и помножку, а также Scala, Clojure и прочее, скажу что бери дотнет - как язык C#, так и виртуальная машина, так и среда разработки, так и экосистема - там поприятнее. Работу найти нет проблем вообще, и не только в сфере ASP .Net. Много энтерпрайза на дотнете пишут. Немного даже игрухи. Ну и десктопный софт для винды это стандартно исключительно C#. Да в принципе можно и на линукс писать (Avalonia UI etc), и под мобилы (Xamarin, но все это в будущем будет унифицировано в .Net 5)

.Net это перспективы. Java это деградантное болото.

Зарплату же тебе платить будут не за язык а за скиллы решения проблем, и при должном уровне умения - получать денег будешь больше любого «java senior solution architech»

lovesan ★★
()

Если всё ради денег, то либо уходите из разработки ПО, либо Java однозначно, ибо банально больше возможностей: инструменты, библиотеки, платформы, а значит, и больше возможностей устроиться на работу. У С# другое преимущество: на нём банально проще писать оконные приложения (Win-only, но всё же), из-за чего для настольных приложений он годится куда больше.

миможабовед

Korchevatel ★★★★★
()
Ответ на: комментарий от EXL

C# слабо связан с Linux’ом, это больше Win-Only продукт.

Нормально .Net Core связан с линуксом. Весь энтерпрайз на .Net Core пускает свои продукты именно на линуксе.

lovesan ★★
()

Выглядит толсто, но отвечу.

Когда делал на C++ работу для универа, 6 часов убабахал на это

А на java/C# сколько убабахал на такое же?

Давайте посмотрим правде в глаза. Где сейчас применяется C#? Под Windows. Все сервера на Windows Server.

4.2, полно дотнета крутится на линуксовых серверах.

Пробуй то и то, сам почувствуешь, что больше нравится. Тебе на этом по 8 часов в день потом работать.

anonymous
()

если реально(мнимую часть оставим для другого разговора) первокур то http://stepanovpapers.com/canon.html#mathematics Кристала употреби ( али есть (кто бы указал) на русском подобия)

пиши код!

qulinxao3 ★★
()
Ответ на: комментарий от Korchevatel

либо Java однозначно, ибо банально больше возможностей: инструменты, библиотеки, платформы,

Этого как раз лучше у C#, причем на порядок. Библиотек примерно одинаково разве что. А остальное банально лучше. NuGet vs Maven(и прочая ссанина), IDEA vs VS(или даже VSCode+Omnisharp или даже Rider если хочется IDEA-подобного). Единственное что можно сказать о «платформах» жабы, типа спринга, это то что они представляют из себя окаменелый набор говнокостылей.

lovesan ★★
()
Ответ на: комментарий от lovesan

как язык C#, так и виртуальная машина, так и среда разработки, так и экосистема - там поприятнее. Весь энтерпрайз на .Net Core пускает свои продукты именно на линуксе.

Угу, без нормального ide в linux, здравствуй работа под виндой с запуском докера в vm и прогоном тестов за час вместо 20 минут на линуксовом хосте.

anonymous
()

Выбирай сердцем, по велению души. У обоих платформ есть свои неоспоримые преимущества и недостатки. Какие задачи у тебя?

Для работы избрал Python/Django

Чем же тебя не устраивает? Объективно, что-то медленнее чем надо. Или просто так?

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от stasolog

WSL это не виртуалка, это MS взяли и сделали прыщесисколлы у себя в ядре. Обычные прыщесисколлы. Ну и свой init написали. Всё.

WSL2 вот - будет вообще натуральное ядро линукса крутится рядом с виндовым, опять же не вируталка, а настоящее ядро на настоящем железе, так что можно будет даже иксы поднять.

lovesan ★★
()
Ответ на: комментарий от lovesan

WSL это не виртуалка, это MS взяли и сделали прыщесисколлы у себя в ядре. Обычные прыщесисколлы. Ну и свой init написали. Всё.

Это действительно не виртуалка, правда даже nmap не запускается.

WSL2 вот - будет вообще натуральное ядро линукса крутится рядом с виндовым, опять же не вируталка, а настоящее ядро на настоящем железе, так что можно будет даже иксы поднять.

А вот это виртуалка, требующая Hyper-V который ломает VirtualBox, итп. А иксы можно было и в WSL1 поднять.

В WSL1 хотя бы скорость cpu-приложений была плохой, но терпимой, теперь же в WSL2 все это станет невыносимым...

stasolog
()
Последнее исправление: stasolog (всего исправлений: 1)
Ответ на: комментарий от lovesan

Единственное что можно сказать о «платформах» жабы, типа спринга, это то что они представляют из себя окаменелый набор говнокостылей

Этот, как вы выразились, «набор костылей» вот уже второй десяток лет разменял и никуда уходить не собирается. Во всяком случае, крупные корпорации так просто это дело не отпустят, а значит, и работа за крупные деньги будет.

NuGet vs Maven, IDEA vs VS

Вкусовщина. Некоторые и вовсе на Emacs пишут.

Korchevatel ★★★★★
()
Ответ на: комментарий от Jonikster

Ну, типа душа лежит к C#, а разум подсказывает java :)

По теме. Изучи все три стека. Если ты студент, то времени свободного у тебя навалом.

И какая у тебя специальность в вузе?

dave ★★★★★
()
Ответ на: комментарий от Jonikster

Компьютерное зрение, ядра операционок, движки графических редакторов, движки браузеров, движки виртуальных машин (но тут что-то замутили в новой жабе - посмотрим), встраиваемый софт для управления ядерными реакторами, или управления машинами, или управления поездами, или управления самолетами, потом движки для моделирования аппаратуры, да много еще такого, чего я не знаю.

dave ★★★★★
()
Ответ на: комментарий от dave

Компьютерное зрение, ядра операционок, движки графических редакторов, движки браузеров, движки виртуальных машин

Я спрашивал, куда не пускают Java, куда пускают C#)

Jonikster
() автор топика
Ответ на: комментарий от hateyoufeel

Как это не топит? У него хитрый план: сначала уговорить выбрать сишарп, а потом подсунуть свой bike, чтобы писать на борщелишпе с доступом к дотнету. Многоходовочка!

Virtuos86 ★★★★★
()
Ответ на: комментарий от Jonikster

Те, где нужна максимальная производительность. Ибо виртуальная машина — это лишний слой абстракции, и, к примеру, тот же движок браузера не может себе его позволить, учитывая нынешнюю «прожорливость» веб-страниц.

Korchevatel ★★★★★
()
Ответ на: комментарий от dave

Изучи все три стека.

Пробовал C# и Java. Синтаксис нравится больше у Шарпа, но разум видит, что C# пока игрушка для личного баловства. Знакомый Американец даже говорил, что он обожает синтаксис C#. Но по работе только Java.

Jonikster
() автор топика
Ответ на: комментарий от dave

И какая у тебя специальность в вузе?

Компьютерная инженерия, системы искусственного интеллекта. Мне плевать на ВУЗ, потому что туда я пошел ради диплома, чтобы иммигрировать.

Jonikster
() автор топика
Ответ на: комментарий от Virtuos86

Тогда надо начать здесь же задвигать на Haskell + language-java, чтобы писать на хацкелле и жабе одновременно. Ну просто в противовес.

Алсо, хацкелл в хадуп и прочие мапредьюсы таким макаром пихается без проблем.

hateyoufeel ★★★★★
()

на него забил, просто написал программу на C++, предъявил преподу, мол я шарю, и все. Для работы избрал Python/Django. Интересует удаленка, желательно на Европейского или Американского работодателя

Пока ты молод и мозги соображают шустро, имеет смысл как можно глубже и ширше погрузиться в теорию, оставив программизм, конкретные языки и библиотеки в покое. Если ты уже забил на серьезное обучение, и хочешь стать кодером, с точки зрения западного работодателя ты не индус, и потому, скорее всего, невыгоден ибо слишком дорог.

seiken ★★★★★
()
Ответ на: комментарий от lovesan

Хз, писал бэкенды (продакшен, а не свои проекты), с таким же успехом пишу мобильные приложения, чего там разного то?

Jefail ★★★★
()
Ответ на: комментарий от Jonikster

Компьютерная инженерия, системы искусственного интеллекта.

Я бы тут предложил Python, C++ и еще Prolog, но тебе похоже неинтересна эта область.

Мне плевать на ВУЗ, потому что туда я пошел ради диплома, чтобы иммигрировать.

Успеешь еще эмигрировать. Без образования ты там никому не нужен будешь. Знание языков программирования - это еще не образование. Это инструменты, причем преходящие. Сегодня мода на одни инструменты, потом на другие... Мода изменчива.

dave ★★★★★
()
Ответ на: комментарий от seiken

Пока ты молод и мозги соображают шустро, имеет смысл как можно глубже и ширше погрузиться в теорию, оставив программизм, конкретные языки и библиотеки в покое. Если ты уже забил на серьезное обучение, и хочешь стать кодером, с точки зрения западного работодателя ты не индус, и потому, скорее всего, невыгоден ибо слишком дорог.

Поддерживаю

dave ★★★★★
()
Ответ на: комментарий от Virtuos86

Я жаба помидор. Бегите глупцы.

anonymous
()
Ответ на: комментарий от stasolog

Ну а lombok приближает Java к нормальному языку,

За лобок сейчас по лицу можно получить. Не нравится синтаксис – пиши на котлине.

cocucka ★★★★☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.