Pull to refresh

Comments 24

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

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

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

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

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

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

Но, согласен, выбирать нужно учитывая окружение, удобство и здравый смысл.
UFO just landed and posted this here

Я и написал дальше в статье, что 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 не понаслышке)?

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

UFO just landed and posted this here
UFO just landed and posted this here
Для начала, он вообще не похож ни на что, привычное новичку.

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


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

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
UFO just landed and posted this here
Sign up to leave a comment.

Articles