Download Conceptos básicos - Instituto Tecnológico de Costa Rica

Document related concepts

Scala (lenguaje de programación) wikipedia , lookup

Wolfram (lenguaje de programación) wikipedia , lookup

Programación funcional wikipedia , lookup

Ocaml wikipedia , lookup

Clojure wikipedia , lookup

Transcript
Conceptos básicos
IC-1800 Introducción a la programación
I semestre, 2017
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.
** desde un cajero automático hasta un servidor de alto
desempeño,
¿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
El modelado 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.
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.
Lenguajes de Programación
Clasificación
Nivel de
Forma de
Paradigma de
abstracción
ejecución
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 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
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 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...
●
●
●
Programa fuente está escrito en un
lenguaje de programación de alto
nivel.
Programa
Fuente
Luego se compila o se interpreta.
Los programas “ejecutables” siempre
está representados en código
máquina.
Intérprete
Compilador
Ejecutable
Preguntas:
●
Si los dos (compilados e
interpretados) se traducen a código
máquina: ¿dónde está la diferencia?
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 lenguajes tienden a soportar múltiples enfoques.
Lenguajes de Programación
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 ;)
Lenguajes de Programación
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
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)
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.
25
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*
Conceptos básicos
IC-1800 Introducción a la programación
I semestre, 2017
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)
Categorías* / ejemplos:
● De sistema / Sistemas operativos (Ubuntu)
● De programación / Lenguajes de programación (Python)
● De aplicación / sistemas información, juegos (FrozenBubble)
*categorías a groso modo.
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.
** desde un cajero automático hasta un servidor de alto
desempeño,
¿La computadora procesa datos, información y/o
conocimiento?
Imágenes:
Temporary Rice Cooker CC BY-NC-SA 2.0
(ajalfaro@flickr)
Laptop-orange-rotate CC BY-SA 2.0 (Salvor @ flickr)
¿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
El modelado 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.
En el contexto de la computación se utilizan las
gramáticas libres de contexto para determinar la
sintaxis de un lenguaje. Estas fueron introducidas
por John Backus y Peter Naur al definir el lenguaje
ALGOL-60
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.
En el contexto de la computación se utilizan las
gramáticas libres de contexto para determinar la
sintaxis de un lenguaje. Estas fueron introducidas
por John Backus y Peter Naur al definir el lenguaje
ALGOL-60
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
●
Indice tibe:
http://www.tiobe.com/index.php/content/paperinfo/tpc
i/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.
Lenguajes de Programación
Clasificación
Nivel de
Forma de
Paradigma de
abstracción
ejecución
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 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
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 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...
●
●
●
Programa fuente está escrito en un
lenguaje de programación de alto
nivel.
Programa
Fuente
Luego se compila o se interpreta.
Los programas “ejecutables” siempre
está representados en código
máquina.
Intérprete
Compilador
Ejecutable
Preguntas:
●
Si los dos (compilados e
interpretados) se traducen a código
máquina: ¿dónde está la diferencia?
Programa
Ejecutable
El intérprete toma el código fuente y ejecuta en un solo
paso (línea por línea), técnicamente no crea un
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 lenguajes tienden a soportar múltiples enfoques.
Lenguajes de Programación
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 ;)
Lenguajes de Programación
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
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)
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.
25
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*