2011-01-04 8 views
5

Sé que Powershell generalmente se considera el lenguaje de administración de TI para Windows, pero ¿por qué/cuándo elegiría F #, que está fuertemente tipeado e 'inteligentemente'?Tareas de TI: secuencia de comandos F # frente al script de Powershell

+0

Creación de scripts frente a programación ... no de nuevo. –

+5

@Filip Creo que en realidad es Scripting vs. Scripting. Aunque personalmente encuentro preguntas como esta difíciles de resolver. –

+1

@Conrad, F # No es una secuencia de comandos afaik. –

Respuesta

5

Escogí F # cuando encajaba mejor para la empresa para la que trabajaba, el equipo que la usaría y la tarea que tenía entre manos. De lo contrario, elegiría algo más.

No puedo ser más específico que eso, sin más detalles, pero puedo sugerir algunas preguntas que debe hacer:

  1. ¿Cuál es el problema que se está resolviendo?
  2. ¿En qué idioma es más fácil expresar la solución al problema?
  3. ¿Los propios desarrolladores de F # del personal en sí (es decir, consideran la curva de aprendizaje involucrada)?
  4. ¿Serán las personas que mantengan este código administradores (que por lo general están bastante familiarizados con Powershell, & no familiarizados con F #)?

Una pista relacionada: no permita que se desarrollen una profusión de idiomas en su código de producción e infraestructura.

Experimente para encontrar el mejor idioma para resolver el problema que tiene, pero si en cinco años descubre que alguien ha escrito un componente central de su solución en un idioma que ya no es entendido por nadie en la empresa, es posible que tenga un problema grave en sus manos.

Mi regla empírica personal (por supuesto, hay excepciones) es que un proyecto debe tener un lenguaje central y un lenguaje de scripts para mantener todo junto, & que esos idiomas se elijan primero para adaptarse al dominio problemático, y en segundo lugar, para maximizar la competencia en todo el equipo. 'Lenguajes de mascotas' debe ser fuertemente desaconsejados en código de producción o infraestructura.

2

Depende de su problema y de quién mantendrá los scripts.

PowerShell es muy potente en áreas de administración (trabajando con archivos, directorio activo, csv/xml, computadoras, etc.), pero sus capacidades de programación son bastante limitadas (por ejemplo, casos de genéricos). Enhebrar en PowerShell no es tan fácil como podría ser. Pero nadie espera de los administradores que usarán hilos. En cambio, hay trabajos de fondo que satisfacen las necesidades del administrador.

Por otro lado, F # es un lenguaje de programación real, lo que significa que es bastante bajo y por lo tanto detallado (en comparación con PowerShell). Algunas tareas escritas en PowerShell son de una sola línea, mientras que en F # escribirías una gran cantidad de código. Además de eso, ¿cómo lograrías ejecutar el comando en computadoras remotas (Invoke-Command -computer myserver ...)?

Como ve, depende de su problema.
Muy importante también es quién mantendrá los scripts. Es posible que esté de vacaciones y sus colegas tendrán que editar los scripts. Ambos idiomas necesitan algo de tiempo para aprender. En mi humilde opinión, es más fácil aprender PowerShell; pensar en un estilo funcional necesita doblar la cabeza.

1

Probablemente sea una mala idea, en este momento, elegir escribir scripts en F # si pudieran ser necesarios por alguien que no sea usted mismo ...

  1. El cuadro de personas que hablan F # es muy pequeño, por lo que está creando secuencias de comandos que muy pocas personas pueden leer o editar.
  2. El ejecutable fsi no viene con .Net Framework ni forma parte del paquete de redistribución de tiempo de ejecución F # (hasta donde yo sé). Esto significa que los scripts solo se pueden ejecutar donde se hayan instalado las herramientas de Visual Studio con F #.

La excepción obvia, por supuesto, es que si eres un desarrollador que trabaja en un proyecto donde F # es un lenguaje primario, ya que eso significa que todo el mundo que importa será capaz de ejecutar y editar tus guiones

Sin embargo, tengo que decir que creo que incluso en este caso ideal/excepcional, probablemente sería más trabajo de usar F # si su tarea scripting implica tareas para las que existen cmdlets preexistentes en PowerShell (es decir: tareas del sistema de archivos, registro, mantenimiento de la base de datos, directorio activo, intercambio, la lista sigue y sigue). Por supuesto, aún puede optar por hacerlo si está utilizando estos scripts como una oportunidad para aprender el idioma, pero tenga en cuenta los puntos 1 & 2 ;-)

Cuestiones relacionadas