Чи є насправді багатоплатформна мова?


20

C # (і платформа .net в цілому) виглядає так, що це стає хорошим варіантом для багатокористувацьких додатків:

  • офіційні рамки MS .net: розробка повних вікон Windows, asp.net dev, Windows Phone Dev тощо.
  • моно та все похідне від нього: монотух, монодороїд: решта світу. Ці інструменти сьогодні є RTM.

  • Чи означає це, що C # стає хорошою мовою для націлювання на найпопулярніші платформи: настільну, веб-та мобільну?

  • Чи все ж краще використовувати «рідну» мову цільових платформ (об’єкти C, Java тощо)
  • Це лише екран диму і лише маркетингова мова?

Зауважте, що я насправді усвідомлюю, що не зможу копіювати / вставляти код між платформами. Але я впевнений, що нижчі шари додатків (моделі, бізнес тощо) можуть бути використані повторно, але я знаю, що мені доведеться адаптувати більш високі шари (Gui тощо) до платформи. Моя мета більше зосереджена на необхідних навичках, ніж технічний обмін кодом.

[Ред] Я являюсь AC # розробник в компанії , яка масово використовувати в C #. Ось чому я розповів про c # у плані розширення діапазону цільових платформ у моїй компанії.

Відповіді:


12

Так, загалом .NET Framework чудово підходить для програм, орієнтованих на широкий спектр пристроїв. Але це не властиво .NET; Java робила це задовго до цього. Слід пам’ятати, що немає реальної альтернативи нативним інструментам для певної платформи.

Програми Mac, які ви створюєте за допомогою .NET, ніколи не будуть схожими на рідні програми Mac OS X, і переважна більшість користувачів OS X вважає проблемою . Це може бути неважливо для вас стратегічно, залежно від того, чи ваші бізнес-моделі мають на меті максимальне насичення над максимальним задоволенням користувачів, але це, безумовно, про що слід пам’ятати, роблячи вибір.

Системи графічного інтерфейсу в Linux та Windows дещо гнучкіші, оскільки програми виглядають "рідними" та добре поєднуються з платформою. Але я звинувачую це в основному у відсутності чітких настанов щодо інтерфейсу та у тому, що розробники додатків історично готові були ігнорувати ті, які існують. Багато користувачів Mac віддають перевагу Mac саме через його послідовний користувальницький інтерфейс.

Зважаючи на те, що вам доведеться адаптувати рівень GUI до певної платформи (і, можливо, повністю переписати його на іншій мові, наприклад, Objective-C), це дозволить вам використовувати платформу .NET лише для коду бібліотеки. І тоді, на мою думку, не дуже чіткий виграш для C # над C ++.

Для швидкого розвитку додатків існує кілька альтернатив, які кращі, ніж C # і .NET. І швидке виштовхування програми та її одразу доступність на різних платформах - це безумовно перевага бізнесу. Але для справжніх багатоплатформних програм, які мають на меті по-справжньому задовольнити користувача, це не обов’язково рішення про срібну кулю.


9
"Програми Mac, які ви створюєте за допомогою .NET, ніколи не будуть схожими на рідні програми Mac OS X, ...". Дозвольте познайомити вас з MonoMac: mono-project.com/MonoMac

3
@Dimitris: Скажімо, я в найкращому випадку скептично. Люди Qt спробували це, і люди все ще стрибають вгору і вниз, щоб досягти цього. Вони помиляються: ні. Програми Qt не схожі на нативні програми X X. Вони просто ... помиляються. Я не бачу скріншотів у запропонованому вами посиланні, але навіть якщо вони стануть ідеальним, користувальницький інтерфейс все одно не вистачить усіх даних про поведінку та реалізацію. Дякую за довідку, хоча. Це щось щодо оптимізму.
Коді Грей

7
@Cody Grey: MonoMac виглядає і діє, оскільки він не є крос-платформенним API, а замість цього споконвічно обгортає базовий API Cocoa. Це виглядає і діє рідно, тому що воно є рідним.

1
@Cody Grey: MonoMac - це Mac, що MonoTouch - iOS. Ви можете писати рідні програми, просто використовуєте C # замість Obj-C. Це не "зробіть WinForms або Gtk добре виглядати на Mac".

2
Я просто хотів підключитися до розмови вище, оскільки я прямо посеред створення системи, яка охоплює iPad та Windows Phone, ASP.NET MVC3 та NT Services, що взаємодіють із системою управління робототехнікою. Моно, MonoDroid, MonoTouch та ін., Як Коді зазначав вище, - це спосіб запису коду в C #, який дозволяє вам скористатися потужністю C # та .NET Framework (включаючи Linq), в той же час користуючись безперешкодним доступом до свого "рідний" API платформи вибраної платформи, а також уникати багатьох проблем управління пам'яттю, властивих більшості нативного C / C ++ / ObjC коду.
Річард Тернер

6

Microsoft .NET - це офіційна реалізація CLR, DLR, BCL, CLI та CLS. Інші компанії, групи, спільноти чи робочі групи не пов’язані з Microsoft таким чином, що вони можуть мати 1: 1 реалізацію останньої версії та мовної версії.

По суті, вам потрібно переглянути, якими мовними та рамковими функціями ви хочете скористатися в конкретному проекті, і перевірити, чи вони присутні у неофіційних реалізаціях .NET.

Якщо ви очікуєте, що рішення для компіляції одноразово і розповсюджуватимуться скрізь, ви помиляєтеся: вам потрібно зробити тематичний приклад.


Це дуже багато TLA !
Тамлін

@tamlyn yeah hahahaha
Matías Fidemraizer

Тепер, коли стільки .NET є відкритим кодом, все змінилося ....
Ян

@Ian Sure .......
Matías Fidemraizer

2

Я використовую C # в іграх, що працюють на машинах XBOX та Windows, я використовую його в додатках Compact Framework для рішень з робототехніки, я використовую MonoTouch для розробки iPad, у мене є кілька веб-додатків, що працюють на Linux та мало інших рішень. Зазвичай існує спосіб, як зробити свою річ на заданій платформі. Основний шар приблизно однаковий для більшості з них (справді потрібне вивчення конкретного випадку). Проблема - і я вважаю це рядом - це середовище розвитку. Я звик до Visual Studio та його особливостей. Але MonoDevelop, наприклад, заганяє мене.


1
Нещодавно Novell випустив розширення VS 2010, щоб ви могли розробити код Mono в VS.
Морган Херлокер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.