Soy principiante en Python y realmente me gusta hasta ahora. Una pregunta que me viene a la mente muy a menudo es si necesito entender y, por lo tanto, aprender lo interno de un lenguaje de programación (como en mi caso Python). Como sabrás, Python está escrito en C.
Entonces mi pregunta es: ¿Qué tan profundo tiene que sumergirse en un lenguaje de programación para ser competente o fluido en este lenguaje? Comparo esta pregunta con los idiomas "naturales". No conozco todos los detalles de la gramática en mi idioma materno, pero puedo expresarme sin problemas en ese idioma. Esto es cuando digo que hablo con fluidez un idioma. ¿Eso se aplica también a los lenguajes de programación?
programming-languages
python
knowledge
Flo Schönfeld
fuente
fuente
Respuestas:
No necesita saber nada sobre los aspectos internos de un lenguaje de programación para escribir programas en ese lenguaje. Sin embargo, cuanto mejor comprenda el idioma, mejores serán sus programas.
El conocimiento de las estructuras de datos y los algoritmos lo ayudará a elegir las estructuras de datos más apropiadas para su tarea particular. Algunos idiomas poseen estas estructuras de datos internamente.
Comprender la "cultura" del lenguaje le ayuda a escribir programas que siguen las "mejores prácticas", haciéndolos más fáciles de entender, más mantenibles y con mejor rendimiento.
Escribir un compilador para ese idioma (o un compilador para otro idioma en ese idioma) puede darle una comprensión profunda del idioma y mejorar sus programas más allá de ser simplemente promedio.
Ser competente en otros idiomas (especialmente los de un paradigma diferente) lo convierte en un mejor programador en su idioma principal, ya que puede utilizar esas habilidades y herramientas en su idioma principal.
Como corolario, no necesita saber nada sobre su computadora para escribir programas en ella. Pero saber cómo funciona tu computadora te hace mejor escribiendo programas para ella.
fuente
En pocas palabras, sí. Mientras pueda expresarse bien (y comprender a los demás) bien, entonces se lo considera fluido en el idioma.
Dicho esto, simplemente ser fluido no es suficiente para algunos trabajos. Ciertos tipos de autores, trabajos que requieren habilidades ejemplares para hablar en público y algunos académicos que se centran en el idioma necesitan saberlo "mejor que con fluidez". Del mismo modo, algunas especialidades de programador requieren el conocimiento de los aspectos internos del lenguaje, pero para la mayoría de las personas conocer el lenguaje de programación equivalente a cómo pedir su número o pedir una hamburguesa con queso es suficiente.
fuente
Definiría "competente" con un lenguaje como:
Observe que el funcionamiento del lenguaje no está en esta lista, pero hay una gran cantidad de "capacidad de aprender". Tener al menos una comprensión superficial de las partes internas puede ser útil, pero no es necesario ser competente. Sin embargo, es una buena idea conocer lo suficiente sobre ellos como para poder comprender cualquier referencia en la documentación que está leyendo.
Por ejemplo: sé que tanto VB.NET como C # se compilan en IL (lenguaje intermedio) de .NET, que luego se compila para el marco de destino. No sé mucho sobre IL, pero sé lo suficiente como para reconocerlo cuando lo veo, y entender en un sentido general cómo maneja ciertas cosas. Me considero competente en C #, pero no en VB.NET, aunque las "partes internas" son las mismas, y mi comprensión de ellas no es profunda.
fuente