LINUX.ORG.RU

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

Не, скор тут не при чем. Я заюзал buildapp (buildapp --output demo2 --load demo2.lisp), который заюзал sbcl, который выдал бинарник размером в 40мб со встроенным интерпретатором CL'а. Это, мягко говоря, не то, что надо.

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

ну всё правильно.
ECL вроде как-то умеет меньше бинари делать

Bad_ptr ★★★★★
()

Отсюда вопрос (я серьезно, не хочу разводить холиваров): нахрена этот Лисп вообще нужен тогда?

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

тут тебе поможет поиск по лору.
Тебе надо обратится к первоисточникам. Этот вопрос обсуждался не раз и не два.

Bad_ptr ★★★★★
()

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

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

Так искал же, везде одни срачи на тему ненужности Лиспа, а конкретного ничего нет.

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

#include <stdio.h>
#include <stdlib.h>

void show_usage(const char *prog_name)
{
	fprintf(stderr, "Usage: %s --meow.\n", prog_name);
	exit(1);
}

int main(int argc, char **argv)
{
	if (argc != 2)
		show_usage(argv[0]);
	if (strcmp(argv[1], "--meow"))
		show_usage(argv[0]);

	printf("Meow!\n");

	return 0;
}

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

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


CL — тьюринг-полный язык. Значит ты можешь написать на нём эквивалентную программу. Причём целиком на макросах.

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

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

kotik@kotik-laptop:~:0> sbcl
This is SBCL 1.2.0, an implementation of ANSI Common Lisp.
More information about SBCL is available at <http://www.sbcl.org/>.

SBCL is free software, provided as is, with absolutely no warranty.
It is mostly in the public domain; some portions are provided under
BSD-style licenses.  See the CREDITS and COPYING files in the
distribution for more information.
* (load "hello-world.lisp")

T
* (hello-world)
Hello, world!
NIL
*

а так:

kotik@kotik-laptop:~:0> ./hello-world.lisp
Hello, world!

Как это реализовать?

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

нахрена этот Лисп вообще нужен тогда?

толсто, попробуй тоньше

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

В зависимости от реализации, придурок

В sbcl есть sb-ext:save-lisp-and-die, сука

В clisp ext:saveinitmem

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

Зачем нужен китайский язык?

Он не нужен.

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

Это понятно. Но своим вопросом я имел в виду «Как люди этим пользуются, если у них любой хелловорлд занимает минимум 40 мегабайт?»

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

Большинство современных реализаций CL основаны на понятии образа (image). Это имеет свои преимущества и недостатки. В том же Smalltalk эта концепция развита еще больше.

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

Так же, как любым интерпретируемым языком, интерпретатор которого умеет «компилировать» запихивая себя и хелловорлд в один бинарник. Любимый многими питон в зависимости от версии и окружения иногда рожает бинарники под 80 мегабайт.

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

Как люди пользуются Джавой, если для запуска любой банки требуется целая JVM?

jerk-of-all-trades
()

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

Теперь я все осознал.

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

Но своим вопросом я имел в виду «Как люди этим пользуются, если у них любой хелловорлд занимает минимум 40 мегабайт?»

У Людей которые этим пользуются. Лисп запущен всегда на манер демона. И ПриветМиры они соответствено пускают прямо из REPL-а. Делать для этого отдельную чушку на 40 не обязательно.

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

Как люди этим пользуются, если у них любой хелловорлд занимает минимум 40 мегабайт

подозреваю, что пишут в основном не хелловорлды

40 мбайт это нормально для одного бинарника

а если таких бинарников много, интерпретатор выносится в библиотеку

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

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

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

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

а если таких бинарников много, интерпретатор выносится в библиотеку

Фикус в том для CL в общем случае он как раз не выносится. Нет технической возможности.

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

вообще-то есть 100500 реализаций lisp, благо что он прост. Не обязательно замыкаться на исторических монстрах, тянущих с собой целую платформу. Можно спаять ваш helloword, например с pico-lisp. Гуголь первой-же строкой подсказывает наличие ecl (embedded common lisp) http://ecls.sourceforge.net/index.html. К тому-ж лисп-машина достаточно проста и можно самому реализовать, что наверное и делали курсе на 3-4.

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

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

Он умеет. И Java умеет компилировать джава-код в машкод; сколько там весит жабка-то? А ведь нужна и многим.

Virtuos86 ★★★★★
()
Ответ на: комментарий от gh0stwizard
#!/usr/bin/env sh
"true"; exec /usr/bin/env sbcl --script "$0" "$@"

(write-line "Hello, World!")

Так работает ^_^

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

вот, например, техническая возможность: ...

Это не библиотека :) И такой способ не всегда хорошо работает.

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

который заюзал sbcl,
интерпретатором CL'а

sbcl это компилятор если что. а по теме - иди читай что такое CL, что такое лисп-машина, и что именно представляет из себя этот 40мб бинарник.

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

Просто я открыл «Practical Common Lisp», и мне там почти прямым текстом написали, что Lisp — лучший язык в мире. Что я должен был думать‽

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

Но своим вопросом я имел в виду «Как люди этим пользуются, если у них любой хелловорлд занимает минимум 40 мегабайт?»

Легко и непринужденно. Фишка лиспа в том, что в нем нет компилятора «традиционном» смысле этого слова.

Это не значит что лисп интерпретируемый, и сам не создает машинный код. Еще как! Так, что в некоторых случаях напрочь заруливает C++, а в данном вопросе зарулить C++ не каждому дано.

А как же тогда получаются бинарники? А все просто. CL позволяет динамически менять сам себя. Через пресловутый REPL. А после чего — сдампить измененный образ CL-системы. А чтобы не таскать два файла: загрузчик и образ, к загрузчику пристыковывается BLOB образа. В результате, бинарник размером 40 мегабайт.

Бесплатный совет: прежде чем постить сюда всякие выдуманные за 5 минут «оптимизации», просто попробуй их применить к проектам на несколько порядков сложнее хелловорлда.

Лисп — продукт из давних, и более счастливых времен, не замутненных данностью конкурентности. И как это не странно, он смог дожить до следующего витка спирали (все развивается по спирали, ты не знал?)...

Например, CL портированный на Xen сможет пересмотреть всю существующую архитектуру серверов приложений. И несчастные 40 метров системного образа, тут ни на что не повлияют.

Как тебе, например, облачный сервис с лисп-системами? Кто бы занялся...

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

Что-то не припомню, чтобы в PCL было написано, что лисп --- лучший язык в мире для написания хелловорлдов.

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

Да. И в LispOS уже программа на C будет десяток мегабайт в бинарнике. :-)

monk ★★★★★
()

А зачем тебе фп и лисп в частности? Пиши на сишке.

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

HTTP на S-выражениях

Есть cl-who, весьма говёная штука. А ещё она написана Edi Weitz, а у него почти каждая программа внутри ужасное говно

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