Pull to refresh

Comments 15

Русское издание книжки Марка я уже купил (выяснив что она уже чуть ли не библиографическая редкость) :)

Протёр глаза, протёр очки. Java User Group полирует .Net. Зазеркалье какое-то…
Я что-то проспал и теперь датнет наш? А Гугл ещё ойфоны не презентует? Удивительная страна.

Датнет ваш, общий, свободный, открытый и запускается почти везде — вот так, расскажи кому лет 5-10 назад — назвали бы сумасшедшим.

Прекрасно-прекрасно. Который из них? Весёлый самопальный Mono? Озорно высовывающий носик из пелёнок — .NET Core? Или почивший от дряхлости Portable.NET?
Быть может детям на уроках информатики уже и можно втирать про могучую переносимость .NET, но у любого бизнесмена, выбравшего эту платформу для серьёзной работы с прицелом на кросс-переносимость, можно смело диагностировать сильные суицидальные наклонности и крайнюю степень отчаяния на текущем жизненном этапе. Во всяком случае в данный момент времени. Вот годков через 10, если, как это уже стало доброй почётной традицией, компания не бросит проект, может быть и можно будет поглядеть. А пока ещё дух Сервелата и Винфона не растворился на небесах.

.NET Core действительно только начинает путь, но уже много где используется, в том числе чуть ли не основное средство создания приложения под Tizen от Samsung (от них пришло много коммитов в неткор). Mono/Xamarin существуют очень давно уже — Mono прочно сидит в игровом секторе через Unity (фактически — самый популярный движок для мобильных игр) и сам C# стал мейнстрим языком в геймдеве после С++ (Unity, CryEngine и его форки и еще пяток движков поменьше, у нас, кстати, даже есть байндинги C# повверх Unreal Engine). Xamarin набрал свою нишу — довольно много заказчиков включая известные имена, на тот же iOS среди не школьных поделок из кроссплатформенных инструментов только два — Xamarin и React Native. Если у вас есть интересные аргументы — с радостью поспорю ;-) (пока их не было).

Когда-то давно, существовало три мобильные платформы. Одна из них — Windows. Предполагалось что будет очень популярной, ибо даже в голову не могло прийти что возможно иначе. И вот тогда было оправдано создание платформы разработки Замарин. Ибо здраво выглядело писать приложение на C# и деплоить его на все три платформы.

Что у нас сейчас? Сейчас мобильной платформы Windows больше нет. Увы, я сам владею Винфоном, но платформы нет. Уже официально нет.

Осталось две платформы. Для одной родной язык — Java. Для второй — ObjectiveC/Swift. И зачем теперь нужна некая чужеродная среда с неродным обеим платформам технологией и языком? Вам невыносимо нравится С#? Ну попробуйте Kotlin. Он в Джава-байткод компилируется. Не можете жить без F# — потрогайте Scala. Или нужен Visual Basic? )) Другими словами — у Замарина больше нет своей родной мобильной платформы. Она стала чужеродна всем. Так повернулась жизнь. И отказавшись от Винфонов, Микрософт, полагаю, осознавал, что и ценность Замарина теперь несколько иная. Разработчики же тож не балваны. Стоит ли теперь нанимать экспертов по Замарину или таки уйти в native разработку? Вопрос, звучавший здраво ещё совсем недавно, увы, приобрёл совсем другую окраску. Причём приобрёл он её вне зависимости от того, насколько сейчас технологически совершенен Замарин.

Но с последним также пока есть вопросы. Я знакомился с мнением разработчиков. Увы, но пока преобладают негативные — сырой и непредсказуемый. Но это, разумеется, всегда субъективно. Просто раньше был хоть какой-то смысл в накоплении опыта работы с этой платформой. Сейчас, вероятнее всего, мобильный рынок для Замарина ушёл.

Проекты которые вы перечислили, увы, также начались когда хоть какой-то смысл этот выбор имел, ибо была третья платформа. Теперь её нет.

Организация NET Foundation также создавалась в года, когда ещё верилось в перспективу. .NET существует более 15 лет (моложе Java всего лет на 5). На каком то этапе стало понятно, что открытость это благо и быть может она и есть тот краеугольный камень, который увеличит популярность платформы. И были сделаны соответствующие шаги. Другие игроки 'за открытость' также вписались. Ну а чего не вписаться-то? 3 года назад.

Таким образом, в сухом остатке, Замарин/Моно как исполняющая среда, сейчас проходит тот путь который давно прошла уже зрелая Java. От любительского к индустриальному. Точнее пытается пройти сливаясь и конвульсивно переплетаясь с .NET уже официально, под крышей Микрософт, а не Дон-Кихота Мигеля. Не прошло и 15 лет. И что-то мне подсказывает, что то, чем занимался Мигель, могло быть сделано на порядок быстрее и с куда меньшим количеством багов имея он в руках код .NET. Ведь получается, что Замарин/Моно не более чем .NET, написанный вслепую и в состоянии борьбы с компанией, разрабатывающей этот .NET. В чём состоял глубокий смысл такого подвига?

А Unity — да. Самое известное применение Mono. Для IDE. Сам движок к нему не привязан. Выиграли ли они от привязки среды к Mono — очень спорный вопрос. Возможности сравнить альтернативный путь история легко не даёт.

1) Среди наших заказчиков почти никто не интересовался винфоном — замарин выбирали абсолютно не смотря на него. Да, он чужероден андроиду и айосу, но работает на обоих. Вы не сможете взять java/kotlin/scala и точно так же писать под iOS используя нативные 3rd party, сториборды и т.п. Тоже самое верно для Swift — на нем невозможно писать под Android используя нативный опыт. Конечно, существуют поделки со собственным гуём для другой платформы — но это не серьезно. Более того, много клиентов выбирали замарин даже когда им вообще кроссплатформ не нужен был и нужно только iOS приложение (к примеру, потому что весь бэкенд на шарпе и удобно шарить часть логики, DTO и интерфейс к сервису).


Ведь получается, что Замарин/Моно не более чем .NET, написанный вслепую и в состоянии борьбы с компанией, разрабатывающей этот .NET.

Мне не ясно откуда такое умозаключение. .NET был написан во времена, когда Microsoft был яро против open source и написал .NET жестко привязав к Windows — исходники .NET бы помогли да, но не сильно т.к. многие вещи были жестко привязаны к Windows — так что никакой борьбы не было. Сейчас .NET и Mono живут параллельно и шарят между собой много общего кода — у них разные зоны ответственности.


Для IDE. Сам движок к нему не привязан.

Есть IL2CPP (для проблемных и новых платформ), для остальных — жестко привязан к Mono (С# — единственный скриптинговый язык в Unity) и в данный момент активно обновляется до свежей версии после изменения лицензии (наша команда помогает Unity с этим процессом).

… Среди наших заказчиков почти никто не интересовался винфоном — замарин выбирали абсолютно не смотря на него. Да, он чужероден андроиду и айосу, но работает на обоих...

Мне сложно это логически осмыслить. Но люди всякие есть. В конце концов далеко не все бизнесы хорошо заканчивают. Значит много решений принимается ошибочно.

Если у меня есть некий инструмент, который является совершенно родным для одной популярной платформы и с некоторыми ограничениями применим для двух других, то выбор такого инструмента мне представляется целесообразным. По крайней мере я серьёзно рассмотрю такую возможность, оценю качество инструмента. Ведь я, как минимум, имею гарантированный/прогнозируемый результат для этой основной платформы. И бонусом, ещё две. Хотя там уже слегка начинается лотерея.

Если же я имею инструмент чужой для обоих платформ, то я сразу получаю три сложно прогнозируемых пути. Специфику самих платформ, глядящих на меня сквозь призму инструмента, и специфику/погрешности самого инструмента. То есть гарантированно я получу изъяны инструмента и ограничения по всем платформам. И это при наличии всего то двух платформ?! Было бы их штук 5, тогда может и да. Общий уровень абстракции не помешал бы.

… много клиентов выбирали замарин даже когда им вообще кроссплатформ не нужен был и нужно только iOS приложение (к примеру, потому что весь бэкенд на шарпе и удобно шарить часть логики, DTO и интерфейс к сервису)…

То есть люди на полном серьёзе выбрали язык мобильного клиента из за языка бэкэнда? И это в наше время, когда давно работает REST а приложения пишутся на архитектуре микросервисов? Этих людей нужно было бы разбудить лет на десять раньше. ))

… Сейчас .NET и Mono живут параллельно и шарят между собой много общего кода — у них разные зоны ответственности…

Вот оно как сложилось. Один человек 10 лет старательно и самозабвенно копировал своим кодом поведение другой платформы, которая его старательно футболила, а теперь они код стали шарить (который с большего разный!) и при этом находиться в разных зонах ответственности. А что тогда у них общего и зачем они так нужны друг другу если нет идеальной совместимости, а есть лишь общая дружба в разных зонах?
И это при наличии всего то двух платформ?! Было бы их штук 5, тогда может и да. Общий уровень абстракции не помешал бы.

iOS, Android, macOS, Windows, Linux, back-end, приставки, всякие HoloLens, малина и т.п — далеко больше чем 2 платформы, между которыми вы можете спокойно шарить логику и даже гуй. (К примеру, XForms помимо мобил сможет отрендерить ваш гуй на десктопных платформах и поддерживает Live coding, которого нет на нативных инструментах, так же позволит писать под iOS под Windows. Я не говорю что это silver bullet — каждый взвешивает риски и выбирает оптимальный для себя инструмент исходя из задачи и ресурсов.


Вот оно как сложилось. Один человек 10 лет старательно и самозабвенно копировал своим кодом поведение другой платформы, которая его старательно футболила, а теперь они код стали шарить (который с большего разный!) и при этом находиться в разных зонах ответственности. А что тогда у них общего и зачем они так нужны друг другу если нет идеальной совместимости, а есть лишь общая дружба в разных зонах?

Никто никого не футболил, Mono повторил API .NET и сконцентрировался на мобильных платформах, где и останется. То, что может быть общим между платформами — мержится/шарится по возможности. Из-за существования моно/xamarin и придумали такую вещь как NETStandards — спека на апи. Делаешь по спеке — получаешь гарантию работы (по крайней мере — компиляции) под все платформы, реализующие эту спеку.


Кстати, для тех, кому ближе нативная разработка но хочется C# — они могут писать всю общую логику (и даже нативный UI) и потом компилировать это дело в нативную библиотеку и использовать в нативном проекте. Т.е. написали общую логику, мб даже реализовали пару страниц — скомпилировали в JAR/AAR или *.framework и воспользовались из kotlin/java или ObjC/Swift — работает быстро и не занимает много места (у меня вот есть такой солидный кусок логики для котлина — скомпилировался в 3мб AAR (для iOS там при статической компиляции вообще сильно меньше мегабайта) и при подключении к котлину мне доступно всё мое ооп-стайл апи (с некоторыми ограничениями). Некоторые вещи в C# будут работать быстрее нативной java (честные генерики, custom value types к примеру).

iOS, Android, macOS, Windows, Linux, back-end, приставки, всякие HoloLens, малина и т.п — далеко больше чем 2 платформы, между которыми вы можете спокойно шарить логику и даже гуй. (К примеру, XForms помимо мобил сможет отрендерить ваш гуй

Ну, что на это ответить… Разве что напомнить сколько лет платформе Java и в очередной раз улыбнуться как Микрософт с пафосом изобретает велосипед, вставив до этого тучу палок в колёса тех, кто всё это прочухал задолго до него.

Ничего не понял

В каком месте не поняли?
Всё что вы перечислили уже с большего сделала Джава. Которой Микрософт долго тупо и самозабвенно совала палки в колёса. Остервенело, что дурные это делали. Конкуренты хреновы. А сейчас пытается пройти тот же путь типа вдруг самые умные и вера в дружбу у них возродилась. Ну молодежь может и подзабыла чего, но аксакалы то всё помнят. ))

И многие компании не пойдут на сделку с Микрософт в силу её гнилости. Бизнес, есть бизнес, но риски нужно просчитывать. И элемент доверия также просчитываемая величина. И у MS она отрицательна. Эта компания в принципе не способна построить ничего совместного и кроссплатформенного. Нигде и никогда. Такая уж она по своей сути. ))

Это и есть ключевая причина по которой она ухитряется прое$$ать почти всё.
С питерского дотнекста ещё будут видео, или уже выложено всё, что было снято? Просто некоторых выступлений, фигирирующих в программе не вижу в соответствующем разделе ютуба.
Было бы здорово, если бы для спикеров Spb/Msk Community сделали специальную скидку на DotNext, 90% или типа того. С одной стороны, это будет одним из стимулов выступать на встречах. С другой, позволит коммюнити-спикерам поближе познакомиться с DotNext и, возможно, сподвигнет сделать доклад и для DotNext.
Sign up to leave a comment.