You are on page 1of 21

Al desarrollarse las primeras computadoras electrnicas, se vio la necesidad de programarlas, es decir, de almacenar en memoria la informacin sobre la tarea que

iban a ejecutar. Las primeras se usaban como calculadoras simples; se les indicaban los pasos de clculo, uno por uno. John Von eumann desarroll el modelo que lleva su nombre, para describir este concepto de !programa almacenado!. "n este modelo, se tiene una abstraccin de la memoria como un conjunto de celdas, que almacenan simplemente n#meros. "stos n#meros pueden representar dos cosas$ los datos, sobre los que va a trabajar el programa; o bien, el programa en s%. &'mo es que describimos un programa como n#meros( )e ten%a el problema de representar las acciones que iba a reali*ar la computadora, + que la memoria, al estar compuesta por s,itches correspondientes al concepto de bit, solamente nos permit%a almacenar n#meros binarios. La solucin que se tom fue la siguiente$ a cada accin que sea capa* de reali*ar nuestra computadora, asociarle un n#mero, que ser su cdigo de operacin -opcode. . /or ejemplo, una calculadora programable simple podr%a asignar los opcodes $ 0 1 )23A, 4 1 5")6A, 7 1 32L68/L8'A, 9 1 :8V8:". )upongamos que queremos reali*ar la operacin ; < 7 = 4, en la calculadora descrita arriba. "n memoria, podr%amos !escribir! el programa de la siguiente forma$

Localidad >pcode )ignificado 'omentario ? ; ; "n esta localidad, tenemos el primer n#mero de la frmula 0 7 < "n esta localidad, tenemos el opcode que representa la multiplicacin. 4 7 7 "n esta localidad, tenemos el segundo n#mero de la frmula 7 0 = "n esta localidad, tenemos el opcode que representa la suma. 9 4 4 "n esta localidad, tenemos el #ltimo n#mero de la frmula /odemos ver que con esta representacin, es simple e@presar las operaciones de las que es capa* el hard,are -en este caso, nuestra calculadora imaginaria., en la memoria. La descripcin + uso de los opcodes es lo que llamamos lenguaje de mquina . "s decir, la lista de cdigos que la mquina va a interpretar como instrucciones, describe las capacidades de programacin que tenemos de ella; es el lenguaje ms primitivo, depende directamente del hard,are, + requiere del programador que cono*ca el funcionamiento de la mquina al ms bajo nivel. los lenguajes ms primitivos fueron los lenguajes de mquina. "sto, +a que el hard,are se desarroll antes del soft,are, + adems cualquier soft,are finalmente tiene que e@presarse en el lenguaje que maneja el hard,are. La programacin en esos momentos era sumamente tediosa, pues el programador ten%a que !bajarse! al nivel de la mquina + decirle, paso a pasito, cada punto de la tarea que ten%a que reali*ar. Adems, deb%a e@presarlo en forma numArica; + por supuesto, este proceso era propenso a errores, con lo que la productividad del programador era mu+ limitada. )in embargo, ha+ que recordar que en estos momentos, simplemente a#n no e@ist%a alternativa. "l primer gran avance que se dio, como +a se coment, fue la abstraccin dada por el Lenguaje "nsamblador, + con Al, el nacimiento de las primeras herramientas automticas para generar el cdigo mquina. "sto redujo los errores triviales, como pod%a ser el n#mero que correspond%a a una operacin, que son sumamente engorrosos + dif%ciles de detectar, pero fciles de cometer. )in embargo, a#n aqu% es fcil para el programador perderse + cometer errores de lgica, pues debe bajar al nivel de la forma en que trabaja el '/2, + entender bien todo lo que sucede dentro de Al. 'on el desarrollo en los ;?s + B?s de algoritmos de ms elevado nivel, + el aumento de poder del hard,are, empe*aron a entrar al uso de computadoras cient%ficos de otras ramas; ellos conoc%an mucho de C%sica, Du%mica + otras ramas similares, pero no de 'omputacin, + por supuesto, les era sumamente complicado trabajar con lenguaje "nsamblador en ve* de frmulas. As%, naci el concepto de Lenguaje de Alto ivel, con el primer compilador de C>565A -C>5mula 65A slation., que, como su nombre indica, inici como un !simple! esfuer*o de traducir un lenguaje de frmulas, al lenguaje ensamblador + por consiguiente al lenguaje de mquina. A partir de C>565A , se han desarrollado innumerables lenguajes, que siguen el mismo concepto$ buscar la ma+or abstraccin posible, + facilitar la vida al programador, aumentando la productividad, encargndose los compiladores o intArpretes de traducir el lenguaje de alto nivel, al lenguaje de computadora. Ea+ que notar la e@istencia de lenguajes que combinan caracter%sticas de los de alto nivel + los de bajo nivel -es decir, "nsamblador.. 3i ejemplo favorito es '$ contiene estructuras de programacin de alto nivel, + la facilidad de usar librer%as que tambiAn son caracter%sticas de alto nivel; sin embargo, fue diseFado con mu+ pocas instrucciones, las

cuales son sumamente sencillas, fciles de traducir al lenguaje de la mquina; + requiere de un entendimiento apropiado de cmo funciona la mquina, el uso de la memoria, etcAtera. /or ello, muchas personas consideramos a lenguajes como ' -que fue diseFado para hacer sistemas operativos., lenguajes de nivel medio. Java "l lenguaje de programacin Java, fue diseFado por la compaF%a )un 3icros+stems 8nc, con el propsito de crear un lenguaje que pudiera funcionar en redes computacionales heterogAneas - redes de computadoras formadas por ms de un tipo de computadora, +a sean /', 3A'Gs, estaciones de trabajo, etc..,+ que fuera independiente de la plataforma en la que se va+a a ejecutar. "sto significa que un programa de Java puede ejecutarse en cualquier mquina o plataforma. "l lenguaje fue diseFado con las siguientes caracter%sticas en mente$ )imple. "limina la complejidad de los lenguajes como !'! + da paso al conte@to de los lenguajes modernos orientados a objetos. >rientado a >bjetos. La filosof%a de programacin orientada a objetos es diferente a la programacin convencional. Camiliar. 'omo la ma+or%a de los programadores estn acostumbrados a programar en ' o en '==, el sinta@is de Java es mu+ similar al de estos. 5obusto. "l sistema de Java maneja la memoria de la computadora por ti. o te tienes que preocupar por apuntadores, memoria que no se estA utili*ando, etc. Java reali*a todo esto sin necesidad de que uno se lo indique. )eguro. "l sistema de Java tiene ciertas pol%ticas que evitan se puedan codificar virus con este lenguaje. "@isten muchas restricciones, especialmente para los applets, que limitan lo que se puede + no puede hacer con los recursos cr%ticos de una computadora. /ortable. 'omo el cdigo compilado de Java -conocido como b+te code. es interpretado, un programa compilado de Java puede ser utili*ado por cualquier computadora que tenga implementado el interprete de Java. 8ndependiente a la arquitectura. Al compilar un programa en Java, el cdigo resultante un tipo de cdigo binario conocido como b+te code. "ste cdido es interpretado por diferentes computadoras de igual manera, solamente ha+ que implementar un intArprete para cada plataforma. :e esa manera Java logra ser un lenguaje que no depende de una arquitectura computacional definida. 3ultithreaded. 2n lenguaje que soporta multiples threads es un lenguaje que puede ejecutar diferentes l%neas de cdigo al mismo tiempo. 8nterpretado. Java corre en mquina virtual, por lo tanto es interpretado. :inmico. Java no requiere que compiles todas las clases de un programa para que este funcione. )i reali*as una modificacin a una clase Java se encarga de reali*ar un :+namic H+nding o un :+namic Loading para encontrar las clases.

Java puede funcionar como una aplicacin sola o como un !applet!, que es un pequeFo programa hecho en Java. Los applets de Java se pueden !pegar! a una pgina de Ieb -E63L., + con esto puedes tener un programa que cualquier persona que tenga un bro,ser compatible podr usar. Nota:Diferencia entre Java y CGI La diferencia es esencialmente simple, un CGI se ejecuta en el servidor mientras que un programa en Java se ejecuta en la mquina del usuario Java funciona de la siguiente manera$ "l compilador de Java deja el programa en un /seudoJcdigo -no es cdigo maquinal. + luego el intArprete de Java ejecuta el programa -lo que se conoce como el !Java Virtual 3achine!.. /or eso Java es multiplataforma, e@iste un intArprete para cada mquina diferente. Nota: !l c"digo maquinal es el c"digo #inario que la computadora entiende y puede ejecutar /ara entender bien como funciona un applet de Java vean el siguiente ejemplo$ 0. "@iste un cdigo de Java en un servidor de Ieb. -Los cdigos de Java se caracteri*an por tener la e@tensin <.class.. 4. 2na persona en 8nternet, con un bro,ser compatible con Java, reali*a una coneccin al servidor. 7. "l servidor env%a el documento E63L + el cdigo en Java -<.class.. 9. "n la computadora del usuario remoto llegan ambos, + la 3quina Virtual de Java, que est en el bro,ser, transforma el cdigo Java en un cdigo que entienda la mquina local + se ejecuta el programa dentro de la pgina de Ieb. ;. )i el usuario reali*a otra cone@in a otro 25L o se sale del bro,ser, el programa se deja de ejecutar + en la computadora no queda rastro de el.

Ejemplo de tutorial de Java: "n Java ha+ tres tipos de comentarios$ KK comentarios para una sola l%nea K< comentarios de una o ms l%neas <K K<< comentario de documentacin, de una o ms l%neas <K

Los dos primeros tipos de comentarios son los que todo programador conoce + se utili*an del mismo modo. Los comentarios de documentacin, colocados inmediatamente antes de una declaracin -de variable o funcin., indican que ese comentario ha de ser colocado en la documentacin que se genera automticamente cuando se utili*a la herramienta de Java, javadoc. :ichos comentarios sirven como descripcin del elemento declarado permitiendo generar una documentacin de nuestras clases escrita al mismo tiempo que se genera el cdigo. "n este tipo de comentario para documentacin, se permite la introduccin de algunos toLens o palabras clave, que harn que la informacin que les sigue apare*ca de forma diferente al resto en la documentacin. 8dentificadores Los identificadores nombran variables, funciones, clases + objetos; cualquier cosa que el programador necesite identificar o usar. "n Java, un identificador comien*a con una letra, un subra+ado -M. o un s%mbolo de dlar -N.. Los siguientes caracteres pueden ser letras o d%gitos. )e distinguen las ma+#sculas de las min#sculas + no ha+ longitud m@ima. )er%an identificadores vlidos$ identificador nombreMusuario ombreM2suario MvariableMdelMsistema Ntransaccion + su uso ser%a, por ejemplo$ int contadorMprincipal; char MlistaMdeMficheros; float NcantidadMenM/tas; Unix "jemplo de 2ni@$ o todo el !rbol! de directorios est compuesto por directorios de usuario. "@isten muchos de ellos que son de uso general o del propio sistema + con los que habr que familiari*arse. Los ms importantes son$ K "l ra%*, del que !cuelgan! todos. Kbin + KusrKbin 'ontienen comandos 2 8O ejecutables. Ketc "s qui* el directorio ms importante. 'ontiene ficheros de datos + configuracin del sistema, el fichero de pass,ord, configuracin de terminales, red, etc -de ah% su nombre..

Kdev Cicheros de dispositivos "K). KusrKman 3anual Ktmp :irectorio para arreglos temporales. 6>:>) los usuarios pueden leer + escribir en Al. C ' es un lenguaje de programacin diseFado por :ennis 5itchie, de los Laboratorios Hell, + se instal en un /:/J00 en 0PQ4; se diseF para ser el lenguaje de los )istemas >perativos 2 8O0. A su ve*, 2 8O es un )istema >perativo desarrollado por Ren 6hompson, quiAn utili* el lenguaje ensamblador + un lenguaje llamado H para producir las versiones originales de 2 8O, en 0PQ?. ' se invent para superar las limitaciones de H. ' es un lenguaje maduro de propsitos generales que se desarroll a partir de estas ra%ces; su definicin aparece en 0PQS en el apAndice TT' 5eference 3anualGG del libro 6he ' /rogramming Language, de Hrian I. Rernighan + :ennis 3. 5itchie -"ngle,ood 'liffs, ueva Jerse+, /renticeJEall 0PQS., pero el estndar recomendable ms reciente apareci en junio de 0PS7, en el documento de los Laboratorios Hell titulado 6he ' /rogramming LanguageJ5eference 3anual, escrito por :ennis 3. 5itchie Un programa en C Uenerali*ando, un programa en ' consta de tres secciones. La primera seccin es donde van todos los TTheadersGG. "stos TTheadersGG son com#nmente los TTVdefineGG + los TTVincludeGG. 'omo segunda seccin se tienen las TTfuncionesGG. Al igual que /ascal, en ' todas las funciones que se van a ocupar en el programa deben ir antes que la funcin principal -main-... :eclarando las funciones a ocupar al principio del programa, se logra que la funcin principal estA antes que el resto de las funciones. Ahora, solo se habla de funciones +a que en ' no e@isten los procedimientos. W como #ltima seccin se tiene a la funcin principal, llamada main. 'uando se ejecuta el programa, lo primero que se ejecuta es esta funcin, + de ah% sigue el resto del programa. Los s%mbolos X + Y indican TTbeginGG + TTendGG respectivamente. )i en una funcin o en un ciclo ,hile, por ejemplo, su contenido es de solamente una l%nea, no es necesario usar TTllavesGG -X Y., en caso contrario es obligacin usarlos. Ejemplo de un programa en C K</rograma ejemplo que despliega el contenido de !5>L! en pantalla<K Vinclude Zstdio.h[ Vdefine 5>L !P4Q9??4J0!

despliegaMrol-. X printf-!3i rol es $ \]s\n!, 5>L.; Y void main-. X despliegaMrol-.; Y K< Cin programa <K Pascal /ascal es un lenguaje de programacin de alto nivel de propsito general; esto es, se puede utili*ar para escribir programas para fines cient%ficos + comerciales. "l lenguaje de programacin /ascal fue desarrollado por el profesor iLlaus - icols. Iirth en ^urich, ^ui*a, al final de los aFos 0PB?s + principios de los Q?s. Iirth diseF este lenguaje para que fuese un buen primer lenguaje de programacin para personas comen*ando a aprender a programar. /ascal tiene un n#mero relativamente pequeFo de conceptos para aprender + dominar. )u diseFo facilita escribir programas usando un estilo que est generalmente aceptado como prctica estndar de programacin buena. >tra de las metas del diseFo de Iirth era la implementacin fcil. _l diseF un lenguaje para el cual fuese fcil escribir un compilador para un nuevo tipo de computadora. program )orting; X "ste programa lee un natural + una secuencia de caracteres de la entrada estandar; constru+e un indice para ordenarlos de menor a ma+or e imprime en la salida la secuencia ordenada. Y uses '56; 'onst 3a@ 1 0?; "spacio 1 G G; "nter 1 chr -07.; t+pe 8ndice 1 0..3a@; 'antidad1 ?..3a@; )ec>f'har 1 record elems $ arra+ `8ndicea of char; ult $ 'antidad; end; )ec>f8nd 1 record elems $ arra+ `8ndicea of 8ndice; ult $ 'antidad; end; atural 1 ?..3a@8nt; function /os3in -id@$ )ec>f8nd; i$ 8ndice; s$ )ec>f'har.$ 'antidad; X :evuelve la posicion en el indice id@ del menor caracter en s, para

las posiciones [1 i. Y var j$ 8ndice; pm$ 'antidad; begin if i [ id@.ult then pm $1 ? else begin pm $1 i; for j $1 i=0 to id@.ult do if s.elems`id@.elems`jaa Z s.elems`id@.elems`pmaa then pm $1 j; end; /os3in $1 pm; end; procedure ),ap -var id@$ )ec>f8nd; i,j$ 8ndice.; X 8ntercambia las posiciones i j en id@. Y var tmp$ 8ndice; begin if -iZ1id@.ult. and -jZ1id@.ult. then begin tmp $1 id@.elems`ia; id@.elems`ia $1 id@.elems`ja; id@.elems`ja $1 tmp; end; end; procedure 8nic8nds -var id@$ )ec>f8nd; cant$ 8ndice.; X 'onstru+e la secuencia de indices 0,4,7,...,n. )era el indice inicial para el ordenamiento de una secuencia de caracteres c0,c4,...,cn. Y var n$ atural; begin n $1 cant; id@.ult $1 n; ,hile n [ ? do begin id@.elems `na $1 n; n $1 nJ0; end; end; procedure 8nic)ec'har -var s$ )ec>f'har.; X :evuelve la secuencia vacia. Y begin s.ult $1 ?; end; function Llena -s$ )ec>f'har.$ Hoolean; begin Llena $1 s.ult 1 3a@; end;

X /5"$ not Llena-s. Y procedure 8ns'ar -var s$ )ec>f'har; c$ char.; X 8nserta el caracter c en la secuencia s Y begin s.ult $1 s.ult = 0; s.elems `s.ulta $1 c; end; procedure 8nd)el)ort -s$ )ec>f'har; var ind$ )ec>f8nd.; X 'onstru+e el indice que ordena la secuencia s. >rdena el indice inicial 0,4, ..., n por el metodo de selection sort Y var i$ 8ndice; begin 8nic8nds -ind, s.ult.; for i $1 0 to ind.ultJ0 do begin ),ap -ind, i, /os3in -ind, i, s..; end end; procedure Irite)orted -id@$ )ec>f8nd; s$ )ec>f'har.; X 8mprime en la salida estandar la secuencia s ordenada segun el indice id@ Y var i$ 8ndice; begin ,rite -G>rdenado$ G.; for i $1 0 to id@.ult do ,rite -s.elems`id@.elems`iaa,G G.; ,riteln; end; procedure Leer'ar -var c$ char; var oL$ boolean; sep$ 'har.; X Lee de la entrada estandar un caracter seguido del caracter sep Y var c0, c4$ char; begin c $1 5eadRe+; ,rite -c.; c0 $1 5eadRe+; ,rite -c0.; oL $1 c0 1 sep; end; procedure Leer)ec>f'har -var s$ )ec>f'har; cant$ atural; var oL$ Hoolean.; X 'onstru+e una secuencia de cant caracteres provistos por el procedimeinto Leer'ar. )i cant [ 3a@ trunca. Y var bien$ Hoolean; i$ atural; ch, sep$ 'har; begin ,riteln -G8ngrese G,cant, G caracteres separados por blancos. "nter para terminar G.; ,rite -G [ G.; 8nic)ec'har -s.; i $1 0; oL $1 true;

sep $1 "spacio; ,hile oL and -i Z1 cant. and not Llena -s. do begin if i 1 cant then sep $1 "nter; Leer'ar -ch, bien, sep.; i $1 i=0; oL $1 oL and bien; if oL then 8ns'ar -s, ch.; end; end; procedure Leer'ant -var n$ atural.; X Lee de la entrada estandar un natural Z1 3a@ Y begin repeat ,riteln -G8ngrese cantidad de caracteres -Z1G,3a@,G.G.; ,rite -G [ G.; readln -n.; until n Z1 3a@; end; procedure 'ontinuar -var seguir$ Hoolean.; var car$ 'har; begin ,riteln; ,riteln -G>tro ( -sKn.G.; ,rite -G [ G.; car $1 5eadRe+; ,riteln -car.; seguir $1 car in `GsG,G)Ga; end; var cant$ atural; cars$ )ec>f'har; inds$ )ec>f8nd; seguir, oL$ boolean; begin repeat 'lr)cr; Leer'ant -cant.; Leer)ec>f'har -cars, cant, oL.; if oL then begin 8nd)el)ort -cars, inds.; ,riteln; Irite)orted -inds, cars.; end else begin ,riteln; ,riteln -G"rror en los datosG.; end;

'ontinuar -seguir.; until not seguir; end. QBasic Dbasic es un lenguaje de alto nivel, el cual consiste en instrucciones que los humanos pueden relacionar + entender. "l compilador de Dbasic se encarga de traducir el mismo a lenguaje de mquina. 2n programa es una secuencia de instrucciones. "l proceso de ejecutar esas instrucciones se llama correr el programa. Los programas contienen las funciones de entrada, procesamiento + salida. La persona que resuelve problemas mediante escribir programas en la computadora se conoce como programador. :espuAs de anali*ar el problema + desarrollar un plan para solucionarlo, escribe + prueba el programa que instru+e a la computadora como llevar a cabo el plan. "l procedimiento que reali*a el programador se define como !problem solving!. /ero es necesario especificar que un programador + un usuario no son lo mismo. 2n usuario es cualquier persona que use el programa. Ejemplo de qbasic, para hacer una calculadora :83 total A) :>2HL" :83 number A) :>2HL" :83 second umber A) :>2HL" :83 more A) )658 U :83 more umbers A) )658 U :83 operation A) )658 U total 1 ? more 1 !+! more umbers 1 !c! 'L) IE8L" more 1 !+! 8 /26 !"nter the first number!; number total 1 number IE8L" more umbers 1 !c! '>L>5 09 /58 6 !6he total is$!; total '>L>5 Q /58 6 !)elect an operation! '>L>5 4 /58 6 !-=.! '>L>5 ; /58 6 !-J.! '>L>5 0 /58 6 !-@.! '>L>5 9 8 /26 !-K.!; operation '>L>5 Q 'L) 8C operation 1 !=! 6E" 5"3 ,here ,e do additions

/58 6 !"nter the number to Add to!; total 8 /26 second umber total 1 second umber = total '>L>5 09 /58 6 !6he total is no,$!; total '>L>5 Q "L)" 8C operation 1 !J! 6E" 5"3 subtraction /58 6 !"nter the number to )ubtract from!; total 8 /26 second umber total 1 total J second umber '>L>5 09 /58 6 !6he total is no,$!; total '>L>5 Q "L)" 8C operation 1 !@! 6E" 5"3 multiplication /58 6 !"nter the number to 3ultipl+!; total; !b+! 8 /26 second umber total 1 second umber < total 5"3 < is the multiplication sign in programs '>L>5 09 /58 6 !6he total is no,$!; total '>L>5 Q "L)" 8C operation 1 !K! 6E" 5"3 division /58 6 !"nter the number to :ivide!; total; !b+! 8 /26 second umber 8C second umber 1 ? 6E" '>L>5 9 /58 6 !Wou cannot divide b+ *ero! '>L>5 Q "L)" total 1 total K second umber 5"3 K is the division sign in programs " : 8C '>L>5 09 /58 6 !6he total is no,$!; total '>L>5 Q "L)" /58 6 !+ou must select an operation! " : 8C " : 8C " : 8C " : 8C 8 /26 !:o +ou ,ish to continue -c. or start ,ith ne, numbers -n.!;more umbers 'L) I" :

'>L>5 09 /58 6 !6he grand total is$!; total '>L>5 Q 8 /26 !:o +ou ,ish to maLe more calculations -+ J n.!; more more umbers 1 !c! 5"3 if ,e donGt put !more umbers! bacL to +, it ,ill al,a+s 5"3 come bacL to !:o +ou ,ish to maLe more calculations! and never 5"3 asL for numbers again 5"3 -tr+ it. total 1 ? 5"3 if ,e donGt reset the total to ?, it ,ill just 5"3 Leep on adding to the total I" : " : inux Linu@ es una implementacin del sistema operativo 2 8O -uno ms de entre los numerosos clnicos del histrico 2ni@., pero con la originalidad de ser gratuito + a la ve* mu+ potente, que sale mu+ bien parado -no pocas veces victorioso. al compararlo con las versiones comerciales para sistemas de ma+or envergadura + por tanto tericamente superiores. 'omen* como pro+ecto personal del bentonces estudianteJ Linus 6orvalds, quien tom como punto de partida otro viejo conocido, el 3ini@ de And+. ). 6anenbaum -profesor de sistemas operativos que cre su propio sistema operativo 2ni@ en /'s O6 para usarlo en su docencia.. Actualmente Linus lo sigue desarrollando, pero a estas alturas el principal autor es la red 8nternet, desde donde una gigantesca familia de programadores + usuarios aportan diariamente su tiempo aumentando sus prestaciones + dando informacin + soporte tAcnico m#tuo. La versin original J+ aun predominanteJ comen* para /'s compatibles -8ntel 7SB + superiores., e@istiendo tambiAn en desarrollo versiones para prcticamente todo tipo de plataformas$ /o,er/' Zhttp$KK,,,.cs.us.esKarchiveKlinu@ppcK[, )parc Zhttp$KK,,,.geog.ubc.caKsparclinu@.html[, Alpha Zhttp$KK,,,.a*starnet.comKca@plinu@[, 3ips Zhttp$KK,,,.fnet.frKlinu@JmipsK[, etc. :e todas ellas la ms reciente en este momento es la versin para /o,er3ac Zhttp$KK,,,.mLlinu@.org[ -el /o,er/' de Apple. basada en el microLernel 3ach 7.? + de la que +a ha+ una distribucin para desarrolladores avalada directamente por Apple + >)C pero conservando el esp%ritu -gratuito, de libre distribucin, etc. de la version original. 2n servidor la acaba de probar hace unos d%as + se ha llevado una grata sorpresa -a#n tendr muuuchos fallos, pero para ser una primer%sima versin + el poco tiempo que lleva en marcha, ha avan*ado ms de lo que me esperaba.. Ejemplo de linux: 'ompilar el Rernel :ado que un disLette slo almacena 0.99 3egab+tes -099? Rilob+tes. de datos, no puedes el mismo Lernel que utili*as al disLette. /rimero debes conseguir los fuentes del n#cleo + descomprimirlos en KusrKsrcKlinu@. Luego ejecuta la siguiente orden desde el directorio KusrKsrcKlinu@$

maLe config 'onfigura solamente aquello que realmente necesites. Wo, personalmente, slo configuro el soporte para !e@t4!, soporte para la disquetera -flopp+ disL., + soporte para !///!. 6us elecciones pueden se diferentes en funcin de lo que decidas incluir. Ahora introduce el siguiente comando$ maLe dep; maLe clean; maLe *8mage dmaLe *8mage es mu+ importantee 'omprime el Lernel definitivo. :espuAs de que termine la compilacin, debers buscar el nuevo n#cleo en KusrKsrcKlinu@KarchKi7SBKboot bajo el nombre de *8mage. "l sistema de ficheros$ o es solamente un conjunto de ficheros Ahora hemos de crear el sistema de ficheros -en inglAs$ files+stem, fs. para el disLette. "n ve* de copiar los ficheros tal cual directamente al disLette, los comprimiremos antes de copiarlos. "sto nos har un poco ms dif%cil la faena de modificar todo permanentemente. /rimero tecleamos el siguiente comando$ dd if1KdevK*ero of1`:"V8'"a bs10L count17??? :onde `:"V8'"a es !lugar! en el disco duro donde vas a guardar el sistema de ficheros descomprimido. Luego, introduce el siguiente comando + pulsa " 6"5, sustitu+endo `:"V8'"a por el directorio en tu disco duro donde ests guardando el sistema de ficheros descomprimido$ mLe4fs Jm ? `:"V8'"a )i maLe4fs te pregunta si realmente quieres hacer esto -:o +ou reall+ ,ant to do this(., acepta tecleando !+! -+es.. :espuAs tenemos que montar este sistema de ficheros que hemos creado. /ara ello, el n#cleo que utilices tiene que permitir !montar ficheros!, en otras palabras, ha de tener habilitada la posibilidad de !loopbacL devices!. /ara ello has de compilar el n#cleo de tu mquina -no el n#cleo que hemos creado, sino el de tu propia mquina. con la opcin$ LoopbacL device support -'> C8UMHLRM:"VML>>/. `3KnK+K(a bien como mdulo -3. o en el mismo n#cleo -W.. )i lo compilas como mdulo -lo ms recomendable. luego tienes que insertar el mdulo modprobe loop e o olvides rearrancar la mquina si has tenido que recompilar el n#cleoe mount Jt e@t4 :"V8'" Kmnt )i se queja la orden mount puedes intentar con la siguiente orden$ mount Jo loop Jt e@t4 :"V8'" Kmnt

Ahora debes copiar todos los ficheros que necesites en el nuevo sistema de ficheros. /rimero, ponte en el directorio Kmnt, -cd Kmnt., + crea los siguientes directorios$ Kdev Kpro Ketc Kbin Klib Kmnt Kusr Ahora crearemos el directorio Kdev tecleando lo siguiente$ cp Jdp5 Kdev KmntKdev )i se te acaban los iJnodos del disLette, puedes ir a KmntKdev + borrar los archivos de dispositivo que no necesites. 'uando acabes de copiar los ficheros necesarios para Kdev, ves a Ketc. /ara estar seguro copia todos los ficheros de Ketc a KmntKetc$ cp Jdp5 Ketc KmntKetc Luego copia todo del directorio Klib en Kmnt$ cp Jdp5 Klib KmntKlib /ara el directorio Kbin, copia slo aquello que creas que necesitas en KmntKbin. 'opiar todo a tu disLette Ahora hemos de copiar todo en elKlos disLetteKs. /ara hacer esto, debemos comprimir ahora el sistema de ficheros tecleando las siguientes ordenes$ cd K umount Kmnt dd if1`:"V8'"a bs10L f g*ip JP [ rootfs.g* Ahora es importante comprobar el tamaFo del n#cleo. /onte en KusrKsrcKlinu@KarchKi7SBKboot + teclea !ls Jl!. Luego divide el tamaFo del n#cleo entre 0?49. /or ejemplo, si el tamaFo es de 4;???? b+tes, entonces son 49; RH. "n adelante, reempla*a `5>>6H"U8 a en las ordenes que apare*ca por el n#mero total de Lilob+tes que has calculado. Ahora copia el Lernel al disLette usando el siguiente comando$ dd if1*8mage of1KdevKfd? "ste comando grabar el Lernel en el disLette. Luego introduce el siguiente comando para que el Lernel pueda encontrar la ra%* del sistema de ficheros en el disLette. rdev KdevKfd? KdevKfd?

Ahora tendrs que hacer un pequeFo clculo en he@adecimal. )uma 9??? al equivalente en he@adecimal de `5>>6H"U8 a -que en nuestro ejemplo es C;.. 'onvierte el resultado a decimal + teclea el siguiente comando, sustitu+endo 0BB4P con el resultado que t# has obtenido$ rdev Jr KdevKfd? 0BB4P Cinalmente, teclea lo siguiente para copiar el sistema de ficheros al disLette$ dd if1Krootfs.g* of1KdevKfd? bs10L seeL1`5>>6H"U8 a "l sistema de ficheros ra%* ser copiado al disLette justo despuAs del Lernel. dWa lo tienese /ara el segundo disLette, el proceso es ms fcil. 'opia los ficheros que quieras en el disLette. o obstante, para poder usar los ficheros que ha+ en el segundo disco, tendrs que entrar lo siguiente despuAs de arrancar con el disLette$ mount KdevKfd? Kusr

Ensamblador 'uando abstraemos los opcodes + los sustituimos por una palabra que sea una clave de su significado, a la cual com#nmente se le conoce como mnemnico , tenemos el concepto de Lenguaje "nsamblador . As%, podemos definir simplemente al Lenguaje "nsamblador de la siguiente forma$ Lenguaje "nsamblador es la primera abstraccin del Lenguaje de 3quina , consistente en asociar a los opcodes palabras clave que faciliten su uso por parte del programador 'omo se puede ver, el Lenguaje "nsamblador es directamente traducible al Lenguaje de 3quina, + viceversa; simplemente, es una abstraccin que facilita su uso para los seres humanos. /or otro lado, la computadora no entiende directamente al Lenguaje "nsamblador; es necesario traducirle a Lenguaje de 3quina. >riginalmente, este proceso se hac%a a mano, usando para ello hojas donde se escrib%an tablas de programa similares al ejemplo de la calculadora que vimos arriba . /ero, al ser tan directa la traduccin, pronto aparecieron los programas "nsambladores, que son traductores que convierten el cdigo fuente -en Lenguaje "nsamblador. a cdigo objeto -es decir, a Lenguaje de 3quina.. 2na caracter%stica que ha+ que resaltar, es que al depender estos lenguajes del hard,are, ha+ un distinto Lenguaje de 3quina -+, por consiguiente, un distinto Lenguaje "nsamblador. para cada '/2. /or ejemplo, podemos mencionar tres lenguajes completamente diferentes, que sin embargo vienen de la aplicacin de los conceptos anteriores$ 0.Lenguaje "nsamblador de la familia 8ntel S?@SB 4.Lenguaje "nsamblador de la familia 3otorola BS??? 7.Lenguaje "nsamblador del procesador />I"5, usado en las 8H3 5)KB???. 6enemos 7 fabricantes distintos, compitiendo entre s% + cada uno aplicando conceptos distintos en la manufactura de sus procesadores, su arquitectura + programacin; todos estos aspectos, influ+en en que el lenguaje de mquina + ensamblador cambie bastante. Ventajas + desventajas del Lenguaje "nsamblador 2na ve* que hemos visto la evolucin de los lenguajes, cabe preguntarse$ &"n estos tiempos !modernos!, para quA quiero el Lenguaje "nsamblador( "l proceso de evolucin trajo consigo algunas desventajas, que ahora veremos como las ventajas de usar el Lenguaje "nsamblador, respecto a un lenguaje de alto nivel$ 0.Velocidad 4."ficiencia de tamaFo 7.Cle@ibilidad /or otro lado, al ser un lenguaje ms primitivo, el "nsamblador tiene ciertas desventajas respecto a los lenguajes de alto nivel$

0.6iempo de programacin 4./rogramas fuente grandes 7./eligro de afectar recursos inesperadamente 9.Calta de portabilidad Velocidad "l proceso de traduccin que reali*an los intArpretes, implica un proceso de cmputo adicional al que el programador quiere reali*ar. /or ello, nos encontraremos con que un intArprete es siempre ms lento que reali*ar la misma accin en Lenguaje "nsamblador, simplemente porque tiene el costo adicional de estar traduciendo el programa, cada ve* que lo ejecutamos. :e ah% nacieron los compiladores, que son mucho ms rpidos que los intArpretes, pues hacen la traduccin una ve* + dejan el cdigo objeto, que +a es Lenguaje de 3quina, + se puede ejecutar mu+ rpidamente. Aunque el proceso de traduccin es ms complejo + costoso que el de ensamblar un programa, normalmente podemos despreciarlo, contra las ventajas de codificar el programa ms rpidamente. )in embargo, la ma+or parte de las veces, el cdigo generado por un compilador es menos eficiente que el cdigo equivalente que un programador escribir%a. La ra*n es que el compilador no tiene tanta inteligencia, + requiere ser capa* de crear cdigo genArico, que sirva tanto para un programa como para otro; en cambio, un programador humano puede aprovechar las caracter%sticas espec%ficas del problema, reduciendo la generalidad pero al mismo tiempo, no desperdicia ninguna instruccin, no hace ning#n proceso que no sea necesario. /ara darnos una idea, en una /', + suponiendo que todos son buenos programadores, un programa para ordenar una lista tardar cerca de 4? veces ms en Visual Hasic -un intArprete., + 4 veces ms en ' -un compilador., que el equivalente en "nsamblador. /or ello, cuando es cr%tica la velocidad del programa, "nsamblador se vuelve un candidato lgico como lenguaje. Ahora bien, esto no es un absoluto; un programa bien hecho en ' puede ser muchas veces ms rpido que un programa mal hecho en "nsamblador; sigue siendo sumamente importante la eleccin apropiada de algoritmos + estructuras de datos. /or ello, se recomienda buscar optimi*ar primero estos aspectos, en el lenguaje que se desee, + solamente usar "nsamblador cuando se requiere ms optimi*acin + no se puede lograr por estos medios. 6amaFo /or las mismas ra*ones que vimos en el aspecto de velocidad, los compiladores e intArpretes generan ms cdigo mquina del necesario; por ello, el programa ejecutable crece. As%, cuando es importante reducir el tamaFo del ejecutable, mejorando el uso de la memoria + teniendo tambiAn beneficios en velocidad, puede convenir usar el lenguaje "nsamblador. "ntre los programas que es cr%tico el uso m%nimo de memoria, tenemos a los virus + manejadores de dispositivos -drivers.. 3uchos de ellos, por supuesto, estn escritos en lenguaje "nsamblador. Cle@ibilidad

Las ra*ones anteriores son cuestin de grado$ podemos hacer las cosas en otro lenguaje, pero queremos hacerlas ms eficientemente. /ero todos los lenguajes de alto nivel tienen limitantes en el control; al hacer abstracciones, limitan su propia capacidad. "s decir, e@isten tareas que la mquina puede hacer, pero que un lenguaje de alto nivel no permite. /or ejemplo, en Visual Hasic no es posible cambiar la resolucin del monitor a medio programa; es una limitante, impuesta por la abstraccin del U28 Iindo,s. "n cambio, en ensamblador es sumamente sencillo, pues tenemos el acceso directo al hard,are del monitor. 5esumiendo, la fle@ibilidad consiste en reconocer el hecho de que 6odo lo que puede hacerse con una mquina, puede hacerse en el lenguaje ensamblador de esta mquina; los lenguajes de alto nivel tienen en una u otra forma limitantes para e@plotar al m@imo los recursos de la mquina. 6iempo de programacin Al ser de bajo nivel, el Lenguaje "nsamblador requiere ms instrucciones para reali*ar el mismo proceso, en comparacin con un lenguaje de alto nivel. /or otro lado, requiere de ms cuidado por parte del programador, pues es propenso a que los errores de lgica se reflejen ms fuertemente en la ejecucin. /or todo esto, es ms lento el desarrollo de programas comparables en Lenguaje "nsamblador que en un lenguaje de alto nivel, pues el programador go*a de una menor abstraccin. /rogramas fuente grandes /or las mismas ra*ones que aumenta el tiempo, crecen los programas fuentes; simplemente, requerimos ms instrucciones primitivas para describir procesos equivalentes. "sto es una desventaja porque dificulta el mantenimiento de los programas, + nuevamente reduce la productividad de los programadores. /eligro de afectar recursos inesperadamente 6enemos la ventaja de que todo lo que se puede hacer en la mquina, se puede hacer con el Lenguaje "nsamblador -fle@ibilidad.. "l problema es que todo error que podamos cometer, o todo riesgo que podamos tener, podemos tenerlo tambiAn en este Lenguaje. :icho de otra forma, tener mucho poder es #til pero tambiAn es peligroso. "n la vida prctica, afortunadamente no ocurre mucho; sin embargo, al programar en este lenguaje vern que es mucho ms com#n que la mquina se !cuelgue!, !bloquee! o !se le va+a el avin!; + que se reiniciali*e. &/or quA(, porque con este lenguaje es perfectamente posible -+ sencillo. reali*ar secuencias de instrucciones invlidas, que normalmente no aparecen al usar un lenguaje de alto nivel. "n ciertos casos e@tremos, puede llegarse a sobreescribir informacin del '3>) de la mquina -no he visto efectos ms riesgosos.; pero, si no la conservamos, esto puede causar que dejemos de !ver! el disco duro, junto con toda su informacin. Calta de portabilidad

'omo +a se mencion, e@iste un lenguaje ensamblador para cada mquina; por ello, evidentemente no es una seleccin apropiada de lenguaje cuando deseamos codificar en una mquina + luego llevar los programas a otros sistemas operativos o modelos de computadoras. )i bien esto es un problema general a todos los lenguajes, es mucho ms notorio en ensamblador$ +o puedo reutili*ar un P?] o ms del cdigo que desarrollo en !'!, en una /', al llevarlo a una 5)KB??? con 2 8O, + lo mismo si despuAs lo llevo a una 3acintosh, siempre + cuando estA bien hecho + siga los estndares de !'!, + los principios de la programacin estructurada. "n cambio, si escribimos el programa en "nsamblador de la /', por bien que lo desarrollemos + muchos estndares que sigamos, tendremos prcticamente que reescribir el 0?? ] del cdigo al llevarlo a 2 8O, + otra ve* lo mismo al llevarlo a 3ac. !U"#$ % &#'"(!$E !$)E*"+*! ,,,-so.tdo,nload-com-ar

You might also like