Comienza Contenido

Aprender un lenguaje de programación nuevo

La metodología de aprendizaje de un lenguaje de programación es siempre la misma. A pesar de la gran variedad de lenguajes de programación que existen en la actualidad, con una base adecuada cualquier persona puede aprender en 30 horas lo básico para comenzar a programar.

Objetivos

  • Comenzar a programar (nociones básicas)
  • En un lenguaje nuevo

Clases

  1. Generalidades de los Lenguajes de Programación y un programa:
    • Herramientas pare resolver problemas:
      • ¿Qué es un lenguaje de programación?
      • ¿Para qué sirve el software?: para resolver problemas
    • La plataforma
      • Hardware: Plataforma Hardware disponible
      • Software: Sistema Operativo
      • SDK (o API)
    • Documentación Necesaria:
      • Web de referencia del Lenguaje
      • Para Programar: Especificaciones y Soporte
      • Para Aprender: Tutorial y Guías
    • Crear un Programa (archivo de texto):
      • Tipos de Herramientas: sueltas (editor de texto + comandos) vs integradas (IDE)
      • Debe ser un Editor de Texto Avanzado
      • Manejo Potente de texto:
        • Gestionar Texto: añadir, quitar, modificar
        • Gestionar Archivos de Texto (abrir, cerrar, insertar, guardar como ...)
        • Hacer búsquedas y reemplazos
      • Manejo del Lenguaje de Programación:
        • Resaltado de palabras reservadas y sintaxis, control sintáctico (paréntesis, indentación) e integración con la documentación del lenguaje.
        • Avanzado: varios archivos a la vez, soporte a control de versiones, conexión a consolas remotas, etc
    • Repasar Conceptos Básicos de Arquitectura del Computador
    • Características de un programador (lo que NO debemos ser pero somos):
      • impaciente. Porque las cosas no salen a la primera
      • indisciplinado. Porque hay que tener hábitos de programación
      • petulante. Porque no se hacen programas para que nos alaben sino para ser útiles
  2. El Lenguaje
    • Niveles y Reglas:
      • Léxico. Los símbolos (Alfabetos y Códigos)
      • Sintáctico. Las reglas de construcción
      • Semántico (significado)
    • Elementos del Lenguaje (palabras reservadas): Identificadores, Constantes, Operadores, Instrucciones y Comentarios
    • Características Generales de un Lenguaje
      • Qué es un programa
        • Programas Fuente: archivos de texto
        • Control y numeración de versiones
        • Documentación
      • Programación Modular y Estructurada
        • Funciones, Módulos y Librerías
        • Documentación y Conexión
      • Programación Orientada a Objetos
        • Descripción básica de un objeto: coche
        • Propiedades de un objeto (color del coche)
        • Métodos del objeto (moverse hacia adelante)
        • Lenguajes Orientados a Eventos como un ejemplo simplificado de POO
      • Teorema de Dijkstra o ¿qué sentencias necesito conocer para programar?
        • Secuencia de Instrucciones
        • Sentencia Condicional: IF condicion THEN instruccion1 ELSE instruccion2
        • Sentencias Repetitivas: WHILE condicion DO instruccion (o DO..UNTIL)
      • SeudoCódigo (y la diferencia entre saber programar y saber un lenguaje)
  3. Aprender el lenguaje (Programa Hola Mundo)
    • ¿Cual escojo? Depende (trabajo, uso)
    • Programa Hello World:
      • Cargar el software
      • Instrucción básica de entrada/salida
    • Ejemplos de Hola Mundo en diferentes lenguajes
  4. Ejemplo con un lenguaje: Descripción y Preparación del entorno
    • Características comunes a los lenguajes
      • Caracteres Básicos y Palabras Reservadas
      • Sentencias de Asignación
      • Operadores Aritméticos y Lógicos
      • Sentencias de Control
      • Sentencias de Repetición
    • Cosas que tengo que ir controlando
      • Asignación de Variables y Valores. Estructuras de datos (escalares, listas, hash, etc)
      • Operaciones Aritméticas y Lógicas. Condiciones
      • Instrucciones de control de flujo y repetición
      • Programación modular: subrutinas, funciones, librerías
    • Palabras Reservadas, Tipos de Datos, Asignación de Variables, Operadores Aritméticos y Lógicos, Herramientas de Control de Flujo, Iteraciones y Recursividad, Módulos (Procedimientos, Funciones), Parámetros y Estructura General
    • Lenguaje y Recursos Extra (librerías). APIs de Programación
    • Revisar código fuente escrito por otros
  5. Aprender un Lenguaje Nuevo:

Actividades de Aprendizaje

  1. Entorno de Desarrollo:
  2. Un lenguaje de programación
    • Buscar algunas Alternativas de lenguajes (tres)
    • Analizar Ventajas e Inconvenientes (4) y contrastar
    • Escoger uno ((P.ej Javascript o Perl)
    • Preparar Entorno de Desarrollo:
      • Hardware
      • Software: Sistema Operativo, versión del lenguaje y librerías necesarias (o SDK)
    • Imprimir un ejemplo de programa, probarlo y Analizarlo
    • Comenzar a trabajar con el lenguaje (Guías / Tutoriales): historia, palabras reservadas, sintaxis más común, etc
    • Aprender un lenguaje de programación vs Aprender a Programar (cosas distintas)
  3. Aprender el Lenguaje (lo básico)
    1. Configurar entorno de desarrollo: programas que se necesita
    2. Tener Instalación Local de Documentación y Links (Bookmarks)
    3. Hacer el programa Hola Mundo
    4. Uso de un entorno de desarrollo online
  4. Aprender el Lenguaje (y II):
    • Manejo de Variables (escalares, listas, hash, etc)
    • Manejo de Estructuras de Control
    • Manejo de funciones y librerías (Programación Modular) (Divide y Vencerás)
    • Ejemplos de Ejercicios
      1. Sustitución de Variables: Hola Mundo con sustitución de una variable y añadir una variable del entorno o el sistema
      2. Estructura de datos más complejas: imprimir de una lista, un array o una tabla hash.
      3. Uso de Texto. Intercambiar letras, o palabras, búsqueda de caracteres en palabras, validación de textos, etc
      4. Estructuras de Control: ejemplo de if/else y operadores de comparación
      5. Estructuras Repetitivas: ejemplo de while y condiciones en el bucle
      6. Entrada/Salida: realizar la suma de dos valores de entrada, o division con control de dividendo cero
      7. Uso de expresiones regulares (regexp)
  5. Practicar, Practicar, Practicar
    1. Ejercicios Básicos, Medios y de Conexión a Bases de Datos

Duración del Curso

El esfuerzo estimado del curso es de 1 crédito ECTS. Unas 30 horas de dedicación.

Recursos a Utilizar

Hay muchos lenguajes de programación y algunos típicos son:

  • Perl / Python/ TCL (ideales para empezar)
  • Javascript (recomendado, porque el navegador es el entorno de desarrollo)
  • C y variaciones (necesita muchas horas pero debería ser imprescindible en cualquier programador)
  • Java / Groovy (el habitual, no tan recomendable para empezar)

pero ... hay muchos más (más de 2.500 documentados y no todos son tan utilizados)

Para los trabajos del curso vale cualquier lenguaje. Hay mucha información sobre los distintos lenguajes de programación, sobre todo en sus páginas principales de referencia. Algunos tutoriales que he ido recopilando (algunos en inglés) son los siguientes:

  1. Python Tutorial
  2. Teach Yourself C++ in 21 Days
  3. Curso Completo / JavaScrip Tutorial /
  4. PHP Tutorial
  5. TCL for Web Nerds

Si lo que buscas es un curso más avanzado, uno muy bueno es The Structure and Interpretation of Computer Programs (ver 21 clases en video. Todo en inglés). Pero necesitas tiempo y mucha concentración. Pero hay más de 250 en la plataforma EDX

Si quieres comprar un libro muy bueno sobre programación, además del anterior, puedes comprar el clásico de The C Programming Language (de 1972 pero imprescindible)