LINUX.ORG.RU

tcl vs rebol/red

 , , ,


1

5

Ваши мысли.

Вот мои: конечно, круто иметь компилятор в натив, но я так понял, что до лиспа они всё же не дотянули в этом плане. Но, допустим, тут они побеждают tcl.

С другой стороны, классно иметь множество типов, но формат даты типа 1-Jan-1990 не дают никакого шанса на локализацию. Да и вообще, после опыта лиспа сложность определения типа литерала выглядит явным путём не туда. ПРоблема здесь в том, что все форматы встроенных типов данных (насколько я понял), глобальны. Т.е. если я хочу свой DSL, я быстро могу вступить в конфликт. Даже и внутри самого языка такой конфликт есть. Например, 123.45 - это число, 123.45.6 - это tuple из 123.45.6 . А если я хочу tuple из двух чисел 123 и 45 ? Кривота получается.

С другой стороны, есть сходства: очень гибкий и простой синтаксис, батарейки, кросс-платформенность.

Соответственно, ваши мнения. Может быть, кому-нибудь пришлось на red/rebol что-то делать.

★★★★★

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

А. Я-то думал, что-то серьезное.

gnat выдаёт код в среднем в два раза медленней, чем g++.

Ну возьмем наугад https://benchmarksgame-team.pages.debian.net/benchmarksgame/performance/mande...

Видим, что разница между Ada и С++ (Ada 2005 GNAT #3 и C++ g++ #7) вообще в пользу Ады. Так что не надо про «в среднем в два раза медленнее».

А если посмотреть на рекордный вариант Си++-кода, там ручное использование векторных расширений. Программы просто неэквивалентны.

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

А если посмотреть на рекордный вариант Си++-кода, там ручное использование векторных расширений. Программы просто неэквивалентны.

Здесь тоже ручное использование чего-то?

https://benchmarksgame-team.pages.debian.net/benchmarksgame/program/knucleoti...

https://benchmarksgame-team.pages.debian.net/benchmarksgame/program/binarytre...

https://benchmarksgame-team.pages.debian.net/benchmarksgame/program/regexredu...

И C++ используют именно из-за возможности в узком месте воткнуть векторные расширения, свой менеджер памяти и планировщик. И именно поэтому не перейдут на Аду.

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

Здесь вообще речь про синтаксис

абстрактный или конкретный ? :)) первый должен быть композабельным, второй — максимально устранять неоднозначности.

Могу сказать про Mathematica, с которой работал довольно плотно. Правда, версии 4. И про BlackBox.

Что плохо в Mathematica - отсутствовал (на тот момент) всякий аналог go to source.

я просто потыкал примеры последней с сайта (про Machine Learning и прочее), там где у них интерактивный eval. потом сохранил это в Notebook. посмотрел на него глазами, в текстовом редакторе.

тот же EIWL2-22-machine-learning.nb — 9.17 Мб, в машиночитаемом виде (блобы картинок в Base64, выражения как Cell с ExpressionUUID->«какой-то GUID»)

всё это композабельно на уровне Cell, те же GUI лейауты, выражения и сам контент со скриптами.

векторный гипертекстовый потом там работает на уровне этих клеток, со ссылками на отдельный GUID.

В любом интерфейсе а-ля notebook с image-based development есть ловушка, что ты определил функцию, сослался на неё, стёр исходник, а функция в памяти осталась. При отсутствии указания, что вот эта функция должны быть в этом файле отловить эту ошибку до перезапуска образа невозможно.

походу пофиксили. по крайней мере, с GUID ссылками вроде бы всё сохраняется в notebook нормально.

да, синтаксис у этого *.nb блокнота тензорный машиночитаемый. но ведь это и неплохо же? главное чтобы неоднозначности устранялись.

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

в смысле простой текстовый? можно. там нужно определить форматтеры для экспорта/импорта, и кто-то это уже неоднократно проделывал.

можно сериализовывать, кстати в разные форматы — не только «текст как уникод» но и «текст как XML» или там в ODF с расцветкой и прочим rich text контентом.

можно даже AST экспортировать в graphML, и далее чем-то другим обработать (либо компилятор в LLVM допилить)

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

Когда я заинтересовался одно время BBCB, я первое, что захотел - это возможность сериализовать тамошние модули для хранения в системе контроля версий как текст. Мы там конкретно упёрлись в этом месте в тупик. Раскраску нормальным образом нельзя сохранить. Хотя если поставить ограничения, что раскрашивается только токен лексера целиком, то тогда можно с помощью комментариев её выражать.

эта проблема решается, как обычно — несколькими способами :)

например, эта сборка BBCP от romiras — расширена для поддрежки plain text utf-8 как обычный формат, в добавок к *.odc

содержит модуль StdPlainDoc, который (несложный, как ты можешь видеть) реализует экспорт/импорт из plain text utf-8.

далее, например сами подсистемы конвертированы из CompoundDoc *.odc в такой plain text *.cp : например [url=]models.cp

это, кстати — Model в смысле Model-View-Controller для *.odc.

другие способы — скриптовать внешней программой, например, написать внутри BBCP модуль «экспортировать указаный модуль в *.cp», «перебрать все модули и экспортировать каждый в *.cp»

и запускать её для автогенерации исходников в plain text utf-8 способом, похожим на этот: build-dev0 и далее build — из shell запускается BlackBox, компилирует (подсистема dev0, Dev0Compiler.Compile('Lin/Mod', 'Dl.txt')  — кстати, *.txt) указанные подсистемы из *.txt в *.odc, вот эта сборка — там в подкаталоге BlackBox

посмотри как устроены скрипты run-Blackbox{,1}, run-dev0

вообще, в официальной сборке BlackBoxCenter и blackboxframework.org

используется CI непрерывная интеграция, сборки вот тут

строятся автоматически, с ченждлогами, логами компиляции и тестов.

так что проблема решаема же.

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

Раскраску нормальным образом нельзя сохранить. Хотя если поставить ограничения, что раскрашивается только токен лексера целиком, то тогда можно с помощью комментариев её выражать.

можно. см. models.cp по ссылке выше. где-то видел толи репозиторий с гитхаба со сборкой BBCP, то ли подсистему ODF толи подсистему XML которая умеет весь этот текст rich text модели сохранять «как есть» в XML.

его и можно ложить под систему контроля версий. ну или *.cp в plain text utf-8 как в сборке выше.

Хотя если поставить ограничения, что раскрашивается только токен лексера целиком, то тогда можно с помощью комментариев её выражать.

вообще, вот ребята изобретают велосипед. туда надо LitProg воткнуть, то ли в виде Emacs org-mode M-x org-babel-tangle то ли CLiP-style в комментариях.

COM-объект, образующие граф с внутренними указателями, тем более нельзя сериализовать. Т.е. исходник BBCB нельзя выдрать из BBCB и это ад (или нужно писать свой diff, свой patch, свой git).

можно же. см. сериализацию AST в GraphML.

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

Кроме того, наличием коммандеров они (сектанты) оправдывают отсутствие консольного REPL. Но эргономика у коммандеров, по сравнению с REPL, мягко говоря, прихрамывает.

при этом в скриптах ночной сборки для CI они всё равно запускают свой «как бы» REPL через HEREDOC из shell-скрипта и run-dev0, run-Blackbox

собственно, от этого один шаг до нормального REPL:

while [ true ]; do
	read $REPL
	echo $REPL | run-BlackBox
done

в консоли или через сокеты :)

Но эргономика у коммандеров, по сравнению с REPL, мягко говоря, прихрамывает.

угу, вместо того чтобы автоматически определять конец строки, многострочные строки, * ** , подсказки — просто впендрючим ~ в конец

^Q Dev0Compiler.Compile ('Lin/Mod','Dl.txt') ~

как бы не зря шелл скрипт пишут :))

если ты запишешь видео, где словами всё объясняешь и на примерах показываешь, и выложишь его на ютьюб.

это вряд ли. проще на словах объяснить, текстом (на который можно сослаться)

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

А если посмотреть на рекордный вариант Си++-кода, там ручное использование векторных расширений. Программы просто неэквивалентны.

Здесь тоже ручное использование чего-то?

Мне лень выискивать причины, да и Аду я практически не знаю. Но, исходя из того, что результаты бенчмарков Си++ различаются в разы на одной задаче, я считаю, что программы на Аде просто недооптимизированы. Никаких заключений «в среднем медленнее в 2 раза» делать не приходится.

И C++ используют именно из-за возможности в узком месте воткнуть векторные расширения, свой менеджер памяти и планировщик. И именно поэтому не перейдут на Аду.

На Аду не перейдут, но по совершенно другим причинам.

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

На данный момент - как сделать такой же простой и гибкий синтаксис, как tcl, но со списками.

нафига ? есть lisp у него всё про списки есть :-)

да у того-же tcl в 80% случаев данные внутри лежат как списки. Преобразования «в текст/из текста» производятся исключительно по мере надобности и программист не должен на это закладываться.

И вообще какая-то нердовщина - какая разница прикладнику как язык внутри представляет данные ? да хоть голыми в душе он их представляет..:-)

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

MKuznetsov ★★★★★
()
Последнее исправление: MKuznetsov (всего исправлений: 1)
Ответ на: комментарий от den73

хотя попрограммировать на иероглифах было бы прикольно.

Да. Иконки на рабочем столе и тулбаре - это как раз эрзац-иероглифы.

довёл ситуацию до экстрима — купил механическую клаву Gamdias Hermes ( раскладка понравилась, 5 макрокнопок слева и 6 снизу под пробелом), замакросил самые частые кнопки типа C-c, копипаст, M-x, C-x, «выполнить выделенное в REPL», навесил отдельные профили для Dolphin SmallTalk, Emacs, SLIME, Racket — сижу-радуюсь :))

ещё мыша есть 20-кнопочная, MadCatz MMO TE. покупалась не столько ради MMO :) сколько ради трёхмерки, и в качестве педалей к емаксу :))

так вот, там в утилите программирования макрокнопок иконки как раз иероглифами.

правда, не хватает возможности создавать свои собственные. я так понимаю, send command технически можно сделать в отдельный window, но не в визуально-гуёвой приспособе, а на каком-нибудь AutoHotkey попрограммировать придётся :)

линукс тут при том, что настроеные профили и там тоже работают. программирование профилей вот не работает.

А что, там в рамках диалекта можно отменить форматы по умолчанию, т.е. сделать, чтобы 18-January-2001 было не датой?

в рамках диалекта это fexpr не интерпретированный ещё, ЕМНИП. и с ним можно сделать всё что угодно :)

Но у меня остались очень тёплые ощущения от тикля (за исключением отдельных вещей типа лямбд, которых они просто не знали, но которые удалось скостылить).

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

то есть, с многострочными лямбдами вот облом :)

а вообще да, гуй там приятно строится.

но можно взять и какой-нибудь GTK-server для похожих целей, с немного другими виджетами, или что-то похожим образом навелосипедить.

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

Basic-подобный REXX с ОО расширениями типа ooREXX

А он разве был где-то кроме OS/2? Питон-то сразу переносимым писали.

если не считать мейнфреймы :) ещё был в Amiga классический REXX, не ОО.

там кстати, весь GUI был скриптуемым: приложение определяет «порты», в которые можно говорить команды. программно нажимая на кнопки. то есть. команда может быть у приложения в целом, либо дефолтная — у отдельных кнопок :) и потом скриптуется на REXX через ADDRESS.

ooREXX потом портировали подо всё (Lin, Win, Mac), и даже больше (выложили исходники). оно встраиваемо в С++ с мультитредингом.

в полуоси SOM объекты (того же WPS) были по умолчанию экспортированы в REXX, в чём была сила.

например, отнаследовать на REXX объект WPFolder (папка на рабочем столе WPS) и создать класс «папка с кнопкой», который на вход в папку просит ввести паролю :)

или отнаследовать от WPFolder объект «сборка» и от WPDataFile объект «деталь» (или там, «проект», «компонент», «модуль») и отмоделировать как бы псевдофайлами на рабочем столе WPS, а по сути — какими-то персистентными объектами в СУБД предметную область.

сила полуоси была в SOM, WPS, Object REXX.

впрочем, есть нечто похожее на SOM или такой «Java на С++» : ACDK.

правда, WPS нету :)

В Modula-2 и Oberon-2 аналогов, насколько я знаю, нет

в модуле есть стандарт про объекты, и стандарт про шаблоны. там вроде была какая-та библиотека контейнеров.

в Оберон-2 сектанты радуются своему компонентному API и считают, что контейнеры с шаблонами — это не фича, а баг :))

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

а так ещё лет 40 просуществовал :) думаю, ещё лет 40 просуществует :)

однако, какая-нибудь GUI тыкалка почти не скриптуется, а тот же ex — вполне себе :))

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

Зацени foo[bar[x]] против dict get $foo [dict get $bar $x].

А, да. Но это отдельный вопрос. В принципе, есть массивы (нужно разобраться, почему выпилили многомерность). Также есть просто составные имена: a.b, правда, я не могу сейчас придумать, как ими пользоваться :) Как-то так:

set d.b 4
u d
eval "puts \${$u.b}"
Наверняка есть менее уродливый способ. Хотя если его нет, то это тоже повод починить.

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

многомерность есть в MUMPS, так что ежели скрестить сиё с REXX-овскими stems — получится истинно тензорный гипертекстовый атомно-православный :)))

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

ooREXX потом портировали подо всё (Lin, Win, Mac), и даже больше (выложили исходники). оно встраиваемо в С++ с мультитредингом.

Посмотрел. OODialog только под Windows. Библиотек раз-два и обчёлся.

в полуоси SOM объекты (того же WPS) были по умолчанию экспортированы в REXX, в чём была сила.

Вот и ответ. Все нормальный программы были под полуось. А SOM под Win/Lin вместе с Rexx не перенесли. Ничего не работает.

Сейчас MS Powershell и C# примерно настолько же переносимый. Если вдруг MS перестанет выпускать ОС, то отправятся за Rexx.

библиотека контейнеров

Контейнеры есть, но они не инлайнятся. Также как qsort из Си и std::sort из Си++. std::sort может просто подставлять компаратор в тело алгоритма и агрессивно оптимизировать (выкидывать всегда ложные куски, сворачивать циклы).

контейнеры с шаблонами — это не фича, а баг

А им скорость не нужна. Им нужна гибкость.

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

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

а её и не «впиливали» никогда :-) нету массивов в tcl, есть хеши, которые от namespace отличаются уже почти ничем. Можно эмулировать многомерность, но это криво и долго работает. В принципе это единственный исторический «костыль» (он же фича) tcl - хеш-массив не first-class сущность и плюс большая ошибка относится к ним и использовать как массивы в том-же С.

неоспоримая фича устройства tcl - наличие разных именований для объектов и команд. Одновременно может сущестововать переменная $foo, команда [foo] и namespace foo:: . По началу сводит мозг судорогой, а потом открываются новые горизонты :-)

MKuznetsov ★★★★★
()
Последнее исправление: MKuznetsov (всего исправлений: 1)
Ответ на: комментарий от monk

А SOM под Win/Lin вместе с Rexx не перенесли.

somFree - A portable clean-room implementation of IBM's SOM

Вот и ответ. Все нормальный программы были под полуось.

Забавно что SOM был продуктом противоестественой связи IBM и внезапно раннего Apple. Такой корпоративный ответ в стиле C++ на мыло :)
А какой катаклизм произошел после никто не понял. Но почти все ссылки стерли.

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

Забавно что SOM был продуктом противоестественой связи IBM и внезапно раннего Apple. Такой корпоративный ответ в стиле C++ на мыло :)

А какой катаклизм произошел после никто не понял. Но почти все ссылки стерли.

у Octagram'a (? автора somFree ?) здесь лежит куча инфы по SOM, включая реализацию DirectToSOM-compiler в VisualAge C++ с подробностиями.

есть и Copland, с Taligent с докою про SOM под MacOS, и прообраз нового MacOS-а :)

а вот затем в районе 1998 года случается странное: бимеры хоронят свой DirectToSOM-compiler вместе с С++, и стройными рядами отправляются в Java (которая тогда тоже в полуоси была интегрирована с SOM).

потом наверное Миша Кулешов запиливает свой NetRexx с компиляцией в Java, и SOM, полуось, ooREXX *тупо хоронят* в пользу Java.

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

somFree - A portable clean-room implementation of IBM's SOM

.NET тоже «portable». Ведь есть Mono. Только вероятность того, что случайную .Net программу можно будет запустить, и всё будет работать, стремится к нулю. В этом somFree, насколько я понял, только SomObject и транспортный уровень, а сами классы OS/2 не реализованы.

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

(? автора somFree ?)

Не его запилил кто-то на западе как зависмость что бы отреверсить доисторический «яболчный» предшественик OLE. Octagram сношает оригинальные бимерские архивы. в целях своих странных.

antares0 ★★★★
()
Последнее исправление: antares0 (всего исправлений: 1)
Ответ на: комментарий от anonymous

привязки SOM к Delphi, например.

автор WDSibyl под полуось, кстати, пытается запилить себе какой-то BlackBox. только на FreePascal, SOM и OpenDoc.

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

то есть, с многострочными лямбдами вот облом :)

Не облом, потому что {} может быть многострочным.

нафига ? есть lisp у него всё про списки есть :-)

Во-первых, головоломки самоценны и не требуют обоснования, во-вторых, см. тему.

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

странные цели, ога.

Программа-максимум — это стандартизация на международном уровне. Многие каждый день пользуются программами, и всё это не стандартизировано. В магазин пошли купить еду, на еду ГОСТ есть, домой пришли, компьютер включили, на программы ГОСТа нет.

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

имхо, взять надобно Valac и допилить DirectToSOM-compiler. только не С++, а Vala. но допилить.

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

Там если отвлечся от ГОСТ-а, на техническом уровне аргументация противоречащая моим представлениям о мире. Я когда этот текст дочитал, то усомнился в возможности это запустить:( Но может кому-нибудь повезет больше

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

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

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

5 макрокнопок слева и 6 снизу под пробелом

А можно ли в ней запрограммировать свою раскладку клавиатуры, чтобы получилось платформо - независимо?

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

Ну не знаю, не знаю. У меня как-то сложилось впечатление, что там хроническое «почти». Если бы ты зарегился, я бы тебя кастанул в условном будущем, если бы снова обратил внимание на BBCB. Всё же это одна из очень немногих систем, в которых есть кроссплатформенный гуй и генерация машинного кода на горячую прямо внутри среды. В этом плане он потенциально уделывает тикль. Правда, я так понял, что качество там местами хромает. Но ввиду малого размера системы (и тут религия обероновцев приводит их в обетованную землю), это может быть не столь страшно, как для SBCL.

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

Мотороллер не мой

в мотороллере :

set A($foo,$key) $value

$foo,$key - это строка ( «содержимое foo» «запятая» «содержимое key» ) :-) это как раз и есть эмуляция многомерности. Которая при каждом обращении будет делать конверсию объектов в текст и конкатенацию строк. Дичайший оверхед по скорости

И малейший пробел и ключ одномерного хеша будет другим.

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

проще на словах объяснить, текстом

Учитывая, что я половину твоих слов непонимаю, и канал входной ты мне совсем за ддосил :)

с GUID ссылками вроде бы всё сохраняется в notebook нормально.

Так это ловушка не на уровне реализации, а на уровне постановки процесса диалога пользователя и системы. Если я стёр определение функции, то неясно, что я имел в виду - может быть, она мне не понравилась, а может быть, я её случайно стёр. В этом случае сохранять её в невидимом виде может быть ловушкой ещё худшей.

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

Я имел в виду «except in very old versions of Tcl, where there were bugs which let you do it». Но вообще невозможность вложения массивов выглядит багой. Такой вот он, тикль. Нерекурсивный, или, как, наверное, сказал бы аноним, некомпозабельный.

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

там 10 профилей переключаемых по Fn+1..10, автоматическое переключение профиля по имени запущенного активного приложения, любая кнопка перепрограмируема. ещё есть возле стрелок 2 кнопки, на которые удобно вешать в емаксе «следущее S-выражение», «предыдущее» (или «войти внутрь»/«выйти из» S-выражения, и если не получилось, то вперёд/назад по S-выражениям)

драйвер под это как водится, геймерский, под винду.

но настроенные профили везде работают. в линуксе тоже.

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

Мне нужно что-то типа вот этого, http://программирование-по-русски.рф/яроклава-js.яргт/ , но не в вебе, а в железе. В принципе, это можно (наверное) сделать, если на нажатие кнопки отправлять сочетание клавиш для переключения на русский, а при отжатии - сочетание клавиш для переключения на английский (они должны быть разными).

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

вообще невозможность вложения массивов выглядит багой.

с точки зрения «С-шника» массив в tcl - это list :-) То есть он изнутри именно такой реально и есть. Tcl_Obj *[].

Повсюду есть проблемы именований, на тикле это особенно заметно - «list» тикля это массив,array - это хеш.

Да ! Кстати lindex вытаскивает элементы вложенных списков (список-списков-из списков, сиречь многомерных массивов) а lset их ставит. Но отдельной синтаксической конструкции для этого нет.

MKuznetsov ★★★★★
()
Последнее исправление: MKuznetsov (всего исправлений: 1)
Ответ на: комментарий от MKuznetsov

кстати, кто-нить знает как в форуме (тут прям) написать слово list в квадратных скобках [] и чтобы он остался именно как написан?

а то даже внутри предложения разметка его съедает

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

Проблема вот в чём:

set не-вложен {значение0 {значение 1}}
lindex ${не-вложен} 1 1
Список неотличим от строки. Об этом была прошлая тема с тегом «яр».

den73 ★★★★★
() автор топика
Последнее исправление: den73 (всего исправлений: 1)
Ответ на: комментарий от den73

Тег code в квадратных скобках не?

нет. Вот к примеру я сейчас напишу list в квадратных скобках, вот он

; уже был :-) как сурок, которого не видно, но он есть

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

стандартными средствами драйвера Germes HERA для программирования профилей сходу не нашёл, как сделать разные макросы на нажатие/отжатие. но есть сильное ощущение что можно такое сделать на ATNSOFT KeyManager с пользовательскими модификаторами или AutoHotkey/AutoIt под винду, скриптом.

под линукс модификатор «переключать раскладку, пока нажата» — можно сделать через xmodmap.

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

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

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

Я имею в виду, окружить его таким:

открывающая квадратная скобка, слово code, 
закрывающая квадратная скобка

твой list

открывающая квадратная скобка, слово code, 
прямой слеш
закрывающая квадратная скобка

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

Я имею в виду, окружить его таким

пробуем - в одну строку code в скобках, list такой-же и code закрывающий..

[list]
<- вот тут оно было, и порвало строку как тузик грелку.. :-) Весь текст набран в одну строку и не смотрите что его так косячит

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

ссылки про Blackbox (чтоб не забыть)

  • odc_viewer веб-приложение на Ruby для просмотра odc как текста (работает через odcread )
  • odcread конвертор odc на С++ в plain text
  • оберонщики и отладчик. о да, ниасилили же
  • Oberon2Lisp минималистичный интерпретатор лиспа, недопиленный на Oxford Oberon-2 Compiler (который на хаскеле)
  • oberonjs транспилятор в JS
  • тоже CPfront
  • CPfront, порт Ofront под BlackBox транспилятор ComponentPascal в Cи
  • Ofront+ транслятор Oberon-2 => Cи
  • noct noct is a transpiler. It translates Oberon-07 code to other programming languages, like java or pascal. (or retroFORTH)

    ANTLR parser, tree grammars, StringTemplate.

  • https://github.com/hodzanassredin/oberon-llvm Oberon07 LLVM frontend
  • ещё один
  • OBERON-Lang

    An implementation of OBERON-0 in C++. Our goal here is to better understand the work of Thomas Reps on data-flow analysis- considering the IDE (Interprecedural Distributive Environments) class of problems. We will also implement an interpreter for the OBERON-0 language and several compilers for translating OBERON-0 into LLVM, JIMPLE, and other high-level languages (like C or Java). In this way, we hope we will also get use to the LLVM and JIMPLE intermediate representations.

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

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

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

ты хочешь странного. Вот пишешь «значение 1» - это же не литерал, это всё-таки два слова, когда вводишь или читаешь, их два как ни крути.

И когда ты натравил на это lindex, то он честно приложил все усилия чтобы сделать то что хочет программист и выдрал оттуда «1».

Ты же именно это и требовал - получить элемент с индексом №1 из некоего чего-то.

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

MKuznetsov ★★★★★
()
Ответ на: ссылки про Blackbox (чтоб не забыть) от anonymous

examples/server — веб-сервер на BlackBox Component Pascal.

здесь запускалка через REPL:

cd ../examples/server
echo "DevCompiler.CompileThis TcpService TcpServer TcpBytes TcpTask CommTCP Init" | ../../BlackBox/run-BlackBox

sudo ./bbserver

ну ок, почти REPL через пайпы.

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