LINUX.ORG.RU

Ищется acme под везде

 


0

1

наподобие acme-sac но без добиливание красноглазием шрифтов уникодства и прочего синеленточности

т.е какой нить acme докер готовый к использованию как @не очень@ лёкий текстовый редактор с прозрачным пробросом до хоста

крч. охота acme поиграться но лень нырять в байты :(

Всегда использовал plan9port. В некоторых дистрах есть пакет (например, в арче), в других надо самому собирать. Инструкция по сборке в install(1).

Если нужно пользоваться на винде, то можно поставить в виртуалку и расшарить общую директорию.

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

охота той безшовности(уверен баги не найдены мною не потому что их нет) что даёт в частности @git for windows@

в части унифицированости доступа до грааля unix текстоваяния grep|awk|etc...

без преамбуливания везде wsl

-это в контексте той ОСи которая превозмогла xenix затем os/2 (os/2-os/360 == 179os (помним бабилонян) )

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

acme под везде – это скорее всего, acme-sac на Inferno/Limbo, но вовсе не обязательно. шрифты там надо настраивать,да.

можно взять более современный форк acme, более линуксовый.

как по мне, так karahobny/acme2k вполне достойный.

а вообще посмотри вот в этом треде, выше и ниже по списку.

там какой-то форк даже на tcl/tk был – ma кажется.

инферно кстати есть форк под 64 бита – 9ferno/purgatorio f.html ( (только под юниксы, винду там никто никогда не тестировал, кажется)

или MultiEdit ковыряй :)))

KEDIT-подобные скриптуемые REXX-ом кстати, весьма неплохи в целом.

я джва года жду эту игру — что Inferno 32-битное (или 64-битное 9ferno/purgatorio) более-менее обновят и доведут до ума:

  • обновят tk который там без tcl но на limbo (кстати, inferno sh модульный и умеет рисовать tk GUI через каналы)

  • emu.exe -g обновят до SDL реализации

  • какое-то Vulkan/OpenGL ускорение добавят что-ли, лолЪ (например, есть opengl реализация на чистом си)

  • добавят нормальные шрифты, например, TTF (например, через тот же SDL)

в остальном оно и так довольно неплохо – только олдскульно и кондово.

под него я бы например troff классический из plan9port или из heirloom troff переписал, с си на лимбо – чтобы troff действительно подо все.

вообще, на сайте vitua nova и в новом репозитории и актуальном форке inferno есть статьи и публикации, как оно на самом деле устроено. что-то про FPGA симуляцию кластером на limbo статья, там какой-то GUI слепили.

суть в том, что само по себе Plan 9 – это ядро на си, с более простыми сисколлами (40 вместо 300+ в линакс)

inferno это Plan9 через c запускалку VM Dis байткода limbo + plan9 kencc 8c/8l/8a тулчейн, портированный и чуть доработанный.

итоговый emu.exe собирается как небольшая часть, запускающая Dis VM + GUI/WM + все остальное на Dis байткоде + разные DLL/.so из emu.exe загружаемые.

emu.exe без -g сам по себе этот GUI не запускает – остается только сразу Dis и sh + автозагрузка.

то есть: например, можно было бы это GUI ядро допортировать под SDL, например. чтобы, например, TTF шрифты отрисовывать через SDL и частично OpenGL портировать.

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

сам по себе acme-sac от caerwyn который на limbo представляет собой мини-сборку Inferno с преднастроенным в автозагрузку только acme на лимбо, более ничего.

готовых приложеньиц в этой сборке тоже меньше чем в обычной дефолтной инферне – а в остальном почти ничем не отличается.

вообще, это напоминает например как на активном обероне A2 в виде Win64miniA2.exe сборки запускаемой под винду с минимальными модулями и простым текстовым редактором сразу в автозагрузке пытались собирать.

так что теоретически, acme на A2/Active Oberon тоже мог бы прикольным получиться.

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

под него я бы например troff классический из plan9port или из heirloom troff переписал, с си на лимбо – чтобы troff действительно подо все.

еще например, CWEB литературно-грамотный с си на лимбо переписать, и получить литературно-грамотное IDE подо все сразу, запускаемое везде, легко и просто через acme plumbing сразу weave/tangle из коробки

credo / redo на лимбо там тоже есть, так что можно и без Makefile обойтись. или собирать родным mk из plan9port/inferno/purgatorio

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

Canon Cat как acme+

читал книгу «Интерфейс» Джефа нашего Раскина. интересный концепт.

там кажется его сын на сайте потом делал еще какой-то Eagle mode IDE с ZUI – ты не пробовал его потыкать?

anonymous
()

наподобие acme-sac но без добиливание красноглазием шрифтов уникодства и прочего синеленточности

в inferno вообще-то utf8 из коробки. уникодовость там из коробки, только шрифтов растровых формат свой особенный, и где-то в сборках как раз шрифты до ttf и допиливают.

вот чтобы koi8 запилить туда, например… надо что-то типа !r convcs .... – в общем, смотри простой convcs исходники, оно почти через xlat таблицы работает.

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

diff

[quote] Anvil supports syntax highlighting. This is, of course, a radical departure from Rob Pike’s preference: “Syntax highlighting is juvenile. When I was a child, I was taught arithmetic using colored rods (Cuisenaire Rods). I grew up and today I use monochromatic numerals.” [/quote]

палочки с кузинатрой – о, да. без кузинатры нам никуда.

Венец философии Смешариков — рассказ о неведомой Кузинатре, за которой в поисках смысла жизни отправился Бараш.

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

грабли Диакса?

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

— Н. Акимов, «Не только о театре»
anonymous
()
Ответ на: комментарий от anonymous

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

а почему только плоскость?
даешь новомодные крутящиеся во все стороны 4D-тессеракты!

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

[Post-WIMP]

  • «Non Command User Interfaces» by Jakob Nielsen 1993,[2]
  • followed by «The Anti-Mac Interface»

vs. Vitus Vagner «The TrueЪ Unix Gui»

vs. acme, acme-sac, ma : tcl/tk, wily+python > emacs+lisp

vs. команды и итеракторы в BlackBox Component Pascal vs A2/ActiveOberon

vs. «интерклики мышкою»

=== not pro vs. con , but pro+con =

Literate Programming IDE

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

грабли Диакса?

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

грабли и костыли, и их костылестроители теоры майнстримныя и фан-клуб маргинальцев :)))

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

htmx и прочий кроукорфордный(json man)

Дуглас Крокфорд

Crockforf on JS Volume 1

C on JS Chapter 2

CoJS Act III

cojs Episode IV

c..s Scene 6

Level 7

section 8

порядок обхода при разных гармониках

https://www.youtube.com/playlist?list=PL7664379246A246CB

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

еще могло бы быть подобное лайвкодинговое литературно-грамотное юпитер-ноутбуковое, но на лиспах типа таких

вот, допустим, мы хотим написать нечто вроде юпитер-ноутбукового гипертекстового браузера прямо в REPL, на нем самом. только – не на типичном стеке HTML/CSS/JS+DOM API в духе С++ — а зело лучше.

допустим, мы берем для начала tcl/tk (для наглядности) и пишем на нем минимальный графический REPL, который будем расширять в юпитеро-ноутбуковое.

  • что такое tk? простой GUI тулкит виджетов с контейнерами и geometry manager. что такое tcl? простой скриптовый язык только строками (тут можно бы и заменить со временем tcl на лимбо с типизированными не только строками каналы, или например на лисповую)

GUI всего окна (назовем его «фидобраузер») будет содержать filler, куда будем вставлять «из самого на себе» новые виджеты, тулбар и собственно REPL (или вкладку с юпитером):

– filler;
– тулбар: кнопки: weave, tangle, view weaved in mupdf, view tangled in text editor, rerun all jupiter, прочее всякое типа mk/redo/make/build/run/test;
– REPL: notebook в смысле вкладки docking window в которой виджет юпитер ноутбуковый; — юпитер: вложенный в REPL виджет из пар контейнеров с кнопками вида:
—– In(N++) : texteditor widget CODE;
—– Out(N++): инспектор для * = правильно типизированного объекта, который вернул eval CODE;
—– <…>: создать новый In/Out, например скопировав новый In из старого Out или из старого In;

теперь мы будем писать в In GUI код на tcl/tk который будет создавать новые виджеты/гаджеты и делать pack, и обновит и перерисует весь «фидобраузер»

это еще пока не полноценное «литературно-грамотное IDE», просто первичный прототип (эскиз, набросок).

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

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

в литературно-грамотном – по другому:

  • добавим не только лишь In(N++):CODE но и In(N++):WEB кусок с самодостаточным элементом single source literate programming document chunk/code chunk/data chunk .

  • для Out(N++):REPL тоже добавим типизацию Out(N++):weaved.doc и Out(N++):tangled.code

eval WEB блока будет делать по умолчанию tangled.code, хотя для инспектора объектов как раз более полезным было бы создавать weaved.doc.

tangled.code текущего блока состоит из метакода включаемых трансклюзивных ссылках цитирования. tangle WEB блока делает топологическую сортировку и обновляет ВСЕ результирующие tangled.code блоки в порядке топологической сортировки.

то есть, по определению: tangled.code блоков tangle этого WEB чанка будет возвращать несколько, тогда как weaved.doc это раскрашенный индексированный кусок итогового weaved pdf для текущего блока, всегда один.

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

здесь пока не важны детали реализации (tcl/tk или limbo/tk, RED, схема или Curl, – далее будем все это уточнять, постепенно переписывая «на самом себе». прелесть литературно-грамотного подхода как раз в том, что язык реализации по сути НЕ ВАЖЕН – можно сделать перевод одного WEB чанка на другой язык реализации. тут полезно пригодились бы WEB макросы вроде @d из классического WEB/TANGLE Д.Кнута, аналогичный #define или еще какой более подходящей параметризации для вариантных сборок. чтобы например, где-то вначале сделали @d impl-lang tcl, отладили – а потом в итоговой @d curl-code или @d red-code или @d limbo-code или @d lisp-code – и собирался только этот вариант перевода «параллельных текстов» генерируемых tangle.code блоков)

anonymous
()
Ответ на: комментарий от anonymous
  • в чем идея подхода Curl языка если рассматривать его как среду разработки операционных сред типа фидобраузера , по сути RIA приложений?

** вместо разных недоязычков разных версий и различной степени совместимости HTML+CSS+JS+навязанный C++/JS DOM API – one ring to rule em all – лиспоподобный Curl с лисп-макросами и ООП API

** Curl-документ *.curl – это не только исходник кода, сколько документ, который JIT/интерпретирует либо конпелирует через сишечку (см. wwwpaper curl изначального) – этот самый Curl-браузер

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

** dynamic let подобные лисповые функциональные объекты для гаджетов/виджетов – проще чем DOM API. полноценный DOM API с его тормозами и блокировками по сути не нужен.

** на самом деле, и документ-литерал, литерал-строки в Curl-документе, и исходный код на Curl – это все типизированный лисп-подобный Curl-объект типа функционально-объектно ориентированных first class object объектов.

** на самом деле, юпитер ноутбуковый – это контейнер объектов, которые отрисовывают сами себя.

** из стандартных CURL гаджетов таких объектов есть например 3D виджет типа графа сцены, см. примеры. и прочие «приложеньица» апплетовы.

** все это конпелируется, JIT-интерпретируется и связывается с песочницей абсолютно прозрачно в фоне через Curl-браузер. сам хелп Curl IDE – это пример такого Curl-Браузера юпитер-ноутбукового.

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

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

в чем идея RED-подобного лайвкодинга?

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

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

в чем идея vygr/ChrysaLisp?

  • VM, подобную Dis VM для Limbo из Inferno (Elate/AmigaDE/Tao OS Virtual Processor) – реализовать на лиспе:

** ассемблер и все инструменты – реализовать на самом этом лиспе;

** tool это более гранулированные объекты, которые скорее акторы, чем объекты;

** таким образом, ChrysaLisp – Это по сути операционная среда а не операционная система, которая распределенная сетевая среда для запуска таких взаимодействующих акторов.

поэтому подобную фидобраузеру штучку было бы рационально реализовать на ChrysaLisp.

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

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

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

классический метаязык WEB-подобной single source разметки, по-видимому, надо с одной стороны упрощать, а с другой – расширять чтобы получилось нечто:

  • упрощать в asciidoc-подобное по простоте и наглядности а не все эти tex-ориентированные макросы (хотя там есть и @d макросы, которые нужно оставить)

  • расширять макровозможности, например для сборки вариантами переводов параллельных текстов блоков кода на различных языках реализации;

** например, что-то придумать для управления конфигурацией типа генерации простого сборочного mk/redo/…./make файла.

** например, добавить блоки данных – а не только лишь кода и документации. в типизированные модели нужных данных.

** например, добавить какие-то метаданные, метапеременные входные/выходные и/или, предков/потомков (в общем случае, нужна не полноценная DOM API иерархия – а нечто типа фреймов или dynamic let переменных и гаджетов из Curl-браузера, см. примеры)

в общем случае, фидобраузер должен уметь делать weave/tangle в ОБЪЕКТ, а не просто в файл.

в этом смысле фидобраузер это GUI к ООСУБД этой операционной среды, состоящей из взаимодействующих акторов, изменяемых «на самом себе», в процессе лайвкодинга в юпитеровом REPL-е.

потом еще как-нибудь запилить acme-запускалку фидобраузера; литературно-грамотное IDE; «диагармер» (sic(k)(c)) со жгутиками и проводочками, и в общем и целом –

– полный метациклический метапрог «на самом себе», for the greater justice.

:)))

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

Я ничего не понял из написанного.

Литературное программирование — что в нём вообще такого важного? Это же тупо сбор кода из разных кусков, раскиданных по тексту.

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

Количество ключевых слов на единицу текста зашкаливает. Класс численного типа как файл с интерфейсом подобным синтаксису методов для отображения в байты, как это реализовано в винде, хотя Иммануил Кант для этого ввёл отдельные трансцендентные блоки (** P.S. CC: Fwd: не путать с синтетико-постприорными ноуменалиями).

Судя по всему, qulinxao пишет от анона.

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

Судя по всему, qulinxao пишет от анона.

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

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

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

zag-zig Теда Нелсона именно оно

n-мерный куб(не ер) где прыжки по осям из текущей вершины длинны по ситуации (текущего гипертекста)

фишка с 0,1,много что на практике выше 2 (тем более 3) уже редко маржинально для публики

qulinxao3 ★★
() автор топика

Вариант с font сервером fontsrv -m ~/font/

acme -f ~/font/Ubuntu/11a/font

Вариант с конвертацией любимого шрифта

ttf2subf -s 14 -f example.ttf -n example -m antialias

acme -f ~/you/path/example/example.14.font

AUX ★★★★
()
#!/home/user/plan9/bin/rc

NAMESPACE = `{mktemp -d} 
plumber >/dev/null >[2=1] 
font = '$HOME/plan9/font/droid/droid.16.font' 
exec $PLAN9/bin/acme -c 1 -ab -f $font -F $font $* 

Вот, не благодари. Скрипт для запуска нескольких копий acme с указанием шрифта.

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

Литературное программирование — что в нём вообще такого важного? Это же тупо сбор кода из разных кусков, раскиданных по тексту.

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

две программы, написанные на двух разных языках программирования, но являющиеся семантически и синтаксически эквивалентными – это на самом деле одна и та же программа, только записанная по-разному.

можно продемонстрировать все это на примере хелловорда. из 688196.pd А.В.Столяров «Язык Си и начальное обучение программированию»:

tl;dr: язык Си зело плох для обучения с нуля полных новичков, ибо множество отсылок вперед и «некогда объяснять, просто запомните, поймете потом» и хаки типа "программирования на побочных эффектах.

програма hello-world.pas вида

program hello;
begin
   WriteLn('Hello, world');
end.

в этом смысле нагляднее и очевиднее чем hello-world.c вида

#include <stdio.h>
int main() {
    printf("Hello, world\n");
    return 0;
}

потому что буквально по каждой строчке – неочевидный facepalm и «некогда объяснять».

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

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

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

#     Literate programming hello world example: file hello-world.org    -*- mode: org; -*-

* простой хелловорд на любом языке программирования

имеет следующую структуру:

#+NAME: common-hello-world
#+BEGIN_SRC :export code :mkdirp yes :noweb yes :tangle src/hello-common.any :comment both
  <<hello-headers>>
  <<hello-begin-main>>
   <<hello-print-message>>
  <<hello-end-main>>
#+END_SRC

это -- абстрактный хелловорд на языке псевдокода *.any. 
например, раскрывающийся в следующие фрагменты блоков кода (на псевдокоде):
#+NAME: hello-headers
  начало всей программы. подключить основные библиотеки (рантайм, вывод сообщения). //кобол-подобный псевдокод.
#+END_SRC

#+NAME:hello-begin-main
 начало основной части программы.
#+END_SRC

#+NAME:hello-print-message
  вывести сообщение: "Hello, world". вывести новую строку.
#+END_SRC

#+NAME:hello-end-main
  конец основной части программы.
#+END_SRC

чтобы сгенерировать все необходимые исходники -- выполняем `M-x org-babel-tangle` и смотрим сгенерированный файл src/hello-common.any  (и секции с комментариями).


//далее продолжим в следующем посте (в том же файле *.org);
anonymous
()
Ответ на: комментарий от anonymous

// продолжение того же файла Emacs org-mode babel *.org

если мы захотим для начала для наглядности составить похожую программу -- выполним буквальный построчный перевод блока кода `common-hello-world` на язык Паскаль:


#+NAME: common-hello-world-Pascal
#+BEGIN_SRC :export code :mkdirp yes :noweb yes :tangle src/hello.pas :comment both
  <<hello-headers-pascal>>
  <<hello-begin-main-pascal>>
   <<hello-print-message-pascal>>
  <<hello-end-main-pascal>>
#+END_SRC

соответствующий ему перевод `блоков кода` -- это

#+NAME: hello-headers-pascal
{  начало всей программы. подключить основные библиотеки (рантайм, вывод сообщения). //кобол-подобный псевдокод.
}
  program hello;
#+END_SRC

#+NAME:hello-begin-main-Pascal
{ начало основной части программы.}
 begin {program hello}
#+END_SRC

#+NAME:hello-print-message-Pascal
{  вывести сообщение: "Hello, world".} 
   Write("Hello, world"); 
{ вывести новую строку.}
   WriteLn;
#+END_SRC

#+NAME:hello-end-main-Pascal
{  конец основной части программы. }
  end. {program hello}
#+END_SRC

чтобы сгенерировать все необходимые исходники -- снова повторим `M-x org-babel-tangle` и изучим сгенерированный src/hello.pas.

Теперь, выполним перевод этого же псевдокода на язык С:


#+NAME: common-hello-world-C
#+BEGIN_SRC :export code :mkdirp yes :noweb yes :tangle src/hello.c :comment both
  <<hello-headers-C>>
  <<hello-begin-main-C>>
   <<hello-print-message-C>>
  <<hello-end-main-C>>
#+END_SRC

соответствующий ему перевод `блоков кода` -- это

#+NAME: hello-headers-C
// было на псевдокоде:
//   начало всей программы. подключить основные библиотеки (рантайм, вывод сообщения). //кобол-подобный псевдокод.
// 
//   program hello;  // было на языке паскаль 

//стало на языке С:
#include <stdio.h>
#+END_SRC

#+NAME:hello-begin-main-C
// было на псевдокоде:
// начало основной части программы.

/** было на языке паскаль:
 begin {program hello}
**/

/** стало на яызке си: **/
int main() {
#+END_SRC

#+NAME:hello-print-message-C
// было на псевдокоде:
//   вывести сообщение: "Hello, world".
/** было на языке паскаль:
   Write("Hello, world"); 
**/

// стало на языке С:
  printf("Hello, world");
// { вывести новую строку.}
//   WriteLn;
  printf("\n");
#+END_SRC

#+NAME:hello-end-main-C
/** было на псевдокоде:
  конец основной части программы. 
**/
/** было на языке паскаль:
  end. {program hello}
**/

// стало на языке C:
  return 0;  //see C standard on int main(...) API
}   //end main
#+END_SRC

чтобы сгенерировать все необходимые исходники -- снова повторим заклинание `M-x org-babel-tangle` и изучим сгенерированный src/hello.c.



далее сравнив все три исходника между собой -- пускаемся в пространные объяснения, почему `#include`, зачем `return 0`, что такое рантайм и встроенные в него функции (например, WriteLn с переменным числом параметров) и чем отличается от стандартной библиотеки (например, printf или puts или whatever)

хотим убедиться, что все конпелируется, собирается и выполняется -- выполняем `блок кода` вида:
#+BEGIN_SRC sh
gcc src/hello.c -o hello-C.exe
./hello-C.exe
#+END_SRC
#+RESULTS:

или
#+BEGIN_SRC sh
fpc src/hello.pas -o hello-pas.exe
./hello-pas.exe
#+END_SRC
#+RESULTS

чтобы выполнить `блок кода` -- сохраняемся `C-x C-s`, становимся курсором внутрь нужного блока кода и нажимаем `C-c C-c`

наблюдаем результат тут же -- в блоке RESULTS.

далее можно пуститься в пространные объяснения относительно рантайма, зависимостей, динамической и статической линковки -- выполняя соответствующие `блоки кода`  например с ldd, ls -sFCh и т.п. вплоть 
до gcc -S, например.


// конец того же файла Emacs org-mode babel *.org
anonymous
()
Ответ на: комментарий от anonymous

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

абстрактный сферический хелловорд в вакууме.

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

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

да, и параллельные тексты и гипертексты, и разные типы гиперссылок – например ссылки цитирования («трансклюзии») vs. именованные блоки кода или процедурные ссылки (исполняемые блоки кода) – тоже оттудова.

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

Литературное программирование — что в нём вообще такого важного? Это же тупо сбор кода из разных кусков, раскиданных по тексту.

Я не то чтобы сильно с грамотным программированием экспериментировал, но эта штука — не просто сбор кода. Когда мы проектируем системы, мы идём либо сверху вниз (обычно в «большом программировании»), либо снизу вверх (скриптота всякая). Мы к этому привыкли, но вообще-то это довольно странно и вычурно. Системы можно проектировать так, как мы рассказываем истории. А рассказываем мы их так:

Отец мой Андрей Петрович Гринев в молодости своей служил при графе Минихе и вышел в отставку премьер-майором в 17.. году. С тех пор жил он в своей Симбирской деревне, где и женился на девице Авдотье Васильевне Ю., дочери бедного тамошнего дворянина. Нас было девять человек детей. Все мои братья и сестры умерли во младенчестве.

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

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

ugoday ★★★★★
()