usados sharp programacion mas lenguajes lenguaje guia futuro español demandados con comandos caracteristicas c# python programming-languages

sharp - ¿Qué características de Python despertarán el interés de un desarrollador de C#?



lenguajes de programacion mas usados 2018 (13)

Como cualquier lenguaje de programación, es solo una herramienta en la caja o un pincel mediante el cual puedes pintar tu creación. Cualquier esfuerzo creativo requiere que el artista adore las herramientas que usa; De lo contrario, el resultado sufre. A algunas personas les gusta Python por la misma razón que otras aman a Perl. Por cierto, he descubierto que la mayoría de los amantes de Python detestan la sintaxis expresiva y flexible de Perl. Como amante de Perl, no odio a Python, pero considero que es demasiado estructurado y restrictivo.

Si me preguntas, todas estas multitudes de personas que parecen amar a Python sufrieron silenciosamente la elección de herramientas antes de que Python se convirtiera en realidad. Algunos sufrieron bajo Perl, otros bajo otra cosa. En otras palabras, creo que cuando apareció Python, encontró un gran grupo de pacientes silenciosos que anhelaban una herramienta como Python.

No puedo programar en Python porque no puedo "pensar" en Python. Puedo "pensar" en Perl, por lo tanto, es la herramienta que prefiero. La masa que sufre silenciosamente, ahora, los usuarios de Python parecen haber encontrado alguna salvación perdida hace mucho tiempo. Ahora si solo pudieran guardar su evangelismo para ellos mismos :).

Para alguien que ha estado felizmente programando en C # desde hace bastante tiempo y planea aprender un nuevo idioma, encuentro que la comunidad Python está más unida que muchas otras.

La escritura dinámica personal me desanima, pero me fascina la forma en que la comunidad de Python se reúne a su alrededor. Hay muchas otras cosas que supongo que perdería en Python (LINQ, árboles de expresiones, etc.)

¿Cuáles son las cosas buenas sobre Python que los desarrolladores aman? Cosas que me excitarán más que C #.


Lo principal que me gusta de Python es su sintaxis muy concisa y legible. Aunque el uso de la sangría como un delimitador de bloque puede parecer extraño al principio, una vez que empiezas a codificar mucho en el idioma, encuentro que tiene sentido. Aunque el lenguaje central es bastante simple, sus características más avanzadas, por ejemplo, comprensión de listas, decoradores y generadores, también son bastante útiles.

Además, la biblioteca estándar de Python es simplemente fantástica; su documentación está muy bien escrita y contiene muchos paquetes muy útiles. También encuentro que hay muchos enlaces buenos para las bibliotecas de C, como PyGTK, Webkit y Qt, por nombrar solo algunos.

Una advertencia es que Python, como la mayoría de los lenguajes dinámicos, es bastante lento en comparación con los lenguajes compilados de tipo estático. Sin embargo, puede extenderlo fácilmente con C, lo que le permite escribir código que requiera un mejor rendimiento en C y el resto en Python.

Es un gran lenguaje en general, y (al menos para mí) hace que la codificación sea más productiva y agradable.


Me gustan todas las cosas con [] y {}. A los selectores les gusta esto [-1: 1]. Posibilidad de escribir menos código, pero algo más significativo, que permite escribir modelos y otras cosas declarativas muy SECO.


Mi idioma de elección es C #, y no vi el punto para aprender Python hasta ahora. Esta charla del PDC09 realmente despertó mi interés: el tipo demuestra cómo puedes usar IronPython (o IronRuby) para hacer una aplicación de C # programable en secuencias de comandos (en su demostración, suelta un script de Python en un cuadro de texto, y funciona con / extiende tu código de C # ). Encontré esto realmente fascinante: ni siquiera sé dónde empezaría a hacer algo similar en C #, y esto me hizo al menos apreciar que aporta algo diferente a la tabla, ¡lo que realmente podría enriquecer lo que puedo desarrollar!


No me malinterpretes, soy y siempre seré un fanático de C #.

Pero a veces hay cosas que no puedo hacer en C #. Aunque C # sigue reduciendo esas brechas, Python sigue siendo el lenguaje al que voy para llenarlas.

Es dinámico, flexible, potente y limpio. Lenguaje encantador Cuando necesito crear un script o crear un software dinámico o funcional (como en la programación funcional), me voy a Python.


Para mí, Python es el lenguaje más elegante que he usado. La sintaxis es minimalista (significativamente menos puntuación que la mayoría) y modelada intencionalmente a partir de las convenciones de código pseudual que el programador utiliza de manera ubicua para delinear sus intenciones.

Python''s if __name__ == ''__main__'': suite fomenta la reutilización y el desarrollo guiado por pruebas.

Por ejemplo, la noche anterior a la última, piraté juntos para ejecutar miles de trabajos ssh (con aproximadamente 100 al mismo tiempo) y recopilé todos los resultados (resultados, mensajes de error, valores de salida) ... y registré el tiempo necesario para cada uno. También maneja los tiempos de espera (un comando ssh puede demorarse indefinidamente en la conexión a un sistema thrashing --- sus tiempos de espera de conexión y las opciones de reintento no se aplican después de que se realiza la conexión del zócalo, no importa si la autenticación se detiene). Esto solo requiere unas pocas docenas de líneas de Python y realmente es más fácil crearlo como una clase (definida arriba de la suite __main__ ) y hacer mi análisis de la línea de comandos en un envoltorio simple dentro de __main__ . Eso es suficiente para hacer el trabajo en cuestión (ejecuté el script en 25,000 hosts al día siguiente, en aproximadamente dos horas). Ahora puedo usar este código en otros scripts tan fácilmente como:

from sshwrap import SSHJobMan cmd = ''/etc/init.d/foo restart'' targets = queryDB(some_criteria) job = SSHJobMan(cmd, targets) job.start() while not job.done(): completed = job.poll() # ... # Deal with incremental disposition of of completed jobs for each in sorted(job.results): # ... # Summarize results

... y así.

Entonces, mi script se puede usar para trabajos simples ... y se puede importar como un módulo para un trabajo más especializado que no podría describirse en la línea de comandos de mi envoltorio. (Por ejemplo, podría iniciar subprocesos "de consumo" para manejar otro trabajo en cada host donde el trabajo fue exitoso mientras escupía tickets de servicio o solicitudes de reinicio automatizadas para todos los hosts que informan sobre tiempos de espera o fallos, etc.).

Para los módulos que no tienen uso independiente, puedo usar la suite __main__ para contener pruebas unitarias. Por lo tanto, cada módulo puede contener sus propias pruebas ... que, de hecho, pueden integrarse en las "cadenas de documentos" utilizando el módulo doctest de las bibliotecas estándar. (Lo que, por cierto, significa que los ejemplos correctamente formateados en los comentarios documentales se pueden mantener sincronizados con la implementación ... ya que son parte de la serie de pruebas de unidad).


Poder escribir algún código y recuperar el resultado inmediatamente .

(Descargo de responsabilidad: uso C # y Python regularmente, y creo que ambos tienen sus puntos buenos y malos).


Si está familiarizado con el CLR .NET y prefiere un lenguaje de tipo estático, pero le gusta la sintaxis ligera de Python, entonces tal vez Boo sea ​​el idioma para usted.


Sin embargo, para mí es la flexibilidad y la elegancia, pero hay un puñado de cosas que deseo que se puedan extraer de otros idiomas (mejor enhebrado, expresiones más robustas).

En general, puedo escribir un poco de código en python y hacer mucho más que la misma cantidad de líneas en muchos otros idiomas. Además, en la forma del código Python es de suma importancia y la sintaxis se presta a un código altamente legible y de aspecto limpio. Eso, por supuesto, ayuda con el mantenimiento.

Me encanta tener un intérprete de línea de comandos en el que pueda crear rápidamente prototipos de un algoritmo en lugar de tener que iniciar un nuevo proyecto, codificar, compilar, probar, repetir. Sin mencionar el hecho de que puedo usarlo para ayudarme a automatizar también el mantenimiento de mi servidor (me doblo como SA para mi empresa).

Lo último que viene a la mente de inmediato es la gran cantidad de bibliotecas. Hay muchas cosas que ya se han resuelto, la biblioteca incorporada tiene mucho que ofrecer y las de terceros muchas veces son muy buenas (aunque no siempre).


Soy principalmente desarrollador .NET y uso Python para mis proyectos personales.

¿Cuáles son las cosas buenas sobre python que los desarrolladores aman?

Puedo decir por mí mismo: Python es como un soplo de aire fresco.

1) Es fácil de aprender, me tomó aproximadamente una semana por las noches. Estoy diciendo acerca de Python + Django. La sintaxis de Python es bastante simple.

2) Es fácil de usar. No hay problemas para instalar Python + Django en Windows.

3) Se puede ejecutar en Windows y UNIX.

4) Lo necesito para web, así que obtengo un alojamiento más barato que ASP.NET.

5) Todas las ventajas del lenguaje Python sobre C #. Como las tuplas - ¡tan útil!

Lo único que no me gusta es que mi IDE favorito de Visual Studio no lo admita (sé sobre IronPython, no te preocupes).


Soy un usuario asimétrico de ambos idiomas, en el sentido de que uso C # principalmente profesionalmente y Python para todos mis proyectos "divertidos" (no es que el trabajo nunca sea divertido, pero ... ya sabes ...)

Esta diferencia de contexto puede desviar mi perspectiva, incluida mi opinión de que son dos tipos distintos de lenguaje (destinados a un juego de palabras) destinados a, por lo general, propósitos distintos.

Dicho esto, puede que no sea una coincidencia que Python sea, en este momento, [uno de?] Los idiomas elegidos para todo tipo de proyectos vanguardistas, algo académicos, orientados a la tecnología / ciencia. (Y por cierto, esta palabra clave "erudita" aquí NO implica, que Python es un juguete universitario, muchas aplicaciones "serias" en muchos dominios / industria son la prueba de lo contrario). Esto puede ser debido a varios factores:

(No desarrollo la mayoría de los puntos, bien expresados ​​en otras respuestas)

  • la apertura y la disponibilidad casi universal de Python (a diferencia de C #!)
  • La curva de aprendizaje ligera / fácil de usar / baja
  • la biblioteca "estándar" extensa y de alta calidad y la biblioteca adicional extensora (y, en ocasiones, de calidad, pero en general, de código abierto, etc.).
  • La amplia gama de proyectos de código abierto en lenguaje Python.
  • La relativa facilidad para enlazar con C / C ++ para reutilizar código heredado, pero también para colocar partes críticas de desempeño de un proyecto.
  • El nivel generalmente más alto de abstracción de mayo construye el lenguaje.
  • Los multi-paradigmas (imperativo, orientado a objetos y funcional).
  • La disponibilidad de practicantes en tantos campos de la ciencia y la tecnología.

y, sí, la

  • El "efecto de mentalidad de rebaño" mencionado en un comentario, posiblemente de una manera burlona. El hecho de que un lenguaje atraiga a una comunidad amplia y "muy unida", también lo hace atractivo, más allá de los rasgos superficiales ("se ve bien" y otros) de la mentalidad de rebaño. En un contexto más amplio, a veces la mejor tecnología / lenguaje para usar no se mide por sus méritos intrínsecos, sino por la "imagen" general, incluida la comunidad de usuarios.

Soy un usuario muy pesado tanto de C # como de Python; Construí aplicaciones muy complicadas en ambos idiomas, y también incrusté scripts Python en mi principal aplicación C #. No estoy usando ninguno de los dos para hacer mucho en el trabajo web en este momento, pero aparte de eso, siento que estoy bastante calificado para responder la pregunta.

Las cosas sobre Python que me emocionan, en particular:

  • La profunda integración de los generadores en el lenguaje. Esto fue lo primero que me hizo darme cuenta de que necesitaba echar un vistazo largo y serio a Python. Mi aprecio por esto se ha profundizado considerablemente desde que me familiarizo con el módulo de itertools , que parece un conjunto de herramientas ingeniosas pero que de hecho es una nueva forma de vida.

  • El acoplamiento de la escritura dinámica y el hecho de que todo es un objeto hace que las técnicas bastante sofisticadas sean extremadamente simples de implementar. Es tan fácil reemplazar la lógica con tablas en Python (por ejemplo, o = class_map[k]() lugar de if k=''foo'': o = Foo() ) que se convierte en una técnica básica. Es tan normal en Python escribir métodos que toman métodos como parámetros que no levantas una ceja cuando ves d = defaultdict(list) .

  • zip , y los métodos que están diseñados teniendo en cuenta. Le toma un tiempo antes de que pueda comprender intuitivamente lo que dict(zip(k, v)) y d.update(zip(k, v)) están haciendo, pero es un momento de cambio de paradigma cuando llega allí. Se eliminó todo un universo de código no interesante y potencialmente cargado de errores, solo con una función. Luego comienza a diseñar funciones y clases con la expectativa de que se utilizarán junto con zip , y de repente su código se vuelve más simple y más sencillo. (Protip: O itertools.izip . O itertools.izip_longest .)

  • Hablando de diccionarios, la forma en que están profundamente integrados en el lenguaje. Comprender lo que hace una línea de código como self.__dict__.update(**kwargs) es otro de esos momentos de cambio de paradigma.

  • Enumera las comprensiones y expresiones del generador, por supuesto.

  • Excepciones baratas.

  • Un intérprete interactivo.

  • Decoradores de funciones.

  • IronPython, que es mucho más simple de usar de lo que tenemos derecho a esperar.

Y eso sin siquiera entrar en la notable variedad de funcionalidades de los módulos estándar, o la ridícula recompensa de herramientas de terceros como BeautifulSoup o SQL Alchemy o Pylons.

Uno de los beneficios más directos que obtuve al profundizar en Python es que ha mejorado enormemente mi código C #. En general, podía entender el código que tenía una variable de tipo Dictionary<string, Action<Foo>> , pero no parecía natural escribirlo. (Utilizo diccionarios estáticos para reemplazar la lógica codificada con mucha más frecuencia hoy que hace un año). No tengo ninguna dificultad en comprender qué está haciendo LINQ ahora, o cómo funciona IEnumerable<T> y el return yield .

Entonces, ¿ qué no me gusta de Python?

  • La escritura dinámica realmente limita lo que puede hacer con el análisis de código estático. No solo no hay una herramienta como Resharper para Python, en un lenguaje donde es posible escribir getattr(x, y)() realmente no puede haber.

  • Tiene un montón de convenciones poco elegantes. Cómo me gustaría poder retroceder en el tiempo y tratar de disuadir a GVR de la idea de que las expresiones lambda deben introducirse con la palabra lambda . Es bastante condenable que algo tan fundamental como las expresiones lambda sea más conciso en C # que en están en Python. La convención principal y posterior del subrayado doble es horrible, y el hecho de que la gente lo acepte en silencio es un testimonio de la observación de Dostoievski de que el hombre es el animal que puede acostumbrarse a cualquier cosa. Y no me StringIO al hecho de que un módulo con el nombre de StringIO pudo salir por la puerta.

  • Algunas de las características que hacen que Python funcione en múltiples plataformas también lo hacen algo desconcertante. Es fácil de usar import , pero en realidad no es fácil entender qué diablos está haciendo. (¿Dónde está mirando? ¿Qué hace __init__.py ? Etc.)

  • La biblioteca increíblemente rica de módulos estándar es tan rica que es difícil saber qué contiene. A menudo es más fácil escribir una función que averiguar si hay algo en la biblioteca estándar que hace lo mismo: te estoy mirando, itertools.chain .


Su pregunta es como un plomero que pregunta por qué los carpinteros siempre hablan sobre los martillos. Después de todo el fontanero no tiene un martillo y nunca lo ha perdido. Python (incluso IronPython) y C # se dirigen a diferentes tipos de desarrolladores y diferentes tipos de programas. Me siento muy cómodo en Python y disfruto de la libertad de centrarme en las reglas comerciales sin distraerme con los requisitos de sintaxis del idioma. Por otro lado, he escrito un código bastante importante en C # y me preocuparía mucho la falta de seguridad de tipos si hubiera realizado la misma tarea en Python. Esto no quiere decir que Python es un lenguaje de "juguete". Puedes (y la gente tiene) escribir una aplicación completa mediana o grande en Python. Usted tiene la libertad de escribir dinámicamente, pero también tiene la responsabilidad de mantenerlo todo en orden (los marcos ayudan aquí). De manera similar, puede escribir una pequeña aplicación en C #, pero traerá consigo algunos gastos generales que probablemente no necesite.

Entonces, si el problema es un clavo, use un martillo, si el problema es un tornillo, use un destornillador. En otras palabras, dedique un tiempo para aprender Python, familiarícese con las rayas (procesamiento de texto, ciclos de codificación rápidos, código limpio simple, etc.) y luego, cuando esté tratando de abordar un nuevo problema, pregunte si estaría mejor en Python o DO#. Una cosa es cierta. Siempre que C # sea el único lenguaje de programación que conozca, es el único que utilizará.

Pat O