Здравствуйте, Farsight, Вы писали:
F>Здравствуйте, varenikAA, Вы писали:
AA>>В целом C# норм, конечно, но лет так 10 назад, сейчас из него пытаются выжать еще что-то. F>В него добавляют полезные фичи, что конкретно не устраивает?
записи — хотя бы в стиле scala(чтобы одной строкой), алгебраические типы(аналог Discrimination Union F#) — писать такое через абстрактный класс — глаза слезятся.
не нужно было трогать switch, надо было вводить новое ключевое(match x with 1 => 2 => _ =>, от раздвоения каша (switch(x) и x switch .
Тот же знак подчеркивания, когда он появился я подумал ну вот оно счастье, больше не нужно игнорировать возвращаемые значения.
можно _ = Console.ReadLine(); но оказалось, что при этом объявляется переменная с именем _ и ей уже ничего больше в контексте ни присвоить.
Перечислять можно долго, после C# 6 это вершина.
AA>>F# конечно по прикольней смотрится, но у него та же проблема, что и у сишарпа — меньше чем в жаве библиотек. F>Это стандартная матра jvm-щиков. Чего-то конкретного не хватает?
Например, своя встраеваемая бд по аналогии H2 Derby и прочие. прикручивание sqlite такое себе занятие.
AA>>Причем, все еще грустнее. AA>>Например, провайдеры типов, круть конечно. AA>>Но до сих пор не работает по кору. или работает но так намаешься с настройками (особенно под ГНУ Линукс), что больно становится. F>Не скажу, не сталкивался пока. Дата провайдеры вроде норм под .Net Standard 2.0.
Два дня назад пользовал XmlProvider не работает под корку, ругается на сборки, судя по задачам на гите подтверждено все еще зависит от классика.
В классик-режиме, под видной в студии работает неплохо. и это круто. никаких T4 и прочего, 100% валидный код бесплатно.
если нет под рукой xsd то в C# придется все руками парсить. с базами аналогично(пробовал sqlite provider поднять под линуксом).
AA>записи — хотя бы в стиле scala(чтобы одной строкой)
Обещают примерно так:
public class Person(string firstName, string lastName);
AA>алгебраические типы(аналог Discrimination Union F#) — писать такое через абстрактный класс — глаза слезятся.
так пиши на F#, не вижу проблемы.
AA>не нужно было трогать switch, надо было вводить новое ключевое(match x with 1 => 2 => _ =>, от раздвоения каша (switch(x) и x switch .
наверное да, но можно теперь пользоваться только конструкцией x switch. switch(x) для обратной совместимости.
AA>Тот же знак подчеркивания, когда он появился я подумал ну вот оно счастье, больше не нужно игнорировать возвращаемые значения. AA>можно _ = Console.ReadLine(); но оказалось, что при этом объявляется переменная с именем _ и ей уже ничего больше в контексте ни присвоить.
ну так это тоже бы сломало бы обратную совместимость.
AA>Перечислять можно долго, после C# 6 это вершина.
ну... твое мнение услышано.
AA>Например, своя встраеваемая бд по аналогии H2 Derby и прочие. прикручивание sqlite такое себе занятие.
занятие как занятие. sqlite норм для задач, решаемых втроенными БД.
AA>Два дня назад пользовал XmlProvider не работает под корку, ругается на сборки, судя по задачам на гите подтверждено все еще зависит от классика. AA>В классик-режиме, под видной в студии работает неплохо. и это круто. никаких T4 и прочего, 100% валидный код бесплатно. AA>если нет под рукой xsd то в C# придется все руками парсить. с базами аналогично(пробовал sqlite provider поднять под линуксом).
Да работает вроде. На 3.1 проверил под линухом. FSharp.Data.
Здравствуйте, Farsight, Вы писали:
F>Здравствуйте, varenikAA, Вы писали:
AA>>записи — хотя бы в стиле scala(чтобы одной строкой) F>Обещают примерно так: F>
F>public class Person(string firstName, string lastName);
F>
Знают одна из самых крутых и восстребованных фич, считаю, особенно если хеш и сравнение будет генерится, но уже чуть не 5 лет ждем. Когда? Плохой признак для языка, если учесть, что это уже практически во всех языках этого класса.
AA>>алгебраические типы(аналог Discrimination Union F#) — писать такое через абстрактный класс — глаза слезятся. F>так пиши на F#, не вижу проблемы.
Ну, как говорится в одном старом фильмеЖ "Я твой друг, но я раб лампы." F# хоть и высокооплачиваемый, но мало востребованный.
AA>>не нужно было трогать switch, надо было вводить новое ключевое(match x with 1 => 2 => _ =>, от раздвоения каша (switch(x) и x switch . F>наверное да, но можно теперь пользоваться только конструкцией x switch. switch(x) для обратной совместимости.
Надо проверить, вот я и говорю, нюансов все больше, тот же си 10-ки лет почти не меняется.
AA>>можно _ = Console.ReadLine(); но оказалось, что при этом объявляется переменная с именем _ и ей уже ничего больше в контексте ни присвоить. F>ну так это тоже бы сломало бы обратную совместимость.
Ну и смысл тогда вводить такую сомнительную фичу?
AA>>если нет под рукой xsd то в C# придется все руками парсить. с базами аналогично(пробовал sqlite provider поднять под линуксом). F>Да работает вроде. На 3.1 проверил под линухом. FSharp.Data.
Мне нужно был работать со схемой FSharp.Data.Xsd
Здравствуйте, varenikAA, Вы писали:
AA>Знают одна из самых крутых и восстребованных фич, считаю, особенно если хеш и сравнение будет генерится, но уже чуть не 5 лет ждем. Когда? Плохой признак для языка, если учесть, что это уже практически во всех языках этого класса.
Как правило, в других языках это было изначально. А мэйнстрим язык развивать не так просто не ломая при этом обратку.
AA>Ну, как говорится в одном старом фильмеЖ "Я твой друг, но я раб лампы." F# хоть и высокооплачиваемый, но мало востребованный.
Не в смысле брось си-шарп и пиши только на эф-шарп, а совместно.
AA>Ну и смысл тогда вводить такую сомнительную фичу?
для дискарда паттерна в контексте паттерн-матчинга. у них и так switch вместо match, чтобы уж совсем не выделяться
AA>Мне нужно был работать со схемой FSharp.Data.Xsd
Так и работай со схемой с FSharp.Data: type Person = XmlProvider<Schema = """...""">. FSharp.Data.Xsd не нужен.
AA>записи — хотя бы в стиле scala(чтобы одной строкой),
Между методами можно использовать туплы, внутри методов — анонимные типы. Если хочется рекордов именно рекордов то ещё полгодика придётся подождать.
AA>алгебраические типы(аналог Discrimination Union F#) — писать такое через абстрактный класс — глаза слезятся.
Этого самому нехватает
AA>можно _ = Console.ReadLine(); но оказалось, что при этом объявляется переменная с именем _ и ей уже ничего больше в контексте ни присвоить.
Какую-то альфу наверное пробовал. Вот это точно компилируется и работает.
_ = Console.ReadLine();
_ = 10;
_ = "aaa";
Главное не писать перед _ слово var. Тогда для совместимости появится переменная и всё, плейсхолдеру хана.
AA>Например, своя встраеваемая бд по аналогии H2 Derby и прочие. прикручивание sqlite такое себе занятие.
Последний раз просто подключал из нугета пакеты с linq2db, и тестировал в винде с inmemory sqlite, а в релиз оно ушло на MySQL/Linux. Без перекомпиляции. Подключая lmdb на scala телодвижений было больше.
Здравствуйте, Farsight, Вы писали:
AA>>Мне нужно был работать со схемой FSharp.Data.Xsd F>Так и работай со схемой с FSharp.Data: type Person = XmlProvider<Schema = """...""">. FSharp.Data.Xsd не нужен.
Здравствуйте, hi_octane, Вы писали:
AA>>можно _ = Console.ReadLine(); но оказалось, что при этом объявляется переменная с именем _ и ей уже ничего больше в контексте ни присвоить. _>Какую-то альфу наверное пробовал. Вот это точно компилируется и работает. _>
_>Главное не писать перед _ слово var. Тогда для совместимости появится переменная и всё, плейсхолдеру хана.
Наверно, проверю. thanks.
AA>>Например, своя встраеваемая бд по аналогии H2 Derby и прочие. прикручивание sqlite такое себе занятие. _>Последний раз просто подключал из нугета пакеты с linq2db, и тестировал в винде с inmemory sqlite, а в релиз оно ушло на MySQL/Linux. Без перекомпиляции. Подключая lmdb на scala телодвижений было больше.
Я именно про F# с type provider. Стандартные либы на C# нормально работают.
еще вот вспомнил, в сишарпе хвостовой рекурсии нету.
Здравствуйте, varenikAA, Вы писали:
AA>еще вот вспомнил, в сишарпе хвостовой рекурсии нету. https://ru.stackoverflow.com/questions/1001751/Как-включить-преобразование-хвостовой-рекурсии-в-c
и солнце б утром не вставало, когда бы не было меня
AA>>еще вот вспомнил, в сишарпе хвостовой рекурсии нету. S>https://ru.stackoverflow.com/questions/1001751/Как-включить-преобразование-хвостовой-рекурсии-в-c
Имхо, всё-таки неправильно писать прогу которая в дебаге валится, с надеждой что в релизе jit оптимизирует и всё будет ОК
В этом плане выглядит очень норм подход scala — ставишь аттрибут @tailrec, и получаешь сообщение об ошибке компиляции если оказывается что ошибся и рекурсия не оптимизируется.
Здравствуйте, hi_octane, Вы писали:
AA>>>еще вот вспомнил, в сишарпе хвостовой рекурсии нету. S>>https://ru.stackoverflow.com/questions/1001751/Как-включить-преобразование-хвостовой-рекурсии-в-c _>Имхо, всё-таки неправильно писать прогу которая в дебаге валится, с надеждой что в релизе jit оптимизирует и всё будет ОК _>В этом плане выглядит очень норм подход scala — ставишь аттрибут @tailrec, и получаешь сообщение об ошибке компиляции если оказывается что ошибся и рекурсия не оптимизируется.
Судя по обсуждению в IL коде есть инструкция tail. prefix https://stackoverflow.com/questions/20132417/tail-prefix-in-ilasm-any-example-of-use
Компилятор совершенствуется, и навесить некоторые атрибуты для подсказки компилятора и сейчас можно.
Но опять же ты сказал "в сишарпе хвостовой рекурсии нету.", но она есть при определенных опциях компилятора
и солнце б утром не вставало, когда бы не было меня
O>>Мне кажется наоборот, на Java можно написать приложение работающее на трех платформах, на C# нет. S>На каких C# не может? Огласи
Десктоп UI под Linux, MacOS. В Java есть JavaFX.
”Жить стало лучше... но противнее. Люди которые ставят точку после слова лучше становятся сторонниками Путина, наши же сторонники делают акцент на слове противнее ( ложь, воровство, лицемерие, вражда )." (с) Борис Немцов
Здравствуйте, okon, Вы писали:
O>>>Мне кажется наоборот, на Java можно написать приложение работающее на трех платформах, на C# нет. S>>На каких C# не может? Огласи
O>Десктоп UI под Linux, MacOS. В Java есть JavaFX.
Здравствуйте, Serginio1, Вы писали:
S>Здравствуйте, okon, Вы писали:
O>>>>Мне кажется наоборот, на Java можно написать приложение работающее на трех платформах, на C# нет. S>>>На каких C# не может? Огласи
O>>Десктоп UI под Linux, MacOS. В Java есть JavaFX.
S> Угу на Электроне тот же Skype и Visual Code прекрасно работают.
Электрон это не .NET, скайп кстати ужасно работает, особенно при смене вьюшки или поиске — таких тормозов на нативном бы не было.
Вижуал коде не скажу — не пользуюсь.
S>Кроме того сейчас и Blazor Desctop http://rsdn.org/forum/dotnet/7736954.flat
Т.е. соглашусь на .NET, точнее core можно запустить браузер и в нем заставить электрон или blazor на других платформах
или подключить библиотеки типа GTK и с ними работать.
Но тоже самое можно сделать практически на любом языке который позволяет себя запустить на платформе — передать управление другой среде.
Речь о поддержке из коробки мощного самостоятельного UI фреймворка типа WPF или JavaFX.
Ведь разрабатывая UI на том же GTK пробрасывая вызовы через .net core трудоемкость возрастет в разы ,
плюс это не будет работать кросплатформенно ( GTK это же на винде не заработает ? )
и смысла особого нет — на JavaFX будет намного выгоднее надежнее и быстрее.
”Жить стало лучше... но противнее. Люди которые ставят точку после слова лучше становятся сторонниками Путина, наши же сторонники делают акцент на слове противнее ( ложь, воровство, лицемерие, вражда )." (с) Борис Немцов
O>Речь о поддержке из коробки мощного самостоятельного UI фреймворка типа WPF или JavaFX.
O>Ведь разрабатывая UI на том же GTK пробрасывая вызовы через .net core трудоемкость возрастет в разы , O>плюс это не будет работать кросплатформенно ( GTK это же на винде не заработает ? ) O>и смысла особого нет — на JavaFX будет намного выгоднее надежнее и быстрее.
Xamarin.Forms он как раз кроссплатформенный UI. Просто он конечно сильно уступает UWP или WPF, но уже достаточно хорош.
Почитай для интереса https://metanit.com/sharp/xamarin/
Но большого то интереса гуй для линукса не представляет. Никому это не интересно.
Ажуры это да.
Для десктопов где в основном Windows программируют как раз на UWP или WPF и даже старых добрых Windows.Forms.
Вот под винду писать на JavaFX довольно странное решение
Их тоже перетаскивают под .Net Core правда работают они под Windows.
Кстати есть еще и AvaloniaUI https://github.com/AvaloniaUI/Avalonia https://habr.com/ru/post/505036/
и солнце б утром не вставало, когда бы не было меня
S> Xamarin.Forms он как раз кроссплатформенный UI. Просто он конечно сильно уступает UWP или WPF, но уже достаточно хорош. S>Почитай для интереса https://metanit.com/sharp/xamarin/
Посмотрю что там нового, но последний раз я его трогал пару лет назад и понял что это дороже чем делать на JavaFX.
p.s. посмотрел, там же речь так и идет про мобилки как на заре Ксамарина а не про его отросток — декстоп разработку.
S> Но большого то интереса гуй для линукса не представляет. Никому это не интересно. S>Ажуры это да.
S> Для десктопов где в основном Windows программируют как раз на UWP или WPF и даже старых добрых Windows.Forms. S>Вот под винду писать на JavaFX довольно странное решение
Естественно если изначально приложение под винду то зачем кроссплатформ.
Но если изначально приложение проектируется как кроссплатформ решение ( а значит есть аудитория и клиенты ), то JavaFX будет неплох.
S>Их тоже перетаскивают под .Net Core правда работают они под Windows. S>Кстати есть еще и AvaloniaUI https://github.com/AvaloniaUI/Avalonia S>https://habr.com/ru/post/505036/
Да слышал о них, но я бы не рискнул тащить это в коммерческий проект — слабое коммьюнити и как они сами пишут про свой продукт
”However, there may be some bugs and breaking changes as we continue along into this project's development.“
”Жить стало лучше... но противнее. Люди которые ставят точку после слова лучше становятся сторонниками Путина, наши же сторонники делают акцент на слове противнее ( ложь, воровство, лицемерие, вражда )." (с) Борис Немцов
S>> Xamarin.Forms он как раз кроссплатформенный UI. Просто он конечно сильно уступает UWP или WPF, но уже достаточно хорош. S>>Почитай для интереса https://metanit.com/sharp/xamarin/
O>Посмотрю что там нового, но последний раз я его трогал пару лет назад и понял что это дороже чем делать на JavaFX.
O>p.s. посмотрел, там же речь так и идет про мобилки как на заре Ксамарина а не про его отросток — декстоп разработку.
S>> Но большого то интереса гуй для линукса не представляет. Никому это не интересно. S>>Ажуры это да.
S>> Для десктопов где в основном Windows программируют как раз на UWP или WPF и даже старых добрых Windows.Forms. S>>Вот под винду писать на JavaFX довольно странное решение
O>Естественно если изначально приложение под винду то зачем кроссплатформ. O>Но если изначально приложение проектируется как кроссплатформ решение ( а значит есть аудитория и клиенты ), то JavaFX будет неплох.
Больше интерес представляет не Linuх, а Windows, Android и IoS то чем и занимается Xamarin. Как с этим у JavaFX?
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, varenikAA, Вы писали:
AA>Знают одна из самых крутых и восстребованных фич
Это уж кому как.
AA>, считаю, особенно если хеш и сравнение будет генерится,
Будет.
AA> но уже чуть не 5 лет ждем. Когда?
Этой осенью.
AA> Плохой признак для языка, если учесть, что это уже практически во всех языках этого класса.
И много ты управляемых мейнстрим языков знаешь? В Java есть записи?
AA>Ну, как говорится в одном старом фильмеЖ "Я твой друг, но я раб лампы." F# хоть и высокооплачиваемый, но мало востребованный.