Generacion de Sistemas Operativos y Ruby
Generacion de Sistemas Operativos y Ruby
Generacion de Sistemas Operativos y Ruby
El computador ejecuta programas que lee de una cinta y escribe los resultados en
otra cinta.
Una de las principales caractersticas de los sistemas operativos de hoy, que aparecen en esta
generacin es la Multiprogramacin. Esta tcnica consiste en particionar la memoria de
manera de contener simultneamente muchos trabajos, lo que permite independencia en las
acciones de la mquina. Por ejemplo, si un trabajo est esperando por Entrada/Salida, otro
trabajo puede estar utilizando la CPU. Con la utilizacin de la multiprogramacin, se mejora el
tiempo de utilizacin de la CPU, pero se crean problemas de proteccin y seguridad, debido al
particionamiento de la memoria.
Otra caracterstica importante de los sistemas operativos de esta generacin es la aparicin
de la tcnica de Spooling (Operacin simultnea y en lnea de perifricos ). Esta consiste en
la capacidad de leer los trabajos de cinta al disco, haciendo posible que a medida que hubiera
espacio en memoria se poda pasar al siguiente trabajo. De esta manera las operaciones de
perifricos se realizan en paralelo con la utilizacin de la CPU.
Durante esta generacin aparecen los primeros sistemas de Tiempo compartido, esto
consiste en que se le asigna a cada trabajo un tiempo fijo de utilizacin de CPU, este perodo
de tiempo (denominado time slot) es pequeo, pues el uso de tiempo compartido tiene como
objetivo manejar a distintos usuarios mediante terminales que tengan la ilusin de estar
ocupando la mquina como si fueran nicos. El primer sistema operativo importante de tiempo
compartido es el (CTSS) y fue desarrollado en MIT (Massachusetts Institute of
Technology).
Otros de los sistemas que surgi en este periodo es MULTICS, el que sirvi de base para el
desarrollo del sistema UNIX.
RUBY
Ruby es un lenguaje de programacin interpretado, reflexivo y orientado a objetos, creado por
el programador japons Yukihiro "Matz" Matsumoto, quien comenz a trabajar en Ruby
en 1993, y lo present pblicamente en 1995. Combina una sintaxis inspirada
en Python yPerl con caractersticas de programacin orientada a objetos similares a Smalltalk.
Comparte tambin funcionalidad con otros lenguajes de programacin
como Lisp, Lua, Dylan y CLU. Ruby es un lenguaje de programacin interpretado en una sola
pasada y su implementacin oficial es distribuida bajo una licencia de software libre.
Historia[editar]
El lenguaje fue creado por Yukihiro "Matz" Matsumoto, quien empez a trabajar en Ruby el 24
de febrero de 1993, y lo present al pblico en el ao 1995. En el crculo de amigos de
Matsumoto se le puso el nombre de "Ruby" (en espaol rub) como broma aludiendo al
lenguaje de programacin "Perl" (perla). La ltima versin estable de la rama 1.8 es la
1.8.7_p248, de la rama 1.9 es la 1.9.2_p180 . La versin en 1.9 que incorpora mejoras
sustanciales en el rendimiento del lenguaje, que se espera queden reflejadas en la prxima
versin estable de produccin del lenguaje, Ruby 1.9.0.1 Diferencias en rendimiento entre la
actual implementacin de Ruby (1.8.6) y otros lenguajes de programacin ms arraigados han
llevado al desarrollo de varias mquinas virtuales para Ruby. Entre sas se encuentra JRuby,
un intento de llevar Ruby a la plataforma Java, y Rubinius, un intrprete modelado basado en
las mquinas virtuales de Smalltalk. Los principales desarrolladores han apoyado la mquina
virtual proporcionada por el proyecto YARV, que se fusion en el rbol de cdigo fuente de
Ruby el31 de diciembre de 2006, y se dio a conocer como Ruby 1.9
Objetivo[editar]
El creador del lenguaje, Yukihiro "Matz" Matsumoto, ha dicho que Ruby est diseado para la
productividad y la diversin del desarrollador, siguiendo los principios de una buena interfaz de
usuario.1 Sostiene que el diseo de sistemas necesita enfatizar las necesidades humanas ms
que las de la mquina:2
A menudo la gente, especialmente los ingenieros en computacin, se centran en las mquinas. Ellos
piensan, "Haciendo esto, la mquina funcionar ms rpido. Haciendo esto, la mquina funcionar de
manera ms eficiente. Haciendo esto..." Estn centrados en las mquinas, pero en realidad necesitamos
centrarnos en las personas, en cmo hacen programas o cmo manejan las aplicaciones en los
ordenadores. Nosotros somos los jefes. Ellos son los esclavos.
Ruby sigue el "principio de la menor sorpresa", lo que significa que el lenguaje debe
comportarse de tal manera que minimice la confusin de los usuarios experimentados. Matz
ha dicho que su principal objetivo era hacer un lenguaje que le divirtiera a l mismo,
minimizando el trabajo de programacin y la posible confusin. l ha dicho que no ha aplicado
el principio de menor sorpresa al diseo de Ruby,3 pero sin embargo la frase se ha asociado al
lenguaje de programacin Ruby. La frase en s misma ha sido fuente de controversia, ya que
los no iniciados pueden tomarla como que las caractersticas de Ruby intentan ser similares a
las caractersticas de otros lenguajes conocidos. En mayo de 2005 en una discusin en el
grupo de noticias comp.lang.ruby, Matz trat de distanciar Ruby de la mencionada filosofa,
explicando que cualquier eleccin de diseo ser sorprendente para alguien, y que l usa un
estndar personal de evaluacin de la sorpresa. Si ese estndar personal se mantiene
consistente habr pocas sorpresas para aquellos familiarizados con el estndar.[1]
Matz lo defini de esta manera en una entrevista [2]:
Todo el mundo tiene un pasado personal. Alguien puede venir de Python, otro de Perl, y pueden verse
sorprendidos por distintos aspectos del lenguaje. Entonces podran decir 'Estoy sorprendido por esta
caracterstica del lenguaje, as que Ruby viola el principio de la menor sorpresa.' Espera, espera. El
principio de la menor sorpresa no es slo para ti. El principio de la menor sorpresa significa el principio
de 'mi' menor sorpresa. Y significa el principio de la menor sorpresa despus de que aprendes bien
Ruby. Por ejemplo, fui programador de C++ antes de empezar a disear Ruby. Program
exclusivamente en C++ durante dos o tres aos. Y despus de dos aos de programar en C++, todava
me sorprenda.