Как стать автором
Обновить
32
0
Sergey Golovin @golovim

Software Engineer

Отправить сообщение

Да… В комментариях начался какой-то абсолютно идиотский спора: Vim vs IDE. Вообще не понимаю зачем так ставить вопрос, и IDE и Vim — это иснтрументы, а как известно, каждой задаче свой инструмент. Где-то IDE так же необходима, как воздух, а где-то в ней нет особой необходимости и там уже каждый сам решает что для него продуктивная работа — супербыстрная и мегавыразительная работа с текстом, либо же рефаторинги и code autocomplete. И! Что самое важное, абсолютно нормально, если вы сейчас пишите на Java в Idea, а через пять минут открываете Vim и пишите на том же JS. Нужно учиться работать эффективно, это да, но нельзя искать "серебряную пулю", которая решит все ваши проблемы

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

вот, например, готовый неплохой набор dotfiles (в том числе и для neovim).


https://github.com/daynin/dotfiles

Да, видел этот проект. Остановился на Jison просто потому, что использовал его до этого и он меня всем устраивал. Возмжоно, pegis ничем не хуже, а может и лучше. Какую-то сравнительную оценку дать не могу.

Да, вы правы, возможно, все можно свести к "operation". Попробую посмотреть в эту сторону.

Еще раз спасибо! Книгу уже скачал, обязательно прочту (ну как минимум поптаюсь прочесть).


И, что главное, последовательно и точно описываются все грабли, по которым вы, я так понимаю, намеревались уверенно станцевать.

Не исключено, что по нектороым уже станцевал :)

Наверняка, это отличная книга! Но, посыл статьи не был в том, чтобы написать именно лисп, он был в том, чтобы разобраться на примере лиспа, как пишутся формальные языки в современном мире. Например, на упомянутом в статье Jison'e написан CoffeeScript. Да и вообще, писать свои токенизатор/лексер/парсер/транслятор для реализации, скажем, языка размерки или конфигруации (да и ЯП) — не всегда хорошо и эффективно.

Спасибо за отличный пример! На самом деле, очень хорошая реализация. На в вашем примере, чуть меньше ключевых слов, отсюда чуть меньше правил разбора конструкций, использующих эти слова. Например, в вашем примере нет отдельного способа определить функцию, кроме как присвоить люмду переменной. В моей реализации есть и такой способ и классический:


(def (sum a b) (+ a b))

Вроде мелочь, а на самом деле это выливается усложнение правил разбора, так как теперь epression, который содержит имя в начале списка и агрументы далее — это не только вызво функции, а еще и ее объявление. Опять же, в вашем примере нет булевой логики, let scope и так далее, затом там много простых конструкций типа: null?, string?, number? eq? и так далее. Они делаются в одну строчку, но не расширяют возможности языка, я, например, в свою очередь перенес реализацию таких вещей напоследок, так как они делаются довольно просто и не ломают синтаксис.


Так же в приведенном вами примере никак не решают проблему everything is expression (поправьте меня, пожалуйста, если я ошибаюсь). То есть в результате выполенения такого кода:


(if (< 1 2) "yes" "no")

Не вернется ничего, так как это в вашем примере транслируется просто в if cond:… else:…. Да, в ruby бы это не было проблемой, но в моем случае — это проблема. Возможно, в следующих статьях я освещу эту проблему и ее решение.


Тем не мнее, еще раз повторю, ваш пример реалзиации lisp очень хорош!

Спасибо! Чуть позже постараюсь написать о более сложных конструкциях языка и проблемах их трансляции в JS
Это очень здорово! Есть только один вопрос: а вы случайно не путаете средства предоставляемые окружением разразботки языка и средства самого языка? Вы пишите о том, что у вас есть тесты, макросы, песочница. Эти вещи предоставляет ваш язык?
Я бы не сказал, что в 10 строк. Семантику этих самых вложенных списков еще определить нужно, разобрать и транслировать в JS. Задача была написть именно Lisp, синтасических элементов которого в JS нет.
Я бы еще посоветовал посмотреть в сторону www.computercraft.info/. Это дополнение для minecraft, в котором можно программировать компьютеры (а так же роботов) на языке lua, который чем-то даже похож на JavaScript (он тоже по сути прототипно-ориетированный). Среди детей сейчас и так популярен Minecraft, а с этим аддоном можно реально пробудить интерес к программированию.

Кстати, и для взрослой аудитории с этим аддоном будет очень интересно поиграться, так как там есть проводные и беспроводные сети, и многое другое. В последней версии вон вообще можно HTTP запросы делать, так что можно хоть twitter-client написать (вот вики по API computercraft.info/wiki/Category:APIs). В общем, довольно занятная штука. Вот, например, человек написал нечто похожее на ОС с псевдографическим интерфейсом www.youtube.com/watch?v=3srk2fgXr4Q.

Для ознакомления точно советую!
Отличный выпуск! Спасибо большое гостю и ведущим. Моментами получилось сумбурно, но в целом, все равно, очень хорошо и по делу.
А нужна ли для подобного сайта динамика?
И для чего этот вброс без какой-либо конкретики?
ККИ в онлайне — это здорово, но мне почему-то всегда больше нравилось играть обычной бумажной колодой Magic: The Gathering.
Спасибо большое за наводку! Скорее всего закажу несколько штук (одну себе, остальные друзьям/знакомым).
С другой стороны, именно этот момент дисциплинирует, требует постоянно держать в голове как данные, так и предшествующие преобразования над ними. Это неплохо развивает. Возможно. вы никогда не будете после написания первой программы на Forth прикасаться к нему снова, но аккуратность привитая Фортом останется даже при использовании других языков.
Необычность Форта только отчасти вызвана постфиксным типом записи, в большей степени необычна его стек-ориентированность. В лиспе хоть и используется префиксная запись, но интерес в нем вызывают другие моменты: ориентированность на лямбда-исчисление, мощное метапрограмммирование. В принципе, проще читать конструкции, где одной функции передается другая, и так далее, то есть, когда идет некая вложенность, чем конструкции, когда все данные лежат в стеке, а мы вызываем в нужном порядке операторы (или слова, в случае Форта) для достижения необходимого результата.
Да, вы безусловно правы, что на Форте сложновато решать многие задача разработки, но, в принципе, есть Factor, который так же как и Форт — стековый, но в большей степени развит на данный момент. У него есть стандартная библиотека, которая помогает решить многие прикладные задачи. Так что, если вам интересен Форт, то можно взглянуть на его современную инкарнацию.

Информация

В рейтинге
Не участвует
Откуда
Курск, Курская обл., Россия
Дата рождения
Зарегистрирован
Активность