Pregunta

Trabajo en un entorno de Microsoft, por lo que puedo usar mi martillo C# en cualquier clavo que encuentre.Dicho esto, ¿qué lenguajes (compilados, interpretados, de secuencias de comandos, funcionales, de cualquier tipo) complementan el conocimiento de C# y con qué fines?Por ejemplo, he movido muchas funciones de secuencias de comandos de las aplicaciones de consola compiladas a secuencias de comandos de Powershell.Si es desarrollador de MS, ¿ha encontrado un nicho en su mundo para otros lenguajes como F#, IronRuby, IronPython o algo similar? ¿Qué nicho llenan?

Nota:Esta pregunta está dirigida a la gente de desarrollo de Microsoft, ya que no puedo salir corriendo y comenzar a instalar pilas LAMP en mi empresa y, por lo tanto, tengo que brindar soporte para siempre.:) Sin embargo, siéntete libre de mencionar cualquier otro idioma que te parezca interesante para cumplir una determinada tarea/rol en tu mundo aparte de tu idioma principal.

¿Fue útil?

Solución

Python/Perl/Ruby/PowerShell son excelentes complementos para C#/VB.NET.Si su jefe le entrega un archivo de texto y le dice que lo inserte en la base de datos una o dos veces, entonces cualquiera de Perl/Python/Ruby (no estoy seguro acerca de PowerShell, pero imagino que no es mucho más difícil) debería estar bien para analizarlo.De cualquier manera, para sus aplicaciones principales probablemente se quedará atrapado en C#.Puede utilizar uno de los lenguajes más dinámicos para generar código en C#.

Dado que se encuentra en un entorno Microsoft, probablemente su mejor oportunidad para que se acepte su solución sea PowerShell.Además de eso, diría IronPython o algo más que se integre con CLR.Pero el problema principal es que para que otra persona mantenga lo que usted hace, tendría que saber el idioma que esté utilizando.MS en el futuro tiene planes de usar PowerShell mucho más, por lo que probablemente sea más fácil justificar PowerShell que decir Python/Perl/Ruby.

Si solo está procesando un archivo de texto para un uso único.O crear un generador de código único para generar todo el código y luego intentar mantener el código generado, entonces no importa.Usted es quien consumirá los resultados y si ahorra tiempo usando Perl, tendrá más poder.Pero si estás haciendo algo que se usará una y otra vez (como un generador de código activo donde cambias las plantillas y ejecutas el generador en lugar de mantener el código generado), entonces otros desarrolladores que trabajen en lo que hiciste necesitarán conocer el idioma. usaste.Es mucho más difícil discutir sobre aprender Perl/Ruby/Python en una tienda de Microsoft.Pero PowerShell parece el argumento más fácil.Creo que el gran plan de MS es que eventualmente las aplicaciones expongan más funcionalidades para Power Shell a través de comandos.Suponiendo que esto suceda, PowerShell es aún más obvio porque expondrá toneladas de funcionalidades programables que no obtendrá de ninguna otra manera.

Otros consejos

Un buen lenguaje de programación siempre es una buena herramienta para tener a mano.Ver Rubí, o Pitón.

Utilizo Python para crear prototipos, ya que casi no hay tiempo de respuesta entre las ediciones y la ejecución de la nueva versión del código.Incluso puedo terminar usándolo para un proyecto real: cuanto más lo uso, más me gusta.

Sin embargo, como programador de C#, te llevará un tiempo acostumbrarte: el sistema de estructura definida por sangría que utiliza es un poco extraño al principio.

Ya que estás en una tienda de MS, te sugeriría Potencia Shell como un lenguaje de programación decente para aprender.Funciona bien con C#.Yo también soy un gran admirador de Ruby.

Me gustaría el segundo o tercer Python.Específicamente, IronPython (ttp://www.codeplex.com/Wiki/View.aspx?ProjectName=IronPython) le permite aprender Python pero también le brinda acceso a las ventajas de .net framework.

Es bastante bueno para tareas relacionadas con secuencias de comandos, por lo que probablemente será útil para su vida diaria de codificación, y también una buena manera de trastear en una forma experimental de codificación/creación de prototipos.

Si bien es un lenguaje un poco marginal, me veo obligado a mencionar erlang.Erlang es un lenguaje excelente para tener en su caja de herramientas, ya que sus fortalezas inusuales tienden a complementar otras plataformas de programación.Erlang es muy útil para crear sistemas distribuidos, concurrentes y tolerantes a fallas.Se utiliza mucho en el mundo de la telefonía y la mensajería instantánea, donde se necesitan arquitecturas distribuidas pero interconectadas.

Tal vez juegue con Boo y vea lo que piensa.
Boo en Codehaus.org
Abucheo en Wikipedia

Si utiliza el marco .Net, el lenguaje realmente no es importante ya que el compilador y el intérprete crean el mismo código IL en cualquier caso.

Si te alejas del mundo .Net, soy de la opinión de que las herramientas y los lenguajes de desarrollo son una caja de herramientas.Me esfuerzo por utilizar las herramientas adecuadas para el trabajo en cuestión, teniendo en cuenta cuál es la base de habilidades de los otros desarrolladores y, por supuesto, qué dirección busca una empresa (soy consultor).

Estoy con jjnguy.Pruebe uno de los lenguajes de secuencias de comandos.Además, como beneficio adicional, cuando aprendes Ruby/PythonPearl, etc... es una droga de entrada... lenguaje errado para desarrollar para otros entornos.

Probar idiomas fuera de su caja de herramientas habitual le brindará nuevas formas de abordar las cosas en su idioma favorito actual.Incluso si no los usa para proyectos serios, lenguajes como Perl (para manipulación de datos), Lisp (programación funcional) y JavaScript (programación basada en prototipos) le enseñará nuevas formas de pensar en los problemas en su idioma actual.

Como desarrollador web de profesión, podría considerar la familia XSLT/XPath, ya que para ciertos tipos de procesamiento XML pueden ser herramientas muy poderosas.

Por supuesto, en C# 3.x Linq2Xml expone algunas funciones similares en línea.

XSLT, sin embargo, puede ser una forma poderosa de separar los datos de la presentación en sus aplicaciones.

Estoy muy interesado en F# y algunos de los otros lenguajes nuevos en CLR/DLR.Los lenguajes DLR pueden ser mucho mejores para tu interfaz de usuario, porque no te obligan a lanzar muchas cosas estúpidas.

Sin embargo, creo que es importante tener en cuenta que aprender un nuevo lenguaje, especialmente en un área nueva, como la programación funcional, siempre es una buena manera de volver a entrenar tu mente para que estés expuesto a nuevos conceptos y puedas codifique mejor en el idioma que elija, incluso si nunca usa esos nuevos idiomas.

Echa un vistazo a Boo: se ejecuta sobre la pila .NET, pero su sintaxis se parece más a Python.

Para aprender un nuevo lenguaje que complemente C#, elegiría C++.Puede usarlo en un estilo "mucho mejor que p/invoke" para obtener acceso al código no administrado de sus aplicaciones C#.Luego puede comenzar a usarlo para escribir aplicaciones con memoria limitada y/o bits críticos para el rendimiento, si encuentra que algunas de sus aplicaciones .NET comienzan a acaparar toda la RAM y/o CPU o simplemente, en general, no son tan rápidas como te gustaría.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top