Para una conocimiento bastante aceptable en modo autodidacta, recomiendo:
- python: interpretado, multipropósito, se puede programar orientado a objetos o imperativativamente. Es el nuevo Basic, pero muy superior. https://www.python.org/
- elixir: programación funcional, procesos concurrentes, web. https://elixir-lang.org/
- javascript: web, el de mayor uso hoy en día por ser el único que funciona en todos los navegadores web. https://developer.mozilla.org/en-US/docs/Web/JavaScript
- rust: Es el nuevo C. https://www.rust-lang.org/
Hay cientos de lenguajes en uso hoy en día.
Personalmente propongo conocer estos 4 lenguajes si se quiere ir en serio.
Aunque basta con python y javascript para trabajar. También están PHP y ruby, pero phyton es mejor que php y elixir es mejor que ruby, creo yo. No vale la pena perder tiempo en ellos, si se quiere empezar bien.
Si se quiere sólo entretención: rust. Abarca desde programación de bajo nivel, es decir a nivel de máquina, hasta sistemas complejos, es como trabajar con los fierros pelados.
- juegos: pacman, space invaders :) y league of legends?
- sistemas operativos, computadores embebidos, internet de las cosas (sensores y actuadores)
- web: aplicaciones web, redes sociales
- ia: sistemas expertos (solucionar problemas diversos), deep learning (reconocimiento de imágenes, de lenguaje hablado)
- Pensar en abstracciones de la realidad: Esto es modelar problemas mentalmente. Analizarlos, des-estructurarlo en partes, ordenarlas, encontrar los datos relevantes y estructurarlos según las posibilidades del lenguaje. Etc.
- Diagramas UML (de flujo, de clases, de relaciones)
- Maniobrar con estructuras de datos
- The chemical brothers https://www.thechemicalbrothers.com/music-videos
- Tortuga https://tortugapl.bandcamp.com/
- Tron
- Atom: https://flight-manual.atom.io/getting-started/sections/installing-atom/ (Para MAC WINDOWS LINUX)
- Vim (linea de comando, no necesario al comienzo)
Linux de preferencia pero cualquiera sirve.
- Bases de datos:
- relacionales (mysql, postgres) buenas para datos relacionados en fila y columnas
- noSql (basado de documentos: mongodb, couchdb) buenas para big data y redes sociales
- redis: base de datos en memoria para rápido despliegue
- Sistemas distribuidos:
- colas de trabajo
- publicador/suscriptor
- Administración de código
- git
Se necesitas madurez mental, responsabilidad y disciplina.
Mínimo un año de auto aprendizaje constante. Como si fuera un trabajo.
He buscado unos cursos online, que hay muchos. Y este me gustó mucho. Es corto y conciso, esta perfecto para comenzar y ver de que va todo esto. Si no te gusta lo que veas ahí, no vale la pena seguir adelante, ya que toca los básicos: variables, estructuras de datos, estructuras de control. Todos los lenguajes comparten esos conceptos básicos.
Recomiendo el que está en inglés, porque entrega mas contexto, pero ambos enseñan básicamente los mismo.
Inglés: https://www.coursera.org/learn/python
Español: https://www.coursera.org/learn/aprendiendo-programar-python
Hay varios tipos de sitios web que ayudan en el autoaprendizaje mediante juegos, desafíos o katas, pero se necesita saber programar primero, así que no usarlos todavía.