¿Qué conceptos necesito saber para ser bueno en cada lenguaje de programación?

Cada lenguaje de programación se basa en los mismos conceptos, solo varía la sintaxis y la implementación. Dicho esto, sería mejor ser realmente competente en un lenguaje de programación, en lugar de tratar de incursionar en cada cosa. Estos son los conceptos básicos que debe conocer para cualquier idioma.

Condicionales : problemas de la vida real, tienen muchos escenarios If Not A, B, y necesitas saber cómo manejarlo. Las declaraciones If … else, o Switch..case son ejemplos.

Bucle : para manejar operaciones iterativas, repetitivas y combinadas con condicionales. El for, while, do.. while looping son los mejores ejemplos. También necesitaría saber cómo salir o romper el ciclo, de lo contrario podría quedar atrapado en un ciclo infinito para siempre.

Flujo del programa: es necesario comprender cómo va el programa del punto A al punto B y viceversa u otro punto. Y para esto necesitas tener una buena formación en algoritmos.

Manejo de excepciones : lo que sucede cuando el código falla, el programa se bloquea o las entradas no son válidas. ¿Cómo maneja la excepción o los errores que pueden ocurrir en tiempo de ejecución? Este es un concepto muy importante, que a menudo es descuidado por la mayoría de los programadores.

Funciones / Módulos: cómo divide su programa en subprogramas o funciones, cómo se llaman entre sí, cuáles son los valores de entrada que acepta y la salida que proporciona. Esto ayuda enormemente a modularizar el programa.

Buen diseño: los programadores a menudo están demasiado ansiosos por comenzar a escribir código de inmediato, y el resultado es que a menudo cambias de un punto a otro y das vueltas en círculos. El diseño es como el plano, le da una idea de dónde ir y cómo hacerlo. Debe tener una buena idea de algoritmos, diagramas de flujo de datos, patrones para una programación más efectiva.

Dos respuestas ya han enumerado los conceptos principales, por lo que no lo volveré a hacer. En cambio, solo te daré esta recomendación: no pierdas mucho tiempo aprendiendo estos conceptos antes de comenzar a aprender un lenguaje de programación. Elija un lenguaje de estilo C como C, Java, C #, C ++ o Go y comience a programar.

En el camino aprenderá todos esos conceptos que todos enumeran como variables, funciones, bucles, etc., y realmente los comprenderá porque los usará usted mismo. Cuando eres realmente competente con ese idioma, tu próximo idioma será mucho más fácil porque ya comprenderás los conceptos.

Limitando la pregunta a los lenguajes populares, “reales”, es fácil:

1. Necesita saber cómo escribir un intérprete (y un compilador) para cada idioma en (en) otro idioma que conozca bien.

2. Debe saber cómo encontrar la documentación correcta sobre las bibliotecas que utiliza en cada idioma. Esto a menudo se reduce a “google”.

3. Aprenda todos los conceptos generales que cada lenguaje “real” elige:

  • Función (y métodos)
  • Variable (y parámetros, campos, miembros, propiedades)
  • Alcance (y enlace de símbolo)
  • Valor (y expresiones)
  • Funciones de control y bucle (if, if-else, while, for, break, continue, goto; Iterations)
  • Objeto (y cómo podría relacionarse con las clases)
  • Clase (e interfaz y rasgo)
  • Modificadores de acceso (públicos, privados, protegidos …)
  • Miembros abstractos (funciones)
  • Punteros (y referencias, y paso-por-referencia / -valor)
  • Funciones como primer orden (y expresiones Lambda estrechamente relacionadas, funciones anónimas, puntero de función, objeto de función, aplicación parcial, currículum)
  • Tipos (y tipificación estática y dinámica, inferencia de tipos, conversión de tipos)
  • Reflexión (e introspección)
  • Excepciones (try-catch-finally)
  • Nulo (casi todos los idiomas afirman que es malo y nunca deberían usarse, sin embargo, todos los idiomas que he conocido lo incluyen, a veces incluso varios sabores, por lo que debes prepararte para entenderlo).
  • Gestión de memoria (y recolección de basura)
  • Primitivas de roscado (semáforos, prueba atómica / get-and-set, bifurcación y roscado)

Algunas de estas palabras clave / conceptos son sinónimos. Algunos solo están estrechamente relacionados. Algunos se ven iguales pero en realidad son muy diferentes. Muchos pueden tener efectos sorprendentes cuando se unen con otros, y algunos dependen de otros (y algunos parecen depender de otros, pero realmente no lo hacen).
También hay probablemente más que no recuerdo en este momento.

A veces, los idiomas introducen conceptos únicos, que nunca antes se habían visto. Esos a menudo tampoco se ven después, y a veces incluso durante, por lo que generalmente es seguro dejarlos fuera hasta que los necesite.

Saber que esto no lo convertirá en un gran programador, todos están cubiertos (o al menos deberían estarlo) en los primeros semestres del programa de licenciatura, pero le permitirán escribir un buen código en cualquier idioma que conozca.

Si desea que ese buen código también sea útil, también debe aprender sobre estructuras de datos y algoritmos, encapsulación y abstracción, y un montón de otros conceptos de ingeniería de software, pero este ya es un ensayo largo; Conocerás a algunos de ellos cuando escribas ese compilador e intérprete del artículo 1.

Condicionales: estas son sus declaraciones if then. Los programas resuelven problemas, y muchos problemas se pueden dividir en fragmentos IF-Then-Else. Estas son las declaraciones de su caso, si las declaraciones, las declaraciones cond, etc.

Bucle / Flujo de control: comprender el flujo de la lógica puede ayudarlo en cualquier idioma. Estas son sus llamadas for / while / function

Encapsulación de datos: es muy útil poder describir algo en términos de sus atributos y conocer la construcción del lenguaje que le permite agrupar estos atributos. Estas son sus clases / objetos / módulos.

Sintaxis: cada idioma es ligeramente diferente en sintaxis. Ser capaz de comprender rápidamente la sintaxis del lenguaje puede ahorrar tiempo.

Alcance: si no comprende cómo funciona el alcance, lo pasará mal. Algunos idiomas lo manejan de manera diferente que otros.

Parámetros: algunos idiomas pasan los parámetros por nombre, algunos por valor, algunos por referencia. Aprende cómo lo maneja cada idioma.

Lógica / Análisis de patrones / Resolución de problemas: ser capaz de identificar patrones y analizar problemas es una habilidad fundamental que ayuda con la programación.

El hecho de que todos son muy similares, con la excepción de las principales divisiones entre lenguajes funcionales, imperativos y dinámicos. Las construcciones básicas de todos los idiomas son similares: estructuras de datos, flujo de control, condicionales, expresiones, etc. Por lo tanto, una vez que conoce las construcciones de un idioma, es fácil traducir de / a la sintaxis de otro idioma. ¡Los mejores deseos!

Además de las respuestas anteriores, diré que es increíblemente importante comprender la recursividad.

La capacidad de dividir un solo problema en muchos subproblemas similares es una habilidad crucial de cualquier programador experto. Es la base de muchos algoritmos con los que se encontrará durante su mandato de programación.

Yo diría que el tiempo …

No es imposible hacerlo, pero es posible que tengas que pedir prestado algunas vidas de Mario.

Un consejo práctico como dicen las respuestas sería centrarse en unos pocos. No necesitarás otros de todos modos. Quizás puedas aprender uno de cada paradigma.

Aprende a programar . Los idiomas se cuidan solos. He trabajado (al menos superficialmente) con docenas de idiomas, y rara vez me he sentado para “aprender el idioma”.

Cuando necesite aprender un idioma específico, comience con las razones por las que existe . Si comprende la filosofía de diseño, comprende qué esperar.

Para ser bueno en todos los lenguajes de programación, uno debe tener un concepto claro de lógica de un problema en particular.
Él / Ella debería poder escribir el algoritmo de cualquier problema.
Luego, eligiendo cualquier lenguaje de programación en el que él / ella tenga conocimiento de sintaxis puede escribir el programa.

Es difícil ser bueno en todos los idiomas. Vaya a http://en.wikipedia.org/wiki/Lis … y comprenderá cuántos idiomas existen. Además, probablemente hay más idiomas que no son tan populares y, por lo tanto, no figuran en la lista. Sin embargo, la mayoría de ellos solo ofrecen características similares, por lo que aprender todo es una especie de pérdida de tiempo. Los algoritmos / estructuras de datos son los problemas esenciales en la programación. Comprender esas cosas te ayudará a ser bueno para aprender cualquier idioma. Y también es mejor comprender su filosofía de diseño antes de comenzar a aprender una en particular.