Herramientas de usuario

Herramientas del sitio


informatica:programacion

Programación

proceso por el cual una persona desarrolla un programa, valiéndose de una herramienta que le permita escribir el código (el cual puede estar en uno o varios lenguajes, como C++, Java y Python, entre otros) y de otra que sea capaz de “traducirlo” a lo que se conoce como lenguaje de máquina, que puede “comprender” el microprocesador2​.

Paradigmas de programación

Estilos o enfoques de programación.

  • Programación imperativa: se dice cómo hacer un proceso.
  • Programación declarativa: se dice qué proceso hacer.

Paradigma imperativo

Programación estructurada

  • Secuencia
  • Sentencias de selección / control
  • Sentencias de repetición
  • Funciones

Lenguajes

Para crear un programa, y que la computadora lo interprete y ejecute, las instrucciones deben escribirse en un lenguaje de programación.

Clasificación

Hay dos formas principales de programación:

  • Programación Imperativa: se centra en cómo ejecutar el programa, define el control de flujo así como los cambios de estado del programa.
  • Programación Declarativa: se centra en qué ejecutar, define la lógica del programa, pero no detalla el control de flujo.

Por paradigmas:

  • Imperativa
    • Estructurada
    • De procedimientos (Procedural)
  • Programación dirigida por eventos (Event-driven)
  • Programación declarativa
  • Programación funcional
  • Programación basada en autómatas

Por nivel de abstracción:

  • Bajo nivel: lenguajes que están muy cerca del hardware. Difíciles de usar, pero son muy eficientes.
  • Alto nivel: están cerca del lenguaje humano. Fáciles de aprender y usar, pero menos eficientes.

Por características de implementación:

  • Compilado: el código se traduce a un lenguaje máquina, que es el lenguaje que entiende el hardware.
  • Interpretado: el código se ejecuta directamente por un intérprete, sin necesidad de compilarlo previamente.
  • Estático: los lenguajes requieren que el tipo de datos de las variables se declare explícitamente.
  • Dinámico: los lenguajes dinámicos permiten que el tipo de datos de las variables se determine en tiempo de ejecución.

Elementos

  • Palabras reservadas: palabras con un significado especial en el lenguaje y no se pueden utilizar para otros fines.
  • Operadores: símbolos que se utilizan para operaciones matemáticas, lógicas o de comparación.
  • Variables: contenedores que almacenan datos.
  • Constantes: valores que no cambian durante la ejecución del programa.
  • Estructuras de control: instrucciones que controlan el flujo de ejecución del programa:
    • Bucles
    • Condicionales
  • Funciones: bloques de código que se pueden reutilizar.

Tipos de datos

Cadenas / strings

Son secuencias de caracteres:

'h', "hola", "123"

Dependiendo del lenguaje, para definir una cadena se utilizan comillas simples (') o dobles (") que indican el inicio y el final de la cadena.

Variables

Espacio de memoria asociado a un nombre. Se puede pensar como una caja etiquetada. Si esa caja la etiquetamos como cosas y le metemos una manzana, podríamos decir:

cosas = manzana
  • cosas: nombre de la variable
  • manzana: contenido de la variable
  • = símbolo que asigna la manzana a la variable

El contenido de una variable, como su nombre indica, puede modificarse, puede variar:

cosas = manzana
cosas = pera

Nomenclatura

No podemos utilizar el nombre que queramos para definir una variable. Cada lenguaje impone sus normas. Por ejemplo, para el caso de Python, el nombre de las variables:

  • Solo puede contener letras, números y guiones bajos. No podemos utilizar caracteres especiales como $ o !.
  • Solo pueden comenzar con una letra o un guión bajo, no con un número. Podríamos llamar a una variable caja1, pero no 1caja.

Además de las normas de nombrado, los lenguajes de programación tienen una serie de palabras reservadas que no se pueden utilizar en las variables (ni en funciones u otros identificadores). Siguiendo con Python, algunas de las palabras reservadas: for, while, if, for, from

Cómo empezar a programar

Técnicamente, para empezar a programar es necesario:

  • Un ordenador
  • Un editor de texto
  • Un intérprete o compilador

No es obligatorio, pero sí facilita mucho la programación usar un IDE (Entorno de Desarrollo Integrado, por sus siglas en inglés). Es un programa que combina un editor de texto, un intérprete o compilador y otras herramientas de desarrollo en un solo lugar.

Además de los requisitos técnicos, se requiren las siguientes habilidades:

  • Pensamiento lógico para resolver problemas.
  • Capacidad de abstracción
  • Capacidad de aprendizaje: La programación es un campo en constante evolución, por lo que es importante estar dispuesto a aprender cosas nuevas.

Algunos consejos para empezar a programar:

  • Empieza con un lenguaje sencillo: Hay muchos lenguajes de programación disponibles. Para empezar, es recomendable elegir un lenguaje sencillo, como Python o JavaScript.
  • Encuentra un proyecto para trabajar: Trabajar en un proyecto te ayudará a aprender los conceptos básicos de la programación.
  • No tengas miedo de cometer errores: Todos cometen errores cuando están aprendiendo a programar. Los errores son una parte normal del proceso de aprendizaje.
  • Sé paciente: Aprender a programar lleva tiempo y esfuerzo. No te desanimes si no lo entiendes todo a la primera.

Buenas prácticas

  • DRY (Don't Repeat Yourself): no repitas código. Si tienes código que se repita, conviértelo en función.
  • Una función no debería recibir más de 3 argumentos.
  • El código debería escribirse como si la persona que lo fuese a leer te importase.
  • Una función debería hacer una única cosa. En caso contrario, extraer código para convertirlo en otra función más.
  • El nombre de las funciones debería ser un verbo ya que realizan una acción.

Libros

Lenguajes

  • Effective Java, de Joshua Bloch

Metodologías

  • A Philosophy of Software Design, de John Ousterhout
  • Clean Code: A Handbook of Agile Software Craftsmanship, de Robert C. Martin
  • Head First Design Patterns: Building Extensible and Maintainable Object-Oriented Software, de Eric Freeman y Elisabeth Robson.
  • The Pragmatic Programmer: From Journeyman to Master, de Andy Hunt
  • Refactoring: Improving the Design of Existing Code, de Martin Fowler
  • Code Complete, de Steve McConnell
  • Implementation Patterns, de Beck Kent
  • TheArt of Readable Code: Simple and Practical Techniques for Writing Better Code, de Dustin Boswell
  • Refactoring to Patterns, de Joshua Kerievsky
  • Growing Object-Oriented Software, Guided by Tests, de Steve Freeman y Nat Pryce

Metodologías / disciplinas

Metodologías de desarrollo de software.

  • Extreme Programming (XP): pone más énfasis en la adaptabilidad que en la previsibilidad.
  • Test-Driven Development (TDD): unión de escribir las pruebas primero (Test First Development) y Refactorización (Refactoring).

Recursos

informatica/programacion.txt · Última modificación: por tempwin