Java и C#, как близко они? [закрытый]

36
задан prosseek 11 November 2010 в 14:55
поделиться

4 ответа

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


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

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

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

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

На уровне функций C # 1 определенно был близок к Java. Среди немногих различий, которые у них были, я бы выделил поддержку C # для «небезопасного» кода (включая указатели) и для делегатов; и спорные броски Java . В этом есть смысл, поскольку одной из целей C # было стать альтернативой Java.

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

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

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


Если я выучу Java, станет ли изучение C # почти бесплатным? Или наоборот?

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


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

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

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


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

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

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

44
ответ дан 27 November 2019 в 06:01
поделиться

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

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

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

3
ответ дан 27 November 2019 в 06:01
поделиться

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

1
ответ дан 27 November 2019 в 06:01
поделиться

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

Я только что получил степень в области компьютерных наук в Англии, я выбрал университет, в котором преподавали C #, а не Java ... Причина в том, что я мог легко перейти прямо на высокооплачиваемую работу в качестве разработчик программного обеспечения с компанией, которой просто нужны только люди, знающие «новые» технологии.

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

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

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

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

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

3
ответ дан 27 November 2019 в 06:01
поделиться