linux - que - ¿Alguien sabe de cualquier lenguaje de scripting de tipo estático?
script linux ejemplos (5)
Estoy a punto de comenzar una distribución de linux basada en LFS solo para un proyecto de hobby. Planeo hacer algunas tareas muy no estándar, y la mayor parte implicará cambiar casi todos los scripts en la distribución. (principalmente scripts de inicio, pero también escribiré un conjunto simple de scripts de administrador de paquetes.) Ya que voy a ir tan lejos de la norma, y dado que nunca he sido fanático de los lenguajes de tipo dinámico (perl, Python, bash y el resto son buenos, pero no es mi fuerte), me preguntaba si alguien sabía de un lenguaje interpretado que en realidad tiene variables declaradas.
Google rápido. F3, script javaFX, Linden Scripting Language (secuencias de comandos para una segunda vida), a diferencia del comentario en la primera respuesta F # se puede utilizar como un lenguaje de scripts http://blogs.msdn.com/chrsmith/archive/2008/09/12/ scripting-in-f.aspx
Félix, Tuga, CFGScript, Talc, Angelscript, y adivinar que hay más que una búsqueda rápida.
Douglas
Mire hacia adentro al comando "tipográfico" en su caparazón favorito. bash y ksh93 pueden aplicar números enteros y cadenas, usar referencias (variables variables), etc. Con ksh93, también puedes hacer cálculos de punto flotante y usar objetos con atributos. La tipificación estática realmente no le compra nada útil en los guiones de inicio y similares. Principalmente leerá archivos y ejecutará comandos del sistema, que es en lo que el caparazón es realmente bueno. Tómate tu tiempo con el libro O''Reilly "learning the Korn Shell" antes de decidir que todos esos otros Unixes están estúpidamente diseñados ...;)
Normalmente, los lenguajes tipados estáticos son lenguajes compilados. Supongo que la razón es que el análisis estadístico de los tipos es bastante costoso y debe tener una visión detallada de todo el código que está procesando. Después de haber hecho eso, se siente como un desperdicio no escribir toda esa información en un archivo, para que no tenga que volver a hacerlo la próxima vez. Entonces terminas rápidamente con un lenguaje compilado.
Por otro lado, convertir un lenguaje compilado en uno "no compilado" es bastante fácil. Simplemente no almacena los resultados de la compilación en ningún lado, sino que los ejecuta directamente. Un compilador que conozco que proporciona ese envoltorio es GHC, el compilador estándar de Haskell . Puede agregar #!/usr/bin/runhaskell
a sus archivos de origen y luego ejecutarlos directamente. Y como planea estar lejos de la norma, Haskell parece encajar perfectamente;). Pero espere un tiempo de inicio relativamente grande para sus scripts, ya que todo el análisis y optimización de "tiempo de compilación" no es gratuito.
Haskell no está hecho para scripts de shell y es un lenguaje funcional, por lo que si nunca lo ha visto antes, puede llevarle tiempo acostumbrarse. Pero tiene muy poca carga sintáctica y la fuerza de los lenguajes funcionales es la abstracción, por lo que no veo por qué no podrías crear una biblioteca que haga que las secuencias de comandos de shell sean divertidas. Incluso hay algo de shell Haskell experimental , pero parece ser más una prueba de concepto que una solución real.
En general, diría que la sobrecarga de todo el análisis de tipo es significativa, pero sugiero que elija su lenguaje compilado runhaskell
favorito y busque un contenedor como runhaskell
para ejecutar los scripts escritos en él.
F # proporciona una combinación de "tipo de seguridad, concisión, rendimiento, expresividad y scripting".
Groovy. Por defecto es dinámico, escrito a pato. Pero también es compatible con la tipificación estática.