Lección 01 Introducción a los Lenguajes de Programación Contenido Conceptos Básicos Lenguaje de Programación Introducción al Lenguaje Maquina Introducción al Lenguaje Ensamblador Introducción al Lenguaje de Alto Nivel Ejemplos de Lenguajes de Alto Nivel Seleccionando un Lenguaje de Programación
Fundamentos de Programación Conceptos Básicos Las computadoras y dispositivos móviles han evolucionado muy rápidamente, cumpliendo con la ley de Moore casi a la perfección, sin embargo, mientras que vemos como los procesadores aumentan su velocidad, y luego pasan de ser de dos núcleos a cuatro y luego a ocho, los sistemas operativos y el software en general, ha evolucionado poco en estos años, mostrando más colores y funciones, pero pocos cambios significativos. Aunque sistemas operativos como Mac OS X parecieran ser más eficientes, tampoco han evolucionado tan rápido como el hardware, además, hay que pensar que Apple diseña su sistema operativo con unos cuantos modelos en mente, mientras que Microsoft o Linux, tiene que diseñar sistemas operativos para un sin fin de computadoras distintas, con procesadores de diferente arquitectura (Intel, AMD, etc.) y periféricos completamente impredecibles. Esto hace, que los instaladores sean cada vez más grandes y llenos de opciones que en ocasiones no son necesarias, así como parches y arreglos que mejoran la experiencia en unas computadoras pero la empeoran en otras. Por otro lado, los programas o softwares diseñados para estos sistemas operativos, son también un mundo aparte, siendo responsable el desarrollador, razón por la cual son llamados programas de terceros. Por otro lado, el surgimiento de la computación móvil ha modificado un poco las cosas, con teléfonos equipados con procesadores de 1 GHz y capaces de grabar y editar video en HD. En este sentido, los sistemas operativos son más simples y diseñados para la nube, aunque sus funciones también son limitadas. De hecho, si la computación móvil sigue evolucionando, pronto veremos el mundo de las computadoras portátiles y los celulares, fusionarse en uno, ya que finalmente existen distintos tipos de usuarios, los que sólo requieren estar conectados y editar uno que otro archivo de texto, y los que requieren de sofisticados programas para realizar su trabajo. Qué opinan, su computadora es lenta por el hardware, el sistema operativo, o de plano tienen una avión de computadora? Finalmente, está el asunto de la velocidad de conexión a internet y los nuevos sistemas operativos en la nube, asunto que pudiera revolucionar, al menos para los que tienen buena conexión, todo el mundo de la computación, esperemos ser partícipes de esa revolución. 2 Instituto San Ignacio de Loyola
L01: Introducción a los Lenguajes de Programación Lenguaje de Programación Un lenguaje es un medio de comunicación entre dos personas. De manera similar, un lenguaje de programación es un medio de comunicación entre un programador y un computador. Un programador escribe un conjunto de instrucciones en un lenguaje de programación para que el computador realice una tarea. Este conjunto de instrucciones se llama programa. Cada lenguaje está conformado por un conjunto de palabras y símbolos. Esta colección de palabras y símbolos es llamado el vocabulario de un lenguaje. El vocabulario de un lenguaje de programación no es extenso como el vocabulario de un lenguaje común de comunicación hablado, todos los lenguajes de programación tienen un conjunto de reglas, llamadas sintaxis del lenguaje. Se tiene además otra definición que un lenguaje de programación es un lenguaje formal diseñado para expresar procesos que pueden ser llevados a cabo por máquinas como las computadoras. También la palabra programación se define como el proceso de creación de un programa de computadora, mediante la aplicación de procedimientos lógicos, a través de los siguientes pasos: El desarrollo lógico del programa para resolver un problema en particular. Escritura de la lógica del programa empleando un lenguaje de programación específico (codificación del programa). Ensamblaje o compilación del programa hasta convertirlo en lenguaje de máquina. Prueba y depuración del programa. Desarrollo de la documentación Los lenguajes de programación se pueden clasificar en tres grandes categorías: Lenguaje de Maquina Lenguaje Ensamblador Lenguaje de Alto Nivel Instituto San Ignacio de Loyola 3
Fundamentos de Programación Introducción al Lenguaje Maquina Todos los computadores usan el sistema de numeración binario, conformado por dígitos binarios: 0 y 1. Este sistema se utiliza para ejecutar operaciones internas. El Lenguaje Máquina es el único lenguaje que usa dígitos binarios para representar una instrucción. Por lo tanto, el computador puede procesar directamente las instrucciones escritas en lenguaje máquina. Muchos lenguajes se pueden utilizar para escribir programas. Sin embargo, el computador entiende solo lenguaje máquina. Los programas escritos en otros lenguajes de programación necesitan ser traducidos a lenguaje máquina para su ejecución. Los programas en lenguaje máquina están escritos en dígitos binarios, es difícil de aprender porque es difícil de leer y entender. Por ejemplo, la instrucción para imprimir un número puede ser: Nota 1011001111101001 1110110011001111 El sistema de números binarios usa la base 2. Por ejemplo, 101 en sistema binario es igual a 5 en sistema decimal. 01010101 01010010 01011011 01100101 10010101 11010101 11110000 01001111 4 Instituto San Ignacio de Loyola
L01: Introducción a los Lenguajes de Programación Ventajas del Lenguaje Máquina La principal ventaja es que los programas escritos en lenguaje máquina se ejecutan más rápido. Esto es posible porque las instrucciones de máquina están en forma binaria, que son directamente entendidas por el computador y no necesitan ser traducidas. Limitaciones del Lenguaje Máquina El lenguaje máquina tiene las siguientes limitaciones: Los programas en lenguaje máquina son difíciles de escribir por que el programador necesita recordar todos los códigos de las operaciones o referirse constantemente a la tarjeta de referencia del computador. El programador necesita recordar también las localizaciones de memoria de los datos. El código del lenguaje máquina difiere de un tipo de computador a otro. Esto porque el diseño interno de cada tipo de computador varía de otros tipos y por lo tanto necesita diferentes señales para operar. Los programas en lenguaje máquina son proclives de error por que son difíciles de escribir. Un simple error de un 0 o 1 puede cambiar la interpretación del programa. Los programas escritos en lenguaje máquina son difíciles de modificar por que son muy complejos. Una tarjeta de referencia es un documento de las instrucciones máquina para el computador. Es una lista en formato binario de varias instrucciones en lenguaje máquina como por ejemplo print y read. Instituto San Ignacio de Loyola 5
Fundamentos de Programación Introducción al Lenguaje Ensamblador Para superar las limitaciones del lenguaje máquina, en 1952 se crea el Lenguaje Ensamblador. El lenguaje ensamblador utiliza códigos alfanuméricos y símbolos en lugar de dígitos binarios para representar instrucciones y direcciones de memoria. Por ejemplo utiliza ADD para sumar y SUB para restar. Nota Los códigos alfanuméricos utilizan un conjunto de letras y números para representar instrucciones. Estos códigos alfanuméricos y los símbolos hacen el programa ordenado y mas fácil de escribir que el lenguaje máquina. También se reduce la posibilidad de errores. Adicionalmente, los programas pueden ser fácilmente modificados. Nota El lenguaje ensamblador es llamado lenguaje de segunda generación. Por ejemplo, parte de un programa en lenguaje ensamblador para sumar dos números se muestra a continuación: 1. LD Ax, 9 2. LD Bx, 10 3. ADD Ax, Bx 4. LD (100), Ax 5. JMP Bx 6. HLT Aquí, Ax y Bx son registros. Los registros son las posiciones de memoria dentro del microprocesador. Cada instrucción y datos necesitan ser cargadas de la memoria central a los registros antes de que la CPU pueda procesarla. En el programa anterior: La línea número uno carga el registro Ax con el valor 9. La línea número dos carga el registro Bx con el valor 10. La línea número tres suma el valor del registro Bx al valor del registro Ax. La línea número cuatro almacena el valor del registro Ax en la localización de memoria 100. 6 Instituto San Ignacio de Loyola
L01: Introducción a los Lenguajes de Programación La línea número cinco usa JMP para saltar al registro Bx para transferir el control al registro Bx. La línea número seis detiene la ejecución del programa. Como mencionamos anteriormente, un computador no entiende cualquier lenguaje solo el lenguaje máquina. Como resultado, es necesario un programa traductor para traducir el código de lenguaje ensamblador a un código de lenguaje máquina. Este programa traductor es llamado ensamblador. Un código escrito en cualquier lenguaje de programación, que requiere ser traducido para su ejecución, se conoce como código fuente. Ventajas del Lenguaje Ensamblador Los programas en lenguaje ensamblador son fáciles de escribir y entender que el lenguaje máquina por que utiliza códigos alfanuméricos en lugar de números binarios. Los programadores pueden recordar fácilmente los nombres de opcode y alfanuméricos para las direcciones de datos e instrucciones. Estos permite ahorrar tiempo y esfuerzo en desarrollo y modificación de programas en lenguaje ensamblador. Limitaciones del Lenguaje Ensamblador El lenguaje ensamblador también tiene limitaciones, estas son: Los programas creados en lenguaje ensamblador son más lentos que los creados con el lenguaje máquina. Esto es por que se requiere tiempo extra para traducir instrucciones del lenguaje ensamblador a instrucciones de lenguaje máquina. Los programas creados en lenguaje ensamblador dependen de procesadores por que el vocabulario del lenguaje ensamblador varía para diferentes procesadores. Por lo tanto, un programa escrito en lenguaje ensamblador para un procesador puede no ejecutar en otro procesador. Instituto San Ignacio de Loyola 7
Fundamentos de Programación Introducción al Lenguaje de Alto Nivel Los lenguajes de máquina y ensamblador son llamados lenguajes de bajo nivel porque son dependientes del hardware. Para crear programas independientes del hardware, los programadores tienen que desarrollar en un nuevo tipo de lenguaje de programación llamado Lenguaje de Alto Nivel. Un lenguaje de alto nivel es de uso más sencillo porque es similar al lenguaje inglés y usa palabras, tales como write, alert e IF para imprimir y hacer una pregunta, respectivamente. Algunos ejemplos de lenguaje de alto nivel son Swift, C - Sharp, Java, PHP, Phyton, Ruby, c++, Otros. Cada instrucción de un lenguaje de alto nivel es traducida a múltiples instrucciones de nivel de máquina. Los lenguajes de alto nivel han hecho la programación una tarea fácil, lo cual ha incrementado el uso de lenguajes de alto nivel por los programadores. Algunas ventajas del uso de lenguajes de alto nivel son las siguientes: Aprender un lenguaje de alto nivel es mucho más fácil que aprender un lenguaje máquina o ensamblador porque sus instrucciones son más parecidas al lenguaje inglés. Un programador puede fácilmente leer, escribir y mantener un programa escrito en un lenguaje de alto nivel. Esto es porque el vocabulario de un lenguaje de alto nivel es similar al lenguaje inglés. Los programas en lenguaje de alto nivel son independientes del hardware lo que provee características de portabilidad. Los programas escritos en un lenguaje de alto nivel para un tipo de computador pueden fácilmente ser usados en otro tipo de computador. Compilador (Compiler) Para ejecutar un programa escrito en un lenguaje de alto nivel, se necesita un software de traducción llamado Compilador. Un compilador es siempre específico para un lenguaje que significa que cada lenguaje de alto nivel tiene a su propio compilador, que traduce el código fuente del lenguaje a un código objeto. Por ejemplo, un compilador de C compila solo programas escritos en C, y no puede compilar programas escritos en otro lenguaje de alto nivel. Cuando un programa compilador traduce un código fuente, comprueba la sintaxis de las sentencias. Si el compilador encuentra un error en el código de fuente, genera una lista de errores. El compilador no genera el código objeto hasta que se corrijan los errores. Los lenguajes de alto nivel son también llamados lenguajes de tercera generación. 8 Instituto San Ignacio de Loyola
L01: Introducción a los Lenguajes de Programación Intérprete Algunos lenguajes de alto nivel utilizan una tipo diferente de programas traductores llamados Intérprete. Un intérprete toma cada instrucción del código fuente, lo convierte a instrucciones de lenguaje máquina, lo ejecuta y no graba el código objeto generado. Este proceso es repetido cada vez antes de la ejecución de cada instrucción. Por lo tanto, la ejecución de un programa usando un intérprete consume más tiempo. La depuración es fácil si se usa un intérprete por que los mensajes de error de un intérprete son usualmente específicos y señalan la línea en la cual ocurre el error. Los lenguajes PHP, Python y JavaScript son lenguajes que usan intérpretes. Comparación entre Compilador e Interprete Las diferencias entre compilador e intérprete son explicadas en la siguiente tabla: Compilador Un compilador primero traduce el programa y genera el código objeto, que puede ser posteriormente ejecutado. El código objeto generado después de la compilación es grabado para su futuro uso. El programador no necesita compilar el programa otra vez para la generación de código del objeto. Esto hace que la ejecución sea más rápida. Un compilador detecta y muestra los errores de sintaxis relacionados con el código fuente. Intérprete Un intérprete traduce y ejecuta línea por línea del código fuente al mismo tiempo. Las líneas de código traducidas no son grabadas para su futuro uso. Por lo tanto, el código necesita ser traducido antes de su ejecución. Esto hace que la ejecución del programa sea más lento. Un intérprete detecta y muestra los errores relacionados con una línea del código fuente. Instituto San Ignacio de Loyola 9
Fundamentos de Programación Ejemplos de Lenguajes de Alto Nivel C Un gran número de lenguajes de alto nivel han sido desarrollados desde que el primer lenguaje de alto nivel, FLOWMATIC, fue desarrollado en 1952. Algunos de los lenguajes de alto nivel más comunes son: BASIC, FORTRAN, COBOL, Pascal Fueron los lenguajes más populares en la década de los 80 y 90 Algunos de los lenguajes del alto nivel mas empleado son: C++ C fue desarrollado en 1972 por Dennis Ritchie y Drian Kernighan en los laboratorios de AT&T Bell, USA. Ellos diseñaron C de tal manera que incorpore las características de un lenguaje de alto nivel junto con la eficiencia de un lenguaje de bajo nivel. C fue estandarizado por ANSI en 1989. C es un lenguaje de tipo compilador. Por consiguiente, los programas en C pueden ser fácilmente transferidos a otro computador equipado con un compilador C. Es usualmente usado para escribir programas procesadores de texto, compiladores, y sistemas operativos. Por ejemplo, el sistema operativo UNIX está escrito en C. Creado a mediados de los años 80 C++ es un lenguaje de programación diseñado con la intención de extender al lenguaje de programación C con mecanismos que permitan la manipulación de objetos. Las características de C++ que le permiten una mejor integración con el hardware y un mejor manejo de los recursos del computador han hecho que sea elegido como la herramienta para el desarrollo de software como los software de Adobe: Flash, Dreamweaver entre otros, los software de 3D como Maya y 3D Studio Max, software de ingeniería como AutoCAD; los software de Microsoft como Office, Sistemas Operativos Windows, Visual Studio.Net, Internet Explorer, etc., y diferentes software de otros grandes fabricantes. Últimamente su uso se ha extendido aún más con el desarrollo de juegos donde es necesario una mayor exigencia en el aprovechamiento del hardware del computador. Así como en los simuladores de vuelo y de combate empleados no sólo en los juegos sino en la industria militar. 10 Instituto San Ignacio de Loyola
L01: Introducción a los Lenguajes de Programación JAVA Java es un lenguaje de programación desarrollado por Sun Microsystems (Ahora Oracle) que toma mucho de la sintaxis de C y C++. Una de las características de Java es que es multiplataforma, es decir es independiente del sistema operativo, por lo que al compilar el código fuente Java se genera un código conocido como bytecode, que es como un camino medio entre el código fuente y el código máquina que entiende el dispositivo destino. El bytecode es ejecutado entonces en la máquina virtual (JVM), un programa escrito en código nativo de la plataforma destino (que es el que entiende su hardware), que interpreta y ejecuta el código. Además, se suministran bibliotecas adicionales para acceder a las características de cada dispositivo sea una PC, Tablet o dispositivo móvil. el bytecode generado es interpretado o convertido a instrucciones máquina del código nativo por el compilador de la máquina virtual. El lenguaje Java es empleado para el desarrollo de aplicaciones de negocios Windows, Web, Móviles (por ejemplo para Android), e incluso juegos. Visual Basic.Net C# Es un lenguaje de programación desarrollado por Microsoft el cual es una evolución de Visual Basic que es a su vez una evolución del antiguo lenguaje BASIC. Este lenguaje está basado en.net Framework el cual es una plataforma desarrollada por Microsoft para la creación de aplicaciones. Para poder desarrollar con Visual Basic.Net existe Microsoft Visual Studio.Net el cual es una herramienta para programar con Visual Basic.Net. Con Visual Basic.Net se pueden desarrollar aplicaciones de negocios Windows, Web o para dispositivos móviles Es un lenguaje de programación desarrollado por Microsoft para su plataforma.net. Su sintaxis básica deriva de C/C++ y utiliza el modelo de objetos de la plataforma.net, similar al de Java aunque incluye mejoras derivadas de otros lenguajes. Este lenguaje está basado en.net Framework el cual es una plataforma desarrollada por Microsoft para la creación de aplicaciones. Para poder desarrollar con C# también se emplea Microsoft Visual Studio.Net el cual sirve como herramienta para programar con C#. Con C# se pueden desarrollar aplicaciones de negocios Windows, Web o para dispositivos móviles, además de desarrollar juegos para PC o Xbox 360. Instituto San Ignacio de Loyola 11
Fundamentos de Programación PHP PHP es un lenguaje intérprete empleado para el desarrollo de aplicaciones Web, es bastante empleado por programadores web y se han desarrollado aplicaciones bastante populares como blogs, foros y chats, aunque usualmente las aplicaciones desarrolladas con PHP se instalan o distribuyen en servidores Linux, sin embargo también se pueden instalar en servidores Windows. ActionScript ActionScript es un lenguaje de programación interpretado, que se ejecuta empleando Flash Player en proyectos desarrollados en Flash. Este lenguaje permite controlar los elementos de una película Flash, permitiendo implementar interactividad tanto para desarrollar sitios web así como para desarrollar proyectos multimedia, como en el desarrollo de juegos para la web. JavaScript JavaScript es un lenguaje de programación interpretado, se indica que se ejecuta en el lado del cliente por que se ej ecuta en el navegador o browser (Internet Explorer, Firefox, Chrome, ). El uso de este lenguaje es permitir el control de todos los elementos de una página web, esto permite implementar animaciones y efectos especiales en los sitios web. Objetive-C Es un lenguaje de programación basado en C++ desarrollado por Apple para la creación de programas para computadores Mac, Iphone, Ipod, y Ipad. Debido al rápido crecimiento en ventas de los nuevos dispositivos Apple, su uso crecido significativamente. Emplea como entorno de desarrollo la herramienta Xcode, descargable en forma gratuita de la página de Apple para desarrolladores. El único limitante es que sólo se puede instalar para desarrollo en computadores Mac. Pero el desarrollador puedo luego publicar su aplicación en AppStore un sitio web de Apple disponible para que los desarrolladores puedan publicar sus aplicaciones para que puedan ser adquiridas y descargadas. 12 Instituto San Ignacio de Loyola
L01: Introducción a los Lenguajes de Programación SQL HTML Es un lenguaje de consultas desarrollado para la manipulación software de bases de datos. Si bien el lenguaje SQL es único, sin embargo existen variantes en función a diferentes programas de base de datos desarrollados por diversos fabricantes. Mediante este lenguaje se puede hacer consulta a la información que almacenan las bases de datos. Si bien por si solo no permite la creación de una aplicación de negocios o juegos, pero forma parte importante o estructural de una aplicación empresarial debido a que al manipular la base de datos controla lo más importante para una empresa: su información. Es un lenguaje basado en etiquetas o tags que permiten crear una página web y con ello todo un sitio web. Las etiquetas HTML escritas en forma ordenada y siguiendo una jerarquía permiten incorporar texto, imágenes, animaciones, video, sonido e incluso elementos de otros lenguajes como JavaScript, PHP, etc. Si bien con HTML no se desarrolla una aplicación de negocios por si sólo pero forma la estructura o plataforma para una aplicación web Otros lenguajes Existen otros lenguajes menos comunes pero empleados en diversas herramientas como Coldfusion, Python, Ruby, MaxScript, entre otros Instituto San Ignacio de Loyola 13
Fundamentos de Programación Seleccionando un Lenguaje de Programación Con la disponibilidad de una gran variedad de lenguajes de programación, la selección de un lenguaje de programación apropiado es un tema importante hoy en día. Los siguientes factores deben ser considerados en la selección de un lenguaje de programación: El primer criterio para seleccionar un lenguaje es el tipo de aplicación que ha de desarrollarse. Por ejemplo, PHP un lenguaje empleado para desarrollar aplicaciones Web. Si para una aplicación son adecuados múltiples lenguajes, los programadores deberían escoger el lenguaje en el que sean más competentes. Por ejemplo no sólo PHP se puede emplear para aplicaciones web, sino también C# o Visual Basic.Net, o Java entre otros Si los programadores no están familiarizados con ningún lenguaje, deberían escoger un lenguaje que sea fácil de aprender y usar. 14 Instituto San Ignacio de Loyola