LINUX.ORG.RU

Существует ли статически типизированный гомоиконный язык программирования?

 , , , ,


0

1

Интересуют языки с богатой и развитой экосистемой, например основанные на JVM, .NET или javascript. Мне понравился язык Julia, но там не настоящая типизация, т.е. не на этапе написания делаются проверки. Единственный такой язык, который я смог найти - Typed Racket, но там маленькая экосистема.

Если других языков не найти, то можно ли самому разработать версию популярного статически типизированного языка со свойством homoiconic, для меня важно чтобы код можно было представлять как данные и наоборот, данные как код. Какой популярный статически типизованный язык тогда проще будет модифицировать?

Если других языков не найти, то можно

То можно задуматься о том, что на самом деле это никому кроме тебя не нужно.

anonymous
()

Typed Racket

А это реально статически типизированный язык, или там просто проверяются аннотации? И заодно спрошу, зачем реально нужна гомоиконность?)

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

Доступен https://docs.racket-lang.org/turnstile/index.html Написано «В результате макросы, реализующие новый язык, непосредственно проверяют тип программы во время расширения, избавляя от необходимости создавать и вызывать отдельную программу проверки типов.» Там хоть и есть аннотации, но можно и по другому я так понял.

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

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

Hess_inject
() автор топика

labview уже советовали?

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

Задачи искуственного интеллекта это просто куча линейной алгебры и матана, причем тут древние представления о ИИ в символьной форме?

vertexua ★★★★★
()

но там маленькая экосистема.

Классика. Никому твоя гомо..что-то там не нужна, пиши на том, на чём платят.

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

Это исследовательский проект, никто мне за него не заплатит.

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

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

goingUp ★★★★★
()

гомоиконный

Тридварасы на моем лоре?

А если серьезно, то зачем гомоиконный? И, прежде всего, как ты определяешь гомоиконность? Кто-то умудряется называть любой язык с eval гомоиконным, потому что таким образом данные можно превратить в код. И каким образом ты собрался писать на статически типизированном языке парсинг данных в код какими-нибудь макросами? То есть, после превращения кододанных в таком языке нужно будет вызывать какой-нибудь compile() для статической компиляции, и потом снова по кругу «интерпретация макросов -> компиляция -> интерпретация макросов -> компиляция».

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

Может, говорю, ссылок накидаешь, кукаретик?

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

https://ru.wikipedia.org/wiki/Гомоиконичность

Прочитали?

Гомоиконичные языки программирования:

Curl[7]
Io[7]
Ioke[en]
Julia[8][7]
Лисп, а также его диалекты[7]:
Scheme[5],
Clojure[7],
Racket[7]
Пролог[7][9]
Rebol[7]
Red
Снобол[7]
Tcl[5][7]
XSLT[10]
Рефал[7]
Wolfram Language[11]
anonymous
()

Если других языков не найти, то можно ли самому разработать версию популярного статически типизированного языка со свойством homoiconic …

В чем профит?

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

Программа не может быть ИИ. ИИ - это то, что компьютеры пока ещё не умеют.

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

Тебя в треде про Rust потеряли.

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

То можно задуматься о том, что на самом деле это никому кроме тебя не нужно.

Скорее всего и ТС - НЕ НУЖНО.

anonymous
()

Посмотри на Nemerle, не знаю, как там с гомо, но он славится своими макро-возможностями, может тебе будет по душе.

Legioner ★★★★★
()

visual basic

anonymous
()

статически типизированного языка со свойством homoiconic

Kind of division by zero. Гомоиконность нужна прежде всего для манипуляции кодом как данными, в том числе и в рантайме.

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

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

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

Вот тут https://stackoverflow.com/a/1239183 хорошо ответили:

«Итак, «Homoiconic» говорит, что исходный код имеет представление данных. Он НЕ говорит, что во время выполнения этот исходный код должен быть интерпретирован»

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

А гомоиконность нужна потому что связано с задачами искусственного интеллекта, код и данные это фактически одно и то же

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

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

На разбор AST и представление AST в удобном для компилятора виде тратится много ресурсов. Когда данных мало это не критично, а когда их становится много то критично.

Да я наверно Джулию буду использовать, пофиг уже уже на обязательную статическую типизацию думаю мне аннотаций хватит, устал искать, как раз библиотек и различных батареек много для ИИ и машинного обучения + можно вызывать python и java код.

Hess_inject
() автор топика

Интересуют языки с богатой и развитой экосистемой, например основанные на JVM, .NET или javascript.

А они разве гомоиконны?

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

Никто не мешает работать с AST, если уж так хочется пердолева

Иметь два представления кода вместо одного и гонять данные туда-сюда между ними — как-то больше смахивает на пердолево, не? %)

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

Джулию

Можно еще кложу глянуть, с библиотеками проблем нет (жаба, жс), есть spec.

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

На разбор AST и представление AST в удобном для компилятора виде тратится много ресурсов.

Это не так. Наиболее затратны оптимизации - CFG, GCSE, SCCP, DCE и вот это всё.

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

Пиши на common lisp под sbcl. Гомоиконность и производительность. Статической типизации нет, но я думаю в действительности ты без нее можешь справиться

Aswed ★★★★★
()

Не знаю какой-там у тебя проект, но ты определенно пытаешься усидеть на двух взаимоисключающих стульях. А именно статическая типизация и гомоиконность. Если уж ты не можешь отказаться от второго(почему вообще?), почему не откажешься от первого? Может расскажешь по подробнее про свою задачу? Я уверен, что ты сейчас делаешь overengineering.

Aswed ★★★★★
()

Гомоиконный => устаревший.

Современный => статически типизированный.

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

Miguel ★★★★★
()

Гомоиконный – такого слова нет. Так говорить неверно. Есть слово гомоиконичный, как справедливо заметили выше. Но Вам, вероятно, и он не подойдёт. Т.к. все нормальные компиляторы AST превращают в SSA. И гомоиконичность с непонятной целью теряет свою значимость. Но, учитывая, что вопрос всё-таки задан, я уточню вариации – может всё-таки речь идёт о поиске гомосекавского языка программирования?

anonymous
()

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

https://bitbucket.org/ktg/l/src/master/

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

Иметь два представления кода

Ну как бы так и этак внутреннее представление и внешнее различаются. Если это конечно не brainfuck какой-нибудь.

no-such-file ★★★★★
()
Ответ на: комментарий от anonymous

Гомоиконный – такого слова нет. Так говорить неверно. Есть слово гомоиконичный

Читаем что там выше…

Гомоикони́чность (гомоиконность, англ. homoiconicity, англ. homoiconic,

Ок.

no-such-file ★★★★★
()
Ответ на: комментарий от no-such-file

Гомоиконный – такого слова нет. Так говорить неверно. Есть слово гомоиконичный

Читаем что там выше…

Гомоикони́чность (гомосекавость, англ. homosexuality, англ. homosex,

Ок.

anonymous
()
30 июля 2021 г.
Ответ на: комментарий от anonymous

может всё-таки речь идёт о поиске гомосекавского языка программирования?

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

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