LINUX.ORG.RU

Ручное управление памятью в лиспе

 


2

3

Подскажите, пожалуйста, можно ли в лиспе работать с собственными структурами как в с++? Например вручную указать сколько памяти выделить для хранения и т.п. Гуглил, что можно делать как то через FFI, но ни одного примера не нашел, поэтому спрашиваю на данном форуме - можно ли управлять памятью программы и работать с указателями вручную?


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

А как же многоэтажные макросы, а кодогенерация, а главный аргумент про eDSL?

Если размах проекта соответствующий, то всё это есть, и даже больше. Другое дело, что проектов такого уровня в принципе мало.

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

Ну если вам так легче воспринимать действительность, то ваше право.

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

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

Ну ежели с размахом, то оно конечно может принесет профит. Только вопрос еще где таких махателей найти. Толкового человека на С/С++ днем с огнем не найти.

Другое дело, что проектов такого уровня в принципе мало.

Ну не знаю про уровень, но у меня сейчас много всякого матану надо делать. Кодить это руками тяжко, а вот математикой куски кода генерить самое то. Боюсь что постичь высоты CL на том уровне мне не судьба.

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

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

Ну и зачем вы свои личные и чьи-либо еще трудности перекладываете на других? Кстати, может и не нужен был вам там С++. И достаточно было что-нить в духе Java/C#(я в таком случае предпочитаю Scala, но тут надо смотреть на команду), а может даже питончика.

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

Да, извиняюсь, был пьян и изрядно преувеличил. Но таки CL рассматривался, в частности и в контексте обсуждения пользы от возобновления при исключительной ситуации. Или я снова ошибаюсь?

На счет остальных пунктов возражений нет?

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

Толкового человека на С/С++ днем с огнем не найти.

Ага. Иногда приходится брать умных сишников и переучивать(хотя сам я си больше люблю, но что делать - на крестах быстрее разработка идет). Иногда поддаются шарписты.

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

Статистику через клей в R считали.

Не понял, у вас вроде все на FPGA было или куски на CPU считали?

В конпеляторах внешние мат.тулзы использовали.

А чего весь компелятор на маттулзе не забабахать?

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

На счет остальных пунктов возражений нет?

На самом деле я не хотел бы продолжать обсуждения (фана нет), но так если по быстрому:

1. Интерактивная разработка позволяет вносить изменения (любой сложности) непосредственно в работающее приложение, что сильно помогает (во время разработки, может быть даже во время отладки) во многих случаях. В С++ ты должен внести изменение, перекомпилировать, запустить приложение и создать проблемную ситуацию (не всегда и не всё покрывается тестами) и только тогда сможешь оценить результат своих изменений. В CL это происходит намного, намного быстрее, что ускорят процесс разработки не за счёт уменьшение строк кода, а за оптимизации процесса разработки.

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

Но в итоге это настолько костылеообразно, что пользоваться этим можно только от полного отчаяния и серьёзно подумав стоит ли. В CL же это совершенно естественно и вскоре перестаёшь понимать, как можно вообще писать по другому.

Макросы - путь к запутыванию кода.

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

Специальные переменные реализуются достаточно легко

Покажи как. А то я подозреваю, что ты не вполне понимаешь их смысл.

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

Иногда приходится брать умных сишников и переучивать

Зачастую умных хоть кого, голова бы была.

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

Не понял, у вас вроде все на FPGA было или куски на CPU считали?

На FPGA (плюс драйвер). R'щина была в сопровождении (обсчёт метрик, статистика, анализ). Рокет сайенс же делали, а какой сайенс без графиков?

А чего весь компелятор на маттулзе не забабахать?

Ипацца - этажом выше.

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

По поводу специальных переменных, вроде бы достаточно стека под капотом, нет? Можно еще через thread local сделать. Сейчас код не смогу написать, может позднее.

Остальное я понял и принял, пожалуй. Спасибо за пояснения=)

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

Можно еще через thread local сделать.

Скажем так, через thread local можно частично эмулировать. Но на практике ты будешь делать такое только в крайнем случае, а в CL это используется постоянно и в больших колличествах.

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

Это говномакросы сишки. Смысл лисповых макросов именно в том, что они позволяют менять семантику.

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

Я использую макросы там, где вижу в них смысл. Но одна из проблем в том, что в случае изменения макроса необходимо перекомпилировать все участки кода, где он используется, что мешает интерактивной разработке (порой приходиться грохать fasl файлы). Поэтому я стараюсь использовать макросы, скажем так, с осторожностью.

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

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

Bitcoin Forum

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

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

4. Макросы - путь к запутыванию кода. Да, я знаю макросы CL и понимаю, что это не С-макросы. Тем не менее, это все хорошо, пока ты пишешь один, но в команде они мешают больше, чем помогают. ИМХО.

Макросы - лучший способ написания наиболее читабельного, компактного и поддерживаемого кода. Читай про language-oriented programming и про eDSL.

И как раз с макросами командная разработка наиболее эффективна.

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

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

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

Некогда. Деньги на золоте и фьючерсах на нефть делаю, занят шибко.

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

Завидуй молча, нищее быдло.

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

Ого, спасибо интересно, сам бы наверно такое и не нашел memory management in extempore

я лишь на такое наткнулся, http://matthias.benkard.de/journal/132 не знаю правда, поможет ли это в применении низкоуровневых средств в лиспе.

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