Re[18]: Упоротость С++
От: Sinclair Россия https://github.com/evilguest/
Дата: 04.09.23 12:17
Оценка:
Здравствуйте, Skorodum, Вы писали:
S>Хинт: сложный интерфейс это тригонометрия и OpenGL (или его альтернативы), и хотелось бы использовать этот код на разных платформах, а не писать заново.
А в чём проблема написать этот код на дотнете и использовать на разных платформах?
Собственно некроссплатформенность ГУЯ сводится к двум факторам. Точнее, к одному — мимикрия и интеграция с окружением, в двух аспектах:
1. Мимикрия look and feel (максимальное использование платформенных контролов при построении гуя + самописанных контролов, но ведущих себя как нативные на каждой платформе, включая неочевидное поведение вроде обработки малоизвестных клавиатурных шорткатов, или авто-адаптации внешнего вида при смене системных настроек)
2. Интеграция с окружением (клипборд, всякие send to, встраивание объектов и документов друг в друга, система прав доступа к управляемым объектам)

Когда речь идёт о какой-нибудь трёхмерщине, от этих аспектов проку никакого нет, т.к. ни в одной платформе нет встроенной поддержки. Всё, что такому гую нужно от платформы — какой-то канвас, куда мы будем лить свою картинку. Например, через OpenGL.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[22]: Упоротость С++
От: Sinclair Россия https://github.com/evilguest/
Дата: 04.09.23 12:24
Оценка:
Здравствуйте, Skorodum, Вы писали:
S>Вроде по-русски написано: панель современного авто.
В моём современном авто панель написан вообще на джаве. Плюс, по слухам, JS. Ни строчки кода на С++
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[23]: Упоротость С++
От: Dym On Россия  
Дата: 04.09.23 12:33
Оценка:
Здравствуйте, Serginio1, Вы писали:

S> Ну вот ты не знаешь о WPF и даже не знаешь где используется? Да практически весь софт под винду.

S>Учитывая распространенность .Net на винде. Весь корпоративный софт!
Ага, вот наш софт написан на WPF под винду, а теперь задача запустить все это хозяйство на астралинуксе. И чего? Какие варианты, кроме как выкинуть весь код на WPF на помойку и писать заново? Колхоз с wine не предлагать, СБ не пропустит.
Счастье — это Glück!
Re[24]: Упоротость С++
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 04.09.23 12:39
Оценка:
Здравствуйте, Dym On, Вы писали:

S>> Ну вот ты не знаешь о WPF и даже не знаешь где используется? Да практически весь софт под винду.

S>>Учитывая распространенность .Net на винде. Весь корпоративный софт!
DO>Ага, вот наш софт написан на WPF под винду, а теперь задача запустить все это хозяйство на астралинуксе. И чего? Какие варианты, кроме как выкинуть весь код на WPF на помойку и писать заново? Колхоз с wine не предлагать, СБ не пропустит.

А в чем проблема. FW переносится в Core с небольшими переделками. Бери Авалонию, там небольшие переделки.
https://docs.avaloniaui.net/docs/next/get-started/wpf/

Да WPF навороченный Гуй. Но Мы то говорим про MAUI и Авалонию

Ну а речь, там шла, что где WPF используется для винды.
и солнце б утром не вставало, когда бы не было меня
Отредактировано 04.09.2023 12:54 Serginio1 . Предыдущая версия .
Re[13]: Упоротость С++
От: vdimas Россия  
Дата: 04.09.23 16:58
Оценка:
Здравствуйте, Serginio1, Вы писали:

V>>PM в C# у выигрывает у F# с разгромным счётом, ес-но.

V>>(сам же ссылки дал — не смотрел, разве?)
S> Ну вот мое мнение, что Шарп недотягивает до F#.

В этом месте надо привести конструкции из F#, аналогов которых нет в C# и обратно.
И сравнить, где кого больше. ))


S>Но не суть. ПМ очень удобен как туплами, рекордами, объектами, списками.


ПМ изначально работает с туплами и рекордами.
C# пошёл дальше.


V>>В F# есть только одна конструкция, неизвестная в C# — это явное ветвление по discriminated union, бо такого встроенного в язык типа данных нет в C#, опять бгг.

S>Кстати
S>https://code-maze.com/csharp-discriminated-unions-with-oneof/

Такое себе...
Каждое определение OneOf<T1, T2, T3> расписано повторно для данного арити.
Соотв., подход ограничен максимально длинным определением из библиотеки.


S>https://github.com/dotnet/csharplang/blob/main/proposals/discriminated-unions.md


enum class — плохое предложение, т.к. перечисление получается открытым.
К тому же, эту технику можно реализовать уже сейчас и прямо там же расписано — как именно.

Больший интерес предсталял бы enum struct, бо перечисление получилось бы закрытым с соотв.контролем со стороны компилятора, чтобы обработать все варианты в PM.


V>>В C# для этого завезут ПМ над Span (конкретно для Span<char> уже завезли).

S> Это не суть. Просто есть ПМ для списков.

Опиши такой же линкованный список в C# и получишь такой же PM (в чуть другом синтаксисе, но с той же семантикой).


S>Интересно. Спасибо. Но это не ПМ.


Это именно покрытие сценариев из ПМ — выразительное ветвление по видам конструкций данных.


S>ФП в F# мощнее чем в Наскеле?


Нет, намного хуже.
Но ПМ в F# намного мощнее оного в Хаскеле.


S>ФП в С++ уступает C#?


Опережает кратно, но ПМ в языке отсутствует — обитает на библиотечном уровне.
Re[14]: Упоротость С++
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 04.09.23 20:25
Оценка:
Здравствуйте, vdimas, Вы писали:



V>>>В F# есть только одна конструкция, неизвестная в C# — это явное ветвление по discriminated union, бо такого встроенного в язык типа данных нет в C#, опять бгг.

S>>Кстати
S>>https://code-maze.com/csharp-discriminated-unions-with-oneof/

V>Такое себе...

V>Каждое определение OneOf<T1, T2, T3> расписано повторно для данного арити.
V>Соотв., подход ограничен максимально длинным определением из библиотеки.


S>>https://github.com/dotnet/csharplang/blob/main/proposals/discriminated-unions.md


V>enum class — плохое предложение, т.к. перечисление получается открытым.

V>К тому же, эту технику можно реализовать уже сейчас и прямо там же расписано — как именно.

V>Больший интерес предсталял бы enum struct, бо перечисление получилось бы закрытым с соотв.контролем со стороны компилятора, чтобы обработать все варианты в PM.



V>>>В C# для этого завезут ПМ над Span (конкретно для Span<char> уже завезли).

S>> Это не суть. Просто есть ПМ для списков.

V>Опиши такой же линкованный список в C# и получишь такой же PM (в чуть другом синтаксисе, но с той же семантикой).



S>>Интересно. Спасибо. Но это не ПМ.


V>Это именно покрытие сценариев из ПМ — выразительное ветвление по видам конструкций данных.


Там подобие OneOf<T1, T2, T3>, которые кстати могут генериться через SG. Нет ограничений. Кстати пример сгенеренный.
S>>ФП в F# мощнее чем в Наскеле?

V>Нет, намного хуже.

V>Но ПМ в F# намного мощнее оного в Хаскеле.


S>>ФП в С++ уступает C#?


V>Опережает кратно, но ПМ в языке отсутствует — обитает на библиотечном уровне.

Это уже не ПМ. Через SG тоже можно нагенерить близко к шаблонам.

Кстати
interceptors понравились для SG.
Теперь и существующий код можно подменять!
https://github.com/dotnet/roslyn/blob/main/docs/features/interceptors.md
и солнце б утром не вставало, когда бы не было меня
Re[15]: Упоротость С++
От: vdimas Россия  
Дата: 05.09.23 08:39
Оценка:
Здравствуйте, Serginio1, Вы писали:

S>>>Интересно. Спасибо. Но это не ПМ.

V>>Это именно покрытие сценариев из ПМ — выразительное ветвление по видам конструкций данных.
S>Там подобие OneOf<T1, T2, T3>

ПМ изначально предназначался для ветвления по значению discriminated union, т.к. необходимо было из общего типа объединения получить в строготипизированном виде частный тип его значения.

Все остальные "развития ПМ" были и есть непринципиальными/необязательными и представляют из себя не более чем сахар над цепочкой if-elseif-...-else.
И именно в этом месте возможности ПМ у различных языков заметно отличаются, но, положа руку на, это всё сахарок, т.е. не является тем нечто, без чего никак.

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

В Хаскеле такой ПМ происходит по закрытому объединению, является строгим, не позволит забыть обработать все допустимые варианты DU.
В C# типы открыты, получается малость профанация, хотя и удобно синтаксически. ))


S>>>ФП в С++ уступает C#?

V>>Опережает кратно, но ПМ в языке отсутствует — обитает на библиотечном уровне.
S>Это уже не ПМ.

Это ты оперируешь чуйкой? ))
Нет размеченных объединений — не нужен ПМ.

В C#, если что, все объекты представляют из себя размеченное объединение System.Object.


S> Кстати

S>interceptors понравились для SG.
S>Теперь и существующий код можно подменять!
S>https://github.com/dotnet/roslyn/blob/main/docs/features/interceptors.md

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

Фича по ссылке должна помочь сделать всё красиво, в сочетании с interpolation string handler.

А всего-то надо было натравить плюсовиков на дотнет, чтобы рассказали, чего в этом недоделанном дотнете не хватает для беззаботной жизни. ))
Отредактировано 05.09.2023 8:59 vdimas . Предыдущая версия .
Re[16]: Упоротость С++
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 05.09.23 09:08
Оценка:
Здравствуйте, vdimas, Вы писали:

S>>>>ФП в С++ уступает C#?

V>>>Опережает кратно, но ПМ в языке отсутствует — обитает на библиотечном уровне.
S>>Это уже не ПМ.

V>Это ты оперируешь чуйкой? ))

V>Нет размеченных объединений — не нужен ПМ.
ПМ это встроенный в язык конструкция.
Суть удобство не только писать, но и читать!
V>В C#, если что, все объекты представляют из себя размеченное объединение System.Object.

Это не суть.
S>> Кстати
S>>interceptors понравились для SG.
S>>Теперь и существующий код можно подменять!
S>>https://github.com/dotnet/roslyn/blob/main/docs/features/interceptors.md

V>Да, я смотрел на это уже, бо в дотнете традиционной головной болью является то, что нормальный логгер принципиально невозможно прикрутить, чтобы реализовать все привычные его св-ва.

V>Сейчас любая реализация логгера выглядит и работает максимально уродско, и ничего ты с этим не сделаешь.
V>(распишу подробней, если любопытно)

V>Фича по ссылке должна помочь сделать всё красиво, в сочетании с interpolation string handler.


V>А всего-то надо было натравить плюсовиков на дотнет, чтобы рассказали, чего в этом недоделанном дотнете не хватает для беззаботной жизни. ))


Кстати понравилось и https://learn.microsoft.com/ru-ru/dotnet/csharp/language-reference/proposals/csharp-10.0/improved-interpolated-strings
Там пример для логеров есть
И опять применяется SG через атрибуты
и солнце б утром не вставало, когда бы не было меня
Re[23]: Упоротость С++
От: Skorodum Россия  
Дата: 05.09.23 10:25
Оценка: +1
Здравствуйте, Sinclair, Вы писали:

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

S>>Вроде по-русски написано: панель современного авто.
S>В моём современном авто панель написан вообще на джаве. Плюс, по слухам, JS. Ни строчки кода на С++
Что за авто?
Для примера C++/QML официально используется в теслах, мерсах, хюндаях.
Re[19]: Упоротость С++
От: Skorodum Россия  
Дата: 05.09.23 12:06
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>А в чём проблема написать этот код на дотнете и использовать на разных платформах?

Может и нет проблемы Я тут клещами пытаюсь вытянуть примеры таких приложений.

S>Собственно некроссплатформенность ГУЯ сводится к двум факторам. Точнее, к одному — мимикрия и интеграция с окружением, в двух аспектах:

S>1. Мимикрия look and feel (максимальное использование платформенных контролов при построении гуя + самописанных контролов, но ведущих себя как нативные на каждой платформе, включая неочевидное поведение вроде обработки малоизвестных клавиатурных шорткатов, или авто-адаптации внешнего вида при смене системных настроек)
Это все в прошлом. Винда сама использует несколько разных стилей. И ничего.

S>2. Интеграция с окружением (клипборд, всякие send to, встраивание объектов и документов друг в друга, система прав доступа к управляемым объектам)

И еще миллион других вещей: локализация, ориентация лево-право, поддержка нескольких мониторов и т.п.

S>Когда речь идёт о какой-нибудь трёхмерщине, от этих аспектов проку никакого нет, т.к. ни в одной платформе нет встроенной поддержки. Всё, что такому гую нужно от платформы — какой-то канвас, куда мы будем лить свою картинку. Например, через OpenGL.

Так где примеры кросс-платформенных канвасов с поддержкой OpenGL? Я вот знаю Qt
Re[20]: Упоротость С++
От: CreatorCray  
Дата: 05.09.23 22:59
Оценка:
Здравствуйте, Skorodum, Вы писали:

S>Винда сама использует несколько разных стилей. И ничего.

Как раз очень даже чего. Этот бардак пошёл с 8ки, до неё было куда более единообразно.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Re[24]: Упоротость С++
От: Sinclair Россия https://github.com/evilguest/
Дата: 06.09.23 01:02
Оценка: 1 (1)
Здравствуйте, Skorodum, Вы писали:
S>Что за авто?
Мазда. Для неё даже альтернативные прошивки энтузиасты пилят
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[25]: Упоротость С++
От: CreatorCray  
Дата: 06.09.23 01:05
Оценка: :))
Здравствуйте, Sinclair, Вы писали:

S>написан вообще на джаве. Плюс, по слухам, JS

S>Мазда.

Жесть! Спасибо за предупреждение.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Re[21]: Упоротость С++
От: Skorodum Россия  
Дата: 06.09.23 08:04
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>Как раз очень даже чего. Этот бардак пошёл с 8ки, до неё было куда более единообразно.

Чего только для старперов типа нас, молодеже это все ок.
Главное тут что, разработчикам приложений не стоит пытаться быть святее папы римскогомайкрософта и мимикрировать под какой-то несуществующий стандарт.
Re[25]: Упоротость С++
От: Skorodum Россия  
Дата: 06.09.23 08:05
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Мазда. Для неё даже альтернативные прошивки энтузиасты пилят

Интересно. Там такой открытый интерфейс?
Брал в аренду 6-ку несколько лет назад, там все было красиво.
Re[20]: Упоротость С++
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 06.09.23 09:15
Оценка:
Здравствуйте, Skorodum, Вы писали:

S>Так где примеры кросс-платформенных канвасов с поддержкой OpenGL? Я вот знаю Qt


https://usemake.ru/raznitsa/otlichiya-mezhdu-opengl-i-opengl-skia-vybor-dlya-graficheskih-prilozheniy
OpenGL Skia — это графическая библиотека, обладающая высокой производительностью и работающая на множестве платформ. Она основана на стандартном OpenGL API, но обеспечивает рисование векторной графики и выполнение других задач, связанных со многими графическими операциями.
и солнце б утром не вставало, когда бы не было меня
Re[26]: Упоротость С++
От: Sinclair Россия https://github.com/evilguest/
Дата: 06.09.23 12:51
Оценка:
Здравствуйте, Skorodum, Вы писали:
S>Интересно. Там такой открытый интерфейс?
Ну как открытый. Там какая-то рудиментарная проверка происхождения есть, так что нужно что-то шаманить для применения неподписанных прошивок.
А остальное — методом проб, ошибок, и ревёрс инжиниринга.

S>Брал в аренду 6-ку несколько лет назад, там все было красиво.

Да так себе, ничего особенно красивого. Обычный софт от производителей железяк — ни уму, ни сердцу.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[21]: Упоротость С++
От: Skorodum Россия  
Дата: 07.09.23 14:15
Оценка:
Здравствуйте, Serginio1, Вы писали:

S>OpenGL Skia — это графическая библиотека, обладающая высокой производительностью и работающая на множестве платформ. Она основана на стандартном OpenGL API, но обеспечивает рисование векторной графики и выполнение других задач, связанных со многими графическими операциями.

Первый интересный пример от тебя и тот на С++
По существу: полноценный интрефейс на таком низко-уровнем API писать это очень дорогое удовольствие.
Re[22]: Упоротость С++
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 07.09.23 14:34
Оценка:
Здравствуйте, Skorodum, Вы писали:

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


S>>OpenGL Skia — это графическая библиотека, обладающая высокой производительностью и работающая на множестве платформ. Она основана на стандартном OpenGL API, но обеспечивает рисование векторной графики и выполнение других задач, связанных со многими графическими операциями.

S>Первый интересный пример от тебя и тот на С++
S>По существу: полноценный интрефейс на таком низко-уровнем API писать это очень дорогое удовольствие.

Ну есть SkiaSharp
и солнце б утром не вставало, когда бы не было меня
Re[22]: Упоротость С++
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 07.09.23 14:41
Оценка: +1
Здравствуйте, Skorodum, Вы писали:

S>>OpenGL Skia — это графическая библиотека, обладающая высокой производительностью и работающая на множестве платформ. Она основана на стандартном OpenGL API, но обеспечивает рисование векторной графики и выполнение других задач, связанных со многими графическими операциями.

S>Первый интересный пример от тебя и тот на С++
S>По существу: полноценный интрефейс на таком низко-уровнем API писать это очень дорогое удовольствие.
На шарпе после прихода ref struct и Function Pointers все очень близко в нативу.
Опять же смотри SkiaSharp
и солнце б утром не вставало, когда бы не было меня
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.