Pregunta

¿Me equivoco si creo que Python es todo lo que necesito dominar, para resolver la mayoría de las tareas de programación comunes?

EDITARNo estoy de acuerdo con aprender nuevos lenguajes de programación si no me enseñan nuevos conceptos de programación y resolución de problemas; De ahí la idea detrás de dominar una evolución moderna y rápida, con un rico conjunto de bibliotecas de clases, ampliamente utilizadas y documentadas, y por supuesto tiene un lenguaje de programación de curva de aprendizaje "amigable".

Creo que en la industria tecnológica en rápida evolución, la especialización es clave para el éxito.

¿Fue útil?

Solución

Tienes razón y equivocado.

Derecha: Conocer muy bien una sola herramienta es muy comercializable y desear. Y Python es bueno para OO, para los scripts, para la programación funcional, y tiene excelentes bibliotecas matemáticas y científicas.

Equivocado: Python no te enseña todo lo que un buen desarrollador debería saber. A veces necesitará JavaScript para proporcionar alguna funcionalidad del lado del cliente. A veces debe comprender lo que está sucediendo en un nivel más fundamental, como el C debajo de la pitón. Y a veces necesitas aprender a pensar de diferentes maneras, como lo harías con Haskell o Clojure.

Otros consejos

Te equivocaría al pensar que cualquier idioma puede hacer todo sin considerar otros idiomas.

Creo que en la industria tecnológica en rápida evolución, la especialización es clave para el éxito.

No puedo pensar en una mejor manera de dispararse en el pie. Aprender y dominar un idioma es genial, pero mencionas que no te sientes cómodo con aprender nuevos idiomas si "No me enseñes nuevos conceptos de programación y resolución de problemas".

Los idiomas no le enseñan estos conceptos, tomos espesos y polvorientos y muchos años trabajando en estrecha colaboración con las personas mejor que usted. Estos patrones básicos, conceptos y directores de diseño trascienden los idiomas y pueden aplicarse en muchos ámbitos diferentes.

Es posible que pueda resolver muchos problemas con él, pero no siempre será la mejor herramienta para el trabajo.

No necesariamente sé que hay nada malo en esto, pero no lo aconsejaría por el bien de tu carrera. Hay un par de problemas en los que puedo pensar:

  1. Python está caliente ahora, pero ¿será en su opinión 5-10 años? No sé sobre ti, pero no deseo convertirme en el equivalente futuro de un programador de Cobol Mainframe.
  2. Python no será lo suficientemente rápido para cada tarea. Puedes hacer mucho con él, pero ahí son Las tareas por ahí para las que Python solo no es lo suficientemente rápida. En estos casos, necesitará saber C (si hay una pieza específica del código que se ejecuta lentamente) o un lenguaje JVM (si necesita que todo sea rápido o se preocupe por la seguridad).

No estoy de acuerdo con aprender nuevos lenguajes de programación si no me enseñan nuevos conceptos de programación y resolución de problemas

Personalmente, no vi muchas ventajas para probar la comida griega hasta que lo hice. Una vez que lo intenté, lamenté que lo pospusiera durante tanto tiempo. Por supuesto, los alimentos no son lenguajes de programación, pero la analogía en realidad no está tan lejos. A menudo, la única forma de ver las ventajas de aprender un nuevo idioma es probarlo.

Paul Graham lo llamó el "Paradoja de blub":

Los programadores se apegan mucho a sus idiomas favoritos, y no quiero herir los sentimientos de nadie, por lo que para explicar este punto voy a usar un lenguaje hipotético llamado BLUB. BLUB cae justo en el medio del continuo abstracto. No es el lenguaje más poderoso, pero es más poderoso que el lenguaje de Cobol o Machine.

Y de hecho, nuestro hipotético programador de blub no usaría ninguno de ellos. Por supuesto que no se programaría en lenguaje de máquina. Para eso están los compiladores. Y en cuanto a Cobol, no sabe cómo nadie puede hacer nada con él. Ni siquiera tiene x (función de blub de su elección).

Mientras nuestro hipotético programador de blub esté mirando hacia abajo el continuo de poder, sabe que está mirando hacia abajo. Los idiomas menos poderosos que el blub son obviamente menos potentes, porque les falta algunas características a las que ha usado. Pero cuando nuestro hipotético programador de blub se ve en la otra dirección, hasta el continuo de poder, no se da cuenta de que está mirando hacia arriba. Lo que ve son simplemente idiomas raros. Probablemente los considera sobre equivalente en poder para toparse, pero con todas estas otras cosas peludas también. Blub es lo suficientemente bueno para él, porque piensa en Blub.

Cuando cambiamos al punto de vista de un programador que usa cualquiera de los idiomas más altos del continuo de potencia, sin embargo, encontramos que a su vez mira hacia abajo. ¿Cómo puedes hacer algo en la blub? Ni siquiera tiene Y.

Por inducción, los únicos programadores en una posición para ver todas las diferencias de poder entre los diversos idiomas son aquellos que entienden el más poderoso. (Esto es probablemente lo que Eric Raymond quise que Lisp lo convierta en un mejor programador). No puede confiar en las opiniones de los demás, debido a la paradoja de la bomba: están satisfechos con cualquier lenguaje que use, porque dicta el forma en que piensan en los programas.

Si tiene la oportunidad, le recomiendo leer todo el artículo.

Y, por último, puedo ver su punto en términos de querer especializarse. Pero no creo que eso sea lo que estás tratando de hacer. Por definición, hacer "casi cualquier tarea de programación" no es lo que consideraría especialización. Parece que estás usando Python para generalizar. Si está buscando especializarse, recomendaría entrar en un campo específico de programación como aprendizaje automático o almacenamiento de datos o integración. Pero un lenguaje de programación en sí mismo no es una gran especialización.

Python (a pesar de mis dudas al respecto) simplemente no puede^H^H^H^H^HNo debe usarse para todo, de la misma manera que mis alicates de junta de deslizamiento no se usan como destornillador.

SQL? ¿Procedimientos almacenados? Scripts de inicio? Html (ya mencionado) y xslt? C envoltorios de biblioteca?

No creo que Python sea muy bueno para los microcontroladores incrustados que podrían tener solo 32k de flash y 4k de RAM, pero necesita manejar 25,000 interrupciones por segundo.

(PD no tengo nada contra Python, de hecho, recientemente compré Picarm 1.0 de Jetbrains. Simplemente no lo veo como un propósito general como C, por ejemplo. ¿Puedes escribir todo Python en sí mismo?)

Creo que tienes razón formalmente, como Python, siendo un lenguaje de programación completado de Turing, debería permitirte resolver casi cualquier tarea que las computadoras puedan resolver (especialmente con la ayuda de algunas bibliotecas). Y probablemente podría ganarse la vida cómodamente permanecer completamente dentro de la esfera de Python.

Sin embargo, creo que estás equivocado en varios niveles:

  1. Te estás conectando a una herramienta. Es como un mecánico que dice que particular el tipo de llave es todo lo que necesita. Los idiomas son herramientas. Un buen programador debe usar la mejor herramienta para la tarea (dentro de los límites de su entorno, por supuesto), lo que sea, y reconocer que no hay una herramienta que pueda ser mejor para todas las tareas.
  2. Estás limitando artificialmente tus horizontes. Los idiomas son herramientas, pero son herramientas con personajes e ideas detrás de ellos. Si usa solo uno de ellos para todo, se está negando la posibilidad de una nueva mirada sobre las cosas, el nuevo enfoque para resolver problemas, nuevas formas de pensar.
  3. Parece que es confuso ser bueno en su profesión al ser bueno para usar cualquier herramienta específica. Un buen programador puede usar cualquier herramienta, ya que comprende los principios subyacentes que guían la creación y el uso de estas herramientas y pueden identificar cómo y por qué implementar cada uno de ellos. Creo que es un error concentrarse en convertirse en un buen Pitón programador en lugar de obtener un buen programador (Eso puede suceder programas en Python cuando se presenta una ocasión). No me malinterpreten: el primero está bien, pero el objetivo final debería ser el último. Y este último es incompatible con "Python es todo lo que necesito".
  4. La inversión emocional en la herramienta puede conducir al fanboyismo, y el fanboyismo conducirá a ignorar soluciones más efectivas y, en cambio, desperdiciar su esfuerzo en hacer que Python haga cosas que no está destinada a hacer. No me malinterpreten: es divertido hackear cosas para hacer que hagan lo que no están destinados (como construir un automóvil con una vieja bañera y un piloto de hoja o escribir un núcleo del sistema operativo en Python), pero si y cuando tú Conviértase en una persona para tomar decisiones sobre los proyectos que requieren eficiencia del mundo real, debe conocer tanto la fuerza como las debilidades de sus herramientas. Y la inversión emocional te hace exagerar fortalezas e ignorar las debilidades.

No diría que te equivocas en absoluto. Python es un lenguaje de programación de uso general de dominio general.

Realmente depende de la industria en la que planea ingresar. Diría que hay muchos más trabajos disponibles en Java o .NET que Python (no es que haya algo malo en Python). Más personas que usan estos dos idiomas de aplicación significa que tienen, prácticamente sin duda (a riesgo de ofender a alguien), la base de conocimiento más amplia y los marcos más expansivos disponibles. En el mundo de las aplicaciones de negocios, el soporte de marco es una gran parte del resto competitivo.

Python es un lenguaje de programación de uso general extremadamente flexible, se ha utilizado para escribir casi cualquier cosa imaginable, excepto el kernel OS (actualización rápida: de hecho tiene: http://mail.python.org/pipermail/python-onnocte-list/2004-july/003220.html).

Sin embargo, siempre es bueno aprender nuevos idiomas, especialmente uno que es muy diferente de los idiomas que ya conoce.

Si bien tiene razón en que debe dominar al menos un idioma, aprender otro idioma rara vez es una pérdida de tiempo. Incluso el lenguaje de programación más horrible (no diré el nombre porque esto podría terminar en una guerra religiosa sangrienta :-)) tiene algunas características que me hicieron pensar: "Oye, ¿por qué no puede Java/ C/ hacer esto? ".

Además, no hay el lenguaje perfecto a partir de hoy. Aunque Python se acerca bastante a él ^^.

Para cuando haya dominado Python, sabrá si puede hacer todo en él.

La respuesta llegará naturalmente.

Esto sería como un golfista que dijo que solo jugará con un hierro 5. Puedes hacerlo (o eso me dicen) pero no siempre es la mejor opción. Hay muchas cosas que Python hace bien, ¡pero a veces no es la mejor herramienta para el trabajo!

En mi opinión, sí, te equivocas al pensar que solo necesitas Python, aunque de hecho es un lenguaje maravilloso:

1) C-C ++ son los cimientos de todo en el mundo de las PC. En mi opinión, si no conoce C-C ++, realmente no sabe cómo programar una PC. Considere C -C ++ como el cálculo y las estadísticas en la universidad, un rito de iniciación.

2) ser un Generalista - Lleve su dedo a la mayor cantidad de pasteles como sea posible, y siempre mire lo nuevo, sin quedar atrapado en una moda o idealogía en particular.

Si planea ganarse la vida como programador, debe comprender que probablemente vaya a vivir la vida 'en el borde' la mayor parte del tiempo; no sabe qué va a destruir su trabajo actual y no lo hace. Sepa de dónde vendrá su próximo ...

Hth

Quiero verte escribiendo en Pure Python:

  1. Control de piso de fábrica, seguridad en tiempo real, tiempo de reacción garantizado de 300 ms
  2. El firmware remoto de la alarma del automóvil debe caber en su palma.
  3. Motor de base de datos destinado a> 1000 hits/s
  4. Un sistema operativo, cualquier plataforma de hardware real (física). Puede ser muy simple.
  5. un BIOS para una PC,
  6. un compilador de pitón/intérprete competitivo (= rápido)
  7. Reconocimiento de objeto de alimentación de video en vivo para 25 cuadros por segundo alimento de video.
  8. Un motor de juego moderno y competitivo para juegos dinámicos de FPS
  9. Un divertido juego de la webp -webapp dinámica
  10. un antivirus.

Termine la mitad de estas tareas en Python y admito que Python es el rey.

Licenciado bajo: CC-BY-SA con atribución
scroll top