love5an: (Default)
Над портом SBCL на win32 сейчас работает Антон Коваленко ( [livejournal.com profile] akovalenko ).

Вот здесь можно посмотреть подробности, узнать текущий статус форка, и, естественно, скачать новые версии, в т.ч. в виде msi-инсталлятора: http://www.siftsoft.com/inprogress/forknews.html

Обсуждение тут: http://akovalenko.livejournal.com/35889.html

Я настоятельно рекомендую использовать именно эту версию SBCL при работе под Windows - там добалена многопоточность(спасибо [livejournal.com profile] dmitry_vk), добавлена поддержка stdcall-коллбэков, коллбэков в сторонние треды(грубо говоря, можно, например, лисповые коллбэки поставлять в CreateThread), пофиксены многие баги в подсистеме ввода/вывода, и так далее - ну по первой ссылке можно посмотреть подробности.

Для работы stdcall-коллбэков в CFFI необходимо применить мой патч, вот он:
http://cloud.github.com/downloads/Lovesan/virgil/cffi-sbcl-stdcall.patch
love5an: (R)
Мы тут с разными функциональщиками, в частности с эрланг-бомжами, и другими, собрались как следует посидеть в баре в эту субботу.

Это будет 2 мая, в 19.00; место - The William Bass, что на Лиговском 53, что напротив Галереи.


Столик забронирован на меня, то есть на Дмитрия.
Всем, желающим присоединиться - быть!

И еще маленькое объявление: никто не хочет поработать на Scala? Удаленно, скорее всего. Пишете мне на lovesan.ru at gmail.com
love5an: (R)
Так получилось, что по ряду причин я снова ищу работу, причем достаточно срочно.

Готов как на full-time, так и на part-time или разовые таски.

CV по ссылке: https://dl.dropboxusercontent.com/u/5521262/CV2015.pdf

Если вкратце - умею достаточно много всего, но основные скиллы находятся в области Windows(это как .NET, так и нейтив, на C++ и не только), Web-разработки (ASP.NET MVC, Silverlight, разнообразный client-side веб, вроде AngularJS, и т.д. и т.п.), Erlang, и конечно Lisp.

Предложения лучше всего слать на lovesan.ru at gmail.com

Тег lisp для попадания в рассылки.
love5an: (R)
(cons cat (cons cat nil))



В juick спорят, что нет nil. По-моему, вполне есть. Это ведь как про атеизм - атеизм это не религия такая, а просто отсутствие веры в бога.
love5an: (R)
В Петербурге, 28го ноября, пройдет очередной IT Global Meetup.
http://piter-united.ru/itgm/itgm.html

В числе участников - лисперы, во главе со мной и Мишей Глуховым([livejournal.com profile] rigidus).

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

Хотелось бы узнать, желает ли кто-нибудь еще вместе с нами подготовить какой-либо доклад на тему лиспа? Уже требуется подтвердить программу, так что дайте знать как можно скорее.
love5an: (R)
Такое написал: https://github.com/Lovesan/SimpleAudioPlayer

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

Библиотечка имеет COM-интерфейс, соответственно, ее можно использовать из разных языков - включены, в частности, CLI-интерфейс на чистом Си, интерфейсы для .NET и для Common Lisp.


(defvar *player* (make-instance 'cl-sap:simple-audio-player
                                :autoplay t))

(setf (cl-sap:sap-source *player*) *url*)

love5an: (R)
Вынесу свой коммент с ЛОРа.

Есть три базовых вида абстракции:


  • На потоках(функциональная)

  • На состоянии(процедурная/оо)

  • Синтаксическая.



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


  • Практически все другие языки программирования ради синтаксической абстракции заставляют нас переизобретать интерпретаторы и компиляторы(а это - невероятно сложное и нуднейшее занятие, потому кстати и малораспространенное - максимум, разве что, время от времени всплывают выродки на XML(maven'ы всякие, XAML и т.д.), плюс встраиваемый JS и всякое Lua - кривые и неудобные языки, отвратительнейше интегрирующиеся с нижележащей платформой).

  • В лиспе синтаксическая абстракция, кроме прочего, не лишает нас ни встроенных средств языка, ни возможностей комбинировать разные API построенные c использованием оной абстракции(чего не скажешь о интерпретаторах, см. выше).



Во-вторых, в том же CL кроме синтаксической абстракции доступны как модификация кода в рантайме, так и метаобъектный протокол. Эти два вида метапрограммирования, на самом деле, относятся ко второму вида а.(на объектах), и оба - гораздо менее мощны, чем синтаксическая абстракция(хотя и реализованы в CL на порядок приятнее и удобнее, чем во множестве других языков).
love5an: (R)
http://spb.hh.ru/article/14852

«»Самой редкой профессией в России стал Lisp-программист. По итогам 2013 г. на сайте hh.ru не было ни одной вакансии на эту должность (в 2011-2012 гг. не более двух).»
love5an: (R)
У меня тут появилась идея проекта.

Вобщем, суть в чем:

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

Сниппеты на самые разные темы, от HelloWorld до коннекта к конкретной БД.

Я думаю, это будет пользоваться популярностью и вот почему:

Несмотря на обилие опенсорса в наши дни, на самом деле всем лень смотреть полноценные проекты на github и подобных порталах. Всем лень читать документацию. Люди хотят набирать в гугле "connect to mysql from erlang" или "make http request in ruby" и получать код, который можно скопипастить. Ну, по крайней мере, подавляющее большинство программистов такого хотят это уж точно, даже если и скрывают.

Такая вот идея.

Что думаете?

UPD: Да, уже сказали про RosettaCode, но имхо там отвратительный интерфейс и wiki-движок. Крайне неудобно.
love5an: (R)
Я тут запушил на гитхаб разные свои утилиты для CL, может еще кому надо.
Они завязаны на SBCL в некоторых местах(md5 из SBCL, pathnames, sb-cltl2 для интроспекции), но по идее, как минимум пару вещей переносимой сделать точно можно.
https://github.com/Lovesan/lvsn-utils
love5an: (R)
Я тут снова взялся за SLXI.

И первое, что сделал - выкинул C#. Теперь кросс-интерпретатор будет написан на Common Lisp.

https://github.com/Lovesan/SLXI

Собственно, на данный момент готов только парсер, и некоторые функции для работы с данными SL, в частности - со списками и символами.

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

Еще, парсер не поддерживает комплексные числа(в SL будет синтаксис комплексных чисел как в Scheme) и read-eval, это потому что мне лень, да и автомат для лексера и так уже очень жирный.

Скоро начну работу над компилятором в байт-код.

Lisp FTW!
love5an: (R)
Народ, я тут устроился эрлангистом, буквально сегодня был первый рабочий день.
Возник такой вопрос - какие книжки порекомендуете почитать? Ну и вообще, статьи, другую литературу, howto, etc.
(Исключая Мегакурс Царёва(http://erlang-mnesia-video.ru/), ессно, это уже освоил в полной мере)


BTW: Это вполне повод добавить жж в списки рассылок по тегу erlang, я думаю, буду и про него(не только про лисп) писать в будущем

PS: В качестве объявления - завтра в Питере в 19.00, в Молли Шелтер, собираемся попить пива. Приглашаются лисперы, сочувствующие, да и вообще все кто желает
love5an: (R)
Мы тут в чятике придумали отличную идею для стартапа.
И заодно, для повышения популярности лиспа.

Надо написать на CL хреновину, которая занимает много кода, но нихрена не делает кроме пробрасывания вызовов одних функций в другие.
Придумать солидное название.
И главное, обозвать Enterprise Application Server.
А лучше Dynamic Enterprise Application Server.
Или даже Cloud Dynamic Enterprise Application Server.
И продать Ораклу.
Думаю, это неплохая идея для стартапа.

Есть даже некоторые наброски исходников(это вторая версия кода, в первой были недостаточно длинные идентификаторы):


(let ((core (dserver.application.core.runtime:retrieve-instance
             'dserver.application.core:application-core)))
  (dserver.application.core.runtime:initialize-core
      core
     'dserver.application.core.runtime:application-runtime
     :multiple-use))



Достаточно ли солидно смотрится, как думаете?

При продаже Ораклу можно давить на то что у них совершенно устаревшие технологии, а у нас Dynamic Application Server, а не просто Application Server, которые уже не модны.

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

Я считаю, нам по силам организовать прорыв в таких областях, как предоставление отказоусточивых(24/7) высоконагруженных систем в корпоративном секторе, или же в любой другой сфере, требующей продуманной расширяемой и масштабируемой архитектуры с длинными идентификаторами.

Не секрет, что на текущий момент рынок таких систем нуждается в революционном решении! Такое решение как раз вполне по силам предоставить специалистам моего профиля.
love5an: (R)
Собственно, наконец-то у меня дотянулись руки начать писать транслятор лисп-объектов в AST в SLXI.

Для тех кто всё пропустил - SLXI это кросс-интерпретатор моего лиспа, похожего на CL, написанный на C#


Ну так вот, какие TODO:

В SLXI(а конкретно, в классе LispObject) в первую очередь не хватает представлений для функций и для объектов ОО-системы.

Функций пока нет потому, что пока не определился, как они будут представляться, а именно - каким-либо байткодом, либо AST. Скорее всего AST, т.к. у SLXI задача состоит исключительно в том, чтобы забутстраппить будущий компилятор, написанный на самом лиспе, и мне дико лень тратить на сам кросс-интерпретатор излишне много усилий.

ОО-система же, естественно, будет похожа на CLOS, с некоторыми изменениями. В частности все объекты будут т.н. funcallable.
Кстати, в коде на гитхабе можно заметить, что такие вещи, как представление лексического окружения в трансляторе, представление переменных и деклараций, являются internal-объектами, грубо говоря C#-выми штуками. На самом деле, это временная мера; с введением ОО-системы они станут полноценными объектами, которые дадут пользователю лисп-системы возможность достаточно тонко управлять компиляцией на этапе раскрытия макросов.

Еще, как заметно, нету пока что и намека на парсер, т.е. reader. Нету потому, что он будет частью стандартной библиотеки. Считыватель будет очень расширяемым, настраиваемым, и вообще достаточно интересным. Про него подробнее тут: http://love5an.livejournal.com/377367.html

А вообще, есть много things to discuss об этом моем лиспе с представителями лисп-сообщества и интересующимися. В частности, надо будет продумать ОО-систему до конца, надо будет основательно поработать над стандартной библиотекой, ну и вот еще интересный вопрос про модульность - у меня вот уже давно висит идея сделать нормальную модульность лиспу, с блэкджеком и куртизанками, т.е. например наподобие как в .NET - со сборками(assembly), модулями и чем-то типа GAC. Еще интересный вопрос - IO-подсистема в стандартной библиотеке: сейчас мода на асинхронность(я вообще дико влюблен в async await в C#), и надо бы это как-нибудь красиво прикрутить. Вобщем, на одной из встреч надо будет эту тему поднять(ну и в интернете конечно буду писать про это всё).
love5an: (R)
Народ! Так получилось, что я недавно уволился и, съездив отдохнуть домой, теперь снова ищу работу в Санкт-Петербурге.

CV в PDF:
https://dl.dropboxusercontent.com/u/5521262/cv2013.pdf

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

Но это еще не всё.
Дело в том, что со мной сюда из Самары на неделю прилетел бывший одногруппник, а ныне очень толковый разработчик под Android, Савва. Он решил в ближайшем будущем обосноваться в Питере, и сейчас срочно ищет предложения о работе, и надеется сходить на собеседования на этой неделе. У Саввы, еще раз повторюсь, неплохой опыт разработки под Android, и желание учиться новым технологиям.
Резюме в doc:
https://dl.dropboxusercontent.com/u/5521262/Savva_Volobuev.doc


p.s. теги только для того, чтобы пост увидело больше людей
love5an: (R)

public static void CallWithEscapeContinuation(Action<Action> f)
{
  var escapeTag = new Exception();
  Action escapeProcedure = () => { throw escapeTag; };
  try
  {
    f(escapeProcedure);
  }
  catch (Exception e)
  {
    if (ReferenceEquals(escapeTag, e)) return;
    throw;
  }
}

Profile

love5an: (Default)
Dmitry Ignatiev

December 2016

S M T W T F S
    123
45678910
11121314 151617
18192021222324
25262728293031

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 20th, 2017 12:49 pm
Powered by Dreamwidth Studios