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 ()
Ответ на: комментарий от rtvd

>И все это - на этапе компиляции, а не как в C (когда при запуске шарахнет и голову оторвет).

а С тут, кстати, не самый страшный пример... посмотрите на Python: там можно всё переопределить и вообще всю объектную иерархию просто нагенерить...

shty
()

> и сочетает в себе полезные идеи из Java, Python, C, C++, D, Ruby, Boo и Groovy

хммм... действительно, толстенько и зелененько :) лучше бы более нишевым языком занялся, действительно с какими-то киллер-фичами...

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

> Брам _уже_ там.

Собственно и название в стать.

Кстати, стремное какое-то название, неприличное. Сказать кому «— Я пишу текстовый редактор на Зимбе», — засмеют :)

zHACKa
()

Человек, родивший такое "чудо" как vim, родил новый язык? Наверное такой же "удобный". А кроме дурацкого синтаксиса другие интересные идеи есть?

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

> а vim'ом теперь только конфиги фиксю на удалённых машинах :)

Хозяйке на заметку: для таких случаев есть отличный nano, который позволяет забыть о Быдлоредакторе совсем.

yk4ever
()

Хотя, а знаете, "Enforcing a naming style" я в целом одобряю. Правильный ход.

Но клиники тоже много.

yk4ever
()

>новых программ, например текстовых редакторов

Да, текстовых редакторов сейчас очень мало.

Закрывающая скобка без открывающей - это вообще полнейший бред.

Да и вообще это какой-то ненужный велосипед.

vkos
()

Сравнение кода на Zimba с кодом C++ не впечатлило. Если вместо классов C++ использовать структуры, то будет более близкий эквивалент кода на Zimba, который будет занимать столько же кода. Единственное исключение - цикл for() в конце.

К тому же, по каким-то причинам, шрифт для кода на C++ почти вдвое крупнее - это дешевая попытка визуального обмана, или настройки моего браузера?

В-общем, совсем неубедительно. Проблемы, которые Брам пытался решить, никого не интересуют, либо прекрасно решаются без создания нового языка.

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

> Хозяйке на заметку: для таких случаев есть отличный nano, который позволяет забыть о Быдлоредакторе совсем.

nano - самый неудобный из когда-либо существовавших редакторов. Даже курение мануалов не помогло хоть сколько-нибудь приблизить его по эффективности хотя-бы к vi. Кстати, что Вы понимаете под Быдлоредактором?

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

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

Первый раз вижу слова "хотя-бы" и "vi" в одном предложении. Молодой человек, вы вообще хоть пару строчек в vi набрать пробовали?

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

> есть отличный nano

нано - это сейчас в моде, да.

> позволяет забыть о Быдлоредакторе совсем

уж не про вим ли это?

сравнивать вим и нано - это как %уй с пальцем

SilentBob
()

D - единственный язык, проблема которого (по мнению автора) во временных недостатках toolchain'а, а не в решениях при дизайне языка.

> Keywords are in capitals, this avoids the problem that you need to know all keywords when picking a name.


А так нужно знать все ключевые слова при выборе имени константы. Лучше было бы написать язык без ключевых слов. Примеров масса. Кстати, почему это MAIN и IO (имя модуля) - ключевые слова?

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

> Молодой человек, вы вообще хоть пару строчек в vi набрать пробовали?

Да. И режим ввода в zsh имитирует именно vi, а не vim.

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

> а vim'ом теперь только конфиги фиксю на удалённых машинах :)

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

anonymous
()

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

Вот это мне очень даже нравится!

Но одинарные скобки таки ужасны.

sv75
()

Почему, когда создают новый язык, то пишут, что он вобрал от себя все лучшее из других языков и избавился от их недостатков? Шаблонно как-то это.

Таких языков создается множество, и где они сейчас? К этому язычку внимание только из-за того, что его создал Моленар.

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

>ну, какбэ, например Haskell.

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

а что там так всё хорошо, и правда?

shty
()
Ответ на: "Try it" sucks. от Camel

>Плоховата try'илка. То ли дело у Ruby

>http://tryruby.sophrinix.com/


Здорово! Спасибо за ссылку. Руби интуитивно понятен, понравился.

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

Надеюьсь он, наконец, будет лишен недостатков vim'a?

он будет подсвечивать одиночную скобку.

spaceblock
()

Where I can find information about Zim-text editor? I followed link above, but I didn't find any information about it.

anonymous
()

Определённо, велосипед. Закапывайте, не нужно.

SpeedyWizard
()

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

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

>1) автоматическая проверка корректности кода и как оно связано с языком?

возможности верификации/тестирования напрямую зависят от дизайна языка. referential transparency, статическая типизация, design by contract, etc

>2) автоматическое доказательство - тут поясните, плз..

изоморфизм Карри-Говарда, например

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

>а пример есть такого языка?

Haskell, Clean, Coq, Agda2, Epigram, Isabelle

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

> Закрывающая скобка без открывающей - это вообще полнейший бред.

Это да, но символ начала блока без символа завершения (как в пистоне) - не менее бредовая идея. Я даже не удивляюсь, что оба бредогенератора родом из одной богатой на вещества страны.

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

> сравнивать вим и нано - это как %уй с пальцем

Правильно, сравнивать надо с vi, а не c vim. Вот ту nano пожалуй поудобнее. Но местная школота не в курсе, чем vim от vi отличается.

anonymous
()

Эх, где ж он был, когда Brainfuck делали?!

mind
()

Слабовато. Ждем язык, сочетающий отступы питона и xml-тэги для каждого оператора.

madcore
()

Ох-ох-ох. Итак,

избегая при этом присущих этим языкам недостатков.

s/избегая/вобрав/g просто-таки. Я всё понимаю, но одиночное наследование, да ещё со словом extends - это пхпизм.

Объявление REPLACE (я перекрываю тебя, сволочь!) - отдельная дурь.

Keywords are in capitals, this avoids the problem that you need to know all keywords when picking a name.

LANGUAGE.GOAL = [ 'CAPS', 'BLONDE' ]

} в качестве конца блока - этого не поймёт ни один вим. Или емакс. Даже человек.

[imagine] MAIN()

IO.write(«{-:»)

}

Compilation error: YOU USED LEFT BRACE!!!!1111 [/imagine]

list<Animal.I> animals = NEW() (из примеров)

Вся дурь C++ - только сегодня и только сейчас! Функция NEW - есть жесть!

1 # Zimbu example program: Unix style «echo»

2

3 MAIN()

4 bool writeNewline = TRUE

5 string sep = «»

6 bool didFirst

7 FOR arg IN ARG.getAll()

8 IF !didFirst && arg == "-n"

9 writeNewline = FALSE

10 ELSE

11 IO.write(sep + arg)

12 sep = " "

13 }

14 didFirst = TRUE

15 }

16 IF writeNewline

17 IO.write(«\n»)

18 }

19 }

LANGUAGE.GOAL.ADD( [ 'REINVENTINGBIKE', 'БЫДЛОКОДИНГ' ] )

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

PS: Vimер. Был я на этом вашем Емаксе... Преимуществ перед SciTe и тем мало, у меня не столько рук, и мануалом, распечатанным на ксероксной бумаге, можно убить. Зачем редактору текстовая игра?

Pythonist
()

>использование закрывающей фигурной скобки в качестве ограничителя блоков кода

Создается впечатление, что этот Bram сам никогда программ не пишет :-) При помощи парных скобок очень удобно ориентироваться в коде: это и их подсветка, и возможность "бегать по ним". В Emacs это очень удобно делать.

>Bram Moolenaar, автор Vim


Вот он, враг человечества ;-)

sinister666
()

> "Avoid: expression by itself is return value, causes mistakes."

это он зря

kelyar
()

Я, кстати, никогда не ставлю пробелов вокруг "=", зачем это нужно? Читабельность это не улучшает, только уменьшает срок службы клавиши Space и занимает полезное место в строке (у меня в программах длина строки <80 символов -- вот это действительно делает текст более читабельным).

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

> Vimер. Был я на этом вашем Емаксе... Преимуществ перед SciTe и тем мало ...

Ты не вкурил. Я тоже не с первого раза на емакс подсел, но теперь на вим и всякие скайты смотреть не могу. Да, как редактор вим может быть удобнее (и то спорно). Но даже для фанатов "модальности" есть viper-mode. Впрочем, этот вечный холивар неконструктивен. Никто никого ещё не смог переубедить, понимание само должно прийти.

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

>>ну, какбэ, например Haskell.

>а что там так всё хорошо, и правда?

ну, как бы, есть свои бенефиты, как видишь

zHACKa
()

Любой язык, посягающий на свободу выражения мыслей, обречён. Что Пистон со своими мудаковатыми отступами, что Фортран, что вот этот Зимбу. По-моему, прогеров таких языков надо сразу принудительно лечить от комплекса бога.

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

> Я даже не удивляюсь, что оба бредогенератора родом из одной богатой на вещества страны

:) Более того, они оба ровесники и оба сейчас работают в гугле (если википедия нам не врет)

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

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

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

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

> Более того, они оба ровесники и оба сейчас работают в гугле

Ждём новых разоблачений: "Скандалы, интриги, расследования! Руководство корпорации Google разрешает своим сотрудникам употреблять наркотики!"

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

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

Действительно, кому нужны эти глупые пробелы между токенами. То ли дело:

$v=delete($arg{v})||(@_?3:2);

Читается на одном дыхании! А сколько места сэкономили, не говоря уж об амортизации клавиши Space (а ведь это первейшая забота программиста!)

anonymous
()

Контроль стиля -- это круто. Моя наивная мечта: язык, который поддерживал бы пробелы в идентификаторах.

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

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

Скобок не должно быть вообще!!!!!!!!!!!

ЗЫ. Да, питонист. И да, отступы в питончике ни разу не мудаковые.

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