INTRODUCCIÓN A LOS LENGUAJES DE PROGRAMACIÓN 1.1 POR QUE ESTUDIAR LENGUAJES DE PROGRAMACION Existen cientos de lenguajes de programación que se han diseñado e implementad implementado. o. Sin embargo embargo la mayoría de los programadores programadores nunca se aventuran a usar mas de unos cuantos lenguajes y muchos limitan su programación a uno o dos. En realidad los programadores en la práctica trabajan frecuentemente en instalaciones de computadoras donde se requ requie iere re el uso uso de leng lengua uaje jess part particu icula lare res. s. Exis Existe ten n va vari rias as rao raone ness excelentes para tal estudio! a con condición de ir más allá de la consideraci consideración ón superficial superficial de las "#$%$#&E% "#$%$#&E%'S&'# 'S&'#$S( $S( de los lenguajes! lenguajes! en los conceptos de diseño indicados y su efecto en la implementación de lenguajes. Existen además cinco raones principales) *+ ,E-%$ ,E-%$ E/ #0#','E0& #0#','E0& 1E/ /E023$-E /E023$-E 43E ES&$ 3S$01. 3S$01. $l estu estudi diar ar un /eng /engua uaje je de 5rog 5rogra rama maci ció ón 6/.5 6/.5.+ .+ se cono conoce cen n las las características! 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 lógicos que hacen perder mucho tiempo. 3n ejemplo típico es la recu recurs rsió ión! n! una una cara caract cter erís ísti tica ca muy muy 7til 7til de prog progra rama maci ción ón que que está está disponible en muchos lenguajes. #uando se usa en forma adecuada permite la implementación directa de algoritmos elegantes y eficientes8 pero en otros casos puede causar un incremento astronómico en el tiempo de ejecución de un algoritmo. $demás! el costo de la recursión varía seg7n la implementación del lenguaje. 9+ E0%' E0%'43 43E# E#E E E/ :#$ :#$;3 ;3/$ /$%' %' 1E # #0S 0S&% &%3# 3##' #'0 0ES ES 3&'/ 3&'/ES ES 1E5%2%$,$#'<0. Estudiar las construcciones proporcionadas por una amplia variedad de lenguajes y la manera en que estas se implementan! incrementa el (vocabu (vocabular lario( io( del progra programad mador. or. El entend entendimie imiento nto de las t=cnic t=cnicas as de imple impleme ment ntac ació ión n es parti particu cular larme ment ntee impor importa tant nte. e. 5or 5or ejem ejempl plo o en la estructura estructura de control control de subprograma subprogramas! s! conocida conocida como corrutina corrutina es 7til en muchos programas! pero pocos lenguajes brindan directamente una característica 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 programación adecuadas a la solución de un problema! se tiende a pensar en las estructuras que son expresables inmediatamente en los lenguajes con los cuales se está familiariado. >+ ,E-% SE/E##'0 1E/ /E023$-E $1E#3$1. #on #on el cono conoci cimi mien ento to de una una va vari ried edad ad de leng lengua uaje jess se perm permit itee la selección selección del lenguaje lenguaje correct correcto o para un proyecto proyecto particular particular88 por tanto tanto reduce enormemente el esfuero de codificación 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 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 utiliará una docena de líneas para codificar. B+ C$#E ,$S D$#'/ E/ $5%E01'A$-E 1E 30 03E: /E023$-E. $l igual que un lingista! donde a trav=s de un conocimiento profundo de las estructuras en que se basan los lenguajes naturales! puede aprender un lenguaje extranjero más rápido y fácil que el esforado principiante que entiende poco de las estructuras de su lenguaje natal. En form formaa simi simila lar! r! un cono conoci cimi mien ento to conc concie ient ntee de una una va vari ried edad ad de lenguajes de programación y de t=cnicas de programación permiten al pro program gramad ador or apre prende nder un nue nuevo leng lengua uaje je más más fáci fácill cuan cuando do es necesario. F+ D$#'/'&$ E/ 1'SEG 1E 30 03E: /E023$-E. Si el prog progra rama mado dorr cono conoce ce va vari rios os /.5. /.5. se le faci facililita tará rá much mucho o en el momento en que piense como diseñador de un nuevo lenguaje. /a interfa del usuario consiste en unos formatos de datos y comandos que son propor proporcio cionad nados os por =l para para comuni comunicar carse se con el progra programa. ma. Este Este aspe aspect cto o del del dise diseño ño del del prog progra rama ma con con frec frecue uenc ncia ia se simpl simplif ific icaa si el programador está familiariado con varias construcciones y m=todos de implementación de lenguajes comunes. $demás de las cinco raones antes mencionadas existen tres intereses diferentes en el estudio de lenguajes de programación.
a+E/ 1E/ (5%2%$,$1%(. (5%2%$,$1%(. Esto hace referencia a las diferencias que existen entre distintos nive nivele less y apli aplica caci cion ones es de la prog progra rama maci ción ón.. #lar #laram amen ente te el prog progra rama mado dorr que que ha real reali iado ado un curs curso o de doce doce sema semana nass 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 del prog progra ramad mador or que dise diseña ña un ex expe peri rime ment nto o de inte intelilige genc ncia ia artificial en 5%/2! o del programador que combina sus rutinas de # par resolver un problema de ingeniería 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 diseñados por una sola persona por un concepto 7nico! mientras que otros 6como D%&%$0 y #;/+ son el producto del desarrollo de varios años realiados por comit=s de diseños de lenguajes. c+E/ (',5/E,E0&$1% 1E/ /E023$-E(. Es la persona o grupo que desarrolla un compilador o interprete par para un leng lengua uaje je sobr sobree una máqu máquin inaa part partic icul ular ar o tipo tipo de máqu máquin inas as.. ,á ,áss frec frecue uent ntem emen ente te!! el prim primer er comp compila ilado dorr para para el lenguaje @ sobre la máquina ? es desarrollado por la corporación que manufactura la máquina ?. Exi Existen sten tamb tambi= i=n n much muchos os aspe aspect cto os comp compar arttido idos entre ntre los los programadores! diseñadores de un lenguaje e implementadores del del mism mismo. o. #a #ada da uno uno debe debe de comp compre rend nder er las las nece necesi sida dade dess y ligad ligadur uras as que que gobi gobier erna nan n las las acti activid vidad ades es de los los otro otross dos. dos. 5or 5or definición! un buen diseñador de lenguajes debe ser un buen programador. En muchos casos el diseñador de un lenguaje es tambi=n su primer implementador. 1.2 HISTORIA DE LOS LENGUAJES DE PROGRAMACION El prog progra rama mado dor! r! dise diseña ñado dorr e impl implem emen enta tado dorr de un leng lengua uaje je de prog progra rama maci ción ón debe deben n de comp compre rend nder er la ev evol oluc ució ión n hist histór óric icaa de los los leng lengua uaje jess para para pode poderr apre apreci ciar ar por por que que pres presen enta tan n cara caract cter erís ísti tica cass diferentes. 5or ejemplo! los lenguajes jóvenes prohiben el uso de la sentencia 2& como mecanismo de control inferior! y esto es correcto en el contexto de las filosofías actuales de ingeniería de softIare y programación estructurada.
/a más importante es que la historia nos permite ver la evolución de familias de lenguajes de programación! ver la influencia que ejerce las arquitecturas y aplicaciones de las computadoras sobre el diseño de lenguajes y evitar futuros defectos de diseño aprendiendo las lecciones del pasado. $lgunas de las principales influencias en la evolución de diseños de lenguajes se listan a continuación) *+ C$%1J$%E 1E /$S #,53&$1%$S @ S'S&E,$ 5E%$&':. /as computadoras han evolucionado de las máquinas pequeñas! lentas con costosos tubos de vacío de los años FKLs a las supercomputadoras y microcomputadoras de hoy. $l mismo tiempo! estratos de microprogramación y el hardIare de la computadora. Estos factores han influido en la estructura y el costo de usar las características de los lenguajes de alto nivel. 9+ $5/'#$#'0ES. El uso de la comput putadora se ha difundid dido rápidamente de la concentración original de aplicaciones críticas! científicas! en negocios e industriale industrialess de los años FK donde el costo podría estar justificado! justificado! a los juegos en computadora! computadoras personales y aplicaciones en casi todas las áreas de la actividad humana de hoy. /os requerimientos de =sta =stass nuev nuevas as área áreass de apli aplica cació ción n afec afecta tan n a los los diseñ diseños os de nuev nuevos os lenguajes y las revisiones y extensiones de los anteriores. >+ ,E&1S 1E 5%2%$,$#'0. /os /os dise diseño ñoss de leng lengua uaje jess han han ev evol oluc ucio iona nado do para para refl reflej ejar ar nues nuestr tro o cambiante conocimiento de los m=todos nuevos para escribir programas largos largos y complejos y para responder responder ambientes tambi=n cambiantes cambiantes en los cuales se efect7a la programación. B+ ,E&1S 1E ',5/E,E0&$#'0. El desarrollo desarrollo de m=todos para una mejor implementació implementación n ha afectado afectado a la sele selecci cción ón de las las carac caracte terí ríst stic icas as que que se debe deben n inclu incluir ir en nuev nuevos os diseños. F+ ES&31'S &E%'#S. /a inve invest stig igac ació ión n en los los fund fundam amen ento toss conc concep eptu tuale aless para para dise diseño ño de lenguajes e implementación! usando m=todos de matemática formal! ha profundiado nuestro entendimiento de la fuera y debilidad de las características de los lenguajes y! por tanto! ha influido en la inclusión de estas características en los nuevos diseños de lenguajes.
M+ ES&$01$%'A$#'0. ES&$01$%'A$#'0. /a necesidad de lenguajes (estándar( que se puedan implementar con facilidad en varios sistemas de computación y que permita que los programas sean transportados de una computadora a otra ejerce una fuer fuerte te infl influe uenc ncia ia conse conserv rvat ativa iva sobr sobree la ev evol oluc ució ión n de los los dise diseño ñoss de lenguaje. 1.3 APLICACIONES DE LOS LENGUAJES DE PROGRAMACION /os diferentes lenguajes de programación tienden a desarrollarse para diferentes diferentes áreas de aplicación) aplicación) 5rincipalmen 5rincipalmente te (#ientíficaN (#ientíficaN!! (5rocesamie (5rocesamiento nto de datos(! datos(! ('nteligen ('nteligencia cia artificial(! artificial(! (5rocesamie (5rocesamiento nto de texto( y (5rogramación de sistemas(. $5/'#$#'0ES #'E0&'D'#$S. 5ueden 5ueden caract caracteri eriar arse se como como las que manipu manipulan lan predom predomina inante ntemen mente te n7me n7mero ross y arre arregl glos os de n7me n7mero ros! s! usan usando do prin princip cipio ioss mate matemá máti tico coss y estadísticos como la base de los algoritmos. Estos algoritmos abarcan problemas tales como tests estadísticos! programación lineal! análisis de regresión y aproximaciones num=ricas para la solución de ecuaciones diferenciales e integrales. /a complejidad matemática en los problemas científicos es tambi=n una característica significativa. /os programadores deben conocer bien los princi principio pioss matemá matemátic ticos os subyace subyacente ntess en los algori algoritmo tmoss para para elabor elaborar ar correctamente los problemas o hacer refinamientos. $demás los algoritmos pueden ser inestables8 aquellos cuyos resultados pued pueden en hacers hacersee impr imprec ecis isos os para ciert ciertos os valore valoress de datos datos debe deben n manejarse adecuadamente. /os /os prob proble lema mass cien cientí tífi fico coss requ requie iere ren n norm normal alme ment ntee más más trab trabaj ajo o del del proc proces esad ador or cent centra rall de una una compu computa tado dora ra que de sus sus dispo disposi siti tivo voss de entradaOsalida. Es decir! la mayoría del tiempo de cálculo se consumirá en cálculos aritm=ticos en ve de operaciones de entradaOsalida. $5/'#$#'0ES 1E 5%#ES$,'E0& 1E 1$&S. 5ueden 5ued en cons consid ider erar arse se 6car 6carac acte teri ria ars rse+ e+ como como aque aquellllos os prob proble lema mass de programación cuyo inter=s predominante es la creación! mantenimiento! extracción y compendio de datos en registros y archivos. 0ormalmente! el procesamie procesamiento nto de datos datos se encuentra encuentra en el centro centro de la gestión gestión de empresa e incluye las funciones relativas a las nóminas! contabilidad! facturación! inventario! producción y ventas. El volumen de los datos
que que se encue ncuent ntra ran n en =sto =stoss arch archiv ivo os es gene genera ralm lmen entte gran grande de88 típicamente! varios miles de registros por archivos y varios cientos de caracteres de información por registro. 3n programa típico de procesamiento de datos gasta la mayor parte del tiempo tiempo de cálculo cálculo hacien haciendo do operac operacion iones es de entradaOs entradaOsali alida) da) 5aso a trav=s de los registros de un archivo para localiar yPo actualiar alguna de la información sobre una base regular 6diariamente! semanalmente o mensua mensualme lmente nte+. +. 5or tanto tanto el recurs recurso o (escaso (escaso(( en un proces procesamie amiento nto típico de datos es mas frecuente el espacio de discos que el procesador central. /as /as apli aplica caci cion ones es de proc proces esam amie ient nto o de dato datoss debe deben n norm normal alme ment ntee cons consid ider erar ar más más la (int (integ egri rida dad d de los los dato datos( s( que que en otra otrass área áreas. s. 5rin 5rinci cipa palm lmen ente te esto esto impl implic icaa no solo solo la cues cuesti tión ón de la prec precis isió ión n 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 posi posibl bles es cont contam amin inac acio ione ness con con dato datoss impr imprec ecis isos os.. $dem $demás ás!! debe deben n asegurar que datos delicados sean accedidos sólo por las personas que necesitan tener acceso a ellos y no por otras. $5/'#$#'0ES 1E 5%#ES$,'E0& 1E &E?& Se caract acteria ian por que su princ incipal pal actividad dad con consiste en la manipulación del texto del lenguaje natural en ve de n7meros. /a evolución de la moderna tecnología de procesamiento de palabra confía prin princi cipa palm lmen ente te en los los algo algori ritm tmos os de proc proces esam amie ient nto o de text texto o para para ejecut cutar los los dist istintos formateados dos y otras funcion iones que los mecanógrafos utilian durante la preparación de un manuscrito. 5or ejemplo! el texto de los libros hoy en día se preparan usando softIare de procesamiento de palabra de una computadora personal. Entre los lenguajes de gran capacidad para el procesamiento de textos podríamos mencionar S0;/ y #. $5/'#$#'0ES 1E '0&E/'2E0#'$ $%&'D'#'$/ Su caracteriación es debido a los programas que se han diseñado son princi principal palmen mente te para para emular emular un compor comportam tamien iento to inteli inteligen gente. te. 'ncluy 'ncluyen en algoritmos algoritmos de juegos tales como el ajedre! programas de comprensión comprensión del del leng lengua uaje je natu natura ral! l! visió visión n por por comp comput utad ador ora! a! robó robóti tica ca y sist sistem emas as inteligentes. Casta recientemente! la inteligencia artificial 6'$+ había estado confinada al trab trabaj ajo o en labo laborrator atorio ioss de inve invest stig igac ació ión! n! en los los que que va vari rio os
experi experimen mentos tos piloto pilotoss modela modelaban ban difer diferent entes es tipos tipos de compor comportam tamien iento to inteligente. Sin embargo! ahora muchos de =stos experimentos se han puesto en práctica y sus efectos se muestran en áreas tan diversas como las cadenas de producción de automóviles y la monitoriación de inst instru rume ment ntos os compl complej ejos os.. /'S5 /'S5 ha sido sido!! dura durant ntee much mucho o tiem tiempo po!! el lenguaje de programación en '$! mientras que 5%/2 es un lenguaje más nuevo diseñado sobre el principio de (programación lógica(. $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! compiladores! ensambladores! int=rpretes! rutinas de entradaO salida! facilidades de gestión y planificadores para la utiliación y uso de los distintos recursos que componen la computadora. /as dos características que componen la programación de sistemas de los otros tipos de programación 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 ejecutándose asíncronamente. 5or ejemplo! un sistema operativo típico soporta la actividad simultanea de varios programas independientes 6 o usuarios en líneas+ los cuales! la mayoría 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 mism mismo o arch archiv ivo o simu simult ltán ánea eame ment nte+ e+!! el sist sistem emaa debe debe resp respon onde derr agradablemente y gestionar la interacción 6o resolver el conflicto+. &radi &radicio ciona nalm lmen ente te la mayo mayorí ríaa de la prog progra ramac mació ión n de sist sistem emas as se ha hecho con lenguajes ensambladores. Sin embargo! recientemente se ha roto esta tendencia. ,uchos problemas de programación no caen en una y otra de estas cinco áreas de aplicación. 5or ejemplo! la necesidad de aplicar t=cnicas efectivas de (base de datos( se originó en el área de procesamiento de dat datos! pero pero ahor ahoraa =sta sta nece ecesida sidad d está stá comp compar arti tida da por mucha uchass aplicaciones científicas y de inteligencia artificial que almacenan grandes vol7 vol7me mene ness de dat datos 6por 6por eje ejemplo mplo!( !(ce cens nso o de dato datos( s( ó dat datos de conocimiento del mundo(+ de una forma efectiva.
1.4 CARACTERISTICAS DE UN BUEN LENGUAJE &odavía hace falta perfeccionar el diseño de los lenguajes de alto nivel. En parte! las raones del =xito o fracaso de un lenguaje tienden a ser externas al lenguaje en sí. 5or ejemplo parte de las raones del =xito del #;/ #;/ en Estados 3nidos se debió a las reglamentacion reglamentaciones es del gobierno para su uso en ciertas áreas de la programación dirigidas por agencias de gobierno. $simismo! parte de las raones del =xito de D%&%$0 y 5/P' 5/P' pued puedeen atr atribu ibuirse irse al fue fuerte sopo soport rtee de va varrias ias comp compañ añía íass manufactureras que gastaron grandes cantidades de dinero en mano de obra obra para para ofre ofrece cerr impl implem emen enta taci cion ones es sofi sofist stic icad adas as y docum documen enta taci ción ón extensa a estos lenguajes. 5$S#$/ y /'S5 se beneficiaron por su uso como como obje objeto toss de estu estudi dios os teór teóric icos os con con estu estudi dian ante tess del del dise diseño ño de lenguajes! así como su uso práctico real. /a tare tareaa de imple impleme ment ntar ar un leng lengua uaje je en una una comp comput utad ador oraa es casi 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 muer muere. e. Exis Existe ten n rao raone ness que que ex expl plic ican an por por que que los los prog progra rama mado dore ress prefieren un lenguaje u otro. $lgunas raones son las siguientes) *+ #/$%'1$1! S',5/'#'1$1! @ 30'1$1 1E /S #0#E5&S 1E /S /E023$-ES. 3n lenguaje de programación proporciona una estructura conceptual para para pens pensar ar acer acerca ca de algo algori ritm tmos os y un medi medio o de ex expr pres esar ar esto estoss algoritmos para la ejecución en la máquina. El lenguaje debe ser una ayuda para el programador antes de que alcance el estado real de programación en código. 1ebe darle un conjunto de conceptos claro! simp simple le y unif unific icad ado o para para que que pued puedaa usar usarlo loss como como prim primar ario ioss en el desarrollo de lenguajes . 5ara ello es deseable tener un n7mero mínimo de conceptos diferentes! con las reglas de su combinación los más m ás 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 enigmática con frecuencia hace que un programa sea fácil de escribir 6por el programador con experiencia+! pero difícil de leer cuando el programa debe modificarse
posteriorm posteriormente ente.. ,uchos ,uchos lenguajes lenguajes contienen contienen construccio construcciones nes sintácticas sintácticas que fomentan la dificultad de lectura! produciendo dos instrucciones casi id=n id=nti ticas cas que que signif signific ican an real realme ment ntee cosa cosass dist distin inta tas. s. 5or 5or ejem ejempl plo o la pres presen encia cia de un sólo sólo cará caráct cter er blan blanco co en una una prop propos osici ición ón S0; S0;/ /B B puede alterar completamen completamente te su significado. significado. 3n lenguaje lenguaje debe de tener la prop propie ieda dad d de que que las las cons constr truc ucci cion ones es que que tien tienen en un sign signif ific icad ado o dife difere rent ntee teng tengan an tamb tambi= i=n n un aspe aspect cto o dife difere rent nte8 e8 por por ejem ejempl plo! o! las las diferencias semánticas deben de reflejarse en la sintaxis del lenguaje. 5ara el prog 5ara progra rama mado dorr no basta basta que una sintaxi sintaxiss no sea engañ engaños osaa y propensa a los errores si no que además debe ser una sintaxis! la cual usada adecuadamente permita que la estructura de un programa refleja las estructuras lógicas señaladas del algoritmo. En el enfoque que a un buen diseño de programa conocid cido como 5%2%$,$#'0 ES&%3#&3%$1$! los programas se diseñan jerárquicamente de arriba a abajo 6 del programa principal al más bajo nive nivell de subp subpro rogr gram amas as+! +!us usan ando do sólo sólo un conj conjun unto to rest restri ring ngid ido o de estructuras de control en cada nivel secuencias de instrucciones simples! iteraciones y ciertos tipos de ramificación condicional . 5or 5or ejem ejempl plo! o! D%&% D%&%$0 $0 se basa basa en etiq etique ueta tarr las las prop propos osic icio ione ness e instruccion instrucciones es 2& como como estructuras estructuras de control control y proporcio proporciona na pocas alter alterna nati tiva vas. s. 3no 3no de los argu argume ment ntos os prin princi cipal pales es que que favo favore rece cen n a 5$S#$/ sobre D%&%$0 en la enseñana de programación introductoria! a pesar de el uso mucho más amplio de D%&%$0! es que 5$S#$/ favorece mas al diseño elegante de programas. >+ 0$&3%$/'1$1 E0 S3 $5/'#$#'0. El leng lengua uaje je debe propo proporc rcio iona narr estr estruc uctu tura rass de datos datos adec adecua uada das! s! operacione operaciones! s! estructura estructurass de control control y una sintaxis natural para resolver resolver el prob proble lema ma.. 3na 3na de las rao raone ness prin princip cipal ales es de la prol prolife ifera raci ción ón de lenguajes es justamente esta necesidad de naturalidad. 3n lenguaje ajus ajusta tado do a cier cierta ta clas clasee de apli aplica caci cion ones es pued puedee simp simplilifi fica carr much mucho o indi indivi vidu dual ales es en esta esta área área.. # #; ;// para para apli aplica caci cion ones es en nego negoci cios os incluyendo el manejo de archivos y S0;/B! para procesamiento de cade cadena nas! s! son son dos dos leng lengua uaje jess con con una una incl inclin inac ació ión n obvi obviaa a clas clasees particulares de aplicaciones. B+ S5%&E 1E /$ $;S&%$##'0 . 3na 3na part partee sust sustan anci cial al de la tare tareaa del del prog progra rama mado dorr es dise diseña ñarr las las abst abstra racc ccio ione ness adec adecua uada dass a la solu soluci ción ón de prob proble lema mass y desp despu= u=ss impl implem emen enta tarr esta estass abst abstra racc ccio ione ness usan usando do las las cara caract cter erís ísti tica cass más más
primit primitiva ivass propor proporcio cionada nadass por el lenguaj lenguajee de progra programac mación ión real. real. El lenguaje debe de ayudar sustancialmente o impedir la expresión de estas abstracciones. #asi todos los lenguajes proporcionan mecanismos de subprogramas para definir las operaciones de abstracción! pero la mayoría son muy d=biles en su soporte de otros tipos de abstracción. 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 estructuras de datos datos abstractos abstractos de "estudiante "estudiante(! (! (clase(! (clase(! (instructor(! (instructor(! (salón de lectura( y las operaciones abstractas de (asignar un estudiante a una clase(! (planear una clase en un salón de lectura(! etc8 que son natura naturales les de la aplicaci aplicación! ón! no son propor proporcio cionada nadass direct directame amente nte 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 preocupació preocupación n central. central. 5uede probarse probarse que un programa es correcto correcto por un m=todo formal de verificación! probarse informalmente su corrección con una prueba de escritorio 6leer y verificar visualmente el texto del progra programa+! ma+! puede puede probar probarse se ejecut ejecutánd ándolo olo con entrad entradas as de prueba prueba y verificando los resultados obtenidos contra los especificados etc. 5ara prog progra rama mass muy muy gran grande dess se util utili iaa algu alguna na comb combin inac ació ión n de esto estoss m=to m=todo dos. s. 3n leng lengua uaje je que que dific dificul ulta ta la ve veri rifi fica cació ción n pued puedee ser ser más más problemático de usar que uno que soporta y simplifica su verificación! a7n cuando el primero ofreca muchas características que supe superf rfic icia ialm lmen ente te haga hagan n apar aparec ecer er más más fáci fácill la prog progra rama maci ción ón.. /a simp simplilici cidad dad de la semá semánt ntic icaa y la estr estruct uctur uraa sintá sintáct ctic icaa son son los los dos dos aspect aspectos os princi principale pales! s! que tiende tienden n a simplif simplifica icarr la verifi verificac cación ión de un programa . M+,E1' $,;'E0&E 1E /$ 5%2%$,$#'0. /a estr estruc uctu tura ra t=cn t=cnica ica de un leng lengua uaje je de prog progra rama maci ción ón es sólo sólo un aspecto que afecta su utilidad. /a presencia de un medio ambiente de programació programación n adecuado adecuado para hacer que un lenguaje lenguaje t=cnicament t=cnicamentee d=bil sea más fácil de usar que un programa más pero con poco soporte externo. 5uede incluirse una lista amplia de factores como parte del medi medio o ambie mbient ntee de la pro program gramac ació ión n. /a dispo isponi nibi bili lida dad d de una una implementación de lenguaje confiable! eficiente y bien documentada debe debe encab encabe ear ar la list lista. a. /os /os edit editor ores es espe especia ciale less y los los paqu paquet etes es de prueba hechos a la medida del lenguaje pueden acelerar la creación y prueba de los programas. /a facilidad de mantenimiento y modificación de versiones m7ltiples de un programa puede simplificar el trabajo con programas más grandes.
Q+5%&$;'/'1$1 1E /S 5%2%$,$S. 3n criter criterio io import important antee de muchos muchos proyec proyectos tos de progra programac mación ión es la facilidad de transportar los programas resultantes de una computadora en la cual fueron creados a otro sistema de computación. 3n lenguaje que que está está disp dispon onibl iblee ampli ampliam amen ente te y cuya cuya defi defini nici ción ón depe depend ndee de las las características de una máquina particular forma una base 7til para la prod produc ucció ción n de prog progra rama mass tran transp spor orta table bless D%& D%&%$ %$0! 0! # #; ;// y # se preocupan por tal criterio. R+#S& 1E 3S. El crit criter erio io enga engaño ñoso so del del cost costo o se ha deja dejado do al 7lti 7ltimo mo.. El cost costo o es cier cierta tame ment ntee un elem elemen ento to prin princi cipa pall en la ev eval alua uaci ción ón de cual cualqu quie ierr lenguaje de programación8 pero se pueden aplicar varias medidas del costo) a+#S& 1E /$ E-E#3#'0 1E 5%2%$,$. El costo de la ejecución de un programa! aunque siempre tenga alguna importancia en el diseño del lenguaje! es de importancia primaria para la producción de programas extensos que serán 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 sólo unas cuantas veces! es nece necesa sari rio o un comp compililad ador or rápi rápido do y efic eficie ient ntee más más que que un compilador que produca un código de ejecución 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 leng lengua uaje je $5 $5/. /. 5a 5ara ra cier cierta ta clas clasee de prob proble lema mass se dise diseña ña una una solución! se codifica! se prueba! se modifica y se usa con un mínimo desperdicio del tiempo del programador y de su energía. /a preocupación por este tipo de costos en el uso de un lenguaje ha llegado a ser tan importante como la preocupación por la ejecución y compilación eficientes. d+#S& 1E ,$0&E0','E0& 1E 30 5%2%$,$. El mantenimiento incluye la reparación de errores descubiertos
desp despu= u=ss de que que el prog progrrama ama fue fue pue puesto sto en uso! so! camb cambio ioss requeridos conforme al hardIare o el sistema operativo utiliado se actualian y extensiones y realces al programa que necesitan para cubrir nuevas necesidades. ,uchos estudios han demostrado que el costo más grande en cualquier programa que se usa por periodo de años no es el cos costo de diseñ seño ini inicial ial! ni el de codificación! ni el de prueba de un programa! sino el costo de mantenimiento de un programa mientras está en uso.