Mads Torgersen, diseñador principal de C# en Microsoft.
Imagen: Microsoft

Dos décadas después de su creación, C# sigue siendo uno de los lenguajes de programación más populares y utilizados en el mundo. Preferido por millones por su versatilidad y sintaxis fácil de leer, el lenguaje de programación se ha convertido rápidamente en un elemento básico para aplicaciones web y móviles, desarrollo de juegos, aplicaciones comerciales y más.

Aunque comparte una herencia cercana con Java, originalmente concebido como un rival del lenguaje de programación desarrollado por Sun Microsystems (ahora Oracle) en 1996, C# ha evolucionado en gran medida a su manera desde su debut en 2001, especialmente gracias al amplio soporte. de Microsoft

VER: Los mejores lenguajes de programación para aprender en 2020 (TechRepubic)

Gran parte de la popularidad de C# se debe a su tendencia a adoptar rápidamente nuevas funciones. Mads Torgersen, gerente de programas de Microsoft y diseñador principal de C#, dice que es este diseño con visión de futuro lo que ha permitido que el lenguaje de programación acumule una base de usuarios tan grande en sus 20 años de historia.

“Confiar en gran medida en la innovación siempre ha sido una de las cosas que diferencia a C#”, dijo Torgersen a TechRepublic.

“Creo que logra un equilibrio bastante pragmático donde las cosas que hacemos se enfocan en escenarios en los que se encuentran los programadores reales. Realmente queremos que la innovación sea impulsada por la utilidad, no tanto por la belleza. Al mismo tiempo, nos esforzamos por mantener la consistencia del lenguaje y tener un campo unificado.

Torgersen ha sido el orquestador principal del diseño de C# durante 15 años. Torgersen, quien pasó cuatro años como profesor asociado en la Universidad Aarhus de Dinamarca antes de dejar la academia por la industria en 2005, ahora lidera un equipo en Microsoft cuyas funciones son coordinar la dirección futura de VS#.

A diferencia de Torgersen, la mayoría de los miembros del equipo de diseño de C# están involucrados en la creación e implementación del lenguaje de programación y tienden a trabajar en áreas adyacentes en Microsoft. Mientras tanto, es trabajo de Torgersen ejecutar el proceso de diseño del lenguaje C# y mantener la especificación del lenguaje.

“Nos reunimos con bastante frecuencia, unas dos veces por semana durante dos horas, para tomar decisiones e impulsar el trabajo creativo sobre cómo deberíamos hacer las cosas en la próxima versión de C#”, explica.

"Soy una especie de orquestador de eso, y una de las personas que hace mucho del trabajo preliminar para generar ideas y trabajar en los detalles de este proyecto".

Un millón de voces diferentes

Aunque siempre ha tenido su centro de gravedad en Microsoft, C# es un lenguaje de programación de código abierto y, como tal, sigue un proceso de diseño de código abierto. Aunque esto es impulsado principalmente por Microsoft, las ideas surgen regularmente de la comunidad de C#.

“Tenemos un sitio de GitHub dedicado al diseño de C# y otro dedicado a la implementación”, dice Torgersen.

"En el sitio de diseño, tenemos mucha interacción con personas que no están involucradas en el día a día. [with C#] pero que a menudo son usuarios de C# y aportan ideas para el debate. Parte de la funcionalidad que entra en C# pasa por este canal.

Con ideas provenientes de muchos ángulos, ¿cómo filtran Torgersen y su equipo lo que es importante?

“Es un reto, porque hay mucho que ganar”, admite. "Es un gran lenguaje de programación en términos de uso: hay millones de desarrolladores de C#, por lo que hay muchos aportes".

VER: Los 5 principales lenguajes de programación que deben aprender los administradores de sistemas (PDF gratuito) (República Tecnológica)

Aquí es donde la buena democracia a la antigua resulta útil. Para facilitar el proceso, Torgersen y sus compañeros diseñadores de C# han adoptado un mecanismo campeón, en el que cada miembro del equipo evaluará las ideas que lleguen a través de GitHub y defenderá aquellas que crea que vale la pena traer a la mesa.

Las decisiones no solo se basan en cuánto interés genera cada idea, sino también en su compatibilidad con el camino evolutivo previsto del lenguaje y la adopción de ideas similares en otros lenguajes, dice Torgersen.

“Es un enfoque muy impulsado por el debate”, dice.

"Tener un equipo de diseño como ese es realmente clave para administrar este tipo de proceso y tomar las decisiones correctas. Debes tener muchas perspectivas en la sala en todo momento, pero también un proceso para que no solo hablen. en todas direcciones.

"Damos muchas vueltas para asegurarnos de que hemos cubierto todas las bases, pero también tenemos una manera de llegar a un acuerdo y decir: 'Está bien, esto es lo que estamos haciendo'. Es un equilibrio entre tener mucho de aportes y haciendo muchas cosas, pero teniendo una gestión sólida de cómo se combina todo para que lo que sale se sienta como si hubiera sido diseñado de manera holística.

Establecer hitos

Si bien es posible que C# no ocupe el primer lugar en términos de popularidad (ese honor corresponde a C o JavaScript, según el índice que mire), se le atribuye la introducción de cambios técnicos significativos en el panorama de los desarrolladores con el cambio a la programación asíncrona en a mediados de la década de 2000, que fue impulsado en gran medida por los cambios en el diseño central realizados por Torgersen y su equipo en Microsoft.

El soporte de lenguajes de programación para la programación asíncrona pasó repentinamente de un deseo marginal a un aspecto clave para muchos desarrolladores, estableciendo un nuevo estándar para la industria y obligando a varios otros lenguajes de programación importantes, incluido JavaScript, a retomar el modelo más adelante.

“Fue un gran punto de inflexión porque nos ayudó a lidiar con uno de esos grandes cambios en el panorama de los desarrolladores, que es el cambio a la nube y los dispositivos móviles”, dice Torgersen.

“De repente, había mucha más necesidad de programas para comunicarse entre diferentes dispositivos, ya fuera a un servidor en la nube, o entre dispositivos móviles y servidores, etc. Resolvimos este problema con gran éxito y desde entonces la industria ha adoptado nuestro enfoque. Es algo de lo que estoy muy orgulloso.

Por supuesto, han pasado muchas cosas en los 15 años desde que Torgersen asumió el mando de C# del creador Anders Hejlsberg. Más recientemente, el auge de las plataformas sin código y de código bajo, especialmente en medio de la pandemia de COVID-19, ha comenzado a nivelar el campo de juego al permitir que las personas con poca o ninguna capacidad de codificación creen aplicaciones funcionales.

VER: Comandos de Linux para la gestión de usuarios (Premium de TechRepublic)

Dada la escasez global actual de desarrolladores, estas plataformas son lo suficientemente simples como para permitir que incluso los no programadores desarrollen aplicaciones de flujo de trabajo empresarial totalmente funcionales que se pueden integrar en la infraestructura de TI empresarial más amplia.

"Sé que muchos programadores ven esto con un poco de desprecio, y también nos damos cuenta de que solo puede llegar hasta cierto punto, pero al mismo tiempo, realmente aprecio que inspire a más personas a ser creativas con las computadoras". dice Torgersen.

“Lo hace menos esotérico, secreto o de camarilla, toda la codificación se vuelve menos misteriosa y más accesible”.

Torgersen también es optimista en que las plataformas low-code, no-code y la programación tradicional puedan coexistir pacíficamente, aunque reconoce que existe un desafío "en cuanto a lo que sucede en la frontera".

"Siempre ha sido el desafío con los enfoques de código bajo, incluso antes de que los llamemos así, que la configuración de código bajo y sin código introduce inherentemente, al menos, con las tecnologías que tenemos hoy, ciertas limitaciones en lo que usted puede hacer”, dice.

"Siempre ha sido un terreno difícil en el pasado, hasta el punto de que creo que contribuyó al fracaso de algunos enfoques sin código que no tenían un historial de crecimiento cuando las cosas necesitaban volverse un poco más inteligentes. Es un desafío que debemos seguir tratando de encontrarnos.

C# 9.0 y más allá

Como todos los lenguajes de programación modernos, C# sigue evolucionando. Con C# 9.0 programado para llegar en noviembre, la próxima actualización se centrará en admitir la representación "concisa e inmutable" (es decir, no modificable) de formas de datos.

"C# 9.0 está tratando de dar los siguientes pasos para C# al facilitar el manejo de los datos que pasan por el hilo y expresar la semántica correcta para los datos, por así decirlo, que va más allá de lo que llamamos un paradigma orientado a objetos para origen", dice Torgersen.

C# 9.0 da otro paso en esa dirección con una característica llamada Registros, dice Torgersen. Es un tipo de referencia que permite que un objeto completo sea inmutable y, en cambio, lo hace actuar como un valor.

"Nos hemos encontrado, durante mucho tiempo, tomando prestadas ideas de la programación funcional para complementar la programación orientada a objetos de una manera que realmente ayuda, por ejemplo, la programación orientada a la nube y ayuda con la manipulación de datos", dice Torgersen. . .

"Los registros son una característica clave de C# 9.0 que lo ayudará con esto".

Más allá de C# 9.0 es donde las cosas se vuelven más teóricas. Torgersen insiste en que no hay un "juego final" concreto para el lenguaje de programación, o al menos, no hasta que finalmente llegue a una fecha de vencimiento aún desconocida.

“¡Qué pasará un día! él añade. “Creo que algunas cosas interesantes, que es hora de revisar, tienen que ver con la composición del software, lo que facilita la combinación posterior de diferentes programas.

“Hay un grado de adaptación en el que la mayoría de los lenguajes de programación son buenos, pero no lo suficientemente buenos, y quiero liderar un cargo para tener funciones de adaptación más potentes para que pueda reproducir mejor los componentes de software existentes unos con otros. "

¿Podemos esperar esto en C# 10? "Es una especie de proyecto a largo plazo en el que también estamos trabajando, aunque estamos haciendo funciones más útiles a corto plazo", dice Torgersen.

“Sería universal. Esto ayudaría a cualquiera que esté desarrollando software, pero especialmente cuando está juntando múltiples marcos y tratando de lograr que cooperen.