Переносимый язык сценариев для многосерверного администратора? - PullRequest
11 голосов
/ 26 января 2010

Обратите внимание: Portable, как на portableapps.com, не в традиционном смысле языка, который может использоваться в нескольких архитектурах или операционных системах. Тот, кто придумал это использование слова «портативный», должен быть поражен. :)

Я администратор базы данных и сисадмин, в основном для компьютеров под управлением Windows, на которых работает SQL Server. Я ищу язык программирования / написания сценариев для Windows, который не требует доступа администратора или установщика, не требуя никакого процесса установки, кроме развертывания его в папку. Мое намерение состоит в том, чтобы иметь язык для автоматизации, который я могу стандартизировать.

До этого момента я использовал комбинацию командных файлов и оболочки Unix, используя sh.exe из UnxUtils , но это далеко не идеальное решение.

Я оценил несколько вариантов, у всех из них есть по крайней мере один серьезный недостаток. Я сильно предпочитаю что-то с открытым исходным кодом или двойную лицензию, но меня больше интересует поиск правильного инструмента, чем что-либо еще. Не интересно, что-нибудь, что опирается на Cygwin или Java, но на данный момент мне будет хорошо с чем-то, что нуждается в .NET.

Требования:

  • Управляемый размер (1-100 файлов, установлено менее 30 МБ)
  • Запуск на Windows XP и Server (2003 +)
  • Нет установщика (exe, msi)
  • Нет необходимости устанавливать JVM или Cygwin
  • Работает с внешними каналами, процессами и файлами
  • Поддержка соединений MS SQL Server или ODBC

Бонусные баллы:

  • Открытый исходный код
  • FFI для вызова функций в собственных DLL
  • Поддержка графического интерфейса (native или gtk, wx, fltk и т. Д.)
  • Поддержка Linux, AIX и / или OS X
  • Динамический, объектно-ориентированный и / или функциональный, интерпретированный или скомпилированный байт-код; интерактивная разработка
  • Возможность упаковывать или компилировать скрипты в исполняемые файлы

Пока я пробовал:

  • Ruby: 148 МБ на диске, 23000 файлов
  • Портативный Python: 54 МБ на диске, 2800 файлов
  • Strawberry Perl: 123 МБ на диске, 3600 файлов
  • REBOL: Отлично, за исключением закрытого источника и без MSSQL или ODBC в бесплатной версии
  • Squeak Smalltalk: Отлично, кроме плохой поддержки сценариев

Ответы [ 7 ]

9 голосов
/ 26 января 2010

Я призываю вас попробовать Lua .Относительно ваших требований:

  • Крошечный размер (56 исходных файлов, скомпилированный под 150K)
  • Работает везде (использует только ANSI C)
  • Установщик не требуется;вы компилируете из исходного кода (есть также пакет «с батарейками» , который я не исследовал
  • Не требует JVM и работает с любым компилятором ANSI C, поэтому вы можете компилировать с VisualStudio, а не Cygwin
  • Работает с внешними процессами и файлами, но только в той степени, которая поддерживается ANSI C. Если предоставляется POSIX popen, то это также поддерживается.

И вашбонусные баллы:

  • Открытый исходный код (лицензия MIT)
  • FFI to C блестяще задуман и выполнен - ​​не так просто, как Tcl, но загружает более мощный. Много лучшая интеграция с C, чем с Python или Ruby.
  • Поддержка графического интерфейса смешанная, но есть хорошие привязки для виджетов wx. Поддержка QT была когда-то, но я не знаю, поддерживалась ли она.
  • Поддерживается Linux
  • Функции языка / компилятора:
    • Динамический
    • Функциональный
    • Объекты на основе прототипов и наследование через метаметодов (вы будете ваnt, чтобы видеть примеры в книге ниже
    • Самый быстрый компилятор байт-кода на Западе
    • Интерактивный цикл read-eval-print;динамически загружать новый код
  • Возможность упаковывать сценарии в исполняемые файлы;Либо используйте Luiz de Figueiredo srlua, либо я могу отправить вам 120-строчный скрипт Lua, который преобразует исходный код Lua в файл .c, который вы связываете со своим приложением и интерпретатором, чтобы сделать исполняемый файл.

Дополнительные бонусные баллы:

3 голосов
/ 26 января 2010

Есть несколько вариантов Python, которые могут соответствовать вашему счету:

  • Первый - IronPython, , который можно запустить без установщика и который будет прекрасно работать с API-интерфейсами .net. Это дает вам доступ ко всему с помощью .net API или библиотеки типов COM, для которой вы можете создать PIA. Я использовал в качестве механизма сценариев именно по этой причине - его можно было бы поместить в каталог внутри системы, и его не нужно явно устанавливать ..

    Вам потребуется соответствующая среда выполнения .Net установлен, но .Net 2.0 установлен с SQL Server 2005. Доступ к SQL Server можно получить через ADO.net, и создание графических интерфейсов с помощью Winforms довольно просто.

  • Второй - Portable Python , который предназначен для работы с USB-ключом. Хотя я вижу, что вы уже попробовали это, вы могли бы уточнить, какие были недостатки. Если что-то не доступно в базовой установке, вы всегда можете посмотреть на создание пользовательской версии с включенной в нее. TkInter (по крайней мере) в комплекте.

    Вы также можете использовать Py2EXE для генерации автономных приложений на Python с удалением всего лишнего мусора. Это даст вам около 10 файлов или около того (в зависимости от количества DLL), которые можно запустить из одного каталога, возможно, с USB-ключа.

Выполнение локальной установки Python в ОС Unix-oid довольно просто, так что это не составляет большого труда. Кроме того, Python поставляется с большинством дистрибутивов Linux и доступен как «программное обеспечение, входящее в комплект поставки» от большинства, если не от всех поставщиков Trad Unix. IIRC также поставляется в комплекте с MacOS.

2 голосов
/ 26 января 2010

Tclkit - это отдельная файловая, автономная система Tcl / Tk. Mac версия у меня около 3,8 мегабайт. Вы можете получить версию практически для любой современной ОС. Я ношу с собой флеш-накопитель, на котором установлены Mac, Windows и Linux, чтобы я мог запускать свои скрипты на любой платформе. Установка не требуется, просто скопируйте один файл куда хотите.

Единственное, чего не хватает в вашей оригинальной спецификации, - это поддержки MS SQL Server / ODBC из коробки. Я знаю, что люди используют tcl для этого, но я думаю, что вам придется добавить дополнительную библиотеку или что-то в этом роде. Для получения дополнительной информации см. Вики-запись Tcl'ers на MS SQL Server .

0 голосов
/ 26 января 2010

Каждая несколько современная версия Windows поставляется с предустановленным VBScript и JScript. Они не соответствуют всем вашим функциям (приходит на ум компиляция в исполняемый файл), но они, безусловно, имеют непревзойденное преимущество при размере установки: трудно победить 0.

0 голосов
/ 26 января 2010

В дополнение к предложению Lua есть также Idle . По сути, это расширенный набор Lua 5.1 с языком (и библиотеками) и реализацией, основанной на Lua. Первоначально он был создан, чтобы быть более полным сценарием для Windows: поскольку Lua изначально предназначен для встраивания, он имеет довольно небольшую стандартную библиотеку, и обычно ожидается, что приложение для встраивания предоставляет богатую библиотеку Lua.

Это имеет смысл для встроенного языка, потому что, в конце концов, между, скажем, Adobe Lightroom, Nginx и World of Warcraft не так много общих функций, так что просто нет ничего, что можно было бы вставить в стандарт библиотека. Но для более общего языка сценариев ОС нужно было бы немного больше библиотеки. Таким образом, Idle объединяет пару библиотек сторонних производителей (и иногда трудно заставить их работать в Windows) в Lua в свою стандартную библиотеку.

Некоторые вещи, которые стандартная библиотека Idle добавляет к Lua, - это тесная интеграция с Win32, поддержка SQLite3, поддержка сети, генератор синтаксических анализаторов PEG и поддержка архивов.

Кроме того, Idle поддерживает встраивание кода Perl и C в ваши программы Idle.

0 голосов
/ 26 января 2010

Глядя на исчерпывающий список Википедии портативного программного обеспечения Есть компилятор Tiny C, снова в Википедии здесь , и его собственная домашняя страница здесь .

Чтобы подвести итог, цитируя список функций Википедии:

  • Small - может компилировать и выполнять код C везде, например, на спасательных дисках (около 100 КБ для исполняемого файла x86 TCC, включая препроцессор C, компилятор C, ассемблер и компоновщик).
  • Fast - tcc генерирует оптимизированный код x86. Нет байт-кода накладных расходов. Он компилирует, собирает и связывает примерно в 9 раз быстрее, чем GCC.
  • Любая динамическая библиотека C может использоваться напрямую. TCC движется к полному соответствию ISOC99. TCC может, конечно, скомпилировать себя.
  • Включает в себя дополнительную память и связанную проверку. Связанный проверенный код можно свободно смешивать со стандартным кодом.
  • Скомпилируйте и выполните исходный код на C напрямую. Никаких ссылок или сборок не требуется. Полный препроцессор C и GNU-подобный ассемблер включены.
  • Поддерживается сценарий C: просто добавьте '#! / Usr / local / bin / tcc -run' в первой строке вашего источника C и выполните его прямо из командной строки.
  • С libtcc вы можете использовать TCC в качестве бэкэнда для динамической генерации кода.
  • Несколько зависимостей. Он включает в себя собственный рукописный лексер и реализован с использованием рекурсивного анализатора спуска. Таким образом, для создания TCC требуется немного других библиотек.
  • Лицензия LGPL позволяет любому использовать, модифицировать и / или распространять программное обеспечение, и его можно использовать для разработки либо программного обеспечения с открытым исходным кодом, либо проприетарного.

Надеюсь, это поможет и будет полезно, С наилучшими пожеланиями, Том.

0 голосов
/ 26 января 2010

Для tcl, кроме Tclkit, freewrap - это еще один небольшой портативный автономный интерпретатор для tcl.

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

Кроме того, бесплатные приложения содержат интерпретатор tcl. В тяжелых ситуациях вы можете попробовать открыть приложение в виде zip-файла и отредактировать / заменить содержащийся в нем tcl-код (просто не забудьте сначала сделать копию). Это спасло меня несколько раз, когда я на клиентском сайте без инструментов разработки, но нужно что-то устранять. Я просто делаю копию одного из моих развернутых приложений и готовой среды мгновенной разработки!

...