Как стать автором
Обновить

Комментарии 24

Я прочитал какой-то текст.

Не знаете что говорят по поводу продакшн-версии WebAssembly?

Знаю. Из первых рук: урожай бузины здеся не то что урожай дядек тама.

Что касается таджиков и экскаваторов. Цена обычно равнозначна, а второй вариант качественнее и быстрее. То же касается и других работ. Знаю, т.к. столкнулся лично.

Наверное это весь комментарий, который я хотел бы написать к этой статье.
Я бы не стал брать экскаватор чтобы сделать крыльцо. (пример не очень, имеется ввиду объем)

Загони тот экскаватор на участок сортирную яму выкопать — там цветочки, там картошка, там сад, там труба газовая торчит.

Есть такие маленькие, прикольные экскаваторики. Вполне себе выкопают что-нибудь небольшое.

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

Я и написал дальше в статье, что jQuerry вынужден тащить только из-за SplitPane, как багаж.


Про комментарии спасибо, не знал. Разочарования нет, просто учту на будущее :)

Смотрел, это был один из упоминаемых вариантов, который я отклонил. Он легкий, без jQuerry, но мне не понравилась отзывчивость на мышь — при движении даже со средней скоростью разделитель отрывался от указателя и замирал на месте отрыва. Допускаю, что я могу быть необъективным, но тогда это сыграло свою роль.

Для примера надо было еще заменить все маленькие i на скриншоте на большие. И получился бы отличный пример как не стоит именовать переменные

Ну зачем же писать ещё один интерпретатор брейнфака? :-) Я вот пытаюсь взять идеи лиспа и сделать язык с человеческим лицом. Моя идея в том, чтобы избавиться от бесконечных скобочек и хаотичного форматирования в пользу формата, заточенного для AST: tree — дерево типизированных узлов и ничего более.


Для примера приведу один из тестов, в котором указан эквивалентный код на лиспе:


test
    name \get last element of list
    lisp \( car ( last '( one two three ) ) )
    case tail
        one
        two
        three
    case three

Тут мы создаём список из 3 элементов и получаем из него последний. Не смотря на чуть большую "объёмность", язык jack значительно проще для восприятия при не меньшей мощности.


Я не большой спец в лиспе. Он меня пугает, как и 90% разработчиков. Думаю изменение синтаксиса исправит эту ситуацию. Буду рад дельным советам.

Каждый кулик свои предпочтения защищает. Мне, например, скобочки ничуть не мешают и выглядят очень по-человечески. Впрочем, вы можете выйти с вашим предложением к тому же Ричу Хикки, напишете ему про то, зачем он писал "ещё один интерпретатор брейнфака" и как изменение синтаксиса и убирание скобочек увеличит его комьюнити в 9 раз (придут 90% бывших напуганных разработчиков).

UPD: простите, ошибся — конечно же в 10 раз

Лиспов без скобочек много (например, dylan, ну а если немного упороться, то можно посчитать python за лисп — norvig.com/python-lisp.html), и все они хуже лиспов со скобочками. Скобочки вообще неважны — в джаваскрипте их ГОРАЗДО больше, чем в лиспе (если брать common lisp), и ничего, люди живут как-то.

Нормального разработчика нормальные языки не пугают — ни лисп, ни хаскель, ни R. Common lisp крайне практичный инженерный язык, нет смысла делать что-то другое «на идеях лиспа», ибо получится явно хуже. Если хочется более понятного и «чистого» (в смысле научности) языка — то есть scheme, тоже очень достойная штука, особенно если это racket, но в плане библиотек и общей взрослости CL всё-таки на голову выше.

И да, синтаксис — это не идея лиспа, это следствие. Если синтаксис поменять, то лисп как раз потеряет одну из своих основных идей — регулярность/консистентность.

dylan, python — я не увидел в них ничего похожего на лисп. Обычные ООП языки с куцым метапрограммированием в рантайме.


Common lisp крайне практичный инженерный язык, нет смысла делать что-то другое «на идеях лиспа», ибо получится явно хуже.

Необоснованное утверждение. Вы считаете лисп верхом совершенства?


Если синтаксис поменять, то лисп как раз потеряет одну из своих основных идей — регулярность/консистентность.

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

Вы считаете лисп верхом совершенства?

А разве в этом кто-то сомневается (из тех, кто знает CL не понаслышке)?

Не дружелюбен к новичкам — уже не идеал.

НЛО прилетело и опубликовало эту надпись здесь

Обоснуйте.

НЛО прилетело и опубликовало эту надпись здесь
Для начала, он вообще не похож ни на что, привычное новичку.

Новичку вообще никакой язык не привычен.


Разве что на Пайтон и Ямл похож вложением отступами.

Python, YAML, HAML, Jade, CoffeeScript… Их много и с каждым годом появляется всё больше. Как вы думаете, почему?


Далее вы почему-то пишете про язык view.tree, а не про формат tree и уж тем более не про язык jack.tree. Но ладно, давайте разберём и его, раз он вызывает у вас столько боли...


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

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


Для начала, на официальном сайте фреймворка есть только примеры.

Может потому, что это не "оффициальный сайт", а демонстрационное приложение? "Оффициальный сайт" — страница на гитхабе.


в Readme дойти до места, где появляются примеры шаблонов, пройти по ссылке на компонент (!) $mol_view, а там, в свою очередь, дойти до раздела

Как вы считаете, может быть выделить эту ссылку капсом?



переменная $my_button имеет значение $mol_view (это чуть теплее, но в очень грубом приближении)

Да нет, это действительно так: $my_button возвращает $mol_view с переопределёнными свойствами. Следующие два кода семантически эквивалентны:


$my_button $mol_view
    title \hello

Button $mol_view
    title \hello

Разница лишь в том, что первый код объявляет класс, а второй — локальную фабрику.


Вдобавок, позже окажется, что знак доллара здесь обязателен и указывает на то, что это именно имя класса (то есть компонента).

Все глобальные имена в $mol начинаются с доллара. Не важно, класс ли это, или функция, или поле, добавляемое в объект примесью.


Далее с типичным пайтоновским вложением описываются методы описываемого класса в виде пары метод-реализация.

Описываются свойства со значениями по умолчанию. Но компилируется это в полиморфные методы, да.


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

Как вы думаете, почему в YAML есть 6 форм записи строк, только 2 из которых — в кавычках? Почему в PHP есть 5 форм записи строк, только 2 из которых — в кавычках? И почему в tree достаточно лишь одной формы, и та — без кавычек?


Здесь за именем метода следует обычный слэш, а далее просто список его значений без какого-либо дополнительного синтаксиса.

А зачем тут ещё какой-либо дополнительный синтаксис? Что может быть естественней, чем каждый элемент с новой строки?


При этом с дефиса ВНЕЗАПНО объявляются комментарии, что неожиданно для знающих синтаксис Ямл или Маркдаун.

И ВНЕЗАПНО совершенно обыденная вещь для знающих синтаксис SQL, HTML, XML, SGML.


указать звёздочку, и тогда дочерние пары идентификаторов ВНЕЗАПНО становятся ключом и значением такого массива. То есть ваш синтаксис контекстно зависим.

Любой язык со значимыми отступами контекстно зависим. Я даже скажу более — любой сколь-нибудь полезный язык контекстно зависим.


Во-первых, они способны сами порождать методы создаваемого класса, притом, мемоизированные.

Возможность совмещать использование и объявление — весьма приятная особенность языка, позволяющая каждому подкомпоненту выделять отдельное свойство в родительском компоненте, не теряя при этом визуальную иерархию компонент.


Во-вторых, фоллбэк к дефолтному значению передаётся пробелом

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


передача параметра через ?, а указание ключа через!.. Вряд ли какой-либо общеизвестный синтаксис применяет такие неочевидные обозначения для часто используемых операций.

Предложите синтаксис по лучше.


Вот и получается, что Лисп, где практически всё определяется структурой (функция значение1 значение2 значение3...) намного очевиднее, а потому дружелюбнее, новичкам.

Если вам лень ходить по ссылкам, то замечу, что в jack.tree структура столь же тривиальная:


функция
    значение1
    значение2
    значение3
НЛО прилетело и опубликовало эту надпись здесь
Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации

Истории