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

StackOverflow https://stackoverflow.com/questions/552061

Вопрос

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

Это было полезно?

Решение

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

Другие советы

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

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

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

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

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

Felix, Tuga, CFGScript, Talc, Angelscript и, думаю, это нечто большее, чем просто быстрый поиск.

Дуглас

Ф# обеспечивает сочетание «типовой безопасности, краткости, производительности, выразительности и сценариев».

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top