Подтвердить что ты не робот

Java и С#, насколько они близки?

Я использую C/С++ и Python, но теперь я вижу, что многие новые книги по программированию используют Java или С# в качестве примеров.

Я не думаю, что пока буду использовать Java или С#, но я думаю, что мне нужно изучить один из языков (или их обоих), чтобы читать/понимать книги.

  • Как аналогичные Java и С#? Если я изучаю Java, изучаю С# почти бесплатно? Или наоборот?
  • Если мне нужно выбрать только один из двух языков, что было бы лучше? Что имеет более широкий охват в плане языка программирования?
4b9b3361

Ответ 1

Вы задаете несколько вопросов одновременно. Позвольте мне обратиться к ним отдельно:


Насколько похожи Java и С#?

И С#, и Java использовали C/C++ (и Objective C, и другие) для определения их синтаксиса. И оба они скомпилированы на промежуточный язык.

Это общее происхождение делает языки похожими на многих уровнях, так что код на одном языке может быть перепутан с другим новичками; а также делает среду выполнения несколько сопоставимой. Однако существуют существенные различия как в принципах проектирования, так и в том, как развивался каждый язык, что делает работу с каждым совершенно разной; Вот самые выдающиеся из них:

На уровне синтаксиса Java находилась под влиянием Smalltalk, в то время как С# пытался оставаться ближе к C/C++ (например: сравнивать Java extends и implements с помощью С# : нотация) и получил смутное вдохновение от VB на тех концепциях, которые не сопоставляется с C/C++ (пример: синтаксис свойства).

По уровню функциональности С# 1 определенно был близок к Java. Среди немногих различий я бы выделил поддержку С# для "небезопасного" кода (включая указатели) и для делегатов; и спорные throws Java. Это имеет смысл, поскольку одной из целей С# было стать альтернативой Java.

Многие языковые функции сильно различаются по деталям реализации. Например, перечисления очень C'ish на С#, но являются полными объектами в Java; или дженерики реализованы на уровне IL в С#, но в Java обрабатываются с помощью стирания типов (ни один из них не очень похож на шаблоны C++, кроме синтаксиса).

На уровне API они - разные миры. С# опирается на .Net Framework, который был основан на опыте Microsoft с семейством продуктов Visual Studio (и, следовательно, в значительной степени ориентирован на Windows), в то время как библиотека классов Java была создана, IIRC, с нуля и сильно развивалась с течением времени (в в эти дни свинга кто-нибудь помнит AWT?

Наконец, стоит упомянуть, что у каждого из этих языков есть свои идиомы, и за ним стоит свое сообщество сторонников.


Если я изучаю Java, изучаю ли С# почти бесплатно? Или наоборот?

Ни. Основное сходство - это основной синтаксис (точки с запятой, фигурные скобки, индексирование массива, чувствительность к регистру и т.д.), И вы уже получили его из C/C++.


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

Краткий ответ: подбросьте монетку. Длинный ответ: это зависит от вашего стиля кодирования и от того, какие аспекты языка вы цените больше всего. Мой лучший совет - начать с изучения обоих, пока не почувствуете, что один из языков тянет вас сильнее, чем другой.

Кроме того, вы можете взглянуть на http://en.wikipedia.org/wiki/Comparison_of_Java_and_C_Sharp.


Который имеет более широкий охват с точки зрения языка программирования?

Если вы имеете в виду встроенные функции языка, я бы сказал, что С# выигрывает с небольшим отрывом. Большинство функций, которые есть в С# и Java, - это синтаксический сахар (хотя вместе они существенно влияют на кривую обучения и способ использования языка). Я высоко ценю методы перегрузки и расширения оператора С#. Кроме того, LINQ - довольно интересная концепция, но по сути это декларативный синтаксис для циклов.

Надеюсь это поможет.

Ответ 2

Если вы хотите грубо субъективный ответ.

Я только что закончил степень в области компьютерных наук в Англии, я выбрал университет, который преподавал С#, в отличие от Java......... разум, поэтому я мог легко пройти прямо в высокооплачиваемую работу, разработчик программного обеспечения с компанией, которая просто хочет только тех, кто знает "новые" технологии.

Это такие компании, как Инвестиционные банки, технологические стартапы, ИТ-консалтинговые фирмы.

Итак, если вы хотите выбрать один, чтобы узнать......

Подумайте о конечной цели..... если это наличные деньги и современные знания... следуйте С#.

.... и если это что-то еще, следуйте С#

P.S. Java ужасен - я должен был сказать это.

Ответ 4

Библиотеки очень разные, и подход к документации сильно отличается. Я считаю, что подход С# проще.

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

По крайней мере, так, как мне казалось несколько лет назад, когда я сделал некоторую Java.

Ответ 5

Не отображение 1:1 с С# 1.0. С# добавил много вещей (LINQ, закрытие и т.д.), Которые не имеют аналога в Java.