Подтвердить что ты не робот

Кто-нибудь знает какие-либо статически типизированные скриптовые языки?

Я собираюсь запустить Linux-дистрибутив LFS только для хобби. Я планирую выполнять некоторые нестандартные задачи, и большая часть из них будет включать в себя изменение почти всех сценариев в дистрибутиве. (в основном, сценарии инициализации, но также я буду писать простой набор сценариев диспетчера пакетов.) Поскольку я собираюсь идти так далеко от нормы, и так как я никогда не был поклонником динамически типизированных языков (perl, python, bash, а остальные хорошие, но только не моя сильная сторона), мне было интересно, знает ли кто-нибудь о интерпретируемом языке, который фактически объявил переменные.

4b9b3361

Ответ 1

Посмотрите на команду "typeset" в вашей любимой оболочке. bash и ksh93 оба могут применять целые числа и строки, использовать ссылки (переменные переменные) и т.д. С помощью ksh93 вы также можете выполнять математику с плавающей запятой и использовать объекты с атрибутами. Статическая типизация на самом деле не покупает вам ничего полезного в сценариях инициализации и тому подобное. В первую очередь вы будете читать файлы и запускать системные команды - это то, на что действительно хорошо работает оболочка. Потратьте некоторое время на то, чтобы О'Рейли "изучил книгу" Корн Шелл ", прежде чем решить, что все эти другие Unixes тупо разработаны...;)

Ответ 2

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

С другой стороны, превратить скомпилированный язык в "не скомпилированный" вариант довольно прост. Вы просто не сохраняете результаты компиляции в любом месте, но выполняете их напрямую. Один компилятор, который я знаю, предоставляет такую ​​оболочку GHC, стандартный Haskell компилятор. Вы можете добавить #!/usr/bin/runhaskell в исходные файлы, а затем выполнить их непосредственно. И так как вы планируете быть далеко от нормы, Haskell кажется идеальной подгонкой;). Но ожидайте некоторого довольно большого времени запуска для ваших скриптов, потому что все "анализ времени компиляции" и оптимизация не бесплатны.

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

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

Ответ 3

быстрый Google. F3, javaFX script, Linden Scripting Language (сценарий для второй жизни). В отличие от комментария к первому ответу F # можно использовать в качестве языка сценариев http://blogs.msdn.com/chrsmith/archive/2008/09/12/scripting-in-f.aspx

Феликс, Туга, CFGScript, Тальк, Ангельскрипт, и угадывание есть более чем быстрый поиск.

Дуглас

Ответ 4

F # обеспечивает комбинацию "безопасность типа, сжатость, производительность, экспрессивность и скриптинг".

Ответ 5

Groovy. По умолчанию он динамический, утиный. Но также поддерживает статическое типирование.