Родной автономный исполняемый файл с Smalltalk?

Мне очень нравится живая среда smalltalk (хотя я только немного поэкспериментировал с Pharo), но есть одна вещь, по которой я не могу использовать ее для повседневной разработки. Кажется, что невозможно создать собственный автономный исполняемый файл из системы smalltalk. Собственный автономный исполняемый файл означает создание одного исполняемого файла (PE в Windows, ELF в Linux, Mach-O в macosx), который пользователь может запустить, дважды щелкнув его, без необходимости установки каких-либо дополнительных сред выполнения. Я что-то упустил, и на самом деле можно создать собственный автономный исполняемый файл с помощью smalltalk?

Если говорить конкретно о Pharo. Я знаю, что среда Pharo включает эффективный своевременный компилятор (который генерирует настоящий собственный код из байт-кода виртуальной машины Pharo), я знаю, что образ виртуальной машины можно урезать, вырезав код, который моему приложению никогда не понадобится. Итак, в основном у нас уже есть почти все (кроме компоновщика, я думаю), чтобы иметь возможность создавать собственные автономные исполняемые файлы. Кросс-компиляция тоже не должна быть проблемой, если мы поместим в образ весь материал для генерации кода (для всех целевых процессоров).

Я знаю, что в мире smalltalk считается хорошим делом доставлять весь образ виртуальной машины отдельно от среды выполнения, чтобы пользователь мог взломать программное обеспечение, которое он / она использует. Однако я не вижу веских причин, по которым ваша программа smalltalk не может быть предоставлена ​​в виде полностью скомпилированного автономного исполняемого файла. Не могли бы вы объяснить мне, почему это не обычное дело в мире smalltalk? Есть ли какая-нибудь хорошая реализация smalltalk, позволяющая это сделать?

Подводя итог всему этому. Я мечтаю о живой среде smalltalk, в которой я мог бы разрабатывать и тестировать свое программное обеспечение, а затем (когда программное обеспечение действительно готово к доставке) кросс-компилировать его в нативные исполняемые файлы для Windows, Linux и macosx с моей единственной машины разработки. Это было бы действительно здорово.


person user2102508    schedule 03.08.2015    source источник
comment
Это относится не только к Smalltalk, но и к определенным диалектам. Есть несколько продуктов Smalltalk, которые поставляются в виде файла .exe (например).   -  person Leandro Caniglia    schedule 03.08.2015


Ответы (7)


Не Pharo, а нативный, скомпилированный (через ANSI C или собственный JIT) smalltalk [приложения] (с возможностью загрузки предварительно скомпилированных DLL или [JIT-] -компилированного кода по запросу):

Smalltalk / X

http://www.exept.de/en/products/smalltalk-x.html

или (неофициальная расширенная версия для разработки):

Ветка Smalltalk / X JV - https://swing.fit.cvut.cz/projects/stx-jv/

Практически полностью с открытым исходным кодом. Все, кроме компилятора librun (основная среда выполнения - управление памятью, JIT и т. Д.) И компилятора stc (smalltalk-to-c), уже является открытым исходным кодом. Клаус Гиттингер / Exept также пообещал / подтвердил, что они выпустят оставшиеся исходники, если они остановят дальнейшую разработку (AFAIK, эти части закрыты только из-за опасений существующих клиентов).

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

person Miloslav Raus    schedule 24.08.2015

по иронии судьбы есть одна вещь, которую необходимо предварительно загрузить exe. Ваша ОС. Дело в том, что C / C ++ может быть таким легким, потому что ваша ОС уже действует почти так же, как изображение с тонной предварительно загруженных библиотек. Вам нужно потратить несколько гигабайт памяти, чтобы запустить простой калькулятор. Ваша ОС - это набор библиотек C / C ++.

С другими языками, такими как python, java и т. Д., Дела обстоят не лучше, даже если приложение меньше, они по-прежнему зависят от этих библиотек, и они приходят с довольно большими библиотеками, которые потребуют установки, независимо от того, использует ли ваше приложение их или нет.

Pharo и Smalltalk в целом отличаются от других, потому что сами по себе стремятся стать виртуальной ОС. В отличие от реальной ОС, образ smalltalk создан для того, чтобы пользователь мог легко его взломать.

Говоря, что вы можете переименовать исполняемый файл pharo, изменить его значок, отключить инструменты IDE внутри Pharo, чтобы ваш пользователь видел только графический интерфейс вашего приложения. Такие приложения, как Dr. Geo и Phratch, уже делают это.

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

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

person Kilon    schedule 04.08.2015
comment
Проект SqueakNOS развивает эту философию еще дальше, но не требует вообще никакой операционной системы (!) - person Leandro Caniglia; 05.08.2015
comment
Вы правы в том, что это не имеет значения для размера загрузки. Это имеет большое значение для конечного пользователя приложения. Это также может иметь значение для защиты проприетарных аспектов кода. - person Euan M; 04.12.2015

Вы также можете попробовать Dolphin из Object Arts.

Это только окна, но лучшая IDE, без исключений. Если вы делаете что-нибудь в Smalltalk, вам следует купить копию. (У них также есть бесплатная некоммерческая версия, но вы захотите поддержать мастерство, стоящее за ней, купив версию Pro. Абсолютно крутой продукт, ИМХО).

Он создаст автономный exe, если вы этого хотите. С его помощью я сделал exe из вики со средним набором функций - размер exe был меньше 1 МБ. Это не опечатка.

-Джим

person Jim Sawyer    schedule 27.08.2015
comment
Дельфин стал открытым исходным кодом. Вы можете получить его бесплатно, а также поискать источник! ;) (object-arts.com/blog/files/) - person svelten; 30.12.2015

Проблема в том, что Pharo в этом случае нельзя сравнивать ни с одним собственным компилятором, таким как C, C ++ или другими, но больше с java, python, ruby ​​и другими языками с виртуальной машиной.

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

В Pharo вы создаете «производственный образ» с помощью уже упомянутых вами технологий. Но ничто не мешает вам предоставить артефакт, включая PharoVM (в конце концов, он имеет размер 2 метра), и вы можете подготовить свои приложения для обнаружения и открытия вашего производственного образа (без необходимости запрашивать его).

person EstebanLM    schedule 04.08.2015
comment
Другие Smalltalks на основе виртуальных машин и образов могут это сделать. Сравнение возможно. Это не ограничение на использование образов или виртуальных машин. Это просто вопрос зрелости Фаро. - person Euan M; 04.12.2015

В Smalltalk это примерно так же практично, как и в других языках: не очень. Как только вы создадите несколько более крупное приложение, вы начнете в зависимости от установленных других библиотек / приложений. Если вы скомпилируете их статически с помощью приложения, вы теперь создали гораздо более крупное приложение, которое требует больше времени для загрузки и его необходимо обновить, по крайней мере, как только проблема безопасности будет обнаружена в одной из зависимостей. В противном случае ваше приложение больше не запускается двойным щелчком.

Есть два направления решений: веб-приложения и установщики и менеджеры пакетов.

Squeak по-прежнему поддерживает программу установки в один клик, позволяющую работать с одним и тем же набором файлов в Windows, Mac и Linux. Раньше у Pharo тоже было это, но теперь были отдельные сборки. Потребность не была настолько большой, чтобы можно было восстановить сборку в один клик. В основном считается полезным иметь возможность переносить кроссплатформенную среду на USB-накопителе. С переходом на 64-битную spur vm проблемы с зависимостями уменьшатся, поскольку на этих платформах будет предустановлено больше необходимых библиотек.

person Stephan Eggermont    schedule 11.08.2015

Dolphin Smalltalk может создавать автономные .exe для Windows.

Это ключевая особенность версии Pro.

person Euan M    schedule 03.12.2015

Ваша мечта существует с середины 80-х и называется Smalltalk / X.

person blabla999    schedule 15.08.2015