Download Conceptos básicos - Instituto Tecnológico de Costa Rica
Document related concepts
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*