Pull to refresh
32
0
Sergey Golovin @golovim

Software Engineer

Send message

Да… В комментариях начался какой-то абсолютно идиотский спора: 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, который так же как и Форт — стековый, но в большей степени развит на данный момент. У него есть стандартная библиотека, которая помогает решить многие прикладные задачи. Так что, если вам интересен Форт, то можно взглянуть на его современную инкарнацию.

Information

Rating
Does not participate
Location
Курск, Курская обл., Россия
Date of birth
Registered
Activity