Что учить: Scala, Java или.NET?

Вот есть некоторое свободное время и желание выучить новый язык/технологию.

Выбираю между Scala, Java и C#. Хочется сразу двух зайцев убить: в случае провала собственных стартаповских планов, суметь найти хорошую работу*, в другом случае просто знать нужную технологию.

Кратко о себе: упертый линуксоид и питонщик, в прошлом похапешник.

__
*да, я понимаю, что работа/зарплата во многом завысит от собственных знаний и умении

UPD.
Всем спасибо большое за ответы. Учу Java.
Если бы не ваши ответы, то полез бы в Scala, не разорбался бы без Java и бросил бы путь личностного роста ;)

1 ответов


Я за Java.

Есть ряд преимуществ перед другими языками:

1. Востребованность. Большая часть банковского софта (особенно серверной части) и софта, работа которого подразумевает большую нагруженность и высокое время отклика, используют именно Java и смежные с ней технологии. Это могут быть разного рода торговые платформы, фронт-офисные системы или биллинговые системы. Всё, что угодно. Кроме того, на Java есть масса фреймворков, которые быстро и эффективно позволяют вести сложных web-ориентированных проектов.
C# может сравниться по востребованности с Java, но, всё-таки, серверную часть на C# делать не так удобно, как клиентскую. Поэтому я уже неоднократно встречал связку rich-client на C#, а серверная часть на Java.
Scala - прекрасный язык, подающий большие надежды, но, увы, на данный момент он далёк от мэйнстрима, и неясно, станет ли он им когда-нибудь.

2. Кроссплатформенность. Java изначально создавалась, как язык, работающий по принципу write once, run everywhere. И, насколько мне известно, пока этому принципу удаётся следовать более-менее успешно. .NET в целом, и C# в частности, ориентирован строго на Windows. Да, я знаю, что есть проект Mono. Однако этот проект разрабатывается не в MS, а значит любые изменения в платформе .NET могут потенциально повлечь странные и внезапные проблемы в коде, который запускается с помощью Mono.
Кстати, несомненным плюсом Java является и то, что на ней же можно разрабатывать мобильные приложения. Несмотря на то, что Oracle делает определённые шаги, чтобы поссориться с Google-ом насчёт Java, этот язык всё ещё является основным для разработке приложений на Android.

Поскольку Scala компилируется в байт-код, который потом гоняется на JVM, сравнивать в этом контексте Scala и Java бессмысленно.

3. Простота. Java, сама по себе, не очень простой язык, но Scala сложнее. Да, гибче, да, более насыщенна смыслом (засчёт тех же замыканий, например), но сложнее. C# и Java, на мой взгляд, примерно одинаковы по сложности.

4. Открытость исходников. Большая часть библиотек для Java, да и сама Java, как правило, поставляется с исходниками. В процессе отладки или идентификации проблем, которые внезапно случились в продакшне, ценность исходников чрезвычайно велика. Без них, порой, просто не разобраться. У Scala с этим, вроде, тоже всё в порядке, а вот платформа .NET открытостью похвастаться не может.

5. Удобство в использовании. Для Java есть, как минимум, одна восхитительная среда разработки - IntelliJ Idea. Их девиз - develop with pleasure, и это ни разу не пустые слова. Есть ещё Eclipse и NetBeans, тоже годные среды разработки, но лично мне они нравятся существенно меньше.
Для Scala есть отличный плагин в Idea, и он уже может достаточно, чтобы сделать разработку более-менее комфортной, но, всё же, до возможностей, доступных для Java, плагину ещё предстоит проделать немалый путь.

В C# - это Visual Studio, без вариантов. Если она не нравится по какой-то причине, то всё, в процессе написания кода будет элемент раздражения, а это плохо сказывается на продуктивности.


А я бы посоветовал .NET. Это заставит понять принципы Windows платформы, её достоинства и недостатки, особенно если за плечами есть знания *NIX систем. В сравнении придёт лучшее понимание.
Что касается зарплат, то, по моим наблюдениям, начинающие Java разработчики получают больше начинающих .NET разработчиков. Однако, с ростом уровня разработчика, разница нивелируется. Скорее всего это вызвано более низким порогом вхождения в разработку для выбравших .NET.

Scala присутствует и для .NET и для JVM. Так что к ней можно перейти после C#/Java.

А от себя я бы посоветовал посмотреть в сторону F#. Достаточно интересный функциональный язык, владение которым никогда не будет лишним.


На мой взгляд все зависит от задач, с которыми Вам хотелось бы работать. Указывать какой из языков для чего лучше подходит опасно - грозит лютым и песполезным холиваром, но я все таки выражу лишь краткое ИМХО: окошки и сайты ооочень удобно писать на .net, в то время, как серьездные распределенные системы на java (хотя бы в силу кроссплатформенности последней).

ПС: еще одно сугубо личное мнение: .net на столько хорошо спроектированная платформа, что приводит к некоторому ограничению в проф. развитии, тк многие технические аспекты в .net крайне удачно скрыты (на пример подключение к б.д., создание GUI или тестирование web сайтов) и детали, с ними связанные могут достаточно долго оставаться нераскрытыми. Для меня, именно это и послужило причиной смены языка (и работы) с C# на Java.


Если Вы крутой линуксоид и питонщик - то Java не будет сложной. В Джаве много разных библиотек, приличная документация , огромная комьюнити - найти помощь и поддержку почти по любой части - вообще без проблем.

Очень зависит , чем Вы собираетесь заниматься , в какую сторону идти. В Вузе преподовали джаву . Спрос на неё есть во всем мире. Хоть и продолжаю практиковать в джаве, лично сам переключился на Ruby.


Если интересует работа - то в принципе зарплаты почти одинаковые
Если же интересует технология, то исходя из той области в какой хотите использовать язык.
Ведь под .NET пишут нативные приложения для Windows, а Java там где нужна кросплатформенность.


Android очень сильно поднял JAVU. А теперь очередь WindowsPhone. И я уверен что С# cтанет более популярным боагодаря Expression Blend (гениальная штука)


1с или Scala учи. Ява ну плохо там все фреймворки,
распространенность маленькая. Вакансий по 1с в 20 раз больше.
Никому эникейщики не нужны. 1c scala это промышленность,
будешь на заводе или предприятии сидеть
а не в тараканьей конторе. Уволят вот тебя с работы,
жена бросит и все ок тогда не будешь удивляться
зачем такое вражье по пишут.


Swing Ejb too bad


Я за Java.

Есть ряд преимуществ перед другими языками:

1. Востребованность. Большая часть банковского софта (особенно серверной части) и софта, работа которого подразумевает большую нагруженность и высокое время отклика, используют именно Java и смежные с ней технологии. Это могут быть разного рода торговые платформы, фронт-офисные системы или биллинговые системы. Всё, что угодно. Кроме того, на Java есть масса фреймворков, которые быстро и эффективно позволяют вести сложных web-ориентированных проектов.

Ну ну ну такая она востребованная, как андроид телефоны, ты по ним много программистов
видел. Самое востребованное 1с

C# может сравниться по востребованности с Java, но, всё-таки, серверную часть на C# делать не так удобно, как клиентскую. Поэтому я уже неоднократно встречал связку rich-client на C#, а серверная часть на Java.

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

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

Зато это все промышленное, а не филькина контора паленая

2. Кроссплатформенность. Java изначально создавалась, как язык, работающий по принципу write once, run everywhere. И, насколько мне известно, пока этому принципу удаётся следовать более-менее успешно. .NET в целом, и C# в частности, ориентирован строго на Windows. Да, я знаю, что есть проект Mono. Однако этот проект разрабатывается не в MS, а значит любые изменения в платформе .NET могут потенциально повлечь странные и внезапные проблемы в коде, который запускается с помощью Mono.
Кстати, несомненным плюсом Java является и то, что на ней же можно разрабатывать мобильные приложения. Несмотря на то, что Oracle делает определённые шаги, чтобы поссориться с Google-ом насчёт Java, этот язык всё ещё является основным для разработке приложений на Android.

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

Поскольку Scala компилируется в байт-код, который потом гоняется на JVM, сравнивать в этом контексте Scala и Java бессмысленно.

Джава машина такая быстрая, что закачаешься просто

3. Простота. Java, сама по себе, не очень простой язык, но Scala сложнее. Да, гибче, да, более насыщенна смыслом (засчёт тех же замыканий, например), но сложнее. C# и Java, на мой взгляд, примерно одинаковы по сложности.

И в чем плюсы, на с не похоже, зато там много сложных библиотек и трехэтажный код
с хмл г-ом а подругому это не назовешь

4. Открытость исходников. Большая часть библиотек для Java, да и сама Java, как правило, поставляется с исходниками. В процессе отладки или идентификации проблем, которые внезапно случились в продакшне, ценность исходников чрезвычайно велика. Без них, порой, просто не разобраться. У Scala с этим, вроде, тоже всё в порядке, а вот платформа .NET открытостью похвастаться не может.

Ну и че тебе до их открытости. Зато апи постоянно меняются, даже примеры и те устаревают.

5. Удобство в использовании. Для Java есть, как минимум, одна восхитительная среда разработки - IntelliJ Idea. Их девиз - develop with pleasure, и это ни разу не пустые слова. Есть ещё Eclipse и NetBeans, тоже годные среды разработки, но лично мне они нравятся существенно меньше.
Для Scala есть отличный плагин в Idea, и он уже может достаточно, чтобы сделать разработку более-менее комфортной, но, всё же, до возможностей, доступных для Java, плагину ещё предстоит проделать немалый путь.

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

В C# - это Visual Studio, без вариантов. Если она не нравится по какой-то причине, то всё, в процессе написания кода будет элемент раздражения, а это плохо сказывается на продуктивности.

без вариантов это конечно плохо пошел в другую контору устраиваться - а там - такое!!!


там такоe eclipe netbeans intelij maven jboss apache tomcat git agile gwt linux android


)))


Нет бывшых пэхэпэшников.


Я сам пхпэшник и зарабатываю очень не плохо, много успешных проектов используют пхп как бы на него не лили грязь. Здесь скорее дело вкуса, что больше нравится то и надо учить. Ведь практически любой веб-проект можно реализовать на пхп и на java и на .net.

Советовать могу только java, т.к scala это JVM язык совместимый с java, думаю начинать с java а при дальнейшем желании уже изучать scala. .NET и прочее от MS не могу советовать, т.к люблю все бесплатное и открытое, да и меняется у них там все так быстро что не уверен какая технология умрет через год и какая у них еще раз родится.


я думаю, что освоив тот же C# .NET, ты уже с легкостью переключишься и на Java.. суть практически одна и та же. Плюс .NET, имхо, это крутая IDE в виде Visual Studio 2010, в которой просто КАЙФ работать..