¿Qué consejo le darías a los principiantes, comenzando en Java o C ++?

No te preocupes por Java vs. C ++.

Puedes aprender a programar con cualquiera de ellos, son solo herramientas con las que uno realiza el arte de la programación.

La clave es aprender el arte de la programación.

La mayoría de los libros de texto y tutoriales sobre programación tienden a aparecer como “Te estoy enseñando C ++ (o Java o …). Ah, y por cierto, para hacer eso también necesitarás entender la programación , sus componentes básicos y el flujo de control dentro de un programa, etc. “ . En otras palabras, los libros parecen sugerir que C ++ y Java son las cosas más importantes y las otras cosas secundarias.

Lo que puede ser difícil de asimilar desde el principio, y lo que conduce a preguntas como “debería aprender C ++ o Java” es que lo que debería estar haciendo es aprender a programar, sus componentes básicos y el flujo de control de un programa. Debe tener en cuenta que C ++ y Java son simplemente sus herramientas para aprender a programar.

Asegúrate de entender los bloques de construcción :

  1. Tipos de datos – ¿qué son? ¿Por qué los necesitamos?
    1. Tipos de datos básicos: int, float, char, long, …
    2. Colecciones simples de tipos de datos: cadenas, matrices: la mayoría de los idiomas ofrecen soporte integrado para algunos de estos.
    3. Punteros (si planea usar C ++) y referencias (ambos)
    4. Objetos vs. tipos de datos básicos
    5. Clase contra objeto: la distinción aquí es importante.
  2. Variables – ¿qué son? ¿Por qué los necesitamos?
    1. Asignado estáticamente (es decir: variables globales)
    2. Montón asignado (es decir, creado mediante operaciones de gestión de memoria)
    3. Pila asignada (es decir, utilizada para crear parámetros durante llamadas a funciones, variables locales dentro de su programa / funciones, etc.)
  3. Funciones vs. Métodos
  4. Estoy seguro de que hay otros que debería enumerar, pero mi cerebro se está agotando …

Asegúrese de entender el flujo de control dentro de un programa.

  1. Secuencia vs. selección vs. iteración. Secuencia, Selección e Iteración.
  2. Construcción y destrucción de objetos (esto es clave en C ++, Java te da la mano con la recolección de basura).
  3. Cuando se copian objetos y variables y cuando no se copian.
  4. ¿Qué sucede durante una llamada de función o método?
    1. Qué son los argumentos, qué son los parámetros, cómo se devuelven los valores
    2. ¿Qué acceso tiene a otras variables en su programa? Esto generalmente se conoce como “alcance”.
  5. Probablemente más aquí también que debería estar en la lista.

Una vez que entienda realmente cómo programar y cómo funcionan los programas, aprender nuevos idiomas es relativamente fácil. Si solo aprendes Java pero nunca comprendes realmente la programación, aprender nuevos lenguajes como C ++ será mucho más doloroso.

Yo personalmente comencé en C ++, aunque aproximadamente 2 años después de mi educación, todos cambiaron a enseñar Java.

Mi opinión es que ambos son buenos para enseñar programación orientada a objetos. Java es mejor para enseñar programación de IU, pero C ++ le brinda una mejor comprensión de cosas como la administración de la memoria (es decir, lo que está sucediendo ‘debajo del capó’).

Como ejemplo, en Java no tiene que lidiar con la recolección de basura y los punteros, aunque técnicamente (y algo irónicamente) todo es un puntero y está haciendo recolección de basura todo el tiempo. Simplemente no trabajas explícitamente con él desde el punto de vista de un programador. Esto es bueno y malo. Es bueno en el sentido de que es más fácil de usar y no tiene que preocuparse tanto por cosas como las pérdidas de memoria. Por lo tanto, puede centrarse más en el diseño de alto nivel, que a menudo es algo bueno. Sin embargo, también significa que tendrá menos comprensión o apreciación de lo que está sucediendo en un nivel inferior, si eso importa.

Digo ‘si eso importa’ porque muchas aplicaciones del mundo real usan lenguajes de programación de muy alto nivel ahora, donde básicamente no tienes que saber qué está pasando en el montón / pila o cómo hacer aritmética de punteros u otras cosas locas como ese. Por otra parte, algunos otros programas hacen cosas bastante bajas, por lo que tampoco hace daño saberlo.

Yo diría que C ++ es bueno para los fundamentos, para enseñar cosas como estructuras de datos y sobre lo que la computadora está haciendo con su código en el nivel de hardware. También puede verlo funcionar (junto con las consecuencias cuando no lo hace) y hay algunas herramientas excelentes para visualizar esto (en particular, Visual Studio). Sin embargo, conceptualmente podría entender esto mientras usa Java también. Por lo tanto, no me preocuparía demasiado si solo tuvieras la opción de elegir una u otra en cuanto a las clases.