LINUX.ORG.RU

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

 , , , whatelse


1

6

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

★★★★★

Последнее исправление: DRVTiny (всего исправлений: 1)

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

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

Deleted
()

LISP — это семейство языков по признаку формы исходного кода, а не по семантике. Чего сказать-то хотел?

Deleted
()

R это Matlab, но успешно прикидывается APL. Julia — наоборот.

olibjerd ★★★★★
()
Последнее исправление: olibjerd (всего исправлений: 1)

Лисп это про скобочки, причем тут функциональщина. Борщелисп вот насквозь императивный, попробуй его раскурить.

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

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

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

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

onceagain2017
()

Wolfram Mathematoca и Javascript. Ещё есть XSLT, но он не притворяется императивным.

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

таков любой естественный.

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

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

Eva
()

R императивен в пределах пакетов. Когда ты начнешь рубить суровый челябинский GUI на R с использованием Tcl/Tk — он внезапно оказывается функциональным %)))))))

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

Не просто множествевного числа, а третьего лица множественного числа. А то начнёт писать «мы суть».

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

Да, и топикстартер правильно его употребил.

Код кода кодировки - суть есть масло масленное.

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

Нет, конечно. По форме классифицируют только дурачки.

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

Нет, «суть» использовано корректно, а «есть» да, пятничное.

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

Elixir, кстати, - функциональщина, на которой можно писать что-то простое вполне себе императивно.

Хотя зачем нужен Elixir, если есть Julia? В Elixir нагромождение каких-то фантазий сексуально неудовлетворённых кодеров, а в Julia - встроенные на уровне языка возможности параллельного исполнения кода, да ещё единообразным образом что на кластере, что на localhost. И без всякой профессионально деформированной программисткой чуши и ущербного синтаксиса.

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

«суть есть» - может, и некорректно, но означант всё же «по существу является», но никак не «are is»

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

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

Главное, что там есть формы русского глагола, но в современном русском языке осталась лишь одна единственная форма «есть» (лат. «est» - все латинские пишу по памяти), которая первоначальна соответствовала только 3 лицу единственного числа.

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

Форма «суть» (лат. «sunt») соответствовала раньше 3 лицу множественного числа. Она еще 100 лет назад вполне использовалась, а сейчас это по факту уже архаизм.

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

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

Нет, это именно are is. Тебе же уже рассказали выше. «Суть» - это форма глагола «быть» третьего лица множественного числа, точно так же, как «есть» - единственного.

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

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

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

Забыл все-таки. «Sumus» - это 1 лицо мн. число, а ед. число будет «sum». Ну, вот, так даже ближе к «есмь»

dave ★★★★★
()

Все динамические языки по сути являются подмножествами лиспа.
(да и все статические тоже:)

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

Чем размытей термин, тем он бесполезней. У современного common lisp (и racket) только одна фича, до которой более другие языки пока что не добрались и вряд ли доберутся, я думаю все понимают какая именно.

Динамизмом никого не удивишь, и существуют ЯП, более динамичные чем CL, те же python или ruby

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

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

А чем python или ruby динамичнее CL? Ответ «чем CL» не принимается.

Это не под@бка, мне правда интересно.

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

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

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

У современного common lisp (и racket) только одна фича, до которой более другие языки пока что не добрались и вряд ли доберутся, я думаю все понимают какая именно.

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

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

Истинная гомоиконность — вещь стоящая.

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

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

Но в современных лиспах никакой гомоиконности нет

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

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

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

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

Можешь встретить там «eсмь» (лат. «sumus») для 1 лица единственного числа. Сразу вспоминается «Аз есмь».

неправильно: не единственное, а множественное. ещё есть двойственное число, например.

ибо в русской азбук 49 букв, и есть буквы «есть» и «есмь».

смысл «есть» — «живу, существую» в проявленном, объективная реальность физического мира. "

«есмь» же существование метафизическое, многомерное и гипертекстовое  — «многое, мыслимое как единое», то есть совокупность, целокупность, холон, система.

сравни, например: быть/бысти/буди и бе, независимое от времён.

«аз» как многомерное тонкое тело, и «я» как физический объект — не одно и то же.

«аз есмь царь» := я (мы, все мои тонкие и толстые тела) многим управляю.

тут «царь» выступает как глагол, функция, функциональный ролевой объект, actors.

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

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

смоллток — нет.

вот, к примеру недавно про newspeak прочитал — до сих пор пилят.

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

есть пространства имён. платформа выделяется в параметры класса, классы параметризируются классами, методы превращаюся в комбинаторы методов. есть рефлексия на основе mirrors и дальнейшее развитие «точки зрения» на систему на основе worlds.

комбинаторы позволяют создавать композабельность: например, executable grammars на основе парсер комбинаторов, или композабельный GUI hopscotch, или заменяемые реализации платформы (IDE с native bindings через FFI, или piggybacking в Squeak, или через Dart и JavaScript в браузере).

как пример, на bitbucket в projects есть OS на newspeak, исполняемая на голом железе.

или Ampleforth — средство для livecoding literate programming на Newspeak.

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