Seguramente muchos de vosotros habréis oído hablar de Midori, lo que sería el siguiente paso de Windows. Un nuevo sistema operativo escrito desde cero, con un nuevo núcleo y escrito con un lenguaje moderno. Tan moderno, que ni siquiera existe todavía como tal.
El lenguaje, que tendría como nombre en clave M#, se basa en C# y está específicamente diseñado para la programación de sistemas operativos, capaz de llegar hasta el más bajo nivel pero sin perder las abstracciones útiles y necesarias para crear programas más comunes, como una aplicación para el usuario.
En un artículo en su blog, Joe Duffy, uno de los desarrolladores de Midori, ha compartido detalles muy interesantes sobre este futuro lenguaje. La idea principal del proyecto es crear un lenguaje con tipado seguro (type-safety) como C#, pero con muy buen rendimiento, como C++.
Gran parte del esfuerzo en rendimiento va en modificar dos áreas de C#: el colector de basura y el sistema de tipado. A grandes rasgos, el colector de basura de C# para un programa cada X tiempo, busca objetos que ya no se estén usando (por ejemplo, tu navegador ha guardado varias imágenes en memoria RAM pero ha dejado de necesitarlas) y libera su memoria. Para los desarrolladores es un sistema que libera de mucha complejidad a la hora de gestionar la memoria, pero como podréis imaginar es más lento. M# sería más inteligente en este sentido, tomando prestadas varias ideas de C++ para entender mejor el ciclo de vida de los objetos (cuándo se empiezan a usar y cuándo dejan de necesitarse) y así ser más eficiente a la hora de reservar y liberar memoria sin que el colector de basura tenga que entrar en juego.
Por otra parte, las modificaciones en el sistema de tipado buscan afrontar uno de los problemas que tienen ahora mismo la mayoría de lenguajes "antiguos" (léase: diseñados antes del 2005), el paralelismo. Ahora mismo, los ordenadores no crecen a lo alto - velocidad del procesador - sino a lo ancho, con más núcleos en paralelo. Crear programas que aprovechen bien ese procesado en paralelo no es fácil y hay muchos detalles sutiles, especialmente cuando se comparten datos entre varios procesos o hilos.
M# traería conceptos de los lenguajes de programación funcionales, principalmente inmutabilidad de los objetos y control de efectos secundarios en los métodos, que harían más sencillo para los programadores y para el compilador crear varios hilos para aprovecharse de los múltiples núcleos de los ordenadores y así mejorar mucho el rendimiento.
Además, M# también traería un nuevo sistema de control de errores: rápido, sencillo de usar, eficiente, que haga uso de los contratos de código para restringir el comportamiento del programa a los caminos válidos y fácil de entender para que el compilador pueda realizar optimizaciones. Estaríamos hablando así de un lenguaje que facilita crear programas más seguros y robustos, algo muy importante si queremos usarlo para un sistema operativo.
Basta con la jerga técnica: ¿qué significa esto?
Después de sumergirnos un poco en el mundo de los lenguajes de programación, ¿qué significa todo esto?
Lo primero es que Microsoft parece tomarse muy en serio la siguiente etapa de Windows. Mary Jo Foley dice que Midori ha pasado de ser un proyecto sólo de investigación a estar bajo el ala de Terry Myerson, en el grupo de Unified Operating System. M# y Midori no son sólo un experimento, sino el camino que tiene que seguir Microsoft.
¿Tiene sentido preparar otro Windows? Desde luego. Como cualquier otro programa, un sistema operativo tiene una vida limitada. El mundo es muy distinto ahora de cuando se diseñó Windows, y por muy flexible que sea el sistema, tantos cambios a lo largo de los años para adaptarlo a los nuevos escenarios acaban pasando factura y empieza a ser más rentable empezar desde cero (algo que nos gusta mucho a los informáticos).
Por supuesto, Midori no estará ni a corto ni a medio plazo. Pero cuando se finalice (si es que finalmente se lleva a cabo, que tampoco es seguro) será un sistema que, estando enfocado a sistemas paralelos y a la nube desde el principio, pondrá a Microsoft a la cabeza en el mundo de los sistemas operativos, al menos a nivel técnico y de capacidades.
En cuanto a M#, si tal y como prometen fuere una extensión de C# sin cambios no compatibles, muchos desarrolladores podrían pasarse a él sin problemas. Y si lo liberan completamente desde el primer momento, cosa que también han prometido, puede que lo consigan sacar del 'círculo Microsoft' en el que C# está atrapado ahora mismo, expandirlo y así obtener una ventaja enorme frente a otros lenguajes y compañías.
De momento, parece que el lenguaje tendrá algo de futuro, y deberíamos conocer más detalles en las próximas semanas. En cuanto a Midori, que recordemos que ni siquiera es oficial, todavía tardaremos bastante en saber algo más de él, pero este tipo de historias nos van indicando hacia dónde se dirige Microsoft.
Ver 15 comentarios
15 comentarios
Alejandro Herrero
Me gusta y no me gusta.
¿Empezar desde cero? Tiene todo el sentido por lo que el propio artículo indica, el lastre que en cierto modo supone ir arrastrando compatibilidades hacia atrás, implementando nuevas funciones pero siempre con la mirada puesta en el pasado, lo que limita la propia velocidad y calidad de los avances.
Entiendo que el lenguaje empleado en la programación de un hipotético nuevo windows no tiene por qué implicar que el software actual deje de funcionar. Pero, si es así ¿Donde quedará ese hipotético nuevo rendimiento?. Si aplicaciones antiguas, con código antiguo, se ejecutan en el nuevo windows deberá haber una capa que compatibilice ambos sistemas, y solo el nuevo software aprovechará las hipotéticas nuevas ventajas. Si esto ocurre dudo mucho que el beneficio sea apreciable.
Pero si ese nuevo Windows es de verdad un Windows desde cero, asumiendo que está mejor programado, de forma más optimizada, racional y eficiente con los actuales recursos hardware, entonces para aprovechar todo su hipotético nuevo potencial el software que corriera sobre él debería ser específico, nuevo, escrito desde cero, o bien adaptado desde el código actual con las optimizaciones necesarias para que funcionase en el nuevo sistema. Pero, me pregunto, ¿todos los cambios que proporcionaría ese nuevo windows realmente se aprovecharían simplemente "migrando" un código? Me cuesta creerlo. Por el contrario sí entiendo que un código reescrito desde cero sea capaz de ejecutarse en el nuevo SO de forma mucho más óptima.
Entonces me asaltan dudas.
-¿Escrito desde cero implica nuevo software? Si es así los inicios serán difíciles, las migraciones lentísimas, aunque el nuevo SO sea notablemente mejor. Windows tiene la cuota que tiene precisamente por ser compatible hacia atrás a unos niveles increibles. Igual de cierto es que Windows tiene los lastres que tiene precisamente por esto. Me encantaría un SO reescrito desde cero, que aprovechara mucho mejor el hardware de nuestros pc´s y gestionara todo de forma más eficiente, pero ¿desde cero? Uff que yuyu
-¿Escrito desde cero implica compatibilidad con software antiguo? No me gusta esta idea, si el nuevo windows ejecuta aplicaciones antiguas "sin más" entonces eso de "desde cero" queda en nada o casi nada.
-¿Escito desde cero significa recompilar código existente para adaptarlo al nuevo SO? Tampoco me vuelve loco la idea. Es un término medio de las dos posibilidades anteriores. Software escrito específicamente aprovechará el hipotético nuevo rendimiento y posibilidades del nuevo SO, mientras que el software recompilado se ejecutaría sin problemas (aunque seguramente no de forma tan eficiente).
Puestos a seguir haciendo elucubraciones creo que lo más razonable (empresariamente, no informáticamente) es escoger la segunda opción. Se podrían hacer migraciones a relativo buen ritmo,pues, teóricamente, las grandes empresas de software recompilarían sus aplicaciones para el nuevo Windows, y las antiguas no dejarían de funcionar. Se instauraría una nueva filosofía y, en principio, con el tiempo, nuevas apliaciones serían programadas desde cero. Aunque, por otro lado pienso y me digo a mi mismo ¿Merece la pena el esfuerzo? Pues es ingente el trabajo a realizar comenzando desde cero. No, no lo creo, es más, no creo que ocurra. ¿Alguien se imagina la Suite Adobe CC reprogramada desde cero? ¿Estaría justificado ese esfuerzo con el beneficio obtenido? Y cuando hablo de justificado me refiero a monetariamente, claro.
La idea la veo idílica y platónica, y, técnicamente hablando, necesaria, aunque mucho me temo que todo quede en muchísimo menos de lo que podríamos esperar y, una vez más, por el mismo motivo de siempre, "lo que dejamos atrás". Quizás demos un pasito, si, pero algo así como el que se dio con los sistemas de 64 bits, que, aún hoy día, tras un XP 64, Vista 64, W7 64, y W8 X64 sigue ejecutando cientos de miles de aplicaciones de 32bits, y todo ello pese a que ya es raro ver un equipo actual con un sistema de 32bits.
Me gustaría verlo, tocarlo, vivirlo, en todo su esplendor, pero creo que para que realmente sea efectivo, para que de verdad se empiece desde cero y se olvide lo anterior sería imprescindible que este nuevo SO conviviera en paralelo con el Windows "tradicional" que correspondiera, que ambos evolucionaran de forma paralela, porque solo así la evolución sería posible, pues todo lo que sea mirar atrás en informática es colgarte una pesa en el pie.
Saludos :)
Contr3ras
Me preocupa lo del nuevo núcleo, si abandonaron Windows Phone 7 por no tener el núcleo NT que harán cuando salga el "nuevo" Windows ¿abandonar WP8?
También me agrada la idea de un Windows desde cero, pero a la vez no tanto.
Cuanto a la compatibilidad eso no es problema, Windows 8 es capaz de ejecutar mayoría de software del viejo mundo (Windows 95/98 no tienen núcleo NT).
Windows es popular en parte por su gran cantidad de programas disponibles, no creo que Microsoft omita eso.
emyzz
Pues supongo que será el próximo Windows 9. No se sabe cuando saldrá ni nada vamos...pero esta claro que a corto plazo no creo porque si están ahora mismo creando el ecosistema de Windows 8 para el 2015, no tendría sentido destruirlo si hablamos de que los dispositivos actuales no se pudieran actualizar. Cosa que de llegar a suceder que salga el W9 pronto no creo que dejen tirados a la gente básicamente porque la Xbox One acaba de salir y no pueden sacar otra gen de consola así porque sí para crear ecosistema con W9.
Pero vamos, que bien por Microsoft por tratar de buscar cosas nuevas y no dormirse (más de lo que de cara al público parece que está)
joex
La idea de empezar todo de cero no es para nada mala, gracias a las ventajas que esta traera, pero es obvio que el tema que lo complica es la retrocompatibilidad, un nuevo Windows, donde a pesar de tener todas las ventajas que quieras, no tenga compatibilidad con programas para Windows anteriores, va a traer una lluvia de críticas imparable, se quiera o no.
Lo mejor seria, todo nuevo tal y como se plantea, pero manteniendo la compatibilidad hacia atras, no asi sugiriendola, si no impulsando el desarrollo en el nuevo lenguaje.
aplatanado
Existen muchos aspectos de Windows que son como son por diseño del sistema. Es muy complicado abordar la retrocompatibilidad, incluso en un porcentaje alto, en un nuevo sistema operativo difente, pensar que Microsoft la va a abandonar (dando una interesante oportunidad a la competencia) o que se va montar otra vez en el lío de tener dos ramas de sistema operativo bien diferenciadas que algún día tendrán que converger.
Midori es un proyecto de cooperación de Microsoft y Microsoft Research (que aunque por motivos de marketing se suelen confundir, no son la misma cosa ya que lo segundo es un programa que financia la investigación en universidades es cosas que mañana Microsoft podria convertir en un producto o no). Esta cooperación parece demostrar cierto interés por parte de Microsoft pero no significa que se convierta en el futuro Windows (y si lo es, lo será a muy largo plazo)
Microsoft podría optar por migrar lentamente a Midori, pero sería más plausible que algunas de las ideas más relevantes del proyecto se portaran a futuros Windows una vez demostrada su viabilidad. Aunque tambien podría pasar que todo esto quedara en nada y que solo sirviera para publicidad de Microsoft y publicaciones de lo investigadores, si los resultados no fueran interesantes desde una perspectiva comercial.
Si Midori es una implementación más comercial Singularity, resulta que M# ya existe en la forma de Spec#. Lo que supongo es que querrán dar una nueva vuelta de tuerca a la idea de estos lenguajes de sistema, añadiendo aspectos no tenidos en cuenta en Spec# y que si están presentes en competidores como Go o Rush. En todo caso creo que es un experimendo que ya veremos en que se traduce. Obviamente no vamos a ver nada de esto en futuros Windows a medio o corto plazo
aspar
¿Tipado seguro? Type-safety es una tecnología que evita errores tipográficos a la hora de escribir código en un entorno de desarrollo. Por favor, no le demos estas patadas al castellano. No hace falta traducirlo todo, sobre todo cuando la traducción simplemente no dice nada. Nos gusta leer sobre tecnología, sí, pero siempre que esté razonablemente escrito.