♫ Ahora esta es una historia, todo sobre cómo
Tu lenguaje de programación se volcó
Y me gustaría tomarme un minuto
- ¿Por qué no vemos una avalancha de puestos de desarrollo de software, que ofrecen una opción para trabajar desde casa o de forma remota, al menos en cierta medida, ya que es una excelente manera de atraer talento?
- ¿Cuál es la empleabilidad de los graduados de desarrollo de software de TI de SAIT?
- ¿Cómo puedo desarrollar software en un equipo?
- ¿Por qué se supone que un desarrollador de software piensa como un tomador de decisiones empresariales?
- ¿Las mujeres están menos inclinadas a convertirse en programadoras / desarrolladoras de software? ¿Por qué?
Solo siéntate allí
Te diré cómo tu idioma se volvió obsoleto y desnudo. ♪
Ahora que saqué ese trozo de queso, necesitamos hablar sobre por qué se crean nuevos idiomas en primer lugar y por qué los viejos pierden su popularidad. Y para llegar allí, debemos hacernos la siguiente pregunta:
¿Por qué alguien no hace un idioma llamado Skittles y hace que incluya un arco iris de los mejores sabores de cualquier otro idioma?
Bueno, las personas realmente tienen la intención de hacer eso cuando hacen un idioma. Por ejemplo, mira este breve video de 5 minutos con Bjarne Stroustrup, el creador de C ++.
Por qué creé C ++ | Gran pensamiento
[Tomé prestada la imagen del apuesto Sr. Stroustrup de ‘Necesitamos un mejor equilibrio entre la teoría y la práctica’, Bjarne Stroustrup, padre de C ++]
“Construyeron FORTRAN para ingenieros y científicos y construyeron COBOL para hombres de negocios “. Entonces, como se explica en el video, se creó un nuevo lenguaje para cubrir todo el álgebra y el espectro comercial cubierto en FORTRAN y COBOL, respectivamente; este lenguaje se llamaba Simula (Simula I y Simula 67) y fue diseñado por Ole-Johan Dahl y Kristen Nygaard. [1]
Entonces, ¡mira a Simula! Aquí es donde nació el principio de clase en la programación, junto con las propiedades de las clases y, finalmente, la ideología que es la programación orientada a objetos.
Entonces, aquí tenías algunas nuevas tecnologías bastante sorprendentes a través de la abstracción, entonces, ¿por qué no nos detuvimos allí? Bueno, Simula no tenía la robustez (en el sentido probado y verdadero) y la aplicación de bajo nivel que algunos otros lenguajes tenían, como C (lenguaje de programación) . Por el contrario, C carecía de la diversidad y la poderosa abstracción que tenía Simula.
Y así, C ++ nació para que usted “pudiera hacer abstracción de alto nivel pero lo suficientemente eficiente y lo suficientemente cerca del hardware para tareas informáticas realmente exigentes . C ++ tiene clases como Simula pero se ejecutan tan rápido como el código C, por lo que la combinación se vuelve muy útil “.
¡OK, está bien! ¡Parece que ahora tenemos un lenguaje que lo hace todo !
[Imagen prestada de aquí]
Excepto que C ++ no “lo hace todo”.
Todos aplauden por el lenguaje de programación llamado Oak . Vaya, quiero decir verde . ¡Oh, mierda! Lo siento, me refería a Java ! (Sí, Java tenía algunos nombres agradables de una sílaba antes de obtener el nombre de dos sílabas que todos conocemos y amamos) Desarrollado por James Gosling, Java es sintácticamente similar a C ++ pero tiene diferentes características que son pros y contras con quien habla . Por ejemplo, debido a que Java abandonó la aritmética del puntero de C ++, al recolector de basura le resulta más fácil lidiar con la tipificación de datos y la referencia de objetos.
Excepto que Java tampoco lo “hace todo”, ya que acabo de escribir que si bien obtiene una ventaja en la recolección de basura, adopta una desventaja en la mala adaptación de bajo nivel.
Entonces, en este punto, deberías preguntarte: “Bien, entonces ¿por qué alguien simplemente no hace un lenguaje que haga todo ?”
Bueno, te acabo de decir la razón principal por qué. Java tuvo que perder una característica ( en nivel bajo l) para obtener una ventaja (en la recolección de basura ) . No puedes nadar con delfines mientras caminas con leones: un animal NECESITA el agua y el otro NECESITA la tierra (además, es más probable que el león te coma, lo que me pondría triste: [). Además, mencionamos los delfines, así que creo que este es un momento apropiado para inyectar una imagen de un delfín.
[Imagen tomada de PBS.]
Como diría mi sobrino de 2 años, Kayson, “¡Ay, qué lindo! ^ _ ^”
Otra razón en la que puedo pensar es: reescribir un compilador apesta . A veces es más fácil comenzar desde cero (como cuando no hiciste un diseño para tu proyecto de codificación y el programa terminó siendo tan malo, lo reescribiste por completo. Está bien, todos hemos estado allí) o, a veces es más fácil adaptar un lenguaje existente para hacer un preprocesador que termine convirtiéndose en el compilador para su, en este momento, un lenguaje completamente nuevo. Los cambios que ha realizado hasta ahora altera la naturaleza del lenguaje de manera tan drástica, que sería una fiesta llamarle el mismo nombre del idioma en el que lo basó; entonces, le das un nombre completamente nuevo que a su vez aumenta tu ego en un 100% (¿bromeas? ¿Un programador con un ego? Psh, no existe … ¿verdad?). Por cierto, quiero que vayas a la página de Wikipedia de tu idioma favorito y mires a la derecha, debajo de “Influenciado por”. Esto debería reforzar aún más el hecho de que los nuevos idiomas están hechos para mejorar o proporcionar herramientas alternativas de las que se ofrecen en los idiomas existentes. A continuación se muestra un fragmento de la página de Wikipedia para Ruby (lenguaje de programación) .
Para concluir esto, recapitulemos:
- al agregar una función altamente específica a un nuevo idioma, generalmente tiene que perder una función en el proceso. Entonces surge la idea de hacer un lenguaje que “haga todo “.
- Cuando se crea o se descubre una nueva tecnología, como la programación orientada a objetos, debe crear o mejorar los lenguajes existentes para utilizar las nuevas instalaciones.
- Pero, al agregar una característica altamente específica a un nuevo idioma, …… [vea el primer boletín más arriba]
Quiero ser explícito en eso cuando escribo “perder una característica”, no necesariamente quiero decir que siempre perderás una característica completa de ese lenguaje; pero tal vez la simplicidad disminuye o la gestión de la memoria es más difícil, etc.
Lo más interesante y divertido para pensar con respecto a esta pregunta son las computadoras cuánticas y, por lo tanto, la programación cuántica.
Las computadoras cuánticas no funcionan de la manera que su programador típico espera, por lo que en realidad necesitamos un lenguaje que utilice la tecnología detrás de las computadoras cuánticas. Las computadoras cuánticas están construidas sobre las máquinas “clásicas” existentes, por lo que, si bien podemos usar la teoría y estructura gramatical de programación “clásica”, necesitamos nuevas herramientas en nuestros lenguajes “clásicos” para manipular los datos cuánticos.
En esencia, necesitamos nuevas ideas de programación y tal vez incluso paradigmas para lidiar con nuevas tecnologías . Parece que vamos a necesitar otro idioma …:]