LINUX.ORG.RU

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

 , ,


2

9

Помогите пожалуйста найти язык программирования, в котором есть мощные средства метапрограммирования, но при этом он мог уметь генерировать высокопроизводительный код real-time приложений. Область применения - обработка видео потоков, рендеринг графики, элементы AI. Интерсуют именно возможности языка, а не наличие готовых библиотек и т.п. (приглянулся racket, но скорость...)



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

а там возможно изменение кода на лету без компиляции всей программы и при этом чтобы скорость (интерпретатора?) была приемлемой.

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

К сожалению только убожество в лице С++.

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

Возможно, и там обычно компилятор. Если ты не тролль, то вот ключевые слова: SBCL, Clozure CL (CCL), LispWorks, Allegro CL. Все это хорошие реализации стандарта языка Common Lisp. Последние две - коммерческие, но не значит, что лучшие, хотя хорошие. Книги: Practical Common Lisp (PCL от Siebel) и ANSI Common Lisp (от Пола Грема, Paul Graham).

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

Ура, лиспосрач! А книгу уже кто-нибудь получил на руки?

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

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

Да.

(интерпретатора?)

Компилятора.

Советую выбрать в качестве реализации — SBCL, IDE — GNU Emacs, а учиться лучше всего по Practical Common Lisp Пола Грэма..

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

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

В Haskell? Я примерно представляю пути, как это можно сделать, но из коробки такой функциональности нет, AFAIK.

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

В CL приложение (образ) и есть интерпретатор, компилятор. Ты можешь удаленно подключить к у уже запущенной программе с консоли(REPL), и во время ее работы изменять и компилировать различные ее функции, и добавлять новые. По производительности на уровне java. Можешь делать ассемблерные вставки, будет на уровне ассемблера производительность.

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

Советую выбрать в качестве реализации — SBCL, IDE — GNU Emacs, а учиться лучше всего по Practical Common Lisp Пола Грэма..

Этак и ряды лисперов на ЛОРе пополнить недалеко.

Minoru ★★★
()

А чё так много лисперов? Как-то не круто уже.

Что там есть новенькое, поэлитнее?

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

Точно, PCL написал Peter Seibel. Я ошибся.

Deleted
()

Clay тоже вариант

jeuta ★★★★
()

а что не так у racket со скоростью?

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

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

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

при этом выглядит в десять раз блевотнее кода на с++.

Если подцепить заразу от местных троллей.

ados ★★★★★
()

LISP+ собственный бэкенд на LLVM?

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

(Так (это (же (язык (для (блондинок (всё (правильно))))))))

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

Что там есть новенькое, поэлитнее?

Agda, Coq?

korvin_ ★★★★★
()

Слушай, а зачем тебе метапрограммирование? Ну я понимаю руби-бои любят хипстерские фреймворки с «крутым» api. А тебе зачем?

dizza ★★★★★
()

FASM на макросах

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

Cамомодификация кода мне необходима. Реализую ДСМ-метод автоматического порождения гипотез и еще некоторые элементы AI.

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

picolisp:

  • мощные средства метапрограммирования = более чем достаточно
  • высокопроизводительный код real-time приложений ~= Качественный интерпертатор + встроенный в язык вызов с-функций из динамических библиотек (*.so)
  • обработка видео потоков = можно организовать через вызов с-функций
  • рендеринг графики = через OpenGL, прямой вызов функций из Cairo или библиотеки на твой вкус
  • элементы AI = встроенный диалект Prolog'a
  • изменение кода на лету без компиляции всей программы и при этом чтобы скорость (интерпретатора?) была приемлемой. = Да + полноценный repl в консоле + приличная интеграция в emacs
anonymous
()

Почему-то никто до сих пор не предложил D. Метапрограммирование там лучше и чище сделано, чем в C++, производительность не хуже.

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

Да и сам C++11 тоже вполне уже неплох.

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

ТСу, скорее всего, нужна кодогенерация, а не интегрированное в язык метапрограммирование. А кодогенерацию можно хоть на M4 делать, а то и вовсе на bash-скриптах с sed-ом.

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

LLVM в большинстве случаев как из пушки по воробьям. Генерить код на C++ или C проще и эффективнее.

psikh
()

Lua, точнее luajit. Скорость - быстрее только ассемблер. Метапрограммирование есть. Язык очень простой.

anonymous
()

Можно сделать по старинке: написать программу на любом удобном ЯП, которая будет генерировать программу на C. 8)

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

Lua, точнее luajit. Скорость - быстрее только ассемблер.

Ага, ага, для обработки видео в реальном времени. Самому не смешно?

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

К той арифметике (следует заметить, очень сильно параллелящейся), которая применяется в обработке видео, все эти задачи никакого отношения не имеют. В числодроблении luajit - тормоз, которому даже до Java еще очень далеко.

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