LINUX.ORG.RU

bike 0.14.0 - документация!

 , , ,


0

4

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

https://github.com/Lovesan/bike/blob/master/doc/README.md

Кроме документации, доделал классы, которые могут вызываться из .NET. Вот в частности пример, как реализовать интерфейс IReadOnlyList<object> для лисповых коллекций:

https://github.com/Lovesan/bike/blob/master/examples/callable-classes.lisp

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

Также добавил функциональность по типу apropos, но для .NET классов, неймспейсов и членов классов.

Так, например, такой код:

(type-apropos "xml")

Выведет имена .NET классов, содержащие «xml» (сраную гору их просто; я даже сам не знал что их так много в стандартной библиотеке).

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

https://github.com/Lovesan/bike/blob/master/CHANGELOG.md

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

За С++ не стоит? Наивный васюня, за C++ еще как стоит, и еще с 90х. Одна Microsoft че стоит.

Полезен он сколько-то был как раз только разве что в 90х. Сейчас в крестах вообще смысла нет, кроме горы сраного легаси, от которого никуда не деться.

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

Историческая случайность. Надо будет про это накатать статью.

В целом, на самом деле, лисповые библиотеки, хотя их и меньше чем в жабке или дотнете, очень качественные, продуманные, и следят за обратной совместимостью. И это несмотря на то что за ними не стоят Apache Foundation или .NET Foundation, с огромными ресурсами и количеством народу.

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

Ох, какой же я наивный, совсем забыл про величайшую компанию Microsoft, которая с 90х была первой во внедрении новейших стандартов в свои компиляторы, разработала почти всю инфраструктуру этому языку (cmake, qt, clangd, libstd++), участвовала в разработке передовых компиляторов gcc, clang. Еще они выпустили кучу библиотек для разработки нативных приложений на С++, например WinFroms и WPF, да?

На ситуацию с Sun и Java это никак не похоже.

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

Твой красноглазый Qt по объему внедрения, и рядом не стоит по сравнению даже с ATL и MFC.

На Qt уже приложения в составе виндовса пишут, MFC любым здравомыслящим человеком считается помойным легаси который не достоин существования.

Касательно libstdc++ - посмотри кто этот стандарт всегда спонсировал, это первое, и где работают всякие Саттеры.

Лучше посмотреть на то как MS постоянно не мог реализовать стандарты, откуда STL появился, и на поддержку clang в Visual Studio.

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

Ох, какой же я наивный, совсем забыл про величайшую компанию Microsoft, которая с 90х была первой во внедрении новейших стандартов в свои компиляторы, разработала почти всю инфраструктуру этому языку (cmake, qt, clangd, libstd++), участвовала в разработке передовых компиляторов gcc, clang.

Без микрософта C++ был бы там же, где сейчас SBCL или Haskell. Под них тоже есть компилятор, куча библиотек. Только мало распространены.

Представь себе альтернативный мир, где Микрософт в 1994 вместо С++ в MSVC сразу начала бы продвигать C#. И чтобы поставить gcc надо поставить cygwin, для написания графических приложений подымать X Server, …

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

Без микрософта C++ был бы там же, где сейчас SBCL или Haskell.

Конкретнее? Без cl.exe, или без MFC? Может быть без такого важного проекта как C++/СLI все бы порушилось?

Представь себе альтернативный мир, где Микрософт в 1994 вместо С++ в MSVC сразу начала бы продвигать C#.

Какие можно выделить важные приложения: Приложения для создания и творчества CAD, Photoshop, 3dMax, все они очевидно остались бы на С++. Какие еще есть? Игры, игры точно совершенно остались бы на С++. Далее, браузер, ну ту замену IE MS начал делать на С++, значит и IE бы они делали на C++, потому что они лицензировали код на С++, кстати, где бы они брали сторонние реализации для интеграции в систему? Сами бы писали?

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

Приложения для создания и творчества CAD, Photoshop, 3dMax, все они очевидно остались бы на С++.

Конечно нет.

Игры, игры точно совершенно остались бы на С++.

Естественно нет.

И про другое тоже нет.

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

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

Приложения для создания и творчества CAD, Photoshop, 3dMax, все они очевидно остались бы на С++.

Приложения для создания и творчества CAD, Photoshop, 3dMax, все они очевидно остались бы на С++.

Игры, игры точно совершенно остались бы на С++.

Естественно нет.

Думаешь все сразу бы побежали переписывать свои движки на которые дунуть лишний раз бояться? Ситуация у CAD, Photoshop может получше, но как Photoshop.Net будет запускаться на Mac OS, можно узнать?

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

Лол. Я говорю, красноглазикам, застрявшим в 70-80х, будет непонятно.

Погугли «WinRT», «UWP», «WinUI» и далее там по ссылкам

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

Ну смотри, я набираю мост популар аппликатионс фор виндовс, там есть хром, адоб акробат, спотифи, teams, dropbox, telegram, итд. Что из этого на WinRT?

Я гуглил список приложений на WinRT, но буквально не нашел его.

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

Ты полено какое-то вообще.

Я тебе сказал, в Common Lisp - полноценный метаобъектный протокол.

У тебя классы сами - это объекты метаклассов, поля в них это тоже объекты классов, наследующихся от slot-definition.

Берешь определяешь свой класс поля, и туда любую информацию пихаешь. Потом добавляешь этот объект поля в метакласс своих классов, и будет у тебя там любая информация.

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

Я тебе сказал, в Common Lisp - полноценный метаобъектный протокол.

Я тебя удивлю, но не все знают что это такое, более того, не каждый даже знает common lisp, и им будет затруднительно получить ответ на простой вопрос, прочитав тысячу строк чего то непонятного, и не очень красивого.

У тебя классы сами - это объекты метаклассов, поля в них это тоже объекты классов, наследующихся от slot-definition.

Вот это нормальное объяснение.

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

Ты в каком то своем мирке живешь, где кроме лиспов есть подобная развитая система через которую все делают?

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

Я смутно помню, что в 90-е была конкуренция между Borland с их Delphi и гейцовскими, которые сделали ставку на C++. Кто победил, удел истории, и нет ни одной причины считать, что плюсцы вытянули соперничество за счет более лучших средств разработки – дельфи вроде как был объективно лучше, и с этим никто не спорит вроде. А когда нет честных способов победить, в ход идут нечестные.

Возможно, всё было иначе.

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

А что, в C#, Python, Java, и т.д. чтобы сделать аннотации понадобилось вмешательство разработчиков языка и компиляторов?

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

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

Я тебе сказал, в Common Lisp - полноценный метаобъектный протокол.

Я тебя удивлю, но не все знают что это такое

Что такое Python знают, а что такое MOP - не знают? Дожили, уже даже питонисты обленились.

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

Это какое-то распространенное заблуждение что MOP это какая-то магия.

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

Слоты классов это вообще банально как полено. Даже проще чем аттрибуты/аннотации, т.к. не вводят каких-то дополнительных лишних сущностей.

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

Ты в каком то своем мирке живешь, где кроме лиспов есть подобная развитая система через которую все делают?

🤦

https://docs.python.org/3/reference/datamodel.html#metaclasses

Ну, только все не делают, т.к. аннотаций часто (не всегда) достаточно.

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

Возможно, всё было иначе.

Когда Borland выкатил Delphi, то уже был MFC от Microsoft.

Могу ошибаться, но вроде в TurboPascal, который был у Borland-а до выхода заточенного под Windows Delphi, разработку GUI приложений под Windows особо и не поддерживал (ну типа у Borland-а были свои библиотеки для GUI на Pascal-е, которые с Windows не дружили).

Касательно C++ной части, емнип, Borland поднасрал своим пользователям, которые сперва сидели на Borland-овской OWL, а после выхода Delphi были вынуждены переезжать на VCL.

В общем, к моменту выпуска Delphi, Borland уже проиграл MS-у гонку за средства разработки для Windows.

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

нет ни одной причины считать, что плюсцы вытянули соперничество за счет более лучших средств разработки

У С++

  • Был лучший компилятор
  • Возможность использовать нативные библиотеки, официальные SDK
  • Переносимость между платформами
  • Уже был написан код, уже были написаны библиотеки
  • Строки в паскале это всегда боль, везде, нормальных контейнеров в Delphi нету вообще

Да и разве С++ заменил Delphi в этих странных приложениях с сетками из БД? По моему туда влез C#, и именно он убил Delphi.

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

Что такое Python знают, а что такое MOP - не знают? Дожили, уже даже питонисты обленились.

Я говорил о MOP в определенном контексте, знание что он есть в других языках, мне никак не помогало понять что принято использовать в CL для замены аннотаций.

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

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

Меня, как человека делавшего и то и другое, мягко говоря берут сомнения. Ну ладно, допустим. В каком виде будешь свои правки к компилятору распространять для желающих воспользоваться твоей библиотекой с аттрибутами? И сколько появится желающих использовать библиотеку которая требует патчей в компилятор?

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

В каком виде будешь свои правки к компилятору распространять для желающих воспользоваться твоей библиотекой с аттрибутами?

Библиотеки можно поставлять в «собранном» виде, это в основном синтаксические изменения. Я уверен полно проектов которым требуется что то нагенерировать предварительно, или запустить препроцессор.

И сколько появится желающих использовать библиотеку которая требует патчей в компилятор?

А сколько желающих будет использовать твою CL библиотеку?

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

Я еще забыл главный вопрос, сколько лисперов примут твою реализацию аннотаций, и сколько библиотек конвертеров нужно написать что бы они были совместимы с другими?

MOPKOBKA ★★★★★
()