C# против Java


24 0

Сегодня прочитал следующее письмо, которое пролежало в ящике несколько дней (простите, все не было времени прочитать и ответить)

Михаил, привет. Изучаю Библию С#, спасибо за книгу. Но уже несколько человек сказали мне, что я нуб, и гораздо перспективнее начинать серьезно учить Java, так как работы больше, зарплаты выше и перспектив у языка больше. Поэтому хотел бы с тобой посоветоваться: с одной стороны Microsoft все-таки посильнее чем Oracle и C# развивается намного быстрее, но Java кроссплатформенный, а при сегодняшнем буме планшетов и смартфонов это большой плюс. Что ты думаешь по этому поводу? Какие перспективы у .NET? Какие тенденции в западных странах? Тема очень холиварная,!

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

Я никогда не выбирал язык за перспективность. Когда я выбрал Delphi, то это было потому, что мне нравился Паскаль и его перевоплощение в виде Delphi. Если бы я смотрел на перспективу, то выбрал бы C++, потому что Delphi популярен в России, немного в Германии и еще паре стран. В северной Америке полно народу, которые даже не знают о его существовании. Мне нравится C++ и я его использовал, но душа больше лежала на стороне Delphi.

Я выбрал C# не потому, что он перспективнее Java, а потому что мне он больше нравится. Я пытался изучать Java, несколько раз заставлял себя, но не смог ничего серьезного на нем написать. Ну не мое это, раздражает меня этот язык и вся платформа. Это личные предпочтения каждого. Если тебе нравится этот язык, то пиши на Java, если нравиться C# то пиши на C#. Но какой бы язык ты не выбрал, я бы просто на всякий случай изучал бы второй из них. Просто на всякий пожарный случай.

Лично я свои яйца разделил на две корзины (было больно, но я потерпел) – PHP и C#. Если какая-то из этих корзин упадет, то хотя бы с одним яичком я останусь. Хотя я все же в обеих корзинах уверен.

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

А вот теперь к халивару – перспективность языков. Если посмотреть на компании, которые поддерживают каждую из сторон, то Microsoft выглядит мелким школьником, потому что на противоположной стороне расположились такие гиганты как Oracle, Google и мега любитель Java корпорация IBM. Если сложить эти три кита, то Microsoft превращается в гонца за пивом. Но если посмотреть на историю, то гонцами становятся как раз киты.

Компания IBM любит Java и поддерживает ее уже долгие годы, но при этом Java практически не развивается и по разным рейтингам популярности этот язык во всех сферах летит вниз. И если бы не Google со своим Андроидом, то Java потеряла бы еще больше. Oracle вообще не особо влияет на судьбу языка. Они и не могут сильно повлиять, потому что они выпускают сервера (достались от Sun) и базы данных, поэтому на популярность платформы Java не могут сильно повлиять. А вот Google может и смог.

Я считаю, что только благодаря мобильной платформе и корпоративному рынку SAP систем язык еще жив (это только мое больное воображение после шока от разделения яиц). На рынке создания Web сайтов Java практически не используется, потому что он неудобен (опять же, мой больной взгляд). Тут властвует PHP и будет королем еще долгие годы. Все эти руби на рельсах, как камары на костылях появляются каждый год и кричат что они убийцы, а на самом деле через некоторое время превращаются в лузеров и так ничего и не захватывают.

На настольной платформе Java тоже не смог ничего показать. Этот язык на много старше .NET, но на .NET уже написано в несколько раз больше.

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

Самые популярные флешмобы.


Понравилось? Кликни Лайк, чтобы я знал, какой контент более интересен читателям. Заметку пока еще никто не лайкал и ты можешь быть первым


Комментарии

Степан Литвинов

24 Марта 2011

Я думаю, если спрашивают какой язык изучать Сшарп или Джаву, то не надо мучиться и выбрать абсолютно любой. По синтаксису они мне показались очень похожи, но я в свое время остановился на Шарпе. Когда дело дойдет до написания более-менее приличного приложения, тогда он и сам поймет что для этого больше подходит. Первоначально учил Шарп по книге Герберта Шилдта, когда потом попытался изучить по его книге Java, ощущение дежа вю меня не покидало - уж очень похожи и книги и сами языки. Поэтому на Java стал писАть практически без переучки, правда не долго :(


Александр Перечнев

24 Марта 2011

Мой совет автору письма: изучи один язык, любой. Какой тебе легче изучить. По-настоящему ценится не тот специалист, который знает всё по-немногу, а тот, который знает только одно. Но знает так, что равных ему просто нет. К тому же, если ты будешь в совершенстве владеть Java, то тебе ничто не помешает в будущем перейти на C# или C++.
Михаил в своё время писал только о Delphi, я вообще не помню чтобы он где-то упоминал о C#. Но в Delphi он знал достаточно, чтобы поделиться с публикой. Как видишь, ему ничто не помешало перейти на C#.


Антон

24 Марта 2011

Mono сейчас не плохо развивается.


Олег

24 Марта 2011

Немножко не в тему :)
РНР жил, РНР жив, РНР будет жить!
Знаю парочку проектов, которые изначально были написаны на Питоне, потом их перевели на РНР.


Романыч

24 Марта 2011

Не так давно самостоятельно изучал C# (в том числе по "Библии"). Язык очень понравился - проще, чем C++; удобней, чем Delphi и, действительно, очень быстро развивается. Но устроившись на работу программистом вынужден был начать изучать Java. Перепрофилировался очень быстро, во многом благодаря тому, что эти языки похожи. Ничего плохого про Java сказать не могу (может просто пока недостает опыта) и не верю, что на C# можно сотворить что-то такое, чего не осилить, используя Java, хотя вполне допускаю, что этот язык может когда-нибудь повторить судьбу Delphi.


AndRoot

24 Марта 2011

Моё мнение - не слушай никого и принимай решение сам. Во многом выбор языка определяет то в какой компании ты будешь работать программистом. Или же то нравится ли он тебе или нет. Насчёт перспективности скажу так: Java конечно кроссплатформенный, но это не делает его лучше и удобнее C#. Более 90% рынка настольных компьютеров сейчас у Windows, а следовательно - у .NET. + на Java ты не напишешь так легко то, что напишешь на C#.
Мобильные платформы пока что совсем другая область работы и там нужны свои средства разработки. Так что выбирать язык только из-за того что он одинаковый и там и там имхо глупо. На мой взгляд - язык это самое простое что нужно выучить.


Денис Ильясов

24 Марта 2011

Однако на стороне .NET есть замечательный язык ASP.NET который не один из всех не упомянул. Грубо говоря этот тот-же C#, только немного со своими правилами. И большинство крупных игроков на рынке сейчас отдает дань ASP.NET'у, если смотреть даже на примере WebMoney.
Так-что я на стороне C#, из-за практичности и наличия ASP.NET, что существеннее облегчает разработку веб-сайтов нежели PHP.


Михаил Фленов

24 Марта 2011

Если сравнивать по легкотелости, то PHP все же проще. Но если сравнивать по мощи, то ASP.NET помощнее будет. Там можно использовать всю платформу .NET не отходя от кассы. В PHP встроенного не так много, и приходиться обращатся к внешним программам за помощью, что не всегда хорошо.


Влад

24 Марта 2011

Как-то интересовался возможностью написания коллекций на Java. Взял готовый пример из какой-то книги, по созданию связного списка. Стоило немного изменить код - и пример превратился в код на C#. И заработал. Языки действительно похожи.  Под Windows, конечно, удобнее C#. Но можно, пожалуй, сказать что Майкрософт не смог стать монополистом на рынке мобильных устройств. Похоже, что в ближайшем будущем будут жить оба языка.


Михаил Фленов

24 Марта 2011

Когда вы сравниваете языки, то вы говорите только о базовом синтаксисе типа объявления переменных, циклы и сравнения. Но если сравнить библиотеки, то они вообще не похожи. Код, реализующий визуальный интерфейс не перенести. Библиотеки работы с сетью разные как небо и земля.


hyrurg

25 Марта 2011

Да че там думать.. В поисковик вбить: работа, вакансии, c# (java). И пожалуйста. Сравниваем востребованность и зарплату. Так же полезно просматривать сайты фриланса. Там можно проанализировать ситуацию и настроения в сфере ИТ. А перспективность.. Знание и главное умение писать программы на каком либо языке, лишним не будет никогда. Не зря же в ВУЗах начинают с паскаля. Само мышление, развитие. Синтаксис почти у всех языков схожий. Только толку от того, если человек не может "выразить мысль" и "объяснить" компу, что от него требуется. Так что проблема не в языках программирования. А проблема мобильных и на какой платформе.. Я думаю просто еще не пришло время лидера. Т.е. идет только развитие этого направления. Начальный процесс.  


Дмитрий

25 Марта 2011

Это было мое письмо.
Всем спасибо. Развеяли сомнения ))


Александр Перечнев

25 Марта 2011

"Mono сейчас не плохо развивается." - моно - это порт. Нужно изучать оригинал, а не порт.

"Более 90% рынка настольных компьютеров сейчас у Windows, а следовательно - у .NET." - по статистике посетителей моих сайтов Java установлена на 75% компьютеров, а .NET только у 25%.


Владимир (Гаврилов)

25 Марта 2011

О, какая интересная тема.
Я тоже как-то не задумывался, какой язык перспективнее, где зарплата больше и т.п. Использовал тот, который нравится, и все. Начинал с Паскаля, с Бейсика. Так сложилось, что ни на Делфи, ни на VB так и не стал писать. Не лежала душа как-то.
А вот С мне понравился, его синтаксис, за отсутствие многословности. "Не надо слов пустых, не надо лишних фраз" - так охарактеризовал я его, и с тех пор в ЯП признаю только C-подобный синтаксис, с другими не могу как-то.
PHP, когда начал его осваивать, безумно понравился, просто перевернул меня, можно сказать. За то, что из него исключены всякие низкоуровневые операции: объявление типа, выделение памяти и  т.п. Ваш покорный слуга всегда говорил: «ну неужели программа (транслятор точнее) сама не может определить тип переменной, или выделить память под массив столько, сколько нужно. Почему я это должен делать «руками» (то есть явно)?» А тут – все, что хочешь. Вообще, работа с переменными организована фантастически красиво: тут тебе и проверка существования isset($a), и проверка на пустое значение empty($a), и уничтожение unset($a). Меня захватило то, что с переменными можешь делать все что хочешь: завожу целочисленную:

$a = 2;

потом она же становится вещественной:
$a = sqrt($a);

теперь загоняю в нее массив:
$a = array(2, $a);

а теперь строкою становится она:
$a = “Корень из 2:”.$a[1];

Хочешь избавиться от какого-нибудь элемента – дави его: unset($a[10]), причем он может и не существовать – ошибки не будет.
Второе, что понравилось – это работа с массивами. Строковые индексы? Пожалуйста! Отрицательные? Нет проблем. Все функции, какие надо, реализуют все возможности. И не надо никаких тебе стеков, очередей и т.д. в качестве типов, массив и все. А соответствующие возможности реализованы в функциях.
Ну и третье, что понравилось – функции. Только поддержка ООП была весьма ограниченной, но в PHP5 это исправили. Вообще, язык очень динамично развивался. Ваш покорный слуга даже решил: «все теперь буду писать на нем, и клиентские приложения тоже». Но потом все же изменил свое мнение, понимая всю мощь и красоту ООП.
Интересовался Явой, но как-то не пошло. Может потому что не оказалось интересной захватывающей книжки? Не знаю. И вот C#. Изучаю его совсем недавно, с ноября, и пока он мне очень нравится. Нравится, что все типы – объекты. Например, захватило то, что методы можно вызывать прямо для констант:
2.ToString();

Да, по сравнению с C++,  C# существенно продвинут в сторону высокоуровневости. Нравится, как пространства имен реализованы.
Но языки – языками, а есть еще технологии. Технология .NET лично мне представляется сегодня более совершенной, чем Java и PHP-шные технологии. Есть Visual Studio – удобный, мощный инструмент. Немного осложняет дело то, что .NET пока ориентирована на Windows, а также то, что майкрософтовские вещи все платные и дорогие. Хотя, Зенд-студия, например, тоже платная.
На сегодняшний день могу сказать, что устал от PHP-шных технологий. Хочу использовать что-то более совершенное. Поэтому буду вовсю осваивать С#, ASP.NET, Silverlight возможно. Другой важный момент – это быстродействие, насколько позволяет мне судить мой стереотипный взгляд, ASP-шные сайты более «долгие», чем PHP-шные (к сожалению, не знаком с IIS серверами, и их возможностями).
Ну и в заключение отмечу, что большая, или не очень, популярность, распространенность того или иного языка или технологии в общем-то не должны сильно беспокоить. Мы же понимаем: то, что модно и популярно сегодня, неминуемо устареет завтра. И потом, чем больше распространение, тем выше конкурс.


Антон

25 Марта 2011

С чего это Mono порт. Если так подумать то и Linux порт ведь делает тоже самое что и Windows. Единственное чего не хватает в Mono так это WPF. Наличие данной технологии просто увеличило количество портируемых программ с Windows.


Денис Ильясов

25 Марта 2011

Попробовал я как-то ASP.NET в Mono, спасибо поблевал. Отблевываясь кусочками MonoDevelop, ушел обратно на Win.
И только после этого квеста, понял насколько Visual Studio прелестна. А Windows при взаимно хороших отношениях очень даже дружелюбна.


Илья

25 Марта 2011

А почему так много корпоративных сайтов любят
ASP.NET??
Он безопаснее PHP, Perl, Python??


Михаил Фленов

25 Марта 2011

Как раз за мощь и любят


Tranz

26 Марта 2011

О! Узнаю в авторе письма себя, лет так сколько-то назад...

Первым моим языком программирования стал Паскаль на компьютерных курсах. Потом, на тех же курсах познакомился с Делфями. Но вот настоящий интерес к программированию у меня появился после прочтения книг Михаила.

Михаил, спасибо Вам большое за Ваши книги. Благодаря им я и сейчас рассматриваю программирование, как занятную игру =)

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

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

Сейчас я студент второго курса, работаю .NET разработчиком, и ещё ни разу не пожалел о выборе.

ПС. Ребят, не ставьте перед собой цель "получать N баксов в месяц". Просто выбирете ту платформу, которая Вам ближе, и просто играйте с ней =)


Алексей

18 Мая 2011

Для начала надо определиться что же интересно делать конкретно взятому человеку применительно к индустрии разработки ПО.

На яве в основном пишут серверную логику ЕРП систем, процессинговых систем, корпоративных интрасетей. Не редко у компании внутренняя инфраструктура завязана на ява-платформу, а наружу смотрит сайт с милым красочным дизайном на друпале/джомле/джанге/etc.  Т.е. зачем воротить сложное и неповоротливое там где справится php или python.

Т.е. если человеку интересно заниматься автоматизацией бизнес-процессов, то ява его выбор, но придется серьезно напрячся. Начать с ядра языка и основных библиотек (collections, reflections, swing, xml, etc.), потом изучить не менее важные вспомогательные библиотеки и технологии основной платформы (jndi, rmi, security api, etc. - это все обычно называют javase), затем взяться за javaee, а это та же джава + ворох технологий и спецификаций (ejb, jpa, springmvc, hibernate, jax-ws и т.п.). Короче, долгий путь. Две полки толстых книг, сотни часов и тысячи мануалов :)

На самом деле с шарпом пути дорожки расходятся на начальном этапе изучения ядра и основных библиотек. А языки похожи и очень простые, но не в них дело. Главное - это платформа и ее надо знать.

Так что муки выбора тут не безосновательны.
Лично я выбрал jee и oracle и не жалею ни капли.
  


Михаил Коновалов

23 Июня 2011

C# и .NET развивается быстрее чем Java. В этом есть как преимущество, так и недостаток. Преимущество в том, что разработчики быстрее получают новые возможности и технологии, например LINQ (Oracle планирует внедрить лямбда-выражения в JDK8, хотя LINQ — это больше чем просто лямбда-выражения). Также у Microsoft мне нравятся технологии ASP.NET MVC3, WPF/Silverlight.
Недостаток в том, что платформа становится менее стабильной. Java-технологии более долгоживущие, например первую версию JDBC  выпустили еще в 1997 году. Версия JDBC обновляется, но технология живет и по сей день. А вспомните сколько одних только технологий доступа к данным выпустила Microsoft. Кто сейчас применяет RDO или ADO?
Java последовательно развивает технологии, увеличивая версии. Microsoft напротив, заменяет технологии совершенно иными, старые же хоть и поддерживает но не развивает.
Опять же я заметил интересную тенденцию среди самих разработчиков. Дотнетчики  внимательно следят за последней модой и быстро осваивают новые технологии. А джависты не спешат этого делать, предпочитая стабильность. Например существует много проектов на спецификации JavaEE 5. Но никто сломя голову не спешит их переписывать на JavaEE 6 и дело здесь не в том, что системы сложные.
А что если написать проект на .NET по последней моде и лет через 5 придут новые разработчики? Каково будет их удивление?
.NET уже огромен, а представьте насколько он разрастется через 10 лет?


Александр

14 Января 2012

"Не думаю, что она не проживет долго" - то есть думаете, что она проживет долго? Или не думаете, что она умрет быстро?


Николай

27 Января 2012

Почему же java программисты получают больше зарплату?


Dario

18 Января 2022

Мда, про Hadoop, Spark, Zookeeper, Akka и прочий хайлоад Фленов явно не в курсе. Здесь у Java (Scala) альтернатив нет. C# - это простенькие сайты и desktop под винду, не более (т.е. замена PHP и Delphi). Java - большой энтерпрайз, корпоративные приложения для банков и т.д.


Добавить Комментарий

Еще что-нибудь

Хотите найти еще что-то интересное почитать? Можно попробовать отфильтровать заметки на блоге по категориям.

О блоге

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

Обратная связь

Без проблем вступаю в неразборчивые разговоры по e-mail. Стараюсь отвечать на письма всех читателей вне зависимости от страны проживания, вероисповедания, на русском или английском языке.

Пишите мне