Вы находитесь на странице: 1из 12

INTRODUCCIN A LOS LENGUAJES DE PROGRAMACIN 1.

1 POR QUE ESTUDIAR LENGUAJES DE PROGRAMACION Existen cientos de lenguajes de programacin que se han diseado e implementado. Sin embargo la mayora de los programadores nunca se aventuran a usar mas de unos cuantos lenguajes y muchos limitan su programacin a uno o dos. En realidad los programadores en la prctica trabajan frecuentemente en instalaciones de computadoras donde se requiere el uso de lenguajes particulares. Existen varias ra ones excelentes para tal estudio! a condicin de ir ms all de la consideracin superficial de las "#$%$#&E%'S&'#$S( de los lenguajes! en los conceptos de diseo indicados y su efecto en la implementacin de lenguajes. Existen adems cinco ra ones principales) *+ ,E-.%$ E/ #.0.#','E0&. 1E/ /E023$-E 43E ES&$ 3S$01.. $l estudiar un /enguaje de 5rogramacin 6/.5.+ se conocen las caractersticas! que usadas adecuadamente! benefician al programador! pero cuando se usan en forma inadecuada pueden desperdiciar grandes cantidades de tiempo de computadora o conducir al programador a errores lgicos que hacen perder mucho tiempo. 3n ejemplo tpico es la recursin! una caracterstica muy 7til de programacin que est disponible en muchos lenguajes. #uando se usa en forma adecuada permite la implementacin directa de algoritmos elegantes y eficientes8 pero en otros casos puede causar un incremento astronmico en el tiempo de ejecucin de un algoritmo. $dems! el costo de la recursin vara seg7n la implementacin del lenguaje. 9+ E0%'43E#E E/ 1E5%.2%$,$#'<0. :.#$;3/$%'. 1E #.0S&%3##'.0ES 3&'/ES

Estudiar las construcciones proporcionadas por una amplia variedad de lenguajes y la manera en que estas se implementan! incrementa el (vocabulario( del programador. El entendimiento de las t=cnicas de implementacin es particularmente importante. 5or ejemplo en la estructura de control de subprogramas! conocida como corrutina es 7til en muchos programas! pero pocos lenguajes brindan directamente una caracterstica de corrutina.

#on frecuencia se nota que los lenguajes sirven tanto como una ayuda para pensar como para construir. #uando se buscan datos y estructuras de programacin adecuadas a la solucin de un problema! se tiende a pensar en las estructuras que son expresables inmediatamente en los lenguajes con los cuales se est familiari ado. >+ ,E-.% SE/E##'.0 1E/ /E023$-E $1E#3$1.. #on el conocimiento de una variedad de lenguajes se permite la seleccin del lenguaje correcto para un proyecto particular8 por tanto reduce enormemente el esfuer o de codificacin requerido. 5or ejemplo! los programadores en ? o @ se encuentran ante la necesidad de escribir programas que hagan menor procesamiento de cadenas8 por ejemplo8 reformar algunas entradas de datos formateadas inadecuadamente. #odificar el programa en ? o @ puede ser tedioso y consumir mucho tiempo en la escritura! pero si se escribe en un lenguaje procesador de cadena A requerir tal ve menos tiempo y utili ar una docena de lneas para codificar. B+ C$#E ,$S D$#'/ E/ $5%E01'A$-E 1E 30 03E:. /E023$-E. $l igual que un lingEista! donde a trav=s de un conocimiento profundo de las estructuras en que se basan los lenguajes naturales! puede aprender un lenguaje extranjero ms rpido y fcil que el esfor ado principiante que entiende poco de las estructuras de su lenguaje natal. En forma similar! un conocimiento conciente de una variedad de lenguajes de programacin y de t=cnicas de programacin permiten al programador aprender un nuevo lenguaje ms fcil cuando es necesario. F+ D$#'/'&$ E/ 1'SEG. 1E 30 03E:. /E023$-E. Si el programador conoce varios /.5. se le facilitar mucho en el momento en que piense como diseador de un nuevo lenguaje. /a interfa del usuario consiste en unos formatos de datos y comandos que son proporcionados por =l para comunicarse con el programa. Este aspecto del diseo del programa con frecuencia se simplifica si el programador est familiari ado con varias construcciones y m=todos de implementacin de lenguajes comunes. $dems de las cinco ra ones antes mencionadas existen tres intereses diferentes en el estudio de lenguajes de programacin.

a+E/ 1E/ (5%.2%$,$1.%(. Esto hace referencia a las diferencias que existen entre distintos niveles y aplicaciones de la programacin. #laramente el programador que ha reali ado un curso de doce semanas en 1E/5C' y luego entra en el campo de procesamiento de datos es diferente del programador que escribe un compilador de #HH! o del programador que disea un experimento de inteligencia artificial en 5%./.2! o del programador que combina sus rutinas de # par resolver un problema de ingeniera complejo! o del programador que desarrolla un sistema operativo multiprocesador en $1$. b+E/ (1'SEG$1.% 1E/ /E023$-E(. $lgunos lenguajes6como $5/ y /'S5+ fueron diseados por una sola persona por un concepto 7nico! mientras que otros 6como D.%&%$0 y #.;./+ son el producto del desarrollo de varios aos reali ados por comit=s de diseos de lenguajes. c+E/ (',5/E,E0&$1.% 1E/ /E023$-E(. Es la persona o grupo que desarrolla un compilador o interprete para un lenguaje sobre una mquina particular o tipo de mquinas. ,s frecuentemente! el primer compilador para el lenguaje @ sobre la mquina ? es desarrollado por la corporacin que manufactura la mquina ?. Existen tambi=n muchos aspectos compartidos entre los programadores! diseadores de un lenguaje e implementadores del mismo. #ada uno debe de comprender las necesidades y ligaduras que gobiernan las actividades de los otros dos. 5or definicin! un buen diseador de lenguajes debe ser un buen programador. En muchos casos el diseador de un lenguaje es tambi=n su primer implementador. 1.2 HISTORIA DE LOS LENGUAJES DE PROGRAMACION El programador! diseador e implementador de un lenguaje de programacin deben de comprender la evolucin histrica de los lenguajes para poder apreciar por que presentan caractersticas diferentes. 5or ejemplo! los lenguajes jvenes prohiben el uso de la sentencia 2.&. como mecanismo de control inferior! y esto es correcto en el contexto de las filosofas actuales de ingeniera de softIare y programacin estructurada.

/a ms importante es que la historia nos permite ver la evolucin de familias de lenguajes de programacin! ver la influencia que ejerce las arquitecturas y aplicaciones de las computadoras sobre el diseo de lenguajes y evitar futuros defectos de diseo aprendiendo las lecciones del pasado. $lgunas de las principales influencias en la evolucin de diseos de lenguajes se listan a continuacin) *+ C$%1J$%E 1E /$S #.,53&$1.%$S @ S'S&E,$ .5E%$&':.. /as computadoras han evolucionado de las mquinas pequeas! lentas con costosos tubos de vaco de los aos FKLs a las supercomputadoras y microcomputadoras de hoy. $l mismo tiempo! estratos de microprogramacin y el hardIare de la computadora. Estos factores han influido en la estructura y el costo de usar las caractersticas de los lenguajes de alto nivel. 9+ $5/'#$#'.0ES. El uso de la computadora se ha difundido rpidamente de la concentracin original de aplicaciones crticas! cientficas! en negocios e industriales de los aos FK donde el costo podra estar justificado! a los juegos en computadora! computadoras personales y aplicaciones en casi todas las reas de la actividad humana de hoy. /os requerimientos de =stas nuevas reas de aplicacin afectan a los diseos de nuevos lenguajes y las revisiones y extensiones de los anteriores. >+ ,E&.1.S 1E 5%.2%$,$#'.0. /os diseos de lenguajes han evolucionado para reflejar nuestro cambiante conocimiento de los m=todos nuevos para escribir programas largos y complejos y para responder ambientes tambi=n cambiantes en los cuales se efect7a la programacin. B+ ,E&.1.S 1E ',5/E,E0&$#'.0. El desarrollo de m=todos para una mejor implementacin ha afectado a la seleccin de las caractersticas que se deben incluir en nuevos diseos. F+ ES&31'.S &E.%'#.S. /a investigacin en los fundamentos conceptuales para diseo de lenguajes e implementacin! usando m=todos de matemtica formal! ha profundi ado nuestro entendimiento de la fuer a y debilidad de las caractersticas de los lenguajes y! por tanto! ha influido en la inclusin de estas caractersticas en los nuevos diseos de lenguajes.

M+ ES&$01$%'A$#'.0. /a necesidad de lenguajes (estndar( que se puedan implementar con facilidad en varios sistemas de computacin y que permita que los programas sean transportados de una computadora a otra ejerce una fuerte influencia conservativa sobre la evolucin de los diseos de lenguaje. 1.3 APLICACIONES DE LOS LENGUAJES DE PROGRAMACION /os diferentes lenguajes de programacin tienden a desarrollarse para diferentes reas de aplicacin) 5rincipalmente (#ientficaN! (5rocesamiento de datos(! ('nteligencia artificial(! (5rocesamiento de texto( y (5rogramacin de sistemas(. $5/'#$#'.0ES #'E0&'D'#$S. 5ueden caracteri arse como las que manipulan predominantemente n7meros y arreglos de n7meros! usando principios matemticos y estadsticos como la base de los algoritmos. Estos algoritmos abarcan problemas tales como tests estadsticos! programacin lineal! anlisis de regresin y aproximaciones num=ricas para la solucin de ecuaciones diferenciales e integrales. /a complejidad matemtica en los problemas cientficos es tambi=n una caracterstica significativa. /os programadores deben conocer bien los principios matemticos subyacentes en los algoritmos para elaborar correctamente los problemas o hacer refinamientos. $dems los algoritmos pueden ser inestables8 aquellos cuyos resultados pueden hacerse imprecisos para ciertos valores de datos deben manejarse adecuadamente. /os problemas cientficos requieren normalmente ms trabajo del procesador central de una computadora que de sus dispositivos de entradaOsalida. Es decir! la mayora del tiempo de clculo se consumir en clculos aritm=ticos en ve de operaciones de entradaOsalida. $5/'#$#'.0ES 1E 5%.#ES$,'E0&. 1E 1$&.S. 5ueden considerarse 6caracteri arse+ como aquellos problemas de programacin cuyo inter=s predominante es la creacin! mantenimiento! extraccin y compendio de datos en registros y archivos. 0ormalmente! el procesamiento de datos se encuentra en el centro de la gestin de empresa e incluye las funciones relativas a las nminas! contabilidad! facturacin! inventario! produccin y ventas. El volumen de los datos

que se encuentran en =stos archivos es generalmente grande8 tpicamente! varios miles de registros por archivos y varios cientos de caracteres de informacin por registro. 3n programa tpico de procesamiento de datos gasta la mayor parte del tiempo de clculo haciendo operaciones de entradaOsalida) 5aso a trav=s de los registros de un archivo para locali ar yPo actuali ar alguna de la informacin sobre una base regular 6diariamente! semanalmente o mensualmente+. 5or tanto el recurso (escaso( en un procesamiento tpico de datos es mas frecuente el espacio de discos que el procesador central. /as aplicaciones de procesamiento de datos deben normalmente considerar ms la (integridad de los datos( que en otras reas. 5rincipalmente esto implica no solo la cuestin de la precisin y fiabilidad si no tambi=n la de seguridad de los datos. /os programas de procesamiento de datos deben al menos proteger a los archivos de posibles contaminaciones con datos imprecisos. $dems! deben asegurar que datos delicados sean accedidos slo por las personas que necesitan tener acceso a ellos y no por otras. $5/'#$#'.0ES 1E 5%.#ES$,'E0&. 1E &E?&. Se caracteri an por que su principal actividad consiste en la manipulacin del texto del lenguaje natural en ve de n7meros. /a evolucin de la moderna tecnologa de procesamiento de palabra confa principalmente en los algoritmos de procesamiento de texto para ejecutar los distintos formateados y otras funciones que los mecangrafos utili an durante la preparacin de un manuscrito. 5or ejemplo! el texto de los libros hoy en da se preparan usando softIare de procesamiento de palabra de una computadora personal. Entre los lenguajes de gran capacidad para el procesamiento de textos podramos mencionar S0.;./ y #. $5/'#$#'.0ES 1E '0&E/'2E0#'$ $%&'D'#'$/ Su caracteri acin es debido a los programas que se han diseado son principalmente para emular un comportamiento inteligente. 'ncluyen algoritmos de juegos tales como el ajedre ! programas de comprensin del lenguaje natural! visin por computadora! robtica y sistemas inteligentes. Casta recientemente! la inteligencia artificial 6'$+ haba estado confinada al trabajo en laboratorios de investigacin! en los que varios

experimentos pilotos modelaban diferentes tipos de comportamiento inteligente. Sin embargo! ahora muchos de =stos experimentos se han puesto en prctica y sus efectos se muestran en reas tan diversas como las cadenas de produccin de automviles y la monitori acin de instrumentos complejos. /'S5 ha sido! durante mucho tiempo! el lenguaje de programacin en '$! mientras que 5%./.2 es un lenguaje ms nuevo diseado sobre el principio de (programacin lgica(. $5/'#$#'.0ES 1E 5%.2%$,$#'.0 1E S'S&E,$S Estas implican el desarrollo de programas que hacen de interfa entre la computadora 6hardIare+ y el programador y operador. Estos programas incluyen compiladores! ensambladores! int=rpretes! rutinas de entradaO salida! facilidades de gestin y planificadores para la utili acin y uso de los distintos recursos que componen la computadora. /as dos caractersticas que componen la programacin de sistemas de los otros tipos de programacin son) *+ /a necesidad de tratar con procesos impredecibles o (excepciones( 6tales como errores de EPS+. 9+ /a necesidad de coordinar actividades de varios programas o tareas ejecutndose asncronamente. 5or ejemplo! un sistema operativo tpico soporta la actividad simultanea de varios programas independientes 6 o usuarios en lneas+ los cuales! la mayora de las veces no necesitan interactuar unos con otros. En el caso infrecuente de que ellos interact7en 6o presenten conflictos en el uso de un mismo archivo simultneamente+! el sistema debe responder agradablemente y gestionar la interaccin 6o resolver el conflicto+. &radicionalmente la mayora de la programacin de sistemas se ha hecho con lenguajes ensambladores. Sin embargo! recientemente se ha roto esta tendencia. ,uchos problemas de programacin no caen en una y otra de estas cinco reas de aplicacin. 5or ejemplo! la necesidad de aplicar t=cnicas efectivas de (base de datos( se origin en el rea de procesamiento de datos! pero ahora =sta necesidad est compartida por muchas aplicaciones cientficas y de inteligencia artificial que almacenan grandes vol7menes de datos 6por ejemplo!(censo de datos( datos de conocimiento del mundo(+ de una forma efectiva.

1.4 CARACTERISTICAS DE UN BUEN LENGUAJE &odava hace falta perfeccionar el diseo de los lenguajes de alto nivel. En parte! las ra ones del =xito o fracaso de un lenguaje tienden a ser externas al lenguaje en s. 5or ejemplo parte de las ra ones del =xito del #.;./ en Estados 3nidos se debi a las reglamentaciones del gobierno para su uso en ciertas reas de la programacin dirigidas por agencias de gobierno. $simismo! parte de las ra ones del =xito de D.%&%$0 y 5/P' pueden atribuirse al fuerte soporte de varias compaas manufactureras que gastaron grandes cantidades de dinero en mano de obra para ofrecer implementaciones sofisticadas y documentacin extensa a estos lenguajes. 5$S#$/ y /'S5 se beneficiaron por su uso como objetos de estudios tericos con estudiantes del diseo de lenguajes! as como su uso prctico real. /a tarea de implementar un lenguaje en una computadora es casi siempre muy ardua. $ pesar de la importancia de algunos de =stos factores externos! es el programador el que dice la 7ltima palabra y algunas veces en forma indirecta! determina que lenguaje vive y cual muere. Existen ra ones que explican por que los programadores prefieren un lenguaje u otro. $lgunas ra ones son las siguientes) *+ #/$%'1$1! S',5/'#'1$1! @ 30'1$1 1E /.S #.0#E5&.S 1E /.S /E023$-ES. 3n lenguaje de programacin proporciona una estructura conceptual para pensar acerca de algoritmos y un medio de expresar estos algoritmos para la ejecucin en la mquina. El lenguaje debe ser una ayuda para el programador antes de que alcance el estado real de programacin en cdigo. 1ebe darle un conjunto de conceptos claro! simple y unificado para que pueda usarlos como primarios en el desarrollo de lenguajes . 5ara ello es deseable tener un n7mero mnimo de conceptos diferentes! con las reglas de su combinacin los ms simples y regulares posible. 9+ #/$%'1$1 1E /$ S'0&$?'S 1E/ 5%.2%$,$. /a sintaxis de un programa afecta mucho la facilidad con que puede escribirse un programa! probarse y despu=s entenderse y modificarse. 3na sintaxis que sea particularmente breve o enigmtica con frecuencia hace que un programa sea fcil de escribir 6por el programador con experiencia+! pero difcil de leer cuando el programa debe modificarse

posteriormente. ,uchos lenguajes contienen construcciones sintcticas que fomentan la dificultad de lectura! produciendo dos instrucciones casi id=nticas que significan realmente cosas distintas. 5or ejemplo la presencia de un slo carcter blanco en una proposicin S0.;./B puede alterar completamente su significado. 3n lenguaje debe de tener la propiedad de que las construcciones que tienen un significado diferente tengan tambi=n un aspecto diferente8 por ejemplo! las diferencias semnticas deben de reflejarse en la sintaxis del lenguaje. 5ara el programador no basta que una sintaxis no sea engaosa y propensa a los errores si no que adems debe ser una sintaxis! la cual usada adecuadamente permita que la estructura de un programa refleja las estructuras lgicas sealadas del algoritmo. En el enfoque a un buen diseo de programa conocido como 5%.2%$,$#'.0 ES&%3#&3%$1$! los programas se disean jerrquicamente de arriba a abajo 6 del programa principal al ms bajo nivel de subprogramas+!usando slo un conjunto restringido de estructuras de control en cada nivel secuencias de instrucciones simples! iteraciones y ciertos tipos de ramificacin condicional . 5or ejemplo! D.%&%$0 se basa en etiquetar las proposiciones e instrucciones 2.&. como estructuras de control y proporciona pocas alternativas. 3no de los argumentos principales que favorecen a 5$S#$/ sobre D.%&%$0 en la ensean a de programacin introductoria! a pesar de el uso mucho ms amplio de D.%&%$0! es que 5$S#$/ favorece mas al diseo elegante de programas. >+ 0$&3%$/'1$1 E0 S3 $5/'#$#'.0. El lenguaje debe proporcionar estructuras de datos adecuadas! operaciones! estructuras de control y una sintaxis natural para resolver el problema. 3na de las ra ones principales de la proliferacin de lenguajes es justamente esta necesidad de naturalidad. 3n lenguaje ajustado a cierta clase de aplicaciones puede simplificar mucho individuales en esta rea. #.;./ para aplicaciones en negocios incluyendo el manejo de archivos y S0.;./B! para procesamiento de cadenas! son dos lenguajes con una inclinacin obvia a clases particulares de aplicaciones. B+ S.5.%&E 1E /$ $;S&%$##'.0 . 3na parte sustancial de la tarea del programador es disear las abstracciones adecuadas a la solucin de problemas y despu=s implementar estas abstracciones usando las caractersticas ms

primitivas proporcionadas por el lenguaje de programacin real. El lenguaje debe de ayudar sustancialmente o impedir la expresin de estas abstracciones. #asi todos los lenguajes proporcionan mecanismos de subprogramas para definir las operaciones de abstraccin! pero la mayora son muy d=biles en su soporte de otros tipos de abstraccin. 5or ejemplo 5$S#$/! puede ser un lenguaje apropiado para construir un programa que haga el horario de clases de una universidad! pero las estructuras de datos abstractos de "estudiante(! (clase(! (instructor(! (saln de lectura( y las operaciones abstractas de (asignar un estudiante a una clase(! (planear una clase en un saln de lectura(! etc8 que son naturales de la aplicacin! no son proporcionadas directamente por 5$S#$/. F+ D$#'/'1$1 1E :E%'D'#$#'.0 1E/ 5%.2%$,$. /a confiabilidad de programas escritos en un lenguaje es siempre una preocupacin central. 5uede probarse que un programa es correcto por un m=todo formal de verificacin! probarse informalmente su correccin con una prueba de escritorio 6leer y verificar visualmente el texto del programa+! puede probarse ejecutndolo con entradas de prueba y verificando los resultados obtenidos contra los especificados etc. 5ara programas muy grandes se utili a alguna combinacin de estos m=todos. 3n lenguaje que dificulta la verificacin puede ser ms problemtico de usar que uno que soporta y simplifica su verificacin! a7n cuando el primero ofre ca muchas caractersticas que superficialmente hagan aparecer ms fcil la programacin. /a simplicidad de la semntica y la estructura sintctica son los dos aspectos principales! que tienden a simplificar la verificacin de un programa . M+,E1'. $,;'E0&E 1E /$ 5%.2%$,$#'.0. /a estructura t=cnica de un lenguaje de programacin es slo un aspecto que afecta su utilidad. /a presencia de un medio ambiente de programacin adecuado para hacer que un lenguaje t=cnicamente d=bil sea ms fcil de usar que un programa ms pero con poco soporte externo. 5uede incluirse una lista amplia de factores como parte del medio ambiente de la programacin. /a disponibilidad de una implementacin de lenguaje confiable! eficiente y bien documentada debe encabe ar la lista. /os editores especiales y los paquetes de prueba hechos a la medida del lenguaje pueden acelerar la creacin y prueba de los programas. /a facilidad de mantenimiento y modificacin de versiones m7ltiples de un programa puede simplificar el trabajo con programas ms grandes.

Q+5.%&$;'/'1$1 1E /.S 5%.2%$,$S. 3n criterio importante de muchos proyectos de programacin es la facilidad de transportar los programas resultantes de una computadora en la cual fueron creados a otro sistema de computacin. 3n lenguaje que est disponible ampliamente y cuya definicin depende de las caractersticas de una mquina particular forma una base 7til para la produccin de programas transportables D.%&%$0! #.;./ y # se preocupan por tal criterio. R+#.S&. 1E 3S.. El criterio engaoso del costo se ha dejado al 7ltimo. El costo es ciertamente un elemento principal en la evaluacin de cualquier lenguaje de programacin8 pero se pueden aplicar varias medidas del costo) a+#.S&. 1E /$ E-E#3#'.0 1E 5%.2%$,$. El costo de la ejecucin de un programa! aunque siempre tenga alguna importancia en el diseo del lenguaje! es de importancia primaria para la produccin de programas extensos que sern ejecutados muchas veces. b+ #.S&. 1E /$ &%$13##'.0 1E/ 5%.2%$,$. 1ebido a que existen programas que se compilan muchas veces mientras se depuran! pero se ejecutan slo unas cuantas veces! es necesario un compilador rpido y eficiente ms que un compilador que produ ca un cdigo de ejecucin .5&','A$%. c+#.S&. 1E /$ #%E$#'.0 1E 30 5%.2%$,$! 5%3E;$ @ 3S.. 3n tercer aspecto del costo de un lenguaje se ejemplifica por el lenguaje $5/. 5ara cierta clase de problemas se disea una solucin! se codifica! se prueba! se modifica y se usa con un mnimo desperdicio del tiempo del programador y de su energa. /a preocupacin por este tipo de costos en el uso de un lenguaje ha llegado a ser tan importante como la preocupacin por la ejecucin y compilacin eficientes. d+#.S&. 1E ,$0&E0','E0&. 1E 30 5%.2%$,$. El mantenimiento incluye la reparacin de errores descubiertos

despu=s de que el programa fue puesto en uso! cambios requeridos conforme al hardIare o el sistema operativo utili ado se actuali an y extensiones y realces al programa que necesitan para cubrir nuevas necesidades. ,uchos estudios han demostrado que el costo ms grande en cualquier programa que se usa por periodo de aos no es el costo de diseo inicial! ni el de codificacin! ni el de prueba de un programa! sino el costo de mantenimiento de un programa mientras est en uso.

Вам также может понравиться