LINUX.ORG.RU

Языки, которые по сути-то LISP, но успешно прикидываются императивными?

 , , , whatelse


1

6

Знаю 2 таких - это Julia и R. А ещё есть что-то подобное? Julia, кстати, наверное вообще идеальный «переходник» от императивщины к функциональщине.

★★★★★

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

kernel — схема от John Shutt на базе fexprs.

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

с формулами и теоремами, не хухры-мухры.

вот ещё одна, про коэффекты. как способ формализации контекстов выполнения через комонады их параметры.

anonymous
()

Знаю 2 таких - это Julia и R. А ещё есть что-то подобное?

Dylan, elisp, REBOL/RED, newspeak и вообще SmallTalk (Squeak, Pharo), Oberon-2 и BlackBox Component Pascal, например.

среды livecoding литературного программирования типа Madoka, Eve, Leisure, Ampleforth (безграмотное программирование) и прочия.

кнопки buld/debug и разделение вообще суть извращение: вот тут подробнее живыя методы

тут в комментах про редактор Write на Оберон-2

обчество мёртвых поэтов программеров — ссылки по Madoka и Lounge на основе Leisure.

в общем, илюминаты отакуют:

Leisure is an open-source web-based platform for interactive editable documents in orgmode format that provides what we call Illuminated Programming.

Leisure documents are:

* modelessly editable (like Emacs!)

* interactive

* media-rich

* web-based (zero install)

* collaborative (both for editing and for applications)

* codetime/runtime modeless (the same environment for developing and running)

** reified: “the document is the program” the program source document is also the presentation medium

** changing the document changes the program and vice-versa (this goes for data, content, and also code) introspective (documents can react to their own changes and alter themselves as they run)

текущая реализация так себе: ибо жабоскрипт и нода богопротивная, ненужный Clojure с линзами и STM костылями да велосипедами.

на каком-нибудь newspeak + hopscotch или ponylang с акторами можно переписать покомпозабельнее, погомоиконнее.

опять же, хипстеры с хромобраузером наперевес.

но их фичи мне по нраву , и при всех недостатках Leisure, у этого векторного гипертекстового Xanadu есть одна мега-фича: оно уже есть здесь и сейчас, и работает.

да даже Ober, например.

кому и кобыла невеста: Plan 9 + acme, willy, sam или sam.el емаксовый.

;; LCD Archive Entry:
;; sam|Rick Sladkey|jrs@world.std.com|
;; Emulate the sam text editor Using Emacs|
;; 11-Dec-1993|0.5|~/modes/sam.el.Z|
anonymous
()
Ответ на: комментарий от onceagain2017

Тебе что? Прописанные тебе таблетки не помогают?

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

существуют ЯП, более динамичные чем CL

... те же python

Совсем ёб..лся чтоль? Какой <censored/> динамизм в python? Тут же наоборот только диву даёшься как такой жручий <censored/> интерпретатор таким нединамичным сделали.

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

BlackBox Component Pascal

... сборку с пакетным менеджером можно скачать: Intron

ещё более-менее активно пилится эта, отсюдова

затем можно взять, к примеру, Slit2 — итальянское LitProg средство, рассчитанное на lout (кирилические шрифты там, кстати, вполне себе починяемы)

и доработав Napilnik-ом (ибо изначально Slit2 написан на Free Pascal) — портировать сиё на BlackBox Component Pascal,

дабы посредством livecoding literate programming средства создавать compound документы в BBCP, в егойной собственной гипертекстовой разметке из грамотного litprog исходника в духе Slit2.

в общем, далее вьюшек и виджетов блекбоксовых добавить, в духе изначального Writer на Обероне. или современного Leisure иллюминатского.

дабы невозбранно достигнуть желаемого.

P.S. исходник на BlackBox, который складывает два числа.

да ведь это же REPL, братцы !!!

Execute: ^Q AB.Go 12 23 ~

Output: 12 23 35

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

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

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

потыкай, к примеру Ampleforth, да и просто примеры из безграмотного программирования

это — негомоиконный Newspeak, функционально-объектный клон смоллтока.

хотя он и негомоиконен — есть его парсер, строится объектный AST, далее платформенное IDE hopscotch, композабельное и функциональное заменяется на реализацию в браузере.

и ты можешь допиливать эту реализацию из неё самой — невозбранно достигнув желаемого.

как и в Leisure, Oberon-2 Writer, ненаписанном ещё livecoding lit. prog. средстве под BlackBox Intron наподобие Slit2 интегрированном,

уверен — в векторном гипертекстовом Xanadu будет всё то же самое — livecoding literate programming гипертекстовая, многомерная и гипервиджетовая среда, разрабатываемая из нея самой.

P.S. работы John Shutt по vau-expressions про kernel и формализации абстрактых мощей выше, работы по формализации контекстов и коэффектов комонадами выше, соображения из Leisure насчёт lens и транзакционных STM линзочек — всё оное в целокупности суть важныя ступеньки обеспечения композабельности литературной сиречь грамотной метасреды, её метаязыка и средств реализации.

как композабельные «макросы», только круче.

вона как хипсторы забавляются в Eve, вместо лапшекода жабоскриптового — простые понятные DSL литературного, грамотного программирования.

и композабельное конструирование метасистем, аще бо суть:

гипертекст есмь многое, мыслимое как единое

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

о связи между динамический/лексический scope хорошо в коэффектах про комонады расписано. прям душа радуется.

Вот с последним пунктом в пистоне не очень. Впрочем и в CL по дефолту связывание лексическое

вообще во всех мейнстримовых языках с этим как-то не очень. вот и Gilad Bracha в бложике печалится, тоскует — в Java с этим как-то даже и очень не (его, смоллтокера, изначально взяли, чтобы он IDE для Javы написал)

а в том же BlackBox Component Pascal — всё ещё годное, не испортили пока хипстеры незатейливыя.

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

кстати, в Mitrhil который есть 'BlackBox на XDS' был паттерн из смоллтока наподобие :doesNotUnderstand, про посылку сообщений.

то есть при желании и из Oberon-2 или там Modula-3 изобразить смолток — вполне возможно.

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

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

ещё вопрос, кто откуда произошёл.

этруски суть славяне, поэтому и 'latinum non legitur'

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

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

Сразу вспоминается «Аз есмь». До сих пор используется разве что в церковных текстах. Вероятно, в древнеболгарском была похожая форма, но основе которого и возник впоследствие так называемый церковнославянский язык.

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

ещё до 17 века крестьяне называли себя «аз», ибо были свободными. дворяне имели не только привелегии, но и ответственность. затем при реформе Никона, правоверные христиане нового типа (сравни: правоверные магометате, и задумайся чем они от мусульман отличаются), стали называть себя православными, невозбранно примазавшись. а старого типа — обратились к истинно русским православным корням, дохристианским, и родили синтез, обновив христианство исконно русским православием (Сергий Радонежский и прочие).

правоверные христиане, навязав «церковнославянский язык» вместо русского упрощали многое, ибо ниасилели. так получилось, что «аз» запретили: называть себя «аз» разрешалось сначала только чернецам-попам, боярам и царю.

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

затем и родилось нелепое «мы есть», «мы, император растакой-то высочайше повелеваем».

вас что там, в одной голове несколько? так это суть одержание, бесами же.

в общем, нелепая политическая шизофрения докатилась даже до царей.

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

Да, я испорчен, но что это?

Богохульство какое-то. Думаю, тут уже на статью тянет.

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

По-моему эта концепция весьма сильно противоречит основополагающим принципам ФП: а именно вызов функции с одними и теми же параметрами всегда должен приводить к одному и тому же результату. Или имеется в виду, что вроде как функция «подстраивается» под логику исполнения: если её всегда вызывают в каком-то простом варианте, то она сама себя модифицирует, чтобы не выполняться слишком долго?

Кстати, заметьте особо: в системах реального времени это самое время - тоже очень важный результат выполнения функции. Это примерно как с выполнением работ в реальной жизни: результатом является не только непосредственно продукт выполнения трудовой деятельности, но и время выполнения работ. Особенно хорошо это заметно из того, что для абсолютного большинства работ как раз сам продукт трудовой деятельности определён куда менее жёстко, нежели сроки для его получения. Так и с функцией: если вы хотите иметь Систему, предсказуемо ведущую себя при прочих равных условиях, то время выполнения функции должно быть всё-таки предсказуемым. Например, если это функция записи в ОЗУ, то в ОС РВ недопустимо, чтобы в одних случаях запись длилась 10 микросекунд, а в других - тот же объём данных записывался уже 10 секунд только потому что «ой, подождите, вы давно не писали в эту область памяти, и мы уже успели сбросить её на диск...»

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

Ну и да, объясните мне разницу между функцией, изменяющей саму себя и функцией, изменящей глобальную по отношению к ней переменную, чтобы модифицировать логику своего поведения? В реальной жизни оно ведь так и бывает с глобальными переменными: довольно часто они содержат неку информацию для запоминания «настроечного состояния» - и какая нафиг разница, запоминается это состояние в самом теле функции или в переменной?

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

По-моему эта концепция весьма сильно противоречит основополагающим принципам ФП: а именно вызов функции с одними и теми же параметрами всегда должен приводить к одному и тому же результату

Да, но то что лисп — функциональный язык — это заблуждение, я уже писал выше.

и какая нафиг разница, запоминается это состояние в самом теле функции или в переменной?

В некоторых нетривиальных случаях, модифицировать тело функции намного проще.

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