LINUX.ORG.RU

Брам Муленаар представляет Зимбу

 , , , , , , , ,


0

0

Bram Moolenaar, автор Vim, представил вниманию общественности новый экспериментальный язык программирования Zimbu.

Язык предназначен для написания новых программ, например текстовых редакторов, и сочетает в себе полезные идеи из Java, Python, C, C++, D, Ruby, Boo и Groovy (в порядке убывания полезности), избегая при этом присущих этим языкам недостатков.

Интересными находками следует признать встроенный в язык контроль стиля (например, отсутствие пробелов вокруг знака «=» приводит к ошибке компиляции) и использование закрывающей фигурной скобки в качестве ограничителя блоков кода — например hello.zu выглядит так:

MAIN()
  IO.write("Hello, World!\n")
}

В настоящее время доступен транслятор Zimbu в C, способный скомпилировать собственный код, ведется работа над ZWT (Zimbu Web Toolkit) и Zim (тектовый редактор).

>>> Подробности

★★★

Проверено: maxcom ()

Ответ на: комментарий от shty

Тока ковыряние на заданную тему не очень доставит. Для доказательств есть отличный ЯП Coq созданный специально для доказательств

impfp

anonymous
()
Ответ на: комментарий от kto_tama

http://glagol.tut.su/ Правда := намекает на паскаль, зато на русском и вообще полный ужас прилагается :}

Deleted
()

>Интересными находками следует признать встроенный в язык контроль стиля (например, отсутствие пробелов вокруг знака "=" приводит к ошибке компиляции

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

Deleted
()
Ответ на: комментарий от naryl

> nano - самый неудобный из когда-либо существовавших редакторов.

По сравнению с vi - это просто сказка.

> Даже курение мануалов не помогло хоть сколько-нибудь приблизить его по эффективности хотя-бы к vi.

Да, фич мало. Зато мал и удобен. Для мелких правок конфигов - самое оно.

> Кстати, что Вы понимаете под Быдлоредактором?

vi. Мерзость, мерзость, мерзость, мерзость.

yk4ever
()
Ответ на: комментарий от anonymous

> Это да, но символ начала блока без символа завершения (как в пистоне) - не менее бредовая идея.

Это если всяким говном вместо текстового редактора пользоваться - то конечно.

yk4ever
()
Ответ на: комментарий от matumba

> Любой язык, посягающий на свободу выражения мыслей, обречён.

Всех "свободно выражающихся" пионеров - вывести на задний дворик и расстрелять. Особенно перлистов, этих расстрелять дважды.

Чтобы остались только нормальные инженеры, которые пишут чёткий стандартизованный код, а не кашу, которую хрен разберёшь.

Когда же вы поймёте, что код читают в десятки раз чаще, чем пишут...

yk4ever
()
Ответ на: комментарий от shty

> а что там так всё хорошо, и правда? > shty (*) (22.10.2009 14:52:09)

Там все даже лучше чем хорошо.

anonymous
()
Ответ на: комментарий от Deleted

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

Whitespace уже есть.

yk4ever
()
Ответ на: комментарий от yk4ever

Там буквы не используются. Хотя тоже неплохо.

Deleted
()
Ответ на: комментарий от yk4ever

> Когда же вы поймёте, что код читают в десятки раз чаще, чем пишут...

Когда же ты поймёшь, что питоний индент не спасает от нечитаемого говнокода... Лучше б Гвидон пробелы между токенами форсил - было б куда больше пользы. Хотя бы додумался использовать пробелы вместо запятых как разделители. Но куда там, дальше Модулы и С++ кругозор твоего героя не простирался. Того же сорта типчик, что и Моленар, только чуть более грамотный.

anonymous
()
Ответ на: комментарий от anonymous

>Когда же ты поймёшь, что питоний индент не спасает от нечитаемого говнокода...

Не спасает, да. Но таки облегчает восприятие, это таки тоже да. И еще. Покажи мне язык, который СПАСАЕТ от нечитаемого говнокода?

Прозревая трясущего функциональщиной (что, в целом, тоже не факт еще) анонима усложню задачу. Пркажи мне императивный язык, спасающий от говнокода. =)

>Лучше б Гвидон пробелы между токенами форсил - было б куда больше пользы.

В смысле, между всякими там знаками равенства как у нашего героя топика? Знак равенства при передаче именованных параметров в процедуру ты тоже предлагаешь пробелами отделять, умник ты наш?

>Хотя бы додумался использовать пробелы вместо запятых как разделители.

А нафига? Вот, собственно говоря, действительно нафига? Ты что, думаешь, что если разделять параметры, передаваемые в процедуру, не запятыми, я пробелами, код станет компактнее и читаемей? В том то и дело, что нихрена подобного, воспринимать его будет только сложнее. Я уже столкнулся с этим, когда просматривал html верстку с кучей разных классов на элемент, разделенных пробелами. При беглом взгляде трудно воспринять их как три разных класса вот хоть ты тресни.

YogSagot ★★☆
()
Ответ на: комментарий от YogSagot

>При беглом взгляде трудно воспринять их как три разных класса вот хоть ты тресни.

Да легко.

Deleted
()

>Язык ... сочетает в себе полезные идеи из Java, Python, C, C++, D, Ruby, Boo и Groovy (в порядке убывания полезности), избегая при этом присущих этим языкам недостатков.

>Интересными находками следует признать встроенный в язык контроль стиля (например, отсутствие пробелов вокруг знака "=" приводит к ошибке компиляции)


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

wfrr ★★☆
()

Выглядит как бессмыслица.

P.S. а лор-то пилят

eduard_pustobaev ★★
()
Ответ на: комментарий от YogSagot

> Покажи мне язык, который СПАСАЕТ от нечитаемого говнокода

Нет таких, о чём и речь. Попытки навязать стиль ценой потери гибкости ничего не дают.

> Знак равенства при передаче именованных параметров в процедуру ты тоже предлагаешь пробелами отделять, умник ты наш?

Дык, я разве виноват что Гвидо по дури перегрузил знак равенства для этой операции. Это ж надо было додуматься, блин. Вообще то конечно, отделять пробелами _каждый_ токен - это перебор. Но в большинстве случаев мы и так этим занимаемся (кроме чудиков, экономящих на пробелах).

> Ты что, думаешь, что если разделять параметры, передаваемые в процедуру, не запятыми, я пробелами, код станет компактнее и читаемей?

Я думаю, что писать такой код будет значительно проще, а читаемость как минимум не ухудшится.

> Я уже столкнулся с этим, когда просматривал html верстку с кучей разных классов на элемент, разделенных пробелами. При беглом взгляде трудно воспринять их как три разных класса вот хоть ты тресни.

Это твои личные тараканы

anonymous
()
Ответ на: комментарий от yk4ever

>> Кстати, что Вы понимаете под Быдлоредактором?

> vi. Мерзость, мерзость, мерзость, мерзость.

Типичный высер ниасилившего школьника.

anonymous
()
Ответ на: комментарий от anonymous

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

naryl ★★★★★
()
Ответ на: комментарий от anonymous

>> Ты что, думаешь, что если разделять параметры, передаваемые в процедуру, не запятыми, я пробелами, код станет компактнее и читаемей?

> Я думаю, что писать такой код будет значительно проще, а читаемость как минимум не ухудшится.

ocaml например

anonymous
()

Непарные скобки - это ЧУДОВИЩНО. Им что, другого символа для закрытия не хватило? Хотя бы Фортовской точки с запятой?

KRoN73 ★★★★★
()
Ответ на: комментарий от bff7755a

>А что иммено в vim'е вы считаете недостатками?

Порог вхождения :)

KRoN73 ★★★★★
()
Ответ на: комментарий от kto_tama

пора бы уже и с русской нотацией язык придумать

Рапира, Лого, Рая, Форт с алиасами... :)

Реальный код, кстати:

\ ...

: начальная_точка  ( -- )  0 to точка ;

: показать_точки  ( -- )
    указатели unless
        new-list
        зона list# 0 ?do
            0 over list+
        loop
        to указатели
    then

    начальная_точка
    зона list# 0 ?do
        показать_точку
        10 sleep
        следующая_точка
    loop
;

: убрать_точку  ( -- )
    указатели точка list@
    false unspawn
    10 sleep
    следующая_точка
;

: убрать_точки  ( -- )
    указатели unless exit then

    начальная_точка

    зона list# 0 ?do
        убрать_точку
    loop
;

\ ...

:)

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

Да, русско-английский микс - это круто. Почему бы часть идентификаторов на греческом не забабахать, или там на санскрите?

anonymous
()
Ответ на: комментарий от sinister666

>Я, кстати, никогда не ставлю пробелов вокруг "=", зачем это нужно? Читабельность это не улучшает

Улучшает. Без пробелов выражение воспринимается как один токен и требуются лишние доли секунд на парсинг. С пробелами - это уже три (или более) токенов, воспринимающихся как целое. Читается быстрее.

>у меня в программах длина строки <80 символов -- вот это действительно делает текст более читабельным


80, не 80, но верно.

KRoN73 ★★★★★
()

Интересно, горячились бы так анонимусы, если бы вместо '}' требовалось слово 'end'? Так уже есть, например, в lua.

zzo
()
Ответ на: комментарий от YogSagot

>>Скобок должно быть четное количество!!!!!!!!!!!
>Скобок не должно быть вообще!!!!!!!!!!!


Скобки должны быть там, где они реально оправданы :)

>ЗЫ. Да, питонист.


Э... А что, в Питоне уже скобки отменили? ;)

KRoN73 ★★★★★
()
Ответ на: комментарий от anonymous

>Да, русско-английский микс - это круто.

Можно бы было и чисто русский сделать, налепив русские алиасы базовым словам, но русификация не ставилась самоцелью :)

>Почему бы часть идентификаторов на греческом не забабахать, или там на санскрите?


Наверное, потому что в команде не было разработчиков с нативным греческим или санскритом :)

KRoN73 ★★★★★
()
Ответ на: комментарий от zzo

>Интересно, горячились бы так анонимусы, если бы вместо '}' требовалось слово 'end'?

Естественно, что нет :)

KRoN73 ★★★★★
()
Ответ на: комментарий от zzo

Для кого - как. Для всех, воспитанных в нормах западной письменности скобки (круглые, квадратные, фигурные) - всегда парный символ.

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

А вот end без begin - дело привычное.

KRoN73 ★★★★★
()
Ответ на: комментарий от zzo

> Интересно, горячились бы так анонимусы, если бы вместо '}' требовалось слово 'end'?

Тоже плохо, но всё же лучше одиноко торчащей скобки. Много я вариантов повидал, но парные скобки таки самый практичный вариант для структурирования кода и данных. Пусть оно не так красиво смотрится, но зато работу облегчает.

anonymous
()
Ответ на: комментарий от anonymous

>Много я вариантов повидал, но парные скобки таки самый практичный вариант для структурирования кода и данных.

Дело привычки :) Фортовские : ... ; не менее практичны. Да ещё на одно нажатие меньше делать нужно ;) Даже begin .. end или if .. endif не хуже воспринимаются.

KRoN73 ★★★★★
()
Ответ на: комментарий от anonymous

> Лучше б Гвидон пробелы между токенами форсил

осиль автоформатирование в eclipse, а также pylint и astyle и будет тебе "щастье"

shty ★★★★★
()
Ответ на: комментарий от KRoN73

> Для всех, воспитанных в нормах западной письменности скобки (круглые, квадратные, фигурные) - всегда парный символ.

Видать Брам слишком увлекся африканской культурой... Любой даже одиночный символ был бы более уместен. Ну или влепить ";;" как в окамле. В принципе довольно выразительный и заметный знак.

anonymous
()
Ответ на: комментарий от shty

> осиль автоформатирование в eclipse, а также pylint и astyle и будет тебе "щастье"

Да я ж не за себя переживаю, а за тех болезных, которые на пробелах экономят и боятся клавишу Space поломать.

anonymous
()
Ответ на: комментарий от zzo

Кстати, все эти "end" жутко раздражают. Сразу чувствуется эргономика использования спецсимволов типа "{}"

LamerOk ★★★★★
()
Ответ на: комментарий от LamerOk

>Сразу чувствуется эргономика использования спецсимволов типа "{}"

Правда, они раздражают своей избыточностью после Питона :)

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

> Даже begin .. end или if .. endif не хуже воспринимаются

Воспринимаются не хуже, но редактору проще с парными скобками работать. Кстати, я недоумеваю, что мешало Гвидо сделать такие же : ... ; - читаемость не ухудшилась бы и гибкость не пострадала.

anonymous
()
Ответ на: комментарий от KRoN73

А что, в Питоне уже скобки отменили?

конечно нет, но вот тут, к примеру, их нет и не надо:

def foo():
    print 'bar' 
shty ★★★★★
()
Ответ на: комментарий от anonymous

>но редактору проще с парными скобками работать

Только совсем примитивному :)

>Кстати, я недоумеваю, что мешало Гвидо сделать такие же


Сам принцип: «структурное написание может выделять блоки». Я сам думал в начале 1990-х «неплохо бы было написать язык, который бы понимал структуру отступов». Но я не настолько был фанатичен, к тому времени я познакомился с Фортом и свои языки писать перестал :D

>читаемость не ухудшилась бы


Немного ухудшилась бы. Этот end висел бы перед глазами на каждом шагу.

KRoN73 ★★★★★
()
Ответ на: комментарий от anonymous

>Да я ж не за себя переживаю, а за тех болезных, которые на пробелах экономят и боятся клавишу Space поломать.

ага, за space боимся,а глаза - нет? :)

shty ★★★★★
()
Ответ на: комментарий от KRoN73

>Без пробелов выражение воспринимается как один токен и требуются лишние доли секунд на парсинг.

Насчет долей секунд -- спорно, т. к. лично я вполне в состоянии мгновенно распознавать знаки, в том числе и "=" (по крайней мере, с привычным мне шрифтом). Наоборот, размашистый текст воспринимается хуже, потому что символы, несущие в себе информацию, прямо-таки размазаны по экрану. Меня лично раздражают исходники, которые буквально пучит от излишек пробелов.

sinister666 ★★
()

ведется работа над Zim (тектовый редактор)

Уже есть проект с таким названием — десктоп-вики на перле (сам ей какое-то время пользовался).

Может пора вводить патенты на названия опенсорс проектов..?

bebebe
()
Ответ на: комментарий от sinister666

>Насчет долей секунд -- спорно

Не спорно. Предварительно токенизированный текст воспринимается быстрее. Особенности психики, давно проверенные экспериментально. поэтому_кстати_сишный_стиль_имён читается легче, чемПопулярныйНынчеКэмлКейс.

>т. к. лично я вполне в состоянии мгновенно распознавать знаки


Однако, механизмы распознавания у всех людей одинаковы. То, что ты свой парсер натаскал на таких конструкциях, ещё не делает их менее сложными для восприятия :)

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

> Немного ухудшилась бы. Этот end висел бы перед глазами на каждом шагу.

Не, ну очень логично ведь - ':' - начало блока, как и есть в Питоне. А ';' - конец блока, как часто в человеческом языке. Если semicolon на отдельную строку выносить, получили бы плавно закрывающиеся уровни, как в С-like, а не ту лесенку и дикие скачки, когда надо на глаз прикидывать текущий уровень по кол-ву невидимых символов в начале (да, щас начнут опять втирать про умные редакторы, предвижу). Ну пришлось бы конечно отказаться от ';' как разделителя стейтментов, но оно и к лучшему может.

anonymous
()

Странно, на вскидку нет очевидных преимуществ для написания текстового редактора, а для общих задач есть и более устоявшиеся языки. По идее язык должен быть декларативным, имея встроенные функции для быстрой работы с текстом, т.е. подсветка (примитивы, для скриптов/логики), индексирование, diff-match-patch, не детерминированные (т.е. работающие параллельно) парсеры контекстно-свободных грамматик и прочее.

Иными словами должно быть удобно в десяток строк сделать подсказку/code completion, прыжки по файлам (ctrl+click по имени функции к примеру), визуализация структуры кода, автоматическое тестирование и многое другое. Брам же даёт просто другой синтаксис. Почитав спеку вдруг стало ясно, что всё (неявное распараллеливание кода, события/observers, базовые прикладные вещи, такие как индексируемая БД для любых структур и прочее) нужно писать/прикручивать самому. Это же можно сделать в D или в любом другом языке, просто многие вещи уже будут реализованы.

Выразительность тоже хромает, замыкания и ленивые выражения резко сокращают код и нагрузку на мозг при последующем чтении, кто пишет на Ruby, тот знает как оно. Нет надобности выносить кусок логики, имеющий смысл только в одном месте (к примеру обработчик строк из запроса к БД) в отдельные функции, теряя при этом локальный контекст (переменные, которые живы только сейчас и уникальны для этого треда).

Короче... те же яйца (обычный императивный OO язык), только в профиль + отсутствие биндингов на популярные либы.

SardarNL
()
Ответ на: комментарий от shty

>ну что сказать, не все скобки, а фигурные, типа {}.. или я съехал с темы? :)

Это я так прикинулся валенком, как только в разговоре возникла неопределённость на тему скобок вообще и фигурных в частности :) В контексте Форта, где и круглые скобки не нужны в общем синтаксисе. Они там как блочный комментарий используются :)

KRoN73 ★★★★★
()

> откройте для себя C-x C-f /ssh:user@host:/path/to/file и можете выкинуть вим из свое головы окончательно)

открыл ещё когда читал мануал. фокус в том, что я не только файлы редактирую на машине :) мне ещё shell там нужен (я в курсе, что есть m-x shell) и можно демона поднять удалённо и коннектиться туда emacs'ом. просто давайте, в отличие от г-на Муленара, без фанатизма :)

а начавшийся холивар nano vs vi(m) предлагаю закончить просто: на вкус и цвет все фломастеры разные :)

naquad
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.