LINUX.ORG.RU

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

 


2

3

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


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

JIRA ещё более-менее, но Confluence же такое говно...

Но почему тогда лисперы не сделают более качественный продукт? Ведь спрос есть, а Atlassian зашибает хорошее бабло.

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

вот в antiweb есть что-то выдающееся.
архитектура, модульность. каждый модуль на своём месте.

Но ведь это ложь. Apache, Tomcat, nginx, lighttpd и др. построены по модульному принципу. Каждый их модуль на своём месте. Следовательно, архитектура и модульность не суть отличительные особенности antiweb и не являются чем-то выдающимся.

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

писать программы которые пишут программы которые пишут программы, очевидно же :)

повторно использовать элементы ЖЦ макросами по ходу дела.

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

зато в antiweb эти модули вокруг common lisp'а.

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

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

ты же хотел убить всех файрфоксов? вот у них концепт про это самое.

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

агенты смиты будут писать агентов.

а файрфокс и старый глупый web 2.0 отомрёт за ненужностью.

только емакс, только хардкор!!! в месте мыс ила.

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

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

только дональд кнут, только хардкор!!!

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

Но почему тогда лисперы не сделают более качественный продукт?

Вот ты заладил «Купи слона» (с)

А почему никто другой не сделает? Два факта: Confluence говно и «Atlassian зашибает хорошее бабло». Почему ты сидишь тут, вместо того, что бы делать бабло вместо Atlassian?

Язык разработки не делает продукт более качественным. Если ты наймёшь лучших программистов, дашь им лучшие инструменты и заставишь писать говно, то они напишут говно, быстро и качественно. Бизнес делают не на языке, а на продукте.

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

представь, что антивеб это не отражение файловой системы в виртуальные URL'ы, а семантическая файловая система, контент-адресуемая память.

как camlistore, только оно на Go и через http. у нас будет своё хранилище, свои векторные протоколы.

они будут бегать поверх P2P транспорта.

и вместо http://linux.org.ru/урл_этого_топика ты будешь ходить на сайты в своей онтологии lor://очередной-тред-о-лиспе/#666 или lor://лиспотреды/CFFI/флуд,угар-и-содомия/ или даже lor://by-tags/lisp/Ручное управление памятью в лиспе/последняя-страница

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

например, на gitfs. и какой-то fuse интерфейс для этого.

или, какой-то MUMPS. ведь у SQL полно проблем.

эти MUMPS глобалы будут автоматически бекапиться фоновыми демонами — ведь MUMPS базы работают с минимальной вознёй со стороны админа и датабейз мейнтейнера (слово то какое простому DBA). DBA не нужын в MUMPSах.

а сетевой P2P уровень обеспечит хранение в облаке всего этого и прозрачную репликацию.

только CAM и MUMPS, семантическая файловая система, MUMPS и CAM!!

только хардкор!!!

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

ходить конечно это всё будет поверх P2P протоколов.

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

интеллектуальные агенты будут программировать других интеллектуальных агентов по запросам менее интеллектуальных пользователей!

полная репликация кода!! масштабируемость!! распределённость!! путин нео

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

только самообучающиеся автономные интеллектуальные системы! только хардкор!!!

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

есть Closure, но он сильно не допилен

Just as planned.

ну и? движок браузера и на tcl/tk есть, hv3 c поддержкой JavaScript. как и плагин для tcl в мозиллу.

это о чём-то говорит? да ни о чём, кому надо было и интересно — тот взял и сделал себе браузер.

загляни для примера в AUTHORS, ChangeLog, CREDITS файлы из WebKit движка, Chromium, и hv3 и Closure.

количество задействованных в разработке движка браузера людей тебе ни о чём не говорит?

а так, ну берёшь какой-то легковесный браузер типа luakit, или uzbl, встраиваешь туда CL, и пишешь туда свои скрипты на общелиспе. этим браузера пофиг вызывать ли по событиям команды шелла, луа команды в случае луакит или ещё что-нибудь.

запиливаешь интеграцию через d-bus в какой нибудь емакс, имееш профит.

ну да, будет рендерилка не на McCLIM с СELLS, JavaScript будет нормальный, сам движок не на cl а на C++.

никаких тебе конверсий html в sxml, компилируемого html/sxml и JavaScript макросами. зато уже есть и работает.

ещё, внезапно, есть браузер на форте с интересными идеями по обработке строк (слайсы массивов как в D). Но оно для HTML3.2 емнип.

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

Но ведь это был прототип, который потом переписали на Си. Что им помешало остаться на лиспе?

будто они руками его переписывали.

выше по треду ссылка на мейллист

in late 1989, jeff goh wrote a postgres-specific lisp->C translator that automated most of the conversion.

Что им помешало остаться на лиспе? Ведь лисп повышает производительность программирования, а код получается более содержательный и поддерживаемый!

а что помешало проекту OpenMW оставаться на D, зачем на С++ переписали? вот именно за этим, за широкими немытыми народными массами. будь проще — и к тебе потянутся.

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

эрик наггум

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

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

ООП языки не справляются с этим никак. В них ты можешь выбрать любую семантику, но только если эта семантика не отличается от семантики твоего ООП языка.

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

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

Но ведь это не так. С++ и Java справляются хорошо, но новые стандарты позволят справляться ещё лучше.

Нет, не справляются. Си++ уже показал всем свою абсолютную неприменимость, когда речь заходит о поддержке и дальнейшей разработке больших проектов. Во всех конкторах (за исключением какого нибудь Яндекса), в которых писали на Си++ в конечном счете приходили к тому, что все переписывали на Жабу, т.к. ни смена архитектуры, ни подбор программистов не помогают справляться с растущей стоимостью.

Java тоже не справляется, но в ней ситуация не так плачевна, но никакого DSL'я над ней не сделать, не используя внутренний или внешний компилятор с интерпретатором. Ошибки в дизайне языка и платформы привели к том, что Джаву пытаются развивать именно как платформу, чтобы заменить на ней Java на Scala, например.

На жабе нормального ООП-дизайна не построишь в принципе, т.к. одиночное наследование, обобщенное программирование не сможешь использовать по нормальному (вне рантайма), т.к. type erasure, метапрограммирования в принципе нету.

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

Да где они справляются-то? То, что паттерн-матчингом пишется в две строки и понятно даже джуниору, без него превращается в месиво и классов и методов в них.

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

Почему нельзя добавить функциональщину? Она была в С++ как только туда добавили перегрузку operator(), да и раньше(как и в С) можно было писать в этом стиле. Хотя дайте определение «функциональщины»...

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

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

Си++ уже показал всем свою абсолютную неприменимость, когда
речь заходит о поддержке и дальнейшей разработке больших
проектов.

Откровенная ложь.

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

[quoteCи++ уже показал всем свою абсолютную неприменимость, когда речь заходит о поддержке и дальнейшей разработке больших проектов. Опять врете? А это даже забавно :)

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

Хотя дайте определение «функциональщины»...

За определениями ходите в энциклопедии. Функциональщина в её ущербном варианте это то, что с такой помпой пытаются вкорячить в C++11.

Лиспы тут ничем не помогут, ибо неэффективны изначально

В чем неэффективность Лиспов? Как вообще s-exp + макросистема может привести к неэффективности сама по себе? Обосновывайте.

синтаксис все равно в лиспе останется ущербным - s-expr

Ущербный синтаксис это как раз Си++, без вариантов.

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

Откровенная ложь.

Это не ложь, это то, что практика показывает. Взрывной рост Жабы как раз следствие того, что Си++ убог.

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

Это не ложь, это то, что практика показывает. Взрывной рост
Жабы как раз следствие того, что Си++ убог.

Это какой-то дефект сознания. Рассуждая таким образом, мы неминуемо приходим к тому, что ущербность лиспов (всех сразу) была доказана ещё 20 лет назад.

C++ и Java имеют разную область применимости, доказывать ущербность C++ популярностью Java просто тупо.

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

Почему нельзя добавить функциональщину? Она была в С++ как только туда добавили перегрузку operator(), да и раньше(как и в С) можно было писать в этом стиле.

вот тут в бложике человек давным-давно пишет функциональщину на C++. даже сравнение у него было с Хаскеллем вот вот и вот начало

это ещё даже не С++11.

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

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

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

Лиспы тут ничем не помогут, ибо неэффективны изначально(и исправить это без изменения языка нельзя),

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

о стандартизации и говорить нечего

смиялсо

а синтаксис все равно в лиспе останется ущербным - s-expr

ты ссылку про http://readable.sf.net умышленно проигнорировал? чем тебе не нравятся sweet expressions, n-expressions и t-expressions?

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

а что, тут надо со схемами, графиками и case studies.
взять например книжку «понимание архитектуры промышленных С++ приложений», выписать в столбик проблемы оттуда типичные проблемы, и смотреть, как эти проблемы решаются в лиспах и зачёркивать.

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

вот вы тут говорите о какой-то абстрактной семантике. case studies в студию!
проблема, решениеА, решениеБ, post mortem, выводы

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

Это какой-то дефект сознания. Рассуждая таким образом, мы неминуемо приходим к тому, что ущербность лиспов (всех сразу) была доказана ещё 20 лет назад.

Не говорите ерунды. Преимущества Лиспа не могут быть реализованы в Си++ или Java, а вот между собой они пересекаются процентов на 80 в области применения, поэтому Java именно вытесняет Си++ из тех областей, в которых ему ранее отдавали предпочтение.

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

C++ и Java имеют разную область применимости, доказывать ущербность C++ популярностью Java просто тупо.

Это сейчас она стала вдруг разной просто потому, что пихать Си++ в ту область из которой его вытеснила Java назад никто в здравом уме не будет. Вдруг выяснилось, что и GUI какие-никакие можно клепать и на Жабе (IDEA, Eclipse, ...), скоро додет до людей простой факт, что Си++ в принципе не место нигде. И Си, который Си++ должен был заменить снова более распространен, чем Си++. В общем чувствую, что рассказываю очевидные вещи.

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

C++ и Java имеют разную область применимости, доказывать ущербность C++ популярностью Java просто тупо.

ну возьми C# или что-то из одной и той же ниши.
то что С++ слишком сложный по сравнению с C# или Java или D и содержит множество подводных камней, и это мешает новичкам осваивать С++, но упрощает освоение C#/Java/D — это медицинский факт.
при этом полезность для новичков C++ в этих нишах неочевидна.

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

человек давным-давно пишет функциональщину на C++

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

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

есть проблема:

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

некоторая часть популяции для понимании кей-вэлию/имя-значение/именующее-именуемое/«указатели» должна пройти годичный курс

на эту же тему http://local.joelonsoftware.com/wiki/Опасности_обучения_на_Java

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

это да, но для поначалу втягивающихся это пофиг, лишь бы ниша была выбрана адекватно.

это потом до них дойдёт, что копать нужно было глубже.

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

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

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

Преимущества Лиспа не могут быть реализованы в Си++ или Java

cпорный тезис, есть такой антропоморфный дендромутант, как intelib и его «метод непосредственной интеграции»: лисп макросами на С++.

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

с помощью такой-то матери, мотка изоленты и ценой таких-то усилий. но работает, буханка из троллейбуса-то!!

сейчас лучше бы нормальный CL компилятор под LLVM написали, толку было бы больше.

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

Это сейчас она стала вдруг разной просто потому

Потому что в 90-ых железо было слабое, инструменты были не развиты и C++ пихали куда-только можно, чем, кстати, немало поспособствовала MS. Индустрия развивалась, но никак не отменяет достоинств С++ и есть большой круг задач, для который C++ практически не имеет альтернатив.

Массовый программист настолько глуп

Я общался со многими программистами и не подтверждаю данного наблюдения (хотя, тупые попадаются). Ну ладно, я наверное тоже туп, но вот я смотрю на ITA и вижу, что они использовали:

1. Common Lisp для интеллектуальных алгоритмов
2. Java для веб
3. C++ для скорости
4. Python для скриптотни вокруг этого

Они тоже тупые?

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

cпорный тезис, есть такой антропоморфный дендромутант, как intelib и его «метод непосредственной интеграции»: лисп макросами на С++.

Видел этот троллейбус, а что там реализовано: макросы, квотирование, лексические/динамические переменные, компилятор в рантайме есть?

Может быть и можно сделать Лисп внутри Си++, но усилий это потребует на пару порядков больше (относительно размеров реализуемого стандарта), нежели в Лиспе прикрутить Си++ную семантику и даже, наверное, ридер.

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

В D конечно же это все получше сделано, но для рантайма опять же ничего не остается.

сейчас лучше бы нормальный CL компилятор под LLVM написали, толку было бы больше.

А смысл? По скорости для JIT он может оказаться слишком медленным, да ещё и работать с ним через Си-шный интерфейс это кучу времени пустить в трубу. Ведь с супер языком Си++ вообще никто не работает, все COM'ы и прочие CORBA догнивают где-то на обочине.

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

скажи . чё ты так вцепился в грааль-лисп?

Лисп ведь ассемблер.

и как всякий фон-неймановский ассемлер позволяет самоинтерпретацию.

НО писать на ассемблере выгодно в ДОРОГИХ задачах.

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

А у тебя Common Lisp для Веб. Кто из вас тупой?

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

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

С какой еще помпой? Вы явно не в теме. Лямбды в С++11 это просто сахар над типами с operator(). На уровне рантайма ничего нового. std::function это практически boost::function, перенесенный в язык. Т.е. библиотека.

Так что мимо.

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

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

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

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

У них разные сферы применения. С++ просто какое-то время занимал кусок не своей ниши, только отчасти теснимый там делфями и пр., вот туда java и влезла, совершенно по делу, надо сказать.

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

Кстати, можно пруф? А то я знаком с несколькими активными пилителями PostgreSQL, так они сишечку и юзают, а об использовании лиспа для postgres даже не слышали. Кстати, опенсорс же, покажите мне там лисп.

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

Ну так приводите примеры, не стесняйтесь.

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

PostgreSQL был сначала написан как раз на лиспе. Потом вроде его переписали на С.

я даже точную ссылку в мейллисте, с историей нашёл

Потом вроде его переписали на С. Наверное, для быстродействия, а может быть, просто в связи со сменой моды.

причём написали для этого транслятор lisp->C

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

Кстати, можно пруф? А то я знаком с несколькими активными пилителями PostgreSQL, так они сишечку и юзают, а об использовании лиспа для postgres даже не слышали.

cм. пруфлинк, трижды косвенную по содержимому поста ссылку транзитивно из этой

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

Но D непромуданный недоязык.

да, промудохались они явно недостаточно :))
да в D и не намудохаешься так, как в С++, никакого эротического интереса :))

//ontopic: или приведи примеры непродуманности

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

С++ просто какое-то время занимал кусок не своей ниши, только отчасти теснимый там делфями и пр., вот туда java и влезла, совершенно по делу, надо сказать.

вот жаль что туда Dylan не влез, по ряду причин:
то проект в Apple Cambridge зарезали, хотя работающий прототип был, его кажется на выставке показывали;
то ходил он из рук в руки Apple-CMU-Lispworks-FunctionalObject-опенсорц;
то продавать решили по ценам дороже Дельфи и лиспворкса вместе взятых (если со всеми фреймворками и батарейками посчитать... батарейки отдельно за сотни баксов — ну не дебилизм, а?)
то «сам» эрик наггум его послал, лол
то сейчас, в эпоху опенсорца что gwydion dylan, что OpenDylan хрупко собирается не подо всё, с шаманским бубном

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

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

вот gwydion — покороче, всего 50кб, Boehm GC в основном

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

да и плюсы успешно закопали бы

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

В основном непродуманность касается там шаблонов, перегрузки и пр., отчасти в сочетании с модулями и пр. хозяйством. Конкретные примеры могу привести чуть позднее, но они явно не додумали некоторые вещи. Сочетание шаблонов, перегрузки функций, концептов и пр. С++ проблем объективно сложно. Нельзя его сделать более простым, не выкинув половину возможностей. По крайней мере у D это не вышло... Надо признать, что не смотря на столько лет стараний, D оказался в пролете. А сам по себе язык, без сравнения с С++, вообще не интересен.

Ну и потом опциональным GC у них явно не получился. Без него в языке ничего полезного не сделаешь. Впрочем, у Rust тоже самое. Ждем еще какого-нибудь нового «убийцу С++», а пока пишем при необходимости на плюсах.

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

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

Кривой (с точки зрении теории) язык, но хороший инструмент.

Собственно, конкурент у С++ только один - сишечка. И то благодаря кучи неосиляторов, которые и на D или любом другом «убийце С++» писать не станут.

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

Ну и потом опциональным GC у них явно не получился. Без него в языке ничего полезного не сделаешь

вот тут разрабатывают альтернативный рантайм, но ещё довольно сыро

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

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