LINUX.ORG.RU

Как выучить C# за 21 день имея только опыт Common Lisp? Надо всего лишь...

 , , , ,


1

8

Вобщем, я тут в своей библиотеке для интероперабельности Common Lisp и .NET - запилил мега-фичу - прокси-классы.

Это такие классы, лисповые, которые с помощью магии метаобъектного протокола CLOS и немного System.Reflection.Emit - прикидываются .NET классами, а их объекты, соответственно - .NET объектами.

Это позволяет бесшовно интегрироваться с .NET кодом, например реализовывать .NET интерфейсы или вон, идиоматически писать на WPF, с MVVM, биндингами, командами и всем прочим.

Вон пример приложения, это браузер пакетов(лисповых неймспейсов) CL: https://files.catbox.moe/77wdbn.png

https://github.com/Lovesan/bike/blob/master/examples/wpf.lisp (потом как-нибудь еще добавлю пример с Avalonia, чтобы было кроссплатформенно вообще).

Вот соответствующий XAML. Как видно, вьюха напрямую биндится к свойствам вью-моделей, как будто у нее под капотом C#. https://github.com/Lovesan/bike/blob/master/examples/WpfUserControl.xaml

Код в принципе там понятен, особенно тем кто имел дело с WPF/Avalonia. Но документацию надо бы написать, да, работаю над этим. Докстринги это хорошо но мало.

★★

Ответ на: комментарий от lovesan

Но, как я говорю, есть конечно вариант замутить тупенький аналог DCOM или аналог FOIL https://foil.sourceforge.net/ - и общаться по сокетам/пайпам. Работать будет. Правда, тормознуто, и с кучей проблем уже другого рода(ну типа, как гарантировать детерминированное выполнение dipose()/close() или там финализаторов?)

Вощем, щастья нет

lovesan ★★
() автор топика

библиотеке для интероперабельности Common Lisp и .NET

Может проще настрогать свою реализацию CL под дотнет?

Чем вся эта любовь с хрюниксовыми сигналами и спаривание двух рантаймов.

ABCLьщики же смогли, хоть и на говножабу, но всё же.

Hertz ★★★★★
()
Ответ на: комментарий от Hertz

Может проще настрогать свою реализацию CL под дотнет?

Не особо. Во-первых, реализовать полноценный CL, даже в рамках стандарта это адовый труд. Во-вторых, эти платформы хреново подходят именно для лиспов уровня CL. Современные реализации CL используют тегированные указатели, кучу хаков на уровне рантайма, итд, чтобы все более-менее не тормозило и работало нормально. Плюс модель вычисления в общем и целом, модели модульности и прочее - платформы типа .NET и JVM это ограничивают очень сильно.

Опять же ООП. Делать CLOS поверх жабодотнета это тот еще прикол.

ABCLьщики же смогли, хоть и на говножабу, но всё же.

При всем уважении к ABCL, тормозит он и вообще местами кривоват.

lovesan ★★
() автор топика
Ответ на: комментарий от lovesan

почему при таком качкстве тогда C# тормозит на двухколоночной десяти строчной таблице mssql, в универе в 2006 видел веб приложение на C#, был так поражен увиденным, что до сих пор от шока отойти не могу.

s-warus ★★★
()
Ответ на: комментарий от lovesan

как можно написать кривой код который 5 минут 20 значениями жанглировует, вся задача кода, вывести таблицу

в то время на 100мб озу библиотечная база запросы сотые доли секунды запросы обрабатывала, а тут минуты.

s-warus ★★★
()