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

Во-первых, сишарповых же и поделок(ReSharper),

Да, посыпаю голову пеплом, думал он на Java-like языке как и всё то что вылазит из-под пера JetBrains.

Как и Jython.

Его лавры в современном мире сегодня занял

[troll]Вот кстати, интересно было бы узнать мнение Лавсанчика про GraalVM, появись такая штука в мире .NET, ты бы ведь первый побежал создавать тред на ЛОРе об подобной технологии[/troll]

EXL ★★★★★
()
Последнее исправление: EXL (всего исправлений: 1)
Ответ на: комментарий от lovesan

Вообще C# как язык, говно конечно.

А что лучше?

IMHO VB.NET конечно приятнее, но навряд ли многие разделяют мой выбор :)

Но, дотнет как платформа - очень хорош. Особенно в плане количества и качества библиотек, стабильности и обратной совместимости, и переносимости.

Благо библиотеки, написанные на любых .NET языках, почти всегда можно использовать из любых других .NET языков.

А давайте, сделаем список самых популярных межязыковых Interops, которые позволяют из .NET языков программирования использовать библиотеки, написанные на других популярных языках программирования?

Часть работы по составлению такого списка уже проделана и доступна в моём профиле, там есть Interops для вызова .NET -> Python, .NET -> JS, .NET -> Lua, .NET -> PHP.

Ещё бы хотелось что-то популярное для вызова JVM либ, но почему-то для прямого Interop .NET -> JVM очень мало предложений и большей частью коммерческие. А вот для Python->JVM целых несколько open-source.

Поэтому пока, наверно, если приспичит, то для редких вызовов можно использовать связку .NET -> Python -> JVM.

sanyo1234
()
Последнее исправление: sanyo1234 (всего исправлений: 1)
Ответ на: комментарий от slackwarrior

А серьезно никто не мешает писать на шарпе без раздутой блоатвари мозговжухов и без их костылей для слабых мозгом

Не мешает, конечно. Но на деле никто так уже не пишет. Все сегодня обмазываются линтерами и сахарком с головы до ног и даже пробуют всякие там copilot’ы. Даже lovesan, как видишь.

Строгая/статическая типизация как в C#, так и в Java располагает к написанию подобных инструментов, которые значительно упрощают анализ кода. На поделках JetBrains это особенно видно, если сравнивать IDEA или ReSharper с каким-нибудь PyCharm или WebStorm. Не зря же в них аннотации типов завезли?

EXL ★★★★★
()
Последнее исправление: EXL (всего исправлений: 1)
Ответ на: комментарий от EXL

GraalVM это типа, что?

  1. AOT?
  2. Standalone исполняемые файлы?

Первое было в .NET Framework с незапамятных времен, в новом .NET вон допилили тоже https://learn.microsoft.com/en-us/dotnet/core/deploying/native-aot

Второе в .NET тоже есть.

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

Виртовская линейка развития алгола это тупиковая ветвь ЯП, причем совершенно бесперспективная. Вообще непонятно, кому к херам может быть нужен какой-нибудь оберон если есть современный C# или Java?

С лиспом, естественно, эти поделия вообще даже рядом не стоят, лисп это другая галактика просто.

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

GraalVM это типа, что?

Это попытка Oracle’ом сделать VM и платформу для кучи языков сразу в одном флаконе. Они наклепали собственных реализаций Python, JavaScript, R, Ruby и проч. поверх GraalVM и реализовали возможность вызовов одних языков из других.

https://docs.oracle.com/en/graalvm/enterprise/20/docs/docs/img/graalvm_architecture.png

https://github.com/oracle/graal#related-repositories

В т. ч. в этих языках появились плюшки GraalVM в виде AOT, отсутствия GIL (привет, Python) и т. д.

EXL ★★★★★
()
Последнее исправление: EXL (всего исправлений: 2)
Ответ на: комментарий от EXL

 Но на деле никто так уже не пишет

Ой-вей, бином невтона

Строгая/статическая типизация как в C#, так и в Java располагает к написанию подобных инструментов, которые значительно упрощают анализ кода.

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

slackwarrior ★★★★★
()
Последнее исправление: slackwarrior (всего исправлений: 1)
Ответ на: комментарий от qulinxao3

вариант лиспа но не с cons-ячейкой (т.е точечной парой) - а типо 2-3 ячейка ( т.е точечкая тройка)

имхо подобно 2-3 деревьям vs биндиревья а так же что тройка ближе к е чем 2ка поэтому многие пути короче

Так все эти оптимизации можно под капот спрятать, зачем их наружу-то высовывать.

Я, к примеру, слабо себе представляю, чем тройка лучше пары как структура данных. Нафига, а главное, зачем там третья ячейка.

Вот чем она хуже, я вижу — сложнее. А лучше-то чем?

Nervous ★★★★★
()
Последнее исправление: Nervous (всего исправлений: 1)
Ответ на: комментарий от slackwarrior

требуется нечитабельным простыням «врайт-онли»

Любой проект на C# и Java крупных корпораций.

извини, феерически смешно, т.к. 50тыр и даже 30 тыр тоже «пятизначная»(тм),

В моём ироничном посте от которого почему-то у тебя подгорела дупа и ты начал носиться с ним по форуму, речь не шла про РФ и рубли вообще, как бы намёк про «кари-галеры» остался тобой не понят, ну да бог с тобой.

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

инструментов для умственно отсталых типа Go

Видел упоминания, что мол Go - это образно Bash (не синтаксис конечно, который у Go напоминает сишную группу языков) на стероидах с хорошим многопотоком, а девупсы мне не верят и минусят за такое :( Выскажите, пожалуйста, свои мнения по этому поводу.

sanyo1234
()
Ответ на: комментарий от EXL

Любой проект на C# и Java крупных корпораций.

В стадии прототипа, написанного джунами за зряплатки, который «потом перепишут» (с) нормальные программисты, херки вотвот (года три) ищут с пожарными и полицией, да все не могут найти кандидатов меньше чем с шестью нулями в оффере :)

В моём ироничном посте 

Тебе постиронично насрали в штаны, дадад :) но ты не распарсил без подсказок IDE от мозговжухов :)

slackwarrior ★★★★★
()
Последнее исправление: slackwarrior (всего исправлений: 3)
Ответ на: комментарий от alex1101

Сишарп ненужен вместе со своей сраной виндой,

Какая связь между вендой, .NET и тем более шарпом, который есть даже на OpenBSD ?

в пользу здоровой гетеросексуальной связки linux и c++

Какая гендерная связь между linux и плюсами?

игрушек для шизофреников вроде C++/Rust.

Прям взаимодополняющие параграфы :)

sanyo1234
()
Ответ на: комментарий от slackwarrior

В стадии прототипа, написанного джунами за зряплаики, который «потом перепишут» (с) нормальные программисты,

На пятизначной зарплатке ;) Если у корпорации будут деньги на это конечно.

А чтобы разгрести нормальному программисту нечитабельную write-only простыню кари-джунов, внезапно, нужен инструмент вида IDEA или ReSharper с возможностями мощного рефакторинга.

Тебе иронично насрали в штаны, дадад :)

Отыгрываешь ситуацию «Обосрался? Притворись троллем.»? Со мной не прокатит.

EXL ★★★★★
()
Последнее исправление: EXL (всего исправлений: 1)
Ответ на: комментарий от EXL

Падажжы. Ещё в 2008 году, когда я закончил карьеру C# программиста, уже был решарпер к визуалке, без которого в целом было можно, но не так удобно. Что там ещё из тулов-то особо надо было?

При том, что даже уровень визуалки образца 2008 года для современных тулов тупо недостижим. Разве что Qt Designer близко подошёл, но только в контексте RAD, а остальное деградировало.

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

А чтобы разгрести нормальному программисту нечитабельную write-only простыню кари-джунов, внезапно, нужен инструмент вида IDEA или ReSharper с инструментами мощного рефакторинга.

Или мозг чтоб осилить прочитать ТЗ и выкинуть блевотину кодирующих обезьянок сколько-нибудь глубоко не анализируя.

Отыгрываешь ситуацию «Обосрался? Притворись троллем.»? Со мной не прокатит.

Уже прокатило, лол :)

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

Лапша на уши для малахольных лопухов, которые считают что декларируемое = реальное. В реале там хозяин Микрософт.

В чем это проявляется?

Что мешает тебе форкнуть .NET и сделать свой вариант?

А теперь, задумайся на минутку, можно ли форкнуть Astra Linux и распространять ее на территории РФ без негативных последствий для себя.

Делайте выводы, кто есть кто.

sanyo1234
()
Ответ на: комментарий от Dark_SavanT

уровень визуалки образца 2008 года

Уровень визуалки образца 2008 года это Delphi, лол.

только в контексте RAD, а остальное деградировало.

Да сам RAD контекст давно устарел. Взгляни на современный мир и UI технологии которые там сегодня применяют. Сплошь и рядом декларативные DSL’ы друг на друге сидят и друг другом погоняют. Что на macOS/iOS в Swift, что в упомянутом тобой Qt где QtQuick стал main, а Qt Widgets вместе с со своим «близко подошёл в контексте RAD» оставлен забвенным. Он кстати вообще практически не менялся с 2010 года.

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

Несмотря на его возраст(первое упоминание начало-середина 80х, ANSI стандарт 1994 года), ничего лучше еще не придумали.

В чем конкретно преимущества LISP?

Что думаешь об IronScheme:

https://github.com/IronScheme/IronScheme

IronScheme aims to be a R6RS conforming Scheme-like implementation for all .NET implementations and platforms.

IronScheme implements over 99% of the R6RS specification and specified behavior.

?

sanyo1234
()

За лисп два чая, нравится, хоть и не хаскель. А сишарп-то как выучить? Уж не кликбейт ли тут у нас?

Мне, правда, оно и не упёрлось, мне и за си-с-плюсами плотют, но так, в рамках каръерного росту…

JaneDoe
()
Последнее исправление: JaneDoe (всего исправлений: 1)
Ответ на: комментарий от Dark_SavanT

Да, C# вкупе с .NET стал вкусным тортом с горой вкусного синтаксического сахарка. Если бы не Kotlin у Java, последний наверное был бы полумёртв.

C# так-то расшевелил Oracle и замшелое Java-болото, вон уже 21 версию клепают с аналогом green threads, так что за что ему скажем спасибо.

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

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

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

Даже Delphi 7 при правильном использовании сильно лучше чем то говно которое можно сейчас наблюдать на десктопе. Там всратое поделие надо было постараться затормозить.

Не RAD концепт устарел, а пришло цунами неосиляторов, которым не то, что куте с плюсами, а даже дельфи не доверить, только сраный электрон с сраным жабаскриптом.

Как там нынче на gtk интерфейсы пишут? как и двадцать лет назад выдрачивают в коде? Где там glade? что пришло на замену?

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

Clojure … это тупиковая и деградантская побочная ветвь лиспов

Ну ладно, пусть не лисп, хрен с ним. Не очень-то и хотелось. Но почему деградантская-то? %)

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

Угу, я ещё помню как жабосластцы верещали что «женерики нинужны!». Но про жабу я не спец, я на ней меньше 10к строк кода написал за всю жизнь, что там и как происходит и как пишется не в курсе.

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

Парадоксально, но в случае JVM выбор из живых языков у тебя больше.

Языков с синтаксисом приятнее, чем VB.NET и C# ?

RemObjects позволяет собирать программы на VB.NET и C# для JVM? Использовать либы JVM и т.п.? Можно ли в таком случае считать VB.NET и C# частью группы языков для JVM (типа Scala, Groovy и т.п.)?

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

Не уверен что он сдох, но если сдох - так и что?

Поддерживается слава Богу:

https://visualstudiomagazine.com/articles/2023/02/08/language-update.aspx

https://learn.microsoft.com/en-us/dotnet/visual-basic/getting-started/strategy

We will ensure Visual Basic remains a straightforward and approachable language with a stable design. The core libraries of .NET (such as the BCL) will support VB and many of the improvements to the .NET Runtime and libraries will automatically benefit VB. When C# or the .NET Runtime introduce new features that would require language support, VB will generally adopt a consumption-only approach and avoid new syntax. We do not plan to extend Visual Basic to new workloads. We will continue to invest in the experience in Visual Studio and interop with C#, especially in core VB scenarios such as Windows Forms and libraries.

Кроме того VB.NET от RemObjects развивает свои языковые возможности и даже может компилировать JVM сборки:

https://www.remobjects.com/elements/mercury/

Он был нужен только для одной вещи - перетащить разработчиков с VB на C#. В начале нулевых.

Лично мне кодить на VB.NET приятнее, чем на C#, хотя алгоритмы я умею и на C++, но не фанат низкоуровневой сишки.

sanyo1234
()
Ответ на: комментарий от Dark_SavanT

Не RAD концепт устарел, а пришло цунами неосиляторов, которым не то, что куте с плюсами, а даже дельфи не доверить, только сраный электрон с сраным жабаскриптом.

Как там нынче на gtk интерфейсы пишут? как и двадцать лет назад выдрачивают в коде? Где там glade? что пришло на замену?

А зачем вообще на плюсах писать GUI офисных приложений? Я еще могу понять, когда это какой-нибудь Embedded, Acronis LiveCD и т.п., но зачем такое на универсальных осях? Плюсовый GUI в гамесах, CAD и т.п. это еще ладно.

IMHO плюсы хороши для быстрой сложной математики, в контексте создания графики для 3D движков и т.п.?

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

Он используется в хвост и в гриву, и немало, в том числе в крупных банках в РФ.

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

slew
()
Ответ на: комментарий от JaneDoe

Пейсать-то, в итоге, на чём?

На VB.NET конечно же.

Python хотел стать популярным open-source VB, но в итоге стал популярным г@вном (c), на которое слетелись миллионы мух и даже я иногда вынужден его использовать в своих DevOps скриптах :(

А VB.NET как был конфеткой, так ей и остался, мало того, теперь конфетой стал и .NET, на котором этот VB.NET запускается.

Так что же вам еще надо, учитывая, что почти любые оригинальные питонячие либы можно использовать без переделок из VB.NET, которым когда-то хотел стать Python, но в итоге получилось, что конфета VB.NET стала еще и open-source-ной и может заюзать питонячие наработки?

sanyo1234
()
Последнее исправление: sanyo1234 (всего исправлений: 1)
Ответ на: комментарий от Neuromagus

Резко не хватает@hateyoufeel

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

Короче, выглядит как этакий C++ от мира лишпов. Но если Лавсанчегу нравится, кто я такой чтобы осуждать его выбор?

P.S. почему-то среди программистов на Common Lisp транссексуалов замечено гораздо больше, чем в среднем по популяции, и даже больше чем среди программистов на Rust, хотя казалось бы. Я не знаю, с чем это связано.

hateyoufeel ★★★★★
()
Последнее исправление: hateyoufeel (всего исправлений: 4)