Captura de la microcomputadora Commodore PET-32 mostrando un programa en el
lenguaje de programacin BASIC, bajo el emulador ICE en una distribucin !"#$%inu&' #n ejemplo de cdigo (uente escrito en el lenguaje de programacin )a*a, +ue imprimir, el mensaje -.ello /orld0- a la salida est,ndar cuando es compilado 1 ejecutado #n lenguaje de programacin es un lenguaje (ormal dise2ado para e&presar procesos +ue pueden ser lle*ados a cabo por m,+uinas como las computadoras' Pueden usarse para crear programas +ue controlen el comportamiento (3sico 1 lgico de una m,+uina, para e&presar algoritmos con precisin, o como modo de comunicacin 4umana' 5 Est, (ormado por un conjunto de s3mbolos 1 reglas sint,cticas 1 sem,nticas +ue de(inen su estructura 1 el signi(icado de sus elementos 1 e&presiones' Al proceso por el cual se escribe, se prueba, se depura, se compila 6de ser necesario7 1 se mantiene el cdigo (uente de un programa in(orm,tico se le llama programacin' Tambi8n la palabra programacin se de(ine como el proceso de creacin de un programa de computadora, mediante la aplicacin de procedimientos lgicos, a tra*8s de los siguientes pasos9 El desarrollo lgico del programa para resol*er un problema en particular' Escritura de la lgica del programa empleando un lenguaje de programacin espec3(ico 6codi(icacin del programa7' Ensamblaje o compilacin del programa 4asta con*ertirlo en lenguaje de m,+uina' Prueba 1 depuracin del programa' :esarrollo de la documentacin' E&iste un error com;n +ue trata por sinnimos los t8rminos <lenguaje de programacin< 1 <lenguaje in(orm,tico<' %os lenguajes in(orm,ticos engloban a los lenguajes de programacin 1 a otros m,s, como por ejemplo .T=% 6lenguaje para el marcado de p,ginas >eb +ue no es propiamente un lenguaje de programacin, sino un conjunto de instrucciones +ue permiten estructurar el contenido de los documentos7' Permite especi(icar de manera precisa sobre +u8 datos debe operar una computadora, cmo deben ser almacenados o transmitidos 1 +u8 acciones debe tomar bajo una *ariada gama de circunstancias' Todo esto, a tra*8s de un lenguaje +ue intenta estar relativamente pr&imo al lenguaje 4umano o natural' #na caracter3stica rele*ante de los lenguajes de programacin es precisamente +ue m,s de un programador pueda usar un conjunto com;n de instrucciones +ue sean comprendidas entre ellos para reali?ar la construccin de un programa de (orma colaborati*a' ndice 5 .istoria 2 Elementos o 2'5 ariables 1 *ectores o 2'2 Condicionantes o 2'3 Bucles o 2'@ Aunciones o 2'B Sinta&is o 2'C Sem,ntica est,tica o 2'D Sistema de tipos 2'D'5 %enguajes tipados *ersus lenguajes no tipados 2'D'2 Tipos est,ticos *ersus tipos din,micos 2'D'3 Tipos d8biles 1 tipos (uertes 3 Implementacin @ T8cnica o @'5 Paradigmas B 8ase tambi8n C Ee(erencias D Enlaces e&ternos Historia Cdigo Aortran en una tarjeta per(orada, mostrando el uso especiali?ado de las columnas 5-B, C 1 D3-FG' Para +ue la computadora entienda nuestras instrucciones debe usarse un lenguaje espec3(ico conocido como cdigo m,+uina, el cual la m,+uina comprende (,cilmente, pero +ue lo 4ace e&cesi*amente complicado para las personas' :e 4ec4o slo consiste en cadenas e&tensas de n;meros G 1 5' Para (acilitar el trabajo, los primeros operadores de computadoras decidieron 4acer un traductor para reempla?ar los G 1 5 por palabras o abstraccin de palabras 1 letras pro*enientes del ingl8sH 8ste se conoce como lenguaje ensamblador' Por ejemplo, para sumar se usa la letra A de la palabra inglesa add 6sumar7' El lenguaje ensamblador sigue la misma estructura del lenguaje m,+uina, pero las letras 1 palabras son m,s (,ciles de recordar 1 entender +ue los n;meros' %a necesidad de recordar secuencias de programacin para las acciones usuales lle* a denominarlas con nombres (,ciles de memori?ar 1 asociar9 ADD 6sumar7, SUB 6restar7, MUL 6multiplicar7, CALL 6ejecutar subrutina7, etc' A esta secuencia de posiciones se le denomin -instrucciones-, 1 a este conjunto de instrucciones se le llam lenguaje ensamblador' Posteriormente aparecieron di(erentes lenguajes de programacin, los cuales reciben su denominacin por+ue tienen una estructura sint,ctica similar a los lenguajes escritos por los 4umanos, denominados tambi8n lenguajes de alto ni*el' %a primera programadora de computadora conocida (ue Ada %o*elace, 4ija de Anabella =ilbanIe B1ron 1 %ord B1ron' Anabella introdujo en las matem,ticas a Ada +uien, despu8s de conocer a C4arles Babbage, tradujo 1 ampli una descripcin de su m,+uina anal3tica' Incluso aun+ue Babbage nunca complet la construccin de cual+uiera de sus m,+uinas, el trabajo +ue Ada reali? con 8stas le 4i?o ganarse el t3tulo de primera programadora de computadoras del mundo' El nombre del lenguaje de programacin Ada (ue escogido como 4omenaje a esta programadora' A (inales de 5JB3, )o4n BacIus someti una propuesta a sus superiores en IB= para desarrollar una alternati*a m,s pr,ctica al lenguaje ensamblador para programar la computadora central IB= DG@' El 4istrico e+uipo Aortran de BacIus consisti en los programadores Eic4ard !oldberg, S4eldon A' Best, .arlan .erricI, Peter S4eridan, Eo1 "utt, Eobert "elson, Ir*ing Killer, %ois .aibt 1 :a*id Sa1re' 2 El primer manual para el lenguaje Aortran apareci en octubre de 5JBC, con el primer compilador Aortran entregado en abril de 5JBD' Esto era un compilador optimi?ado, por+ue los clientes eran reacios a usar un lenguaje de alto ni*el a menos +ue su compilador pudiera generar cdigo cu1o desempe2o (uera comparable al de un cdigo 4ec4o a mano en lenguaje ensamblador' En 5JCG, se cre CLBL%, uno de los lenguajes usados a;n en la actualidad, en in(orm,tica de gestin' A medida +ue la complejidad de las tareas +ue reali?aban las computadoras aumentaba, se 4i?o necesario disponer de un m8todo m,s e(iciente para programarlas' Entonces, se crearon los lenguajes de alto ni*el, como lo (ue BASIC en las *ersiones introducidas en los microordenadores de la d8cada de 5JFG' =ientras +ue una tarea tan sencilla como sumar dos n;meros puede necesitar *arias instrucciones en lenguaje ensamblador, en un lenguaje de alto ni*el bastar, una sola sentencia' Elementos Variables y vectores %as *ariables podr3an cali(icarse como contenedores de datos 1 por ello se di(erencian seg;n el tipo de dato +ue son capaces de almacenar' En la ma1or3a de lenguajes de programacin se re+uiere especi(icar un tipo de *ariable concreto para guardar un dato concreto' Por ejemplo, en )a*a, si deseamos guardar una cadena de te&to deberemos especi(icar +ue la *ariable es del tipo String' Por otra parte, en lenguajes como el P.P este tipo de especi(icacin de *ariables no es necesario' Adem,s, e&isten *ariables compuestas por *arias *ariables llamadas *ectores' #n *ector no es m,s +ue un conjunto de *ariables consecuti*as en memoria 1 del mismo tipo guardadas dentro de una *ariable contenedor' A continuacin, un listado con los tipos de *ariables 1 *ectores m,s comunes9 ariables tipo C4ar9 Estas *ariables contienen un ;nico car,cter, es decir, una letra, un signo o un n;mero' ariables tipo Int9 Contienen un n;mero entero' ariables tipo (loat9 Contienen un n;mero decimal' ariables tipo String9 Contienen cadenas de te&to, o lo +ue es lo mismo, es un *ector con *arias *ariables del tipo C4ar' ariables del tipo Boolean9 Solo pueden contener un G o un 5' El cero es considerado para muc4os lenguajes como el literal -Aalse-, mientras +ue el 5 se considera -True-' Condicionantes %os condicionantes son estructuras de cdigo +ue indican +ue, para +ue cierta parte del programa se ejecute, deben cumplirse ciertas premisasH por ejemplo9 +ue dos *alores sean iguales, +ue un *alor e&ista, +ue un *alor sea ma1or +ue otro''' Estos condicionantes por lo general solo se ejecutan una *e? a lo largo del programa' %os condicionantes m,s conocidos 1 empleados en programacin son9 If9 Indica una condicin para +ue se ejecute una parte del programa' Else if9 Siempre *a precedido de un -I(- e indica una condicin para +ue se ejecute una parte del programa siempre +ue no cumpla la condicin del i( pre*io 1 si se cumpla con la +ue el -else i(- especi(i+ue' Else9 Siempre precedido de -I(- 1 en ocasiones de -Else I(-' Indica +ue debe ejecutarse cuando no se cumplan las condiciones pr8*ias' Bucles %os bucles son parientes cercanos de los condicionantes, pero ejecutan constantemente un cdigo mientras se cumpla una determinada condicin' %os m,s (recuentes son los siguientes9 For9 Ejecuta un cdigo mientras una *ariable se encuentre entre 2 determinados par,metros' While9 Ejecuta un cdigo mientras se cumpla la condicin +ue solicita' .a1 +ue decir +ue a pesar de +ue e&istan distintos tipos de bucles, ambos son capaces de reali?ar e&actamente las mismas (unciones' El empleo de uno u otro depende, por lo general, del gusto del programador' Funciones %as (unciones se crearon para e*itar tener +ue repetir constantemente (ragmentos de cdigo' #na (uncin podr3a considerarse como una *ariable +ue encierra cdigo dentro de si' Por lo tanto cuando accedemos a dic4a *ariable 6la (uncin7 en realidad lo +ue estamos es diciendo al programa +ue ejecute un determinado cdigo prede(inido anteriormente' Todos los lenguajes de programacin tienen algunos elementos de (ormacin primiti*os para la descripcin de los datos 1 de los procesos o trans(ormaciones aplicadas a estos datos 6tal como la suma de dos n;meros o la seleccin de un elemento +ue (orma parte de una coleccin7' Estos elementos primiti*os son de(inidos por reglas sint,cticas 1 sem,nticas +ue describen su estructura 1 signi(icado respecti*amente' Sintaxis Con (recuencia se resaltan los elementos de la sinta&is con colores di(erentes para (acilitar su lectura' Este ejemplo est, escrito en P1t4on' A la (orma *isible de un lenguaje de programacin se le conoce como sinta&is' %a ma1or3a de los lenguajes de programacin son puramente te&tuales, es decir, utili?an secuencias de te&to +ue inclu1en palabras, n;meros 1 puntuacin, de manera similar a los lenguajes naturales escritos' Por otra parte, 4a1 algunos lenguajes de programacin +ue son m,s gr,(icos en su naturale?a, utili?ando relaciones *isuales entre s3mbolos para especi(icar un programa' %a sinta&is de un lenguaje de programacin describe las combinaciones posibles de los s3mbolos +ue (orman un programa sint,cticamente correcto' El signi(icado +ue se le da a una combinacin de s3mbolos es manejado por su sem,ntica 61a sea (ormal o como parte del cdigo duro de la re(erencia de implementacin7' :ado +ue la ma1or3a de los lenguajes son te&tuales, este art3culo trata de la sinta&is te&tual' %a sinta&is de los lenguajes de programacin es de(inida generalmente utili?ando una combinacin de e&presiones regulares 6para la estructura l8&ica7 1 la "otacin de BacIus-"aur 6para la estructura gram,tica7' Este es un ejemplo de una gram,tica simple, tomada de %isp9 expresin ::= tomo | lista tomo ::= nmero | smbolo nmero ::= [+!" [#$##%#!+ smbolo ::= [#A##&#! [#a##'#!() lista ::= #*# expresin) #+# Con esta gram,tica se especi(ica lo siguiente9 una expresin puede ser un tomo o una listaH un tomo puede ser un nmero o un smboloH un nmero es una secuencia continua de uno o m,s d3gitos decimales, precedido opcionalmente por un signo m,s o un signo menosH un smbolo es una letra seguida de cero o m,s caracteres 6e&clu1endo espacios7H 1 una lista es un par de par8ntesis +ue abren 1 cierran, con cero o m,s e&presiones en medio' Algunos ejemplos de secuencias bien (ormadas de acuerdo a esta gram,tica9 <,-./0<, <*+<, <*a b 1-.- *,++< "o todos los programas sint,cticamente correctos son sem,nticamente correctos' =uc4os programas sint,cticamente correctos tienen inconsistencias con las reglas del lenguajeH 1 pueden 6dependiendo de la especi(icacin del lenguaje 1 la solide? de la implementacin7 resultar en un error de traduccin o ejecucin' En algunos casos, tales programas pueden e&4ibir un comportamiento inde(inido' Adem,s, incluso cuando un programa est, bien de(inido dentro de un lenguaje, toda*3a puede tener un signi(icado +ue no es el +ue la persona +ue lo escribi estaba tratando de construir' #sando el lenguaje natural, por ejemplo, puede no ser posible asignarle signi(icado a una oracin gramaticalmente *,lida o la oracin puede ser (alsa9 -%as ideas *erdes 1 descoloridas duermen (uriosamente- es una oracin bien (ormada gramaticalmente pero no tiene signi(icado com;nmente aceptado' -)uan es un soltero casado- tambi8n est, bien (ormada gramaticalmente pero e&presa un signi(icado +ue no puede ser *erdadero' El siguiente (ragmento en el lenguaje C es sint,cticamente correcto, pero ejecuta una operacin +ue no est, de(inida sem,nticamente 6dado +ue p es un apuntador nulo, las operaciones p2real 1 p2im no tienen ning;n signi(icado79 1omplex )p = 3ULL4 1omplex abs5p = s6rt *p2real ) p2real + p2im ) p2im+4 Si la declaracin de tipo de la primera l3nea (uera omitida, el programa disparar3a un error de compilacin, pues la *ariable -p- no estar3a de(inida' Pero el programa ser3a sint,cticamente correcto toda*3a, dado +ue las declaraciones de tipo pro*een in(ormacin sem,ntica solamente' %a gram,tica necesaria para especi(icar un lenguaje de programacin puede ser clasi(icada por su posicin en la )erar+u3a de C4omsI1' %a sinta&is de la ma1or3a de los lenguajes de programacin puede ser especi(icada utili?ando una gram,tica Tipo-2, es decir, son gram,ticas libres de conte&to' Algunos lenguajes, inclu1endo a Perl 1 a %isp, contienen construcciones +ue permiten la ejecucin durante la (ase de an,lisis' %os lenguajes +ue permiten construcciones +ue permiten al programador alterar el comportamiento de un anali?ador 4acen del an,lisis de la sinta&is un problema sin decisin ;nica, 1 generalmente oscurecen la separacin entre an,lisis 1 ejecucin' En contraste con el sistema de macros de %isp 1 los blo+ues BE!I" de Perl, +ue pueden tener c,lculos generales, las macros de C son meros reempla?os de cadenas, 1 no re+uieren ejecucin de cdigo' Semntica esttica %a sem,ntica est,tica de(ine las restricciones sobre la estructura de los te&tos *,lidos +ue resulta imposible o mu1 di(3cil e&presar mediante (ormalismos sint,cticos est,ndar' Para los lenguajes compilados, la sem,ntica est,tica b,sicamente inclu1e las reglas sem,nticas +ue se pueden *eri(icar en el momento de compilar' Por ejemplo el c4e+ueo de +ue cada identi(icador sea declarado antes de ser usado 6en lenguajes +ue re+uieren tales declaraciones7 o +ue las eti+uetas en cada bra?o de una estructura case sean distintas' =uc4as restricciones importantes de este tipo, como la *alidacin de +ue los identi(icadores sean usados en los conte&tos apropiados 6por ejemplo no sumar un entero al nombre de una (uncin7, o +ue las llamadas a subrutinas tengan el n;mero 1 tipo de par,metros adecuado, puede ser implementadas de(ini8ndolas como reglas en una lgica conocida como sistema de tipos' Ltras (ormas de an,lisis est,ticos, como los an,lisis de (lujo de datos, tambi8n pueden ser parte de la sem,ntica est,tica' Ltros lenguajes de programacin como )a*a 1 CM tienen un an,lisis de(inido de asignaciones, una (orma de an,lisis de (lujo de datos, como parte de su sem,ntica est,tica' Sistema de tipos Art3culo principal9 Sistema de tipos #n sistema de tipos de(ine la manera en la cual un lenguaje de programacin clasi(ica los *alores 1 e&presiones en tipos, cmo pueden ser manipulados dic4os tipos 1 cmo interact;an' El objeti*o de un sistema de tipos es *eri(icar 1 normalmente poner en *igor un cierto ni*el de e&actitud en programas escritos en el lenguaje en cuestin, detectando ciertas operaciones in*,lidas' Cual+uier sistema de tipos decidible tiene sus *entajas 1 des*entajas9 mientras por un lado rec4a?a muc4os programas incorrectos, tambi8n pro43be algunos programas correctos aun+ue poco comunes' Para poder minimi?ar esta des*entaja, algunos lenguajes inclu1en lagunas de tipos, con*ersiones e&pl3citas no c4ecadas +ue pueden ser usadas por el programador para permitir e&pl3citamente una operacin normalmente no permitida entre di(erentes tipos' En la ma1or3a de los lenguajes con tipos, el sistema de tipos es usado solamente para c4ecar los tipos de los programas, pero *arios lenguajes, generalmente (uncionales, lle*an a cabo lo +ue se conoce como in(erencia de tipos, +ue le +uita al programador la tarea de especi(icar los tipos' Al dise2o 1 estudio (ormal de los sistemas de tipos se le conoce como teora de tipos' Lenguajes tipados versus lenguajes no tipados El texto que sigue es una traduccin defectuosa o incompleta. Si +uieres colaborar con /iIipedia, busca el art3culo original 1 mejora o (inali?a esta traduccin' Puedes dar a*iso al autor principal del art3culo pegando el siguiente cdigo en su p,gina de discusin9 77s8bst:A9iso mal tra:81i:o|Len;8a<e :e pro;rama1in== >>>> Se dice +ue un lenguaje tiene tipos si la especi(icacin de cada operacin de(ine tipos de datos para los cuales la operacin es aplicable, con la implicacin de +ue no es aplicable a otros tipos' Por ejemplo, -este texto entre 1omillas- es una cadena' En la ma1or3a de los lenguajes de programacin, di*idir un n;mero por una cadena no tiene ning;n signi(icado' Por tanto, la ma1or3a de los lenguajes de programacin modernos rec4a?aran cual+uier intento de ejecutar dic4a operacin por parte de alg;n programa' En algunos lenguajes, estas operaciones sin signi(icado son detectadas cuando el programa es compilado 6*alidacin de tipos -est,tica-7 1 son rec4a?adas por el compilador, mientras en otros son detectadas cuando el programa es ejecutado 6*alidacin de tipos -din,mica-7 1 se genera una e&cepcin en tiempo de ejecucin' #n caso especial de lenguajes de tipo son los lenguajes de tipo sencillo' Estos son con (recuencia lenguajes de marcado o de scripts, como EENN o S!=%, 1 solamente cuentan con un tipo de datosH com;nmente cadenas de caracteres +ue luego son usadas tanto para datos num8ricos como simblicos' En contraste, un lenguaje sin tipos, como la ma1or3a de los lenguajes ensambladores, permiten +ue cual+uier operacin se apli+ue a cual+uier dato, +ue por lo general se consideran secuencias de bits de *arias longitudes' %enguajes de alto ni*el sin datos inclu1en BCP% 1 algunas *ariedades de Aort4' En la pr,ctica, aun+ue pocos lenguajes son considerados con tipo desde el punto de *ista de la teor3a de tipos 6es decir, +ue *eri(ican o rec4a?an todas las operaciones7, la ma1or3a de los lenguajes modernos o(recen alg;n grado de manejo de tipos' Si bien muc4os lenguajes de produccin pro*een medios para brincarse o sub*ertir el sistema de tipos' Tipos estticos versus tipos dinmicos El texto que sigue es una traduccin defectuosa o incompleta. Si +uieres colaborar con /iIipedia, busca el art3culo original 1 mejora o (inali?a esta traduccin' Puedes dar a*iso al autor principal del art3culo pegando el siguiente cdigo en su p,gina de discusin9 77s8bst:A9iso mal tra:81i:o|Len;8a<e :e pro;rama1in== >>>> En lenguajes con tipos estticos se determina el tipo de todas las e&presiones antes de la ejecucin del programa 6t3picamente al compilar7' Por ejemplo, 5 1 62O27 son e&presiones enterasH no pueden ser pasadas a una (uncin +ue espera una cadena, ni pueden guardarse en una *ariable +ue est, de(inida como (ec4a' %os lenguajes con tipos est,ticos pueden manejar tipos explcitos o tipos inferidos' En el primer caso, el programador debe escribir los tipos en determinadas posiciones te&tuales' En el segundo caso, el compilador infiere los tipos de las e&presiones 1 las declaraciones de acuerdo al conte&to' %a ma1or3a de los lenguajes populares con tipos est,ticos, tales como COO, CM 1 )a*a, manejan tipos e&pl3citos' In(erencia total de los tipos suele asociarse con lenguajes menos populares, tales como .asIell 1 =%' Sin embargo, muc4os lenguajes de tipos e&pl3citos permiten in(erencias parciales de tipoH tanto )a*a 1 CM, por ejemplo, in(ieren tipos en un n;mero limitado de casos' %os lenguajes con tipos din,micos determinan la *alide? de los tipos in*olucrados en las operaciones durante la ejecucin del programa' En otras palabras, los tipos est,n asociados con valores en ejecucin en lugar de expresiones textuales' Como en el caso de lenguajes con tipos in(eridos, los lenguajes con tipos din,micos no re+uieren +ue el programador escriba los tipos de las e&presiones' Entre otras cosas, esto permite +ue una misma *ariable se pueda asociar con *alores de tipos distintos en di(erentes momentos de la ejecucin de un programa' Sin embargo, los errores de tipo no pueden ser detectados autom,ticamente 4asta +ue se ejecuta el cdigo, di(icultando la depuracin de los programas, no obstante, en lenguajes con tipos din,micos se suele dejar de lado la depuracin en (a*or de t8cnicas de desarrollo como por ejemplo B:: 1 T::' Eub1, %isp, )a*aScript 1 P1t4on son lenguajes con tipos din,micos' Tipos d!iles " tipos fuertes %os lenguajes dbilmente tipados permiten +ue un *alor de un tipo pueda ser tratado como de otro tipo, por ejemplo una cadena puede ser operada como un n;mero' Esto puede ser ;til a *eces, pero tambi8n puede permitir ciertos tipos de (allas +ue no pueden ser detectadas durante la compilacin o a *eces ni si+uiera durante la ejecucin' %os lenguajes fuertemente tipados e*itan +ue pase lo anterior' Cual+uier intento de lle*ar a cabo una operacin sobre el tipo e+ui*ocado dispara un error' A los lenguajes con tipos (uertes se les suele llamar de tipos seguros' %enguajes con tipos d8biles como Perl 1 )a*aScript permiten un gran n;mero de con*ersiones de tipo impl3citas' Por ejemplo en )a*aScript la e&presin - ) x con*ierte impl3citamente x a un n;mero, 1 esta con*ersin es e&itosa inclusi*e cuando x es n8ll, 8n:e?ine:, un Arra@ o una cadena de letras' Estas con*ersiones impl3citas son ;tiles con (recuencia, pero tambi8n pueden ocultar errores de programacin' %as caracter3sticas de estticos 1 fuertes son a4ora generalmente consideradas conceptos ortogonales, pero su trato en di(erentes te&tos *aria' Algunos utili?an el t8rmino de tipos fuertes para re(erirse a tipos fuertemente estticos o, para aumentar la con(usin, simplemente como e+ui*alencia de tipos estticos' :e tal manera +ue C 4a sido llamado tanto lenguaje de tipos (uertes como lenguaje de tipos est,ticos d8biles' Implementacin Cdigo (uente de un programa escrito en el lenguaje de programacin )a*a' %a implementacin de un lenguaje es la +ue pro*ee una manera de +ue se ejecute un programa para una determinada combinacin de so(t>are 1 4ard>are' E&isten b,sicamente dos maneras de implementar un lenguaje9 compilacin e interpretacin' Compilacin9 es el proceso +ue traduce un programa escrito en un lenguaje de programacin a otro lenguaje de programacin, generando un programa e+ui*alente +ue la m,+uina ser, capa? interpretar' %os programas traductores +ue pueden reali?ar esta operacin se llaman compiladores' Pstos, como los programas ensambladores a*an?ados, pueden generar muc4as l3neas de cdigo de m,+uina por cada proposicin del programa (uente' Interpretacin9 es una asignacin de signi(icados a las (rmulas bien (ormadas de un lenguaje (ormal' Como los lenguajes (ormales pueden de(inirse en t8rminos puramente sint,cticos, sus (rmulas bien (ormadas pueden no ser m,s +ue cadenas de s3mbolos sin ning;n signi(icado' #na interpretacin otorga signi(icado a esas (rmulas' Se puede tambi8n utili?ar una alternati*a para traducir lenguajes de alto ni*el' En lugar de traducir el programa (uente 1 grabar en (orma permanente el cdigo objeto +ue se produce durante la compilacin para utili?arlo en una ejecucin (utura, el programador slo carga el programa (uente en la computadora junto con los datos +ue se *an a procesar' A continuacin, un programa int8rprete, almacenado en el sistema operati*o del disco, o incluido de manera permanente dentro de la m,+uina, con*ierte cada proposicin del programa (uente en lenguaje de m,+uina con(orme *a1a siendo necesario durante el procesamiento de los datos' El cdigo objeto no se graba para utili?arlo posteriormente' %a siguiente *e? +ue se utilice una instruccin, se la deber, interpretar otra *e? 1 traducir a lenguaje m,+uina' Por ejemplo, durante el procesamiento repetiti*o de los pasos de un ciclo o bucle, cada instruccin del bucle tendr, +ue *ol*er a ser interpretada en cada ejecucin repetida del ciclo, lo cual 4ace +ue el programa sea m,s lento en tiempo de ejecucin 6por+ue se *a re*isando el cdigo en tiempo de ejecucin7 pero m,s r,pido en tiempo de dise2o 6por+ue no se tiene +ue estar compilando a cada momento el cdigo completo7' El int8rprete elimina la necesidad de reali?ar una compilacin despu8s de cada modi(icacin del programa cuando se +uiere agregar (unciones o corregir erroresH pero es ob*io +ue un programa objeto compilado con antelacin deber, ejecutarse con muc4a ma1or rapide? +ue uno +ue se debe interpretar a cada paso durante una ejecucin del cdigo' %a ma1or3a de lenguajes de alto ni*el permiten la programacin multipropsito, aun+ue muc4os de ellos (ueron dise2ados para permitir programacin dedicada, como lo (ue el Pascal con las matem,ticas en su comien?o' Tambi8n se 4an implementado lenguajes educati*os in(antiles como %ogo mediante una serie de simples instrucciones' En la actualidad son mu1 populares algunos lenguajes especialmente indicados para aplicaciones >eb, como Perl, P.P, Eub1, P1t4on o )a*aScript' Tcnica %ibros sobre di*ersos lenguajes de programacin' Para escribir programas +ue proporcionen los mejores resultados, cabe tener en cuenta una serie de detalles' Correccin' #n programa es correcto si 4ace lo +ue debe 4acer tal 1 como se estableci en las (ases pre*ias a su desarrollo' Para determinar si un programa 4ace lo +ue debe, es mu1 importante especi(icar claramente +u8 debe 4acer el programa antes de desarrollarlo 1, una *e? acabado, compararlo con lo +ue realmente 4ace' Claridad' Es mu1 importante +ue el programa sea lo m,s claro 1 legible posible, para (acilitar as3 su desarrollo 1 posterior mantenimiento' Al elaborar un programa se debe intentar +ue su estructura sea sencilla 1 co4erente, as3 como cuidar el estilo en la edicinH de esta (orma se *e (acilitado el trabajo del programador, tanto en la (ase de creacin como en las (ases posteriores de correccin de errores, ampliaciones, modi(icaciones, etc' Aases +ue pueden ser reali?adas incluso por otro programador, con lo cual la claridad es a;n m,s necesaria para +ue otros programadores puedan continuar el trabajo (,cilmente' Algunos programadores llegan incluso a utili?ar Arte ASCII para delimitar secciones de cdigo' Ltros, por di*ersin o para impedir un an,lisis cmodo a otros programadores, recurren al uso de cdigo o(uscado' Eficiencia' Se trata de +ue el programa, adem,s de reali?ar a+uello para lo +ue (ue creado 6es decir, +ue sea correcto7, lo 4aga gestionando de la mejor (orma posible los recursos +ue utili?a' "ormalmente, al 4ablar de e(iciencia de un programa, se suele 4acer re(erencia al tiempo +ue tarda en reali?ar la tarea para la +ue 4a sido creado 1 a la cantidad de memoria +ue necesita, pero 4a1 otros recursos +ue tambi8n pueden ser de consideracin al obtener la e(iciencia de un programa, dependiendo de su naturale?a 6espacio en disco +ue utili?a, tr,(ico de red +ue genera, etc'7' Portabilidad' #n programa es portable cuando tiene la capacidad de poder ejecutarse en una plata(orma, 1a sea 4ard>are o so(t>are, di(erente a a+uella en la +ue se elabor' %a portabilidad es una caracter3stica mu1 deseable para un programa, 1a +ue permite, por ejemplo, a un programa +ue se 4a desarrollado para sistemas !"#$%inu& ejecutarse tambi8n en la (amilia de sistemas operati*os /indo>s' Esto permite +ue el programa pueda llegar a m,s usuarios m,s (,cilmente' Paradigmas %os programas se pueden clasi(icar por el paradigma del lenguaje +ue se use para producirlos' %os principales paradigmas son9 imperati*os, declarati*os 1 orientacin a objetos' %os programas +ue usan un lenguaje imperati*o especi(ican un algoritmo, usan declaraciones, e&presiones 1 sentencias' 3 #na declaracin asocia un nombre de *ariable con un tipo de dato, por ejemplo9 9ar x: inte;er4' #na e&presin contiene un *alor, por ejemplo9 - + - contiene el *alor @' Ainalmente, una sentencia debe asignar una e&presin a una *ariable o usar el *alor de una *ariable para alterar el (lujo de un programa, por ejemplo9 x := - + -4 i? x == / tAen Aa'5al;o*+4' #na cr3tica com;n en los lenguajes imperati*os es el e(ecto de las sentencias de asignacin sobre una clase de *ariables llamadas -no locales-' @ %os programas +ue usan un lenguaje declarati*o especi(ican las propiedades +ue la salida debe conocer 1 no especi(ica cual+uier detalle de implementacin' :os amplias categor3as de lenguajes declarati*os son los lenguajes (uncionales 1 los lenguajes lgicos' %os lenguajes (uncionales no permiten asignaciones de *ariables no locales, as3, se 4acen m,s (,cil, por ejemplo, programas como (unciones matem,ticas' @ El principio detr,s de los lenguajes lgicos es de(inir el problema +ue se +uiere resol*er 6el objeti*o7 1 dejar los detalles de la solucin al sistema' B El objeti*o es de(inido dando una lista de sub-objeti*os' Cada sub-objeti*o tambi8n se de(ine dando una lista de sus sub-objeti*os, etc' Si al tratar de buscar una solucin, una ruta de sub-objeti*os (alla, entonces tal sub- objeti*o se descarta 1 sistem,ticamente se prueba otra ruta' %a (orma en la cual se programa puede ser por medio de te&to o de (orma *isual' En la programacin *isual los elementos son manipulados gr,(icamente en *e? de especi(icarse por medio de te&to' Vase tambin Ane&o9%enguajes de programacin Programacin estructurada Programacin modular Programacin orientada a objetos Programacin imperati*a Programacin declarati*a paradigma de programacin %enguajes esot8ricos Referencias 5' Q=arIR 62G5G7' L<Eeill1 =edia, Inc' 6ed'79 S%earning P1t4on, Aourt4 EditionT 6libro7' L<Eeill1' Consultado el 55 de (ebrero de 2G5G' 2' 4ttp9$$>>>'so(t>arepreser*ation'org$projects$ALETEA"$inde&'4tmlMB1 UALETEA"UprojectUmembers 3' /ilson, %eslie B' 65JJ37' Comparative Programming Languages Second Edition' Addison-/esle1' pp' DB' ISB" G-2G5-BCFFB-3' 6en ingl8s7' @' /ilson, %eslie B' 65JJ37' Comparative Programming Languages Second Edition' Addison-/esle1' pp' 253' ISB" G-2G5-BCFFB-3' 6en ingl8s7' B' /ilson, %eslie B' 65JJ37' Comparative Programming Languages Second Edition' Addison-/esle1' pp' 2@@' ISB" G-2G5-BCFFB-3' 6en ingl8s7'
Tesis Grupo I (Administracion) - Fomentar El Uso de Epp Del Personal Obrero en La Sección Taller Que Permitan La Prevención de Accidentes en La Empresa Comol S.A.C.