Historia y Evolución del Lenguaje C-Sharp

Clase 6 de 32Fundamentos de C# con NET Core 2.1

Resumen

C# nació con una visión clara: crear un lenguaje simple, moderno y de propósito general que aumentara la productividad del programador y pudiera adaptarse a múltiples escenarios. Aquí encontrarás los puntos clave de su origen, los paradigmas que lo definen y las decisiones que explican su vigencia.

¿Qué hace único a C# desde su origen?

C# surge en el auge de la programación orientada a objetos, cuando lenguajes como C++ y Java dominaban el mercado. Aunque nació orientado a objetos, desde el principio se planeó como lenguaje multiparadigma, capaz de adoptar diferentes enfoques según la necesidad.

¿Quién creó C# y qué aportó?

  • C# fue creado por Anders Hegelsberg. Se destaca por su amplia experiencia en creación de lenguajes, como Delphi y Type Scripts, y por liderar equipos de desarrollo durante años.
  • Anécdota cercana: el autor lo conoció en Microsoft cuando se hablaba del futuro de C# seis. Fue una reunión pequeña con alrededor de veinte empleados. Un encuentro inspirador y muy humano, con fotos y humor de por medio.

¿Por qué C# es multiparadigma y fuertemente tipado?

  • Es fuertemente tipado: los tipos deben declararse explícitamente. Si un componente tiene nombre, apellido y dirección, se define desde el comienzo. No se agregan campos nuevos sin especificación previa.
  • Con el tiempo incorporó funcionalidades que relajan ese rigor en ciertos casos, manteniendo el control del programador.
  • Combina orientación a objetos basada en clases con enfoque orientado a componentes, facilitando que piezas de software se conecten de forma desacoplada.

¿Qué significan sus paradigmas imperativo, declarativo y funcional?

  • Imperativo: se programa con sentencias que ordenan qué hacer y en qué flujo ejecutarlo.
  • Declarativo: se especifica el resultado y el lenguaje traduce esa intención en instrucciones, sin definir un flujo detallado.
  • Paradigma funcional: hoy C# incluye numerosos elementos funcionales que amplían las formas de expresar la lógica.
  • Programación genérica: estructura datos y objetos para manipularlos con facilidad y mejorar la eficiencia del sistema operativo o el framework que ejecuta el programa.

¿Qué principios de diseño definen al lenguaje?

Desde el inicio se fijaron principios para resolver problemas reales de desarrolladores de la época, con mirada a largo plazo.

¿Por qué se habla de simple, moderno y de propósito general?

  • Simple y moderno: frente a C++ y Visual Basic, se buscaba claridad y capacidades actualizadas, sin arrastrar complejidades históricas.
  • Propósito general: usable en múltiples contextos. Desde software para neveras y dispositivos hasta sitios web, aplicaciones de escritorio y servicios para Windows.

¿Cómo se garantiza robustez, durabilidad y productividad?

  • Robusto: con funcionalidades capaces de cubrir necesidades en entornos corporativos y proyectos que requieren alto rendimiento.
  • Durable: diseñado para durar muchos años y evolucionar con nuevas necesidades, evitando ser una moda pasajera.
  • Productividad: reduce la fricción al crear software real en producción. Más enfoque en resolver el problema y menos en detalles de bajo nivel.

¿Dónde corre C# y qué metas de plataforma y rendimiento tiene?

C# se pensó para ambientes distribuidos y escenarios modernos. Con el tiempo, sus objetivos de portabilidad, internacionalización y eficiencia se volvieron realidad de forma amplia.

¿Qué pasó con la portabilidad y el soporte multiplataforma?

  • Al inicio, la portabilidad era una promesa con estándar definido, pero solo Microsoft lo implementó y C# funcionaba en Windows.
  • Hoy es una realidad: C# corre en diferentes sistemas operativos y entornos, desde dispositivos móviles e internet de las cosas, hasta sitios web, nube, escritorio, Android y OS X.

¿Cómo aborda internacionalización, entornos embebidos y eficiencia?

  • Internacionalización: soporte para múltiples idiomas y codificaciones, clave para una empresa con negocios globales.
  • Servidores y entornos embebidos: pensado para ejecutarse tanto en servidores web como en dispositivos con Windows Embedded y otros equipos similares.
  • Bajo uso de procesamiento y memoria: busca eficiencia sin competir directamente con Assembler o C++, que operan sin intérprete. El objetivo es un equilibrio entre rendimiento y experiencia de desarrollo.

¿Te gustaría profundizar en las versiones de C# o en por qué se llama C# y no de otra forma? Comparte tus preguntas y experiencias en los comentarios.

      Historia y Evolución del Lenguaje C-Sharp