Re[3]: Упоротость С++
От: Skorodum Россия  
Дата: 24.08.23 08:17
Оценка:
Здравствуйте, Serginio1, Вы писали:

S> А в чем проблемы то? Есть MAUI, UNO, Avalonia. Код Един для всех платформ, а вот гуй для линукса выбирай из UNO, Avalonia

S>Другое дело, что ты не упомянул Аврору!
Можно пример более-менее сложных приложений на этих технологиях хотя бы под 3 платформы?
Re[4]: Упоротость С++
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 24.08.23 08:23
Оценка:
Здравствуйте, Skorodum, Вы писали:

S>> А в чем проблемы то? Есть MAUI, UNO, Avalonia. Код Един для всех платформ, а вот гуй для линукса выбирай из UNO, Avalonia

S>>Другое дело, что ты не упомянул Аврору!
S>Можно пример более-менее сложных приложений на этих технологиях хотя бы под 3 платформы?
Есть куча контор, которые используют и вин и андроид и вэб и яблоко.
Тот же самый корпоративный софт. А он поверь очень сложный. Проблема не в гуе. Конкретный гуй под каждую платформу можно нарисовать. Главное это единый код с условной компиляцией под платформы. Коих не так уж и много.
Смешно было наблюдать в Сбере как менеджер рядом с компом и клавиатурой с мышью, пользовался планшетом.
и солнце б утром не вставало, когда бы не было меня
Отредактировано 24.08.2023 8:26 Serginio1 . Предыдущая версия .
Re[3]: Упоротость С++
От: Skorodum Россия  
Дата: 24.08.23 08:42
Оценка: +1
Здравствуйте, SkyDance, Вы писали:

LVV>>- функциональное


SD>Ну уж нет. Это точно не про С++

Было бы желание:

Function composition
f: string → int
g: int → bool
h = g ∘ f


auto f = [] (std::string_view) → int {};
auto g = [] (int) → bool {};

auto compose = [] (auto g, auto f) {
   return [=] (std::string_view v) → bool {
      return std::invoke(g, std::invoke(f, v));
};
};

auto h = compose(g, f);
Re[4]: Упоротость С++
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 24.08.23 08:57
Оценка:
Здравствуйте, Skorodum, Вы писали:

Покажи для интереса как на C++ выглядит Pattern matching?
Замыкания уже как ФП и не рассматриваются
и солнце б утром не вставало, когда бы не было меня
Re[5]: Упоротость С++
От: Skorodum Россия  
Дата: 24.08.23 09:01
Оценка: :)
Здравствуйте, Serginio1, Вы писали:

S>>> А в чем проблемы то? Есть MAUI, UNO, Avalonia. Код Един для всех платформ, а вот гуй для линукса выбирай из UNO, Avalonia

S>>>Другое дело, что ты не упомянул Аврору!
S>>Можно пример более-менее сложных приложений на этих технологиях хотя бы под 3 платформы?
S> Есть куча контор, которые используют и вин и андроид и вэб и яблоко.
S> Тот же самый корпоративный софт. А он поверь очень сложный.
S>Проблема не в гуе. Конкретный гуй под каждую платформу можно нарисовать. Главное это единый код с условной компиляцией под платформы. Коих не так уж и много.
Придется повторить вопрос: можно пример более-менее сложных приложений на этих технологиях (MAUI, UNO, Avalonia) хотя бы под 3 платформы?
Для референса: десктопный клиент телеграма написан на С++/QML.
Re[6]: Упоротость С++
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 24.08.23 09:04
Оценка:
Здравствуйте, Skorodum, Вы писали:

S>>Проблема не в гуе. Конкретный гуй под каждую платформу можно нарисовать. Главное это единый код с условной компиляцией под платформы. Коих не так уж и много.

S>Придется повторить вопрос: можно пример более-менее сложных приложений на этих технологиях (MAUI, UNO, Avalonia) хотя бы под 3 платформы?
S>Для референса: десктопный клиент телеграма написан на С++/QML.
Еще раз повторю, что я знаю такой софт и видел. Но ссылок дать не могу.
А разве телеграмм этосложное приложение?
и солнце б утром не вставало, когда бы не было меня
Re[5]: Упоротость С++
От: so5team https://stiffstream.com
Дата: 24.08.23 09:25
Оценка: +1
Здравствуйте, Serginio1, Вы писали:

S>Покажи для интереса как на C++ выглядит Pattern matching?


А можно определение ФП в котором фигурировал бы Pattern matching? Или теперь Lisp-у отказано быть ФЯ?
Re[7]: Упоротость С++
От: Skorodum Россия  
Дата: 24.08.23 09:25
Оценка: :)
Здравствуйте, Serginio1, Вы писали:

S>>Для референса: десктопный клиент телеграма написан на С++/QML.

S> Еще раз повторю, что я знаю такой софт и видел. Но ссылок дать не могу.
Т.е. примеров нет
Попробуй хотя бы описать, что интересного они делают и в чем там выгода от используемых технологий.

S> А разве телеграмм этосложное приложение?

Представь себе, да. Дружественное к пользователю кросс-платформенное приложенние которым пользуются сотни миллионов это сложно по определению.
Другой пример С++/QML это приложения от Autodesk. Попробуй придумать пример чего-то более сложного.

P.S. Вот мое [https://vimeo.com/779205748]приложение[/url] на под несколько платформ, С++/QML.
Re[6]: Упоротость С++
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 24.08.23 09:29
Оценка:
Здравствуйте, so5team, Вы писали:

S>Здравствуйте, Serginio1, Вы писали:


S>>Покажи для интереса как на C++ выглядит Pattern matching?


S>А можно определение ФП в котором фигурировал бы Pattern matching? Или теперь Lisp-у отказано быть ФЯ?

https://ru.wikipedia.org/wiki/%D0%A1%D0%BE%D0%BF%D0%BE%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D1%81_%D0%BE%D0%B1%D1%80%D0%B0%D0%B7%D1%86%D0%BE%D0%BC

Сопоставление с образцом часто встречается в функциональных языках программирования, таких как языки семейства ML и Haskell, в том числе в виде охранных выражений.


А вообще то образцом ФП является Haskell.
и солнце б утром не вставало, когда бы не было меня
Re[8]: Упоротость С++
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 24.08.23 09:38
Оценка:
Здравствуйте, Skorodum, Вы писали:

S>Здравствуйте, Serginio1, Вы писали:


S>>>Для референса: десктопный клиент телеграма написан на С++/QML.

S>> Еще раз повторю, что я знаю такой софт и видел. Но ссылок дать не могу.
S>Т.е. примеров нет
S>Попробуй хотя бы описать, что интересного они делают и в чем там выгода от используемых технологий.
Ты не читатель. Выгода это единый код и единый гуй. При этом гуй не обязательно иметь кроссплатформенный. Можно под каждую платформу клепать свой гуй.

S>> А разве телеграмм этосложное приложение?

S>Представь себе, да. Дружественное к пользователю кросс-платформенное приложенние которым пользуются сотни миллионов это сложно по определению.
S>Другой пример С++/QML это приложения от Autodesk. Попробуй придумать пример чего-то более сложного.

Поверь тетрисом пользовалось намного больше народа. Главное там отнюдь не формы. Формы клепаются под платформу либо используются кроссплатформенные.
Суть в том, что .Net Core достаточно молодой, как и Xamarin.Forms, не говоря уже про MAUI.
Однако набирает популярность. Посмотрим года через 5 кто в итоге победит.

S>P.S. Вот мое [https://vimeo.com/779205748]приложение[/url] на под несколько платформ, С++/QML.

Я честно рад за тебя и С++/QML. Но есть куча другого народа использующие другие технологии.
https://survey.stackoverflow.co/2023/#most-popular-technologies-misc-tech-prof
Xamarin 3.61
QT 5.82
Electron 6.82
.NET MAUI 2.46%
и солнце б утром не вставало, когда бы не было меня
Отредактировано 24.08.2023 9:46 Serginio1 . Предыдущая версия .
Re[7]: Упоротость С++
От: so5team https://stiffstream.com
Дата: 24.08.23 09:48
Оценка:
Здравствуйте, Serginio1, Вы писали:

S>>А можно определение ФП в котором фигурировал бы Pattern matching? Или теперь Lisp-у отказано быть ФЯ?

S>https://ru.wikipedia.org/wiki/%D0%A1%D0%BE%D0%BF%D0%BE%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D1%81_%D0%BE%D0%B1%D1%80%D0%B0%D0%B7%D1%86%D0%BE%D0%BC
S>

S>Сопоставление с образцом часто встречается в функциональных языках программирования, таких как языки семейства ML и Haskell, в том числе в виде охранных выражений.


Само по себе "часто" означает, что не всегда. Т.е. это может быть желательной характеристикой, но не обязательной.

S> А вообще то образцом ФП является Haskell.


Так ведь просьба была про определение, а не про пример/образец.
Re[8]: Упоротость С++
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 24.08.23 10:10
Оценка:
Здравствуйте, so5team, Вы писали:

S>Так ведь просьба была про определение, а не про пример/образец.

Тогда C# функциональный язык? Да еще круче Lispa?
и солнце б утром не вставало, когда бы не было меня
Re[9]: Упоротость С++
От: Skorodum Россия  
Дата: 24.08.23 10:13
Оценка:
Здравствуйте, Serginio1, Вы писали:

S>>Попробуй хотя бы описать, что интересного они делают и в чем там выгода от используемых технологий.

S>Выгода это единый код и единый гуй. При этом гуй не обязательно иметь кроссплатформенный. Можно под каждую платформу клепать свой гуй.
Т.е. выгоды от предложенных тобой технологий нет

S>Поверь тетрисом пользовалось намного больше народа.

Не поверю: покажи кросс-платформенную реализацию тетриса которой пользуются сотни миллионов.
Пример приложения более сложного чем CAD системы ты так и не привел.

S>Главное там отнюдь не формы. Формы клепаются под платформу либо используются кроссплатформенные.

Ну давай, склепай формы для CAD систмы под несколько разных платформ на предложенных тобой технологиях.
Хороший кросс-платформенный инрефейс это совсем не просто и не бесплатно.

S>Суть в том, что .Net Core достаточно молодой, как и Xamarin.Forms, не говоря уже про MAUI.

S>Однако набирает популярность. Посмотрим года через 5 кто в итоге победит.
О да, Xamarin.Forms это удачный пример, мощно так победил

S> Я честно рад за тебя и С++/QML. Но есть куча другого народа использующие другие технологии.

Придется повторить вопрос: можно пример более-менее сложных приложений на этих технологиях (MAUI, UNO, Avalonia) хотя бы под 3 платформы?
Re[9]: Упоротость С++
От: so5team https://stiffstream.com
Дата: 24.08.23 10:16
Оценка:
Здравствуйте, Serginio1, Вы писали:

S>>Так ведь просьба была про определение, а не про пример/образец.

S>Тогда C# функциональный язык? Да еще круче Lispa?

Чтобы принять решение о том, является ли C++ (C# или еще что) чем-то (например, ФЯП), нужно сперва привести определение этого "чего-то". О чем здесь было сказано уже давно: http://rsdn.org/forum/flame.comp/8581721.1
Автор: so5team
Дата: 16.08.23
Но, почему-то проигнорировано.

А в отсутствии четких и согласованных определений принятие подобных решений превращается в бессмысленный спор.

Отсюда и очередная просьба дать определение.
Re[10]: Упоротость С++
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 24.08.23 10:25
Оценка:
Здравствуйте, Skorodum, Вы писали:

S>Здравствуйте, Serginio1, Вы писали:


S>>>Попробуй хотя бы описать, что интересного они делают и в чем там выгода от используемых технологий.

S>>Выгода это единый код и единый гуй. При этом гуй не обязательно иметь кроссплатформенный. Можно под каждую платформу клепать свой гуй.
S>Т.е. выгоды от предложенных тобой технологий нет
То есть единый код ну ни как не выгода!
Еще раз MAUI и Xamarin.Forms это единый гуй, но если тебе хочется специфического, или как например Linux не поддерживается MAUI и Xamarin.Forms ты можешь использовать другой гуй.

S>>Поверь тетрисом пользовалось намного больше народа.

S>Не поверю: покажи кросс-платформенную реализацию тетриса которой пользуются сотни миллионов.
S>Пример приложения более сложного чем CAD системы ты так и не привел.
А разве там главное Гуй? Рисовать можно на том же https://xamdev.ru/cross-platform-skiasharp/

S>>Главное там отнюдь не формы. Формы клепаются под платформу либо используются кроссплатформенные.

S>Ну давай, склепай формы для CAD систмы под несколько разных платформ на предложенных тобой технологиях.
S>Хороший кросс-платформенный инрефейс это совсем не просто и не бесплатно.
Но гуй по сравнению с кодом это такая мелочь? Человеку с опытом нарисовать сколь угодно сложный гуй не проблема используя Xaml.
Любо как в том же Flutter програмно описать. Поверь это не проблема. Кода намного больше и дороже.

S>>Суть в том, что .Net Core достаточно молодой, как и Xamarin.Forms, не говоря уже про MAUI.

S>>Однако набирает популярность. Посмотрим года через 5 кто в итоге победит.
S>О да, Xamarin.Forms это удачный пример, мощно так победил
Ну во MAUI и есть продолжение Xamarin.Forms. Популярность приводил.

S>> Я честно рад за тебя и С++/QML. Но есть куча другого народа использующие другие технологии.

S>Придется повторить вопрос: можно пример более-менее сложных приложений на этих технологиях (MAUI, UNO, Avalonia) хотя бы под 3 платформы?
Нет. И искать не хочу. А то что ты привел ну сложностью и не пахнет.
Это любо 3D графика для CAD. Пример Unity там народ игры клепает на том же C# под разные платформы.
Либо какой то недоделанный гуй телеграмм.
Сначала сам приведи пример сложных гуев, на который нужно тратить миллионы $
и солнце б утром не вставало, когда бы не было меня
Re[10]: Упоротость С++
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 24.08.23 10:37
Оценка: :)
Здравствуйте, so5team, Вы писали:

S>Здравствуйте, Serginio1, Вы писали:


S>>>Так ведь просьба была про определение, а не про пример/образец.

S>>Тогда C# функциональный язык? Да еще круче Lispa?

S>Чтобы принять решение о том, является ли C++ (C# или еще что) чем-то (например, ФЯП), нужно сперва привести определение этого "чего-то". О чем здесь было сказано уже давно: http://rsdn.org/forum/flame.comp/8581721.1
Автор: so5team
Дата: 16.08.23
Но, почему-то проигнорировано.


S>А в отсутствии четких и согласованных определений принятие подобных решений превращается в бессмысленный спор.


S>Отсюда и очередная просьба дать определение.

То есть в гугле забанили?
https://ru.wikipedia.org/wiki/%D0%A4%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5

Для преодоления недостатков функциональных программ уже первые языки функционального программирования включали не только чисто функциональные средства, но и механизмы императивного программирования (присваивание, цикл, «неявный PROGN» были уже в Лиспе). Использование таких средств позволяет решить некоторые практические проблемы, но означает отход от идей (и преимуществ) функционального программирования и написание императивных программ на функциональных языках. В чистых функциональных языках эти проблемы решаются другими средствами, например, в языке Haskell ввод-вывод реализован при помощи монад — концепции, позаимствованной из теории категорий.

и солнце б утром не вставало, когда бы не было меня
Re[11]: Упоротость С++
От: so5team https://stiffstream.com
Дата: 24.08.23 10:41
Оценка:
Здравствуйте, Serginio1, Вы писали:

S>>Отсюда и очередная просьба дать определение.

S>То есть в гугле забанили?
S>https://ru.wikipedia.org/wiki/%D0%A4%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5

Там простыня текста, которая начинается с:

Функциона́льное программи́рование — парадигма программирования, в которой процесс вычисления трактуется как вычисление значений функций в математическом понимании последних (в отличие от функций как подпрограмм в процедурном программировании).

Это похоже на определение, но вот в нем нет ничего про pattern matching.
Да, и согласно такому определению C++ вполне себе функциональный.

S>

S>Для преодоления недостатков функциональных программ уже первые языки функционального программирования включали не только чисто функциональные средства, но и механизмы императивного программирования (присваивание, цикл, «неявный PROGN» были уже в Лиспе). Использование таких средств позволяет решить некоторые практические проблемы, но означает отход от идей (и преимуществ) функционального программирования и написание императивных программ на функциональных языках. В чистых функциональных языках эти проблемы решаются другими средствами, например, в языке Haskell ввод-вывод реализован при помощи монад — концепции, позаимствованной из теории категорий.


А это вообще никак на определение не тянет.
Re[12]: Упоротость С++
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 24.08.23 10:50
Оценка: 2 (1)
Здравствуйте, so5team, Вы писали:

Вот делать мне нехрен обсуждать парадигму ФП

Противопоставляется парадигме императивного программирования, которая описывает процесс вычислений как последовательное изменение состояний (в значении, подобном таковому в теории автоматов). При необходимости, в функциональном программировании вся совокупность последовательных состояний вычислительного процесса представляется явным образом, например, как список.

Функциональное программирование предполагает обходиться вычислением результатов функций от исходных данных и результатов других функций, и не предполагает явного хранения состояния программы. Соответственно, не предполагает оно и изменяемость этого состояния (в отличие от императивного, где одной из базовых концепций является переменная, хранящая своё значение и позволяющая менять его по мере выполнения алгоритма).

На практике отличие математической функции от понятия «функции» в императивном программировании заключается в том, что императивные функции могут опираться не только на аргументы, но и на состояние внешних по отношению к функции переменных, а также иметь побочные эффекты и менять состояние внешних переменных. Таким образом, в императивном программировании при вызове одной и той же функции с одинаковыми параметрами, но на разных этапах выполнения алгоритма, можно получить разные данные на выходе из-за влияния на функцию состояния переменных. А в функциональном языке при вызове функции с одними и теми же аргументами мы всегда получим одинаковый результат: выходные данные зависят только от входных. Это позволяет средам выполнения программ на функциональных языках кешировать результаты функций и вызывать их в порядке, не определяемом алгоритмом и распараллеливать их без каких-либо дополнительных действий со стороны программиста (что обеспечивают функции без побочных эффектов — чистые функции[⇨]).

Лямбда-исчисление является основой для функционального программирования, многие функциональные языки можно рассматривать как «надстройку» над ним[1].


Суть в том, что такого ФП есть в бОльшинстве императивных языков. Все началось с Linq в .Net.
Но вот PM долго не внедрялся, о чем так долго говорили немерлисты! Ты туда сходи со своими определениями.
В итоге C# PM как и макросы не дотягивают до немерлевских, хотя и сильно подтянулись, а может где то и опередили.
Можно сказать так, что лисп использует ФП, но недотягивает по ФП до Хаскеляи F#.
Такое определение тебе подойдет?
и солнце б утром не вставало, когда бы не было меня
Re[13]: Упоротость С++
От: so5team https://stiffstream.com
Дата: 24.08.23 11:16
Оценка: +3
Здравствуйте, Serginio1, Вы писали:

S>Вот делать мне нехрен обсуждать парадигму ФП


Вынужден повторить: без определения такого понятия как ФЯП мы не можем сделать оценку того, является ли C++ ФЯП или нет.
Без определения парадигмы ФП мы не можем сказать, поддерживает ли C++ эту парадигму или нет.

Поэтому если вы хотите выяснить является ли C++ ФЯП и/или поддерживает ли он ФП, то вам придется этими определениями озадачится.

S> Такое определение тебе подойдет?


Так ведь его нет, определения-то.
Re[14]: Упоротость С++
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 24.08.23 11:19
Оценка: :))
Здравствуйте, so5team, Вы писали:

S>> Такое определение тебе подойдет?


S>Так ведь его нет, определения-то.

Ну самому то не стыдно? Делать тебе нечего. Люди работают и должны отвлекаться на хрень, которую ты не понимаешь?
Далек твой лисп до нормального ФП. Бери за идеал F# и сравнивай!
Там все тенденции ФП присутствуют!
и солнце б утром не вставало, когда бы не было меня
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.