Является ли платформа С# нейтральной?

Сегодня я купил С# 3.0 Pocket Reference (O'Reilly Publishers).

В этой книге в первом параграфе первой страницы указывается, что " Язык С# платформой нейтральной, но она была написана для работы с платформой Microsoft.Net "

Если я не ошибаюсь, платформа Neutral означает, что программное обеспечение, созданное на этом языке, должно работать во всех ОС (например, Mac, Windows, Linux и т.д.).

Я знаю, что эта характеристика удовлетворяет Java, но .NET еще не смог этого сделать (хотя MONO добилась определенного прогресса в Linux).

Тогда каково значение этого слова "PLATFORM NEUTRAL" до сих пор С# является проблемой?

Заранее спасибо

Ответы

Ответ 1

Сам С# -язык является нейтральным платформой, как C и С++, - вы можете реализовать компилятор и т.д. для него на любой платформе.

Платформа .Net и связанные с ней библиотеки, с которыми она была разработана, чтобы работать хорошо, не являются нейтральными по дизайну платформы - они предназначены для работы с окнами, хотя Mono несколько компенсирует это.

Если вы напишете программу на С# без использования каких-либо функций любой. Net-библиотеки, она будет независимой от платформы - вы можете быть уверены, что она будет работать на любой платформе с инструментами для С#... вы только что выиграли У вас особенно полезная программа:)

Ответ 2

С#, язык, нейтрален платформой.

Но рамки, обычно связанные с С#, средой dotNEt, не являются. Они запускаются на ОС Microsoft.

Mono позволяет использовать С# на многих других (в основном, unix-oid) платформах, предоставляя необходимую среду выполнения, но в нем нет (всех) фреймворков, необходимых для запуска типичных программ на С#.

Ответ 3

Не забывайте, что вы можете использовать С# в:

  • MS.NET(Windows)
  • .NET Compact Framework (PocketPC, XBox 360)
  • Silverlight (Windows, Mac)
  • Лунный свет (Mono/Linux)
  • MonoTouch (iPhone)
  • MonoDevelop (различные включая android)
  • Micro Framework (некоторые часы и т.д.)

Неплохое покрытие. Язык имеет очень мало требований к времени выполнения/ОС.

Ответ 4

С# является нейтральной платформой в смысле ОС (т.е. нейтральной ОС), если вы считаете Mono надежным временем выполнения в Linux.

Но С# и .Net могут работать как есть, без перекомпиляции, как на 32, так и на 64-битной машине. Полагаю, это смысл автора.

Ответ 5

В этом случае platform neutral определяется как "возможность запуска на любом компьютере с совместимой виртуальной машиной". В зависимости от того, какие языковые функции и компилятор вы используете, С# можно считать способным работать на машинах, работающих с последними версиями Windows, Mac OS и Linux.

Ответ 6

С# язык может быть реализован на любой платформе с совместимым компилятором и виртуальной машиной. Сам язык имеет стандарт ECMA для реализации и, следовательно, сам по себе не содержит каких-либо языковых элементов платформы (то есть Microsoft).

Ответ 7

Прежде чем ответить на вопрос, нужно учитывать, что любой язык в эти дни бесполезен без его библиотек. Тем не менее многие пространства имен, составляющие часть, являются только окнами. Многие из них просто обертки вокруг технологий Microsoft, таких как com, win forms и т.д.

Все рассмотренные вопросы просто рассматривают настройки, которые mono сделала для предоставления альтернатив dot net. Мигель много раз упомянул, что они надеются, что Silverlight выиграет, а не другие инструментальные средства ui, потому что он действительно независим от платформы, а не wpf и winforms и т.д.

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

Ответ 8

На мой взгляд, Microsoft утверждает, что С# нейтраль платформы (повторяется текстом, который вы цитируете) неискренен.

Это технически правильно, но на практике ограниченная переносимость приложений С# для не-MS-операционных систем произошла, несмотря на Microsoft, а не из-за них. Довольно ясно, что Microsoft не намерена поддерживать С#/.Net в любой операционной системе, отличной от MS. Действительно, многие думают, что Microsoft (через свое патентное лицензирование с Novell) использует С#/Mono в качестве "клина" для повреждения экосистемы GNU/Linux.

IMO, любой, кто хочет использовать Mono, должен учитывать: 1) риски для своего проекта, если MS решит сыграть в hardball о патентах .NET и 2) ущерб, который они могут причинить экосистеме с открытым исходным кодом в результате.