Microsoft está cambiando mucho en éste último año. De ser la empresa más poderosa del mundo, ha pasado recientemente a la tercera entre las empresas tecnológicas, y sin duda, sus ingenieros y directivos han querido tomar cartas en el asunto y devolver el respeto de sus clientes, que poco a poco se mudan a otros softwares y SO más actuales.
Windows 8 rompe con todo lo que fue en su día Microsoft, con una interfaz IU actualizada a los tiempos que corren, y con la gran ventaja de dos SO casi semejantes para dispositivos móviles y PCs (Windows RT y Windows 8).
Pero este importante avance no es más que la punta del iceberg que la compañía está levantando, intentando ganarse la confianza de los clientes y de la comunidad de desarrolladores. IE 10 pretende estar ya en el camino correcto acordado por los estándares web (habrá que esperar para comprobarlo), el ecosistema X-Box está creciendo y ofreciendo características únicas, y por si fuera poco, la plataforma de programación de microsoft ha dado un gran paso adelante con este nuevo lenguaje, TypeScript.
TypeScript es un superconjunto de JavaScript, pensado para los tiempos modernos y la programación de aplicaciones en HTML5, y que viene a suplir una carencia del segundo, que no es otra que la de no estar adaptado a proyectos de gran envergadura.
La propuesta viene acompañada por sus respectivas extensiones para Visual Studio, y de una gran plataforma con paquetes, tutoriales y todo lo que un desarrollador necesita para empezar a picar código.
Lo cierto es que JavaScript se nutre con buena gana de TypeScript, permitiendo trabajar con este lenguaje como si de Java se tratase, con clases, y orientado a objetos, lo que permite un mayor control de la capa funcional de la aplicación.
Pero hay un gran pero, y es del que quería hablaros.
Actualmente están floreciendo muchos superconjuntos de otros lenguajes. La idea es interesante, y suple de forma rápida carencias individuales, haciendo evolucionar la programación hacia los límites más abstractos de la computación.
Para que nos entendamos, un superconjunto de A, llamado B, es un conjunto que define todos los métodos (teoremas, atributos, funciones,..) de A, y además unos nuevos. En programación, entendemos un superconjunto de un lenguaje, como otro lenguaje totalmente compatible con el primero, pero que además ofrece nuevas funcionalidades.
El problema surge cuando el lenguaje A evoluciona, y quizás adquiera de forma interna funcionalidades que ya tenía el superconjunto B. En ese caso, al superconjunto B no le queda más remedio de:
- O bien dejar su funcionalidad como está, existiendo duplicidad de funciones que a lo mejor hacen lo mismo.
- O bien adaptar su funcionalidad a la nueva, requiriendo un trabajo extra, y que por lo general, acaba con problemas en la compatibilidad (el típico «compatible hasta la versión X del lenguaje A«).
Lo que ha hecho Microsoft está genial, no os lo niego. Pero ofrece una seguridad relativa, ya que solo Dios save qué evolución seguirá JavaScript, y quizás acabe solapando los intereses de TypeScript, haciendo a un superconjunto que se supone totalmente compatible una chapuza de irregularidades.
Os dejo el vídeo demostrativo de Microsoft (hace falta tener la extensión de Silverlight actualizada…):
P.D.: Pido perdón a los fanboys de Microsoft por ser tan catastrofista 🙂
Hola, entiendo tu postura y no dejas de tener mucha razón, pero estamos hablando de Javascript, un lenguaje que ha tenido la suerte de ser como es para volver a renacer, aunque en realidad, no renace, se mantiene, pues, a ojos de un desarrollador OOP lo peor que te puedes echar a la cara…Lo se por experiencia de «novato» usar JS puro y duro, ha sido un total caos, intentar comprender (vale, que en vez de orientación objetos es prototipo) porque si declaro un var tipo string, tengo el riesgo de que en codigos tochos y descontrolados, cambie su tipado ocasionando un descontrol total y errores futuros no previstos… En realidad, he sido muy reacio a trabajar con el, pero es cosa que en España y en empresas serias como INDRA (aunque se puede mencionar más) donde prima el que eches código sin revisar ni usar opciones como TDD para cumplir los plazos donde el uso del JS es de por si, mortal de necesidad.
Pero lo dicho, pese a la manía que le tengo al JS, he descubierto gracias a personas realmente expertas, el uso de librerías simples como «require.js», «better.js», «underscore.js» , poder hacer y trabajar con JS de una manera coherente y decente… y ya, con las otras como AngularJs (1.3), bootstrap, Ionic , tener la tranquilidad de hacer al menos un codigo ya modulado y cumpliendo conceptos del code clear y ahora con TypeScript y AngularJs 2 (por poner un ejemplo), trabajar YA de una manera segura, responsable, limpia etc…
Repito, no quiero poner en duda ni criticar lo que bien dices, pues por debajo, sigue estando JS que es «core» de todo y sigue siendo y con perdón a los verdaderos profesionales de JS, una «kk» (os permito insultarme por si me lo merezco, pero es que me ha sacado tanto de quicio el trabajar con JS o en su defecto, con personas que manejan JS de una manera tan burda y no porque yo me crea un experto, al contrario, yo soy aprendiz de ello, pero no quiero aprender de esa manera).
Y vamos, que no te falta falta de razón. Yo también he utilizado Bootstrap y angular, y dejando de lado la curva de aprendizaje, luego te acostumbras y te da unas ventajas que sin lugar a duda son de agradecer.
Pero el problema sigue siendo el mismo, que el core es el core, y de pronto te encuentras con problemas de compatibilidad que unos solucionan de una manera y otros de otra. Nada nuevo bajo el sol, por otro lado, pero algo a considerar a la hora de apostar fielmente por uno u otro lenguaje. Al menos a mi forma de ver.
Muy buena crítica sí señor :).