Download 01a-conceptos básicos - Instituto Tecnológico de Costa Rica

Document related concepts

Programación funcional wikipedia , lookup

Scala (lenguaje de programación) wikipedia , lookup

Ocaml wikipedia , lookup

Wolfram (lenguaje de programación) wikipedia , lookup

Oz (lenguaje de programación) wikipedia , lookup

Transcript
Conceptos básicos
IC-1800 Introducción a la programación
I semestre, 2016
1
Definiciones Básicas
Hardware: componentes físicos.
→ tangibles
Software: componentes lógicos.
→ no tangibles
DVDs de Ubuntu, Kubuntu y SUN Solaris gratis CC BY-NC-ND
2.0 (juanti @ flickr)
Computador
Conformado por componentes de Hardware y Software.
Procesa “información” (¿datos?, ¿información?, ¿conocimiento?)
Existen analógicos y digitales
●
●
Analógicos: circuitos electrónicos, hidráulicos o mecánicos para llevar a cabo
operaciones sobre datos continuos.
Digitales*: sistemas contemporáneos, resuelven problemas ejecutando
instrucciones de forma secuencial y operan sobre números no continuos o valores
discretos.
** Bajo esta definición abarcamos desde un cajero automático hasta un servidor de alto
desempeño, pasando por celulares, microondas, ollas arroceras...
¿Qué es la programación?
HackNY 2011 Spring Student Hackathon CC BY-SA 2.0 (hackNY @ flickr)
¿Qué es la programación?
Es una herramienta para solucionar problemas
●
Requiere de un alto nivel de abstracción
La programación de una solución debe seguir pasos estructurados con el objetivo de
modelar una solución y representarla en un lenguaje de programación
●
Modelo → Programa
La modelación conlleva un proceso creativo y requiere de una alta dosis de ingenio.
Tipos de lenguajes
Natural
Formal
De
programación
Lenguajes de Programación
Lenguajes Naturales:
●
español, portugués, bribrí, quechua....
Lenguajes Formales:
●
diseñados para aplicaciones específicas.
●
Ejemplo la notación matemática, química o los lenguajes de programación.
Los lenguajes constan de un conjunto de símbolos y reglas sintácticas y semánticas
que dan sentido a sus elementos y expresiones.
●
●
Reglas sintácticas: la forma correcta de expresarse en el lenguaje. (reglas de
sintaxis, están principalmente asociadas con la escritura)
Reglas semánticas: determinan el significado de los programas, la lógica.
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
Lenguajes de Programación
Nos permiten indicarle a una computadora que realice tareas.
Algunos elementos:
●
●
●
Expresiones básicas: entidades con significado por si mismas.
Maneras de composición o combinación: permite construir elementos más
complejos.
Maneras de abstracción: facilita la construcción de una aplicación.
Clasificación
Nivel de abstracción
Forma de ejecución
Paradigma de
programación
Bajo nivel
Compilados
Imperativo
Alto nivel
Interpretados
Funcional
Orientado a objetos
Lenguajes de Programación
Clasificación de los lenguajes de programación:
●
Nivel de abstracción
●
Forma de ejecución
●
Según el paradigma de programación.
Lenguajes de Alto nivel:
●
Más “cercanos” al nivel de abstracción del programador
●
Deben ser traducidos a lenguaje máquina
Lenguajes de Bajo nivel:
●
Lenguaje máquina, ensamblador,
●
Muchos drivers se escriben a este nivel.
Lenguajes de Programación
11011010 01000110 10011001 11001100 11110000 11111111
10010100 10111110 11001100 10011001 11011010 01000110
10011001 11001100 11110000 01010101 10101011 11001101
¿Todo código máquina será igual?
En otras palabras, ¿los lenguajes máquina o ensamblador son universales?
Lenguajes de Programación
Clasificación de los lenguajes de programación:
●
Nivel de abstracción
●
Forma de ejecución (Aplica para lenguajes de Alto Nivel)
●
Según el paradigma de programación.
Lenguajes Compilados:
●
Para ejecutar el programa se debe se traduce todo a lenguaje máquina.
●
Lenguajes Interpretados:
●
El código se va traduciendo durante la ejecución del programa en la medida que
se vaya requiriendo ejecutar.
Lenguajes de Programación
Entonces...
●
●
●
Luego se compila o se interpreta.
Los programas “ejecutables” siempre
está representados en código máquina.
Preguntas:
●
●
Programa
Fuente
Programa fuente está escrito en un
lenguaje de programación de alto nivel.
Intérprete
Compilador
Si los dos (compilados e interpretados)
se traducen a código máquina: ¿dónde
está la diferencia?
¿Qué será mejor?
*
Programa
Ejecutable
*
Programa
Ejecutable
Lenguajes de Programación
Clasificación de los lenguajes de programación:
●
Nivel de abstracción
●
Forma de ejecución
●
Según el paradigma de programación (Enfoque o filosofía de construcción del
software. Actualmente los programas tienden a soportar múltiples enfoques.)
Clasificación (más común):
●
Imperativos o procedimental (Basic, C, Fortran, Pascal)
●
Funcionales (Haskell, Miranda. Hibridos: Scheme, Lisp)
●
Orientados a Objetos (C++, C#, Delphi, Java)
●
Lógicos (Prolog)
Lenguajes de Programación
●
●
●
Cada paradigma tienen ventajas y desventajas.
Dependerá de la naturaleza del problema a solucionar el enfoque más adecuado a
utilizar.
También influyen los gustos de cada programador ;)
Hay lenguajes que tienen un enfoque multiparadigma: entre estos se incluye:
http://www.python.org
Referencias y Lecturas Complementarias
●
●
Material suministrado por el profesor Jeff Schmidt, Instituto Tecnológico de Costa
Rica. I semestre 2011.
Índice TIOBE: http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
Las presentaciones para el curso IC-1800:
"Introducción a la Programación" por Ing. En
Computación Alajuela se distribuyen bajo una
Licencia Creative Commons Atribución-Compartir
Igual 3.0 Costa Rica.
22
http://creativecommons.org/licenses/by-sa/3.0/cr/
http://creativecommons.org/licenses/by-sa/3.0/cr/
*La licencia de la presentación no cubre las imágenes utilizadas*
Imágenes
●
DVDs de Ubuntu, Kubuntu y SUN Solaris gratis CC BY-NC-ND 2.0 (juanti @ flickr)
●
Temporary Rice Cooker CC BY-NC-SA 2.0 (ajalfaro@flickr)
●
Laptop-orange-rotate CC BY-SA 2.0 (Salvor @ flickr)
●