¿Cuáles crees que son las ‘7 maravillas’ del mundo de la codificación?

¡Bienvenido a la tarde con Carlos!

Creo que la respuesta a esta pregunta es diferente para todos. Estos (y el código que los habilitó) fueron mis 7 maravillas a lo largo de los años:

  • Reconocimiento de voz de Microsoft. Recuerdo que cuando era niño leía una y otra vez una vez más a Alice y Wonderland y las Instrucciones de reconocimiento de voz de Microsoft en mi computadora para entrenarlo. Me quedé boquiabierto. A pesar de que todavía era bastante mierda en comparación con la tecnología de voz de hoy.
  • Verbots. Recuerdo haber leído sobre esto en un libro sobre Robots y AI, luego descargué el software y conversé por primera vez con uno de los agentes virtuales. La aplicación arrancó, apareció una cara y una voz me habló. Lo hice pregunta tras pregunta.

    Mierda de mierda que fue increíble. Sentí que había descubierto algo mágico. Fue loco. Me animó a crear mi primer chatbot cuando tenía 12 años. Avancé 11 años más tarde y todavía lo estoy haciendo (profesionalmente ahora).

  • Google Earth. Oh mi señor … Recuerdo haber instalado el visor en mi vieja computadora … y luego de la oscuridad apareció una bola grande, hermosa de azul y verde. Era como un juego, excepto que era nuestro mundo . En mi pantalla

    Santa mierda. Y podría seguir enfocando. En cualquier lugar . Jesucristo.
  • Transmitiendo video. Todavía recuerdo el día en que cambiamos de acceso telefónico a DSL y Wifi. La gente había hablado de eso durante algunos años, pero finalmente lo tuvimos.

    Mi papá jugó un video en el sitio web de la CNN. Un puto video . Streaming en tiempo real! Sin búfer! ¡Podríamos ver todas las noticias!

    Que mierda Era como si mi mundo hubiera cambiado. Ahora veo interminables YouTube y Netflix prácticamente todos los días.

  • Linux Un amigo me mostró Puppy Linux. No mucho más tarde, saqué un par de libros de la biblioteca. Hojeé las páginas en blanco y negro y leí sobre todas las diferentes distribuciones. Se sintió tan genial y loco.

    Luego saqué el DVD de la parte posterior del libro, lo coloqué en mi viejo Inspiron 9000 y borré rápidamente mi disco duro para instalar Fedora Core 4. Luego ingresé a un nuevo mundo que todavía utilizo regularmente hasta el día de hoy.

    Solo recuerdo que se abrió por primera vez … la pantalla de inicio de sesión. El escritorio. Los menús de GNOME. Tan ajeno, tan extraño, tan azul, y tan … hermoso.

  • Un mundo virtual. No recuerdo el nombre. Pero recuerdo la experiencia como si fuera ayer. No fueron los Sims, no fue Second Life, sino algo parecido.

    Pude ingresarlo en full 3D, con colores. Podría cambiar mi avatar. Podía caminar alrededor de casas y crear una propia.

    Podría conocer a otras personas , seres humanos (!) En este mundo. Podría hablar con ellos e interactuar con ellos y verlos caminar.

    Me hizo volar la puta mente. Fue una locura … no sé cómo expresarlo.

  • Redes neuronales. Las implicaciones del concepto realmente no hicieron clic para mí hasta que me di cuenta de su universalidad . La simplicidad de todo. Cómo funciona realmente el aprendizaje automático. Hasta que lo probé por mí mismo.

    Busqué en línea y encontré una implementación básica de Java de una red neuronal artificial. Fui a Best Buy y compré una webcam. Encontré una webcam que conectaba la biblioteca llamada Sarxos.

    Luego lo conecté todo y escribí un código. Y pulsa Ejecutar.

    Sonó un pitido. Cogí una coca, y la sostuve frente a la webcam.

    Sonó de nuevo. Rápidamente bajé la coca, y levanté una botella de agua.

    Sonó de nuevo. Bajé la botella y levanté mi mano vacía.

    Luego levanté los 3 artículos nuevamente, uno por uno, de la misma manera.

    Sonó por séptima vez. Esta vez levanté la botella de coca.

    Después de un momento, en la terminal se dijo: “Usted está sosteniendo: botella de coque”.

    Jodida gota de coca, hombre …

En ningún orden particular aquí está mi lista:

Lisp – tú conoces la historia. Este lenguaje comenzó como un artículo sobre el cálculo lambda por John McCarthy en 1958; un “qué pasaría si” de su imaginación que luego fue implementado por Steve Russel. ¡Y funcionó! El concepto que llamamos Lisp generó una familia de lenguajes de programación funcionales y trabajo pionero en IA.

C, K&R y el dispositivo de Duff : el lenguaje C, con todas sus verrugas, nos hizo más productivos. Compilado en cualquier cosa, fue fácil de aprender y leer, produjo binarios nativos y podía hacer cualquier cosa. Todo se describió en lo que solíamos llamar “K & R” o simplemente “la biblia”. Este libro es la definición de terso. Todo lo que necesitas saber sobre C en unas 200 páginas. Para un cambio de mente, echa un vistazo al dispositivo de Duff.

Python : Guido van Rossum comenzó este proyecto un fin de semana y sabía que al final del fin de semana funcionaría. Guido se unió a un grupo de personas realmente inteligentes, que lo consideraron BDFL y crearon una comunidad intelectual divertida y reflexiva dedicada a hacer que este lenguaje sea realidad. Lee algunos de los primeros hilos de los grupos de noticias para una buena risa; Especialmente los cierres inventivos de Tim Peters.

Como muchos otros, si quiero responder rápidamente a la pregunta “¿se puede hacer esto?”, Me dirijo a Python. Revisar mi directorio local muestra más de mil trescientos scripts de Python que he escrito en los últimos años. Sí, este es un lenguaje muy útil .

Anders Hejlsberg – programador estrella de rock. Todavía recuerdo la alegría que fue Turbo Pascal, escrita por Anders en un lenguaje de ensamblaje rápido y lleno de ampollas. Luego vino Object Pascal, Delphi, C # y contribuciones sustanciales a .NET con cosas como LINQ. Todo lo que toca este tipo hace que nuestro trabajo sea más fácil.

Las bibliotecas LAPACK : imagínese lo siguiente: un rascacielos, los datos del proyecto del genoma humano, un magnífico puente colgante, un cuadro de bicicleta de fibra de carbono súper ligero, un cohete en una misión espacial a Marte y pregunte: ¿qué tienen en ¿común? Respuesta: todos usaron las bibliotecas LAPACK para computación y análisis. Escritas en FORTRAN antes de que la mayoría de los programadores de hoy nacieran, estas bibliotecas están libres de errores, son increíblemente rápidas y casi inmutables. Están esencialmente grabados en piedra binaria, y los usamos en casi todo.

El algoritmo de búsqueda de Google : dos tipos en un garaje con una muy buena idea y Python (ver más arriba). El programa resultante se volvió tan ubicuo que ahora es un verbo para más de mil millones de personas. El “programa” es ahora un gigante de miles de programas interrelacionados, todos dedicados a responder sus preguntas.

JavaScript – este lenguaje fue un hack. Escrito por Brendan Eich en unas pocas semanas para hacer realidad los programas del lado del cliente en el navegador Netscape, sus defectos son fácilmente perdonados. El lenguaje no es una maravilla; Lo que es una maravilla es que la maldita cosa no desaparecerá! Ahora se ha transformado en ECMAScript, un lenguaje respetable y “adulto” que estará con nosotros para siempre.

Menciones honoríficas

Brainfuck : esta es la pregunta: ¿cuál es el número mínimo de bytes necesarios para hacer un compilador de lenguaje completo de Turing? Respuesta: 240. Bytes. ¡Menos de 2,000 bits individuales, y la maldita cosa funciona!

Posdata : ¿sabías que este es un lenguaje de programación poderoso? Trajo belleza a la monotonía de 80 x 24 terminales de caracteres mono-espaciados. Y puedes hacer algunas cosas divertidas con él además de imprimir papeles.

  1. Smalltalk – vea Smalltalk y el futuro de la industria del software
  2. C ++ – el lenguaje de programación más grande y complejo jamás creado
  3. JavaScript – el mayor trabajo de estafa en programación jamás creado
  4. Go, el lenguaje de programación de más rápido crecimiento en la historia: ¡de cero a casi nivel superior en menos de 7 años!
  5. Java – reemplazando COBOL como el lenguaje de programación empresarial; está muy, muy por delante de todos los demás idiomas en términos de popularidad y demanda de empleo
  6. Python: ¿cómo logró este lenguaje de scripting relativamente lento llegar a ser tan popular para computación numérica, aprendizaje automático, ciencia de datos, IoT, desarrollo web?
  7. Lisp / Scheme: una maravilla homoicónica con una excelente extensibilidad de macros

Menciones de honor van a:

  • C: sustenta toda la industria de TI (que incluye Linux)
  • Adelante, ¿cómo puede ser tan capaz un lenguaje tan ridículamente simple?
  • Emacs y vim – los “grandes” editores de programación
  • OOP (programación orientada a objetos): este paradigma de programación ha gobernado la industria de TI durante más de tres décadas y no muestra signos de aflojarse, ni siquiera ante FP.

Entonces, esta es una lista de ramas de codificación en constante evolución que creo que continúan siendo los “7 grandes”. Estas son más ideas, que se han propagado a través de la programación.

Nada de esto está lo suficientemente desarrollado como para ser completado, excepto el que está marcado con una estrella:

  • Gestión de datos : tiene muchas formas, desde la memoria virtual, hasta los sistemas de archivos y las bases de datos, que están en constante evolución incluso ahora. No es difícil imaginar un mundo en el que se catalogue cada momento de su vida y (aparte de los problemas de privacidad) que pueda usarse para obtener el sándwich de metro que desee, en su escritorio, con toda la cobertura que desee, cuando se sienta cómodo. Sólo un poco de hambre.
  • Código como datos * : esta fue la evolución lógica de la arquitectura de Von Neumann, que finalmente dio origen al movimiento Lisp y eventualmente evolucionará para incluir también información de tipo (consulte Tipos dependientes). [PD. Tal vez no esté completo, si va a evolucionar para incluir información de tipo dependiente … bueno, bueno].
  • Tipos dependientes : esta es la evolución de las tesis de Turing / Curry hacia la teoría de tipos, hasta la comprensión final de cómo la programación y las matemáticas son exactamente la misma disciplina, y podemos razonar acerca de cada una utilizando técnicas entre sí. Finalmente, podemos crear interfaces, no solo con requisitos existenciales (debe contener un método llamado “foo”), sino que incluso con requisitos universales (“foo” debe componerse con “barra” de manera conmutativa). Esto significa que podemos escribir código sin excepciones de tiempo de ejecución (eventualmente). No significa que el código “simplemente funciona”, sino que (si la memoria es consistente) se puede hacer de tal manera que no se bloquee y queme, simplemente se cuelga.
  • Escriba una vez, ejecútelo en cualquier lugar : esto comenzó como la evolución de los “lenguajes de nivel superior”, pasando del código de la máquina al ensamblaje a C y, eventualmente, originando el movimiento de Java y .NET (y en otro grado, JavaScript para navegadores web) . Ahora, imagine un sistema, donde funciona el mismo código, ya sea dentro de una página web en una tabla de Windows o en un servidor BSD, optimizado para usar toda la RAM, la memoria Optane, las CPU y los recursos de GPGPU disponibles.
  • Algoritmos adaptativos: algoritmos genéticos, redes neuronales, algoritmos de enjambre y otros métodos de bimimetismo. Imagina no tener que saber cómo funciona un sistema o cómo conseguir que haga lo que quieres. Solo deja que evolucione hacia un estado donde lo hace. Imagina que ya no tienes que escribir código tedioso. Siri, dime si me estoy resfriando o no, ¡mirándome los ojos y la cara!
  • Entornos de desarrollo integrados – Y con esto, me refiero a cosas como depuración de código, análisis estático, finalización inteligente de código, cobertura de código, seguimiento de elementos de trabajo, control de fuente y todo en un solo entorno. Solo espera hasta que los algoritmos adaptativos alcancen los IDE. Simplemente dígale a Siri que desea un registro con un nombre, dirección y campos de número de teléfono, almacenados en una base de datos relacional con una clave externa relacionada con el registro del administrador, y haga que la consulta esté disponible en la ventana de mi aplicación .NET en la pestaña de empleados, y ella escribe todo el código de plantilla que ingresas y personalizas. Ah, y ¿mencioné que ella escribió todas las pruebas unitarias y la documentación XML para usted (quién todavía está usando XML, no estamos usando Yet Another Yet Another YAML por ahora)?
  • Virtualización : la capacidad de desarrollar y depurar sistemas operativos de otro sistema operativo, y ahora los Dockers mantienen todo aislado en un paquete muy pequeño y ordenado. Es una versión para computadora de Inception. Eventualmente, cada parte de un sistema operativo se virtualizará para permitir solo aquellas partes que necesitan acceso. Cuando eso suceda, la virtualización se parecerá mucho más al uso de tipos dependientes para la administración de recursos, y será difícil hablar de uno sin hablar del otro.

Menciones honoríficas:

  • Sistemas operativos : una vez más, esta es una aplicación de estandarización para crear un rango muy corto de andamios de “escritura una vez, ejecutar en cualquier lugar” para que se ejecute el código futuro. Estos se han desarrollado desde que comenzó la programación, pero luego queríamos una, lo que nos permitió ejecutar más de una aplicación en ella. Es una pena que sigamos usando la misma tecnología de los años 60 en la actualidad, pero de nuevo, hasta que hayamos evolucionado más de los “7 grandes”, entonces puede ser mejor esperar el “gran cambio”.
  • Computación distribuida : se trata realmente de aplicar la estandarización y la automatización a la gestión de datos. La red, entonces Internet y ahora la informática distribuida es la extensión lógica. Esta es también la alegría que nos trae las monedas de internet, como Bitcoin. Esto eventualmente será lo que nos traiga gobierno distribuido y democracia distribuida, asumiendo que la Tercera Guerra Mundial no destruye todos los aparatos electrónicos.

Todas las respuestas hasta ahora son interesantes y maravillosas, pero han omitido o asumido la mayor maravilla de todas: que los humanos pueden programar cualquier cosa en absoluto.

La programación de cualquiera de las aplicaciones, excepto las más triviales, requiere un nivel de precisión que nunca antes se había logrado en ningún esfuerzo humano.

En un programa de, digamos, cien mil líneas de código, solo un bit incorrecto podría invalidar todo el programa y hacerlo inútil. Bajo tal restricción, la producción de cualquier programa útil tiene que ser la mayor maravilla de todas.

De hecho, es una gran maravilla que cualquier ser humano incluso intente crear un programa así, pero lo hacemos todo el tiempo. ¡A veces incluso tenemos éxito!

< http: //www.geraldmweinberg.com&gt ;

  1. Bombe de Alan Turing: la máquina ganadora de la guerra mundial Alan Turing demostró el potencial y la utilidad de las computadoras.
  2. C Programming Language – C está justo en la parte superior de cualquier discusión sobre computadoras. Casi todos los demás lenguajes están escritos y compilados en C. Sigue siendo uno de los lenguajes de programación más populares, incluso después de 4 décadas.
  3. Internet : sin necesidad de introducción, Internet es uno de los mayores inventos de la humanidad.
  4. Kernel de Linux: el kernel de Linux es el proyecto de colaboración más grande del planeta. Alimenta la mayor cantidad de dispositivos, su computadora, su teléfono, servidores, supercomputadoras, televisores inteligentes y demás.
  5. Google : si Internet es tan grande hoy, HAIL GOOGLE.
  6. Programación Orientada a Objetos – El paradigma de programación más popular. Una de las razones más importantes detrás del crecimiento en la cantidad de programadores es la simplicidad de OOP.
  7. GNU : GNU podría no ser una gran compañía, pero la creación de Richard Stallman es la única razón detrás de muchas de las grandes maravillas de la codificación .

Motor Diferencial N ° 2 seguramente debe ser uno de ellos.
( http://www.computerhistory.org/b… )

Es difícil hacer una lista de siete monumentos para las edades en un campo que cambia tan rápidamente, pero creo que observar la elegante coreografía de estos miles de artes de baile seguirá siendo asombroso por un tiempo.

Realmente no sé a qué te refieres con “el mundo de la codificación”, pero ¿asumo que te refieres a algo relacionado con el desarrollo y diseño de software?

Aquí hay algo fuera de mi cabeza:

  • Las tuberías de Unix. Ser capaz de intercambiar y procesar datos de una manera tan simple y poderosa es, de hecho, una hermosa maravilla.
  • Descriptores de archivos Unix. Ser capaz de acceder a archivos simples e Internet a través de más o menos la misma interfaz es bastante sorprendente.
  • Internet. Por supuesto. Una red de computadoras unificada que abarca todo el mundo y que permite que cualquier computadora hable con cualquier otra computadora es como algo salido de una película de ciencia ficción.
  • Bibliotecas y frameworks bien diseñados. Hacer cosas avanzadas como gráficos en 3D, programación de juegos, encriptación, etc. a través de solo unas pocas llamadas a funciones simples (sabiendo muy poco acerca de la complejidad subyacente) es casi mágico.
  • Bases de datos. Teniendo en cuenta la cantidad de sistemas que dependen de las bases de datos y la cantidad de horas de desarrollo que probablemente han ahorrado, deben estar en la lista.
  • Sistemas de control de versiones. CVS, Subversion, git, etc. Una de las herramientas más poderosas para un desarrollador de software. Muchas otras personas también se beneficiarían de su uso, pero desafortunadamente no se han propagado fuera del mundo de los desarrolladores de software.
  • Explotación florestal. Tener acceso a los archivos de registro para depurar problemas en el software es muy valioso.

Gran pregunta

Las Siete Maravillas del Mundo Codificante:

  1. Memoria virtual. Sin él, tendríamos que volver a diseñar software eficiente.
  2. OOP. La programación ya no causa suficiente tensión mental para inducir la locura.
  3. IDEs. Incluso un completo idiota puede escribir software con un buen IDE. Lo que explica mucho.
  4. HTML5 / ECMAscript. Para los programadores, lo mismo que el rap es para los músicos.
  5. Melé. Una forma de permitir que los gerentes piensen que tienen el control de un proyecto de software.
  6. Desbordamiento de pila. Seriamente.
  7. Las bebidas con cafeína. ¿Necesito decir mas?

Tantas respuestas agradables, pero ¿hay realmente “maravillas” entre ellas? La mayoría de ellos (idiomas, dispositivos, empresas, sitios web) parecen ser desarrollos lógicos, a menudo solo una cuestión de tiempo hasta que nacieron.

En mi opinión, una verdadera maravilla es la magia del problema de detención (¿es decir, detiene un algoritmo dado?) Y las consecuencias que se derivan de eso: Realmente se puede probar (Alan Turing fue el primero) que un algoritmo general para resolver el problema de detención es todo lo posible. ¡Los pares de entrada de programa no pueden existir!

=> ¡Las computadoras no pueden resolver todos los problemas del mundo!

¿No es eso de alguna manera calmante y calmante?

A la mayoría de estas respuestas les falta el punto de esta pregunta. Una maravilla es algo grande e imponente. Básicamente, debería ser algo que mires, y sientes que te conviertes en un mejor programador solo por tratar de entenderlo. Puede argumentar que hay hardware involucrado con él, pero cada uno de estos tiene bastante software que lo hace funcionar, y lo que es.

7. El iPhone: muy pocos dispositivos personales eran tan kool cuando salieron. Mire casi todos los teléfonos celulares en los últimos 10 años, todos están muy influenciados en el trabajo del primer equipo que hizo de un teléfono celular una computadora personal y un dispositivo altamente deseable, en lugar de una simple utilidad.

6. IBM Deep Blue: la primera computadora en vencer a un campeón humano en el ajedrez. Ponga la potencia de cálculo a la par con los humanos para que una máquina pueda pensar a un humano de ciertas maneras.

5. Smalltalk: por lo general, no pondría idiomas aquí, porque un lenguaje en sí es una idea, como un libro, pero el tiempo de ejecución, y cómo trabajas en ello, la belleza y el pensamiento que se utilizaron para hacerlo fresco, creo que Todo el paquete juntos merece estar aquí. La gente que lo usó todavía lo habla con cariño.

4. Bitcoin – Una moneda puramente CS, con valor monetario real. La tecnología detrás de él para rastrear las transacciones de manera distribuida es bastante notable.

3. Unix: se ha convertido de hecho en el estándar de los sistemas operativos con un solo competidor (que incluso ha robado partes de él). Es lo suficientemente bello que a los geeks les encantan numerosos aspectos, y Google + Apple construyen sus sistemas operativos encima. Gran parte de tu mundo se ejecuta en Unix, que además de tu Winblows PC, es difícil encontrar cosas que no lo sean.

2. Google, el motor de búsqueda: pregúntele lo que sea y lo ofrece, tanto que los competidores lo comenzaron a usar en lugar de competir con él. La infraestructura detrás de poder absorber todo el internet y analizarlo es una hazaña bastante fenomenal cuando uno lo piensa.

  1. Internet: qué otro software ha cambiado el mundo como lo ha hecho. Todos los protocolos de TCP / IP, SMTP, cifrado, etc., creados para ello, son realmente maravillosos.

Voy a tomar un enfoque diferente a los demás. Iré con los 7 elementos que fueron avances en su momento.

  1. Charles Babbage y Ada Lovelace – la primera máquina de computación y programadora para ello. Sin las contribuciones de estos dos individuos, la programación no habría logrado el comienzo que tuvo. Ada fue una influencia suficiente como para que una lengua llevara su nombre (desafortunadamente, esa lengua era solo otra lengua estructurada y no incorporaba las tecnologías OO de otras lenguas desarrolladas en ese momento).
  2. Máquinas de Hollerith y tarjetas de Hollerith: desarrolladas para el Censo de Estados Unidos de 1880. Las tarjetas fueron una parte vital de la primera programación.
  3. FORTRAN (traducción de fórmulas): lenguaje de primer nivel que aún se utiliza en los cálculos científicos hasta el día de hoy. Código de máquina reemplazado y ensamblador.
  4. LISP – La base para toda la inteligencia artificial inicial. Las llamadas recursivas introducidas, la estructura para todos los datos y programas son idénticas. Mi apodo para LISP es “Muchos paréntesis estúpidos insípidos”.
  5. Algol: el verdadero primer lenguaje estructurado, lenguajes como C y Pascal se basan en Algol. Para el hardware de Burroughs, Algol reemplazó al ensamblador como el lenguaje base para todas las interacciones con el hardware.
  6. SmallTalk: un invento de Xerox que realmente no sabían lo que tenían. Es la base de todos los lenguajes orientados a objetos. Steve Jobs quedó tan impresionado con esto que basó Macintosh O / S en el entorno SmallTalk. SmallTalk era un verdadero lenguaje orientado a objetos. Todos los objetos desarrollados para el O / S y para los programas de usuario eran hijos del objeto base “Objeto”. C ++ simplemente tomó las ideas de SmallTalk y trató de agregarlas al lenguaje C. Bell Labs hizo lo suficientemente bien con esta integración para desarrollar el principal lenguaje orientado a objetos.
  7. UNIX – De nuevo, Bell Labs. Desarrollaron C para poder desarrollar el sistema operativo UNIX. Bourne desarrolló uno de los primeros lenguajes de scripting de shell utilizables para manipulaciones rápidas del sistema. Tantos “lenguajes” deben su creación al shell Bourne (sh). Piense en cualquier lenguaje interpretado, probablemente se deba a su “sh”.
  • 1. El Registro , donde estamos sin la estructura de datos: un grupo de referencias a elementos de datos con acceso indexado a cada uno.
  • 2. El procedimiento – una secuencia de instrucciones. Estamos Turing completos y podemos computar cualquier cosa.

¿Por qué no nos detenemos aquí, por qué necesitamos algo más? Debido a que los procedimientos no se escalan, solo los pequeños pueden mantenerse en una mente humana, y ¿cómo funcionan los programadores múltiples en los grandes?

Sostengo que la respuesta es mejores abstracciones, alejándose de las de la computadora y hacia aquellos que los humanos usan y comprenden, y una forma de manejar grandes problemas.

  • 3. La subrutina : los subprogramas nos permiten descomponer los grandes problemas en otros más pequeños. Cuentan con datos locales, encapsulación y la capacidad de diferentes programadores para trabajar de manera segura en diferentes partes de un gran problema al mismo tiempo.
  • 4. Estructuras de control – programación estructurada – Dijkstra – porque GOTO simplemente no es suficiente.
  • 5. El cierre de ámbito léxico.
  • 6. Modularización – Parnas
  • 7. Independencia de diferentes partes de un programa a través de enfoques de concurrencia.

Después de leer un par de respuestas, algunos dicen que es Google, mientras que otros dicen que es C ++, otros dicen que es Microsoft Windows. Sin embargo, no me convencí de estas respuestas, de modo que aquí presento mi propia lista de Siete maravillas del mundo de la codificación .

  1. Internet: todo el mundo parece estar hablando de C ++ o algo de ciencia espacial que no puedo entender. Sin embargo, la mayoría de ellos no se dan cuenta de que la mayoría proviene de este llamado Internet.
  2. Sistemas operativos: mientras que algunos dicen que es Windows, otros dicen que es Android, mientras que otros argumentan que Linux es el mejor sistema operativo. Entonces, ¿qué tal si los juntamos a todos en la unidad? Creo que todos los sistemas operativos son parte de 7 maravillas.
  3. Lenguaje de programación: sin lenguajes de programación, ya sea C ++ o JavaScript o Python, o cualquier otro, no estaríamos aquí, por lo que me parece un poco delirante que algunos estén priorizando un idioma en lugar de otro.
  4. Softwares – Cuando digo software, significa mucho más de lo que podrías pensar. En lugar de especificar un software en particular, combinémoslos todos para que nadie pueda discutir sobre eso.
  5. Sitios web: no es fascinante que nadie mencione ‘Sitios web’, en lugar de eso, las personas mencionan Google o Stackoverflow u otros sitios web. ¿No podemos agruparlos? Bastante por favor.
  6. Realidad virtual: se han ido los días en que solo deseábamos vivir en una vida virtual. Bienvenidos al siglo XXI, donde podríamos hacer lo mismo. Aunque, todavía está en su fase de desarrollo, pero aún podría ser utilizado.
  7. Quora – ¿Necesito explicar?

¡La Internet! Se puede hablar de C ++, Emacs y Linux durante todo el día, pero en realidad el 99% de las personas no dieron una rata hasta que apareció esta cosa mágica llamada Internet (o para ser más precisa, la World Wide Web), así que ahí está.

WordPress: ¿Dónde estaríamos sin WordPress? Claro que es la pesadilla de la existencia de muchos desarrolladores, pero dependiendo de las cifras que utilices, tiene aproximadamente 1 de cada 4 sitios web en todo el mundo. ¡Eso no es nada para estornudar!

PHP: Es lo suficientemente simple como para que un estudiante que abandona la escuela secundaria lo use y alimente el 80% de Internet. No puedes hablar sobre las maravillas del mundo de la codificación e ignorar este elemento en la habitación.

iPhones: Una vez más, se trata de accesibilidad. Si todos tuviéramos que llevar computadoras portátiles o computadoras de escritorio, a nadie le importaría todo lo genial que estamos haciendo.

Teléfonos Android: los iPhones trajeron Internet a nuestros bolsillos, pero Android lo hizo asequible para la persona común.

Windows: Lo odio, pero una vez más, ¿dónde estaríamos sin él?

Napster: Toda esta tecnología es genial y todo, pero piense hace unos 40 años. Todos queríamos tener un buen sistema de alta fidelidad, ¿verdad? Napster nos dio una razón para QUERER ir a internet. Todo lo demás (redes sociales, etc.) fue solo una consecuencia de esto.

– Por supuesto, estas son todas mis opiniones y todos sabemos cómo son las opiniones …

Adenda … Se debe dar una mención de honor a la pornografía en Internet, ya que todos sabemos que esta es la verdadera razón para querer conectarse a Internet.

  1. Compiladores: la tecnología detrás es simplemente alucinante.
  2. La JVM: lo que hace y lo que te permite hacer, me sorprende
  3. El lenguaje de programación en C: es como el pegamento fundamental y una de las mayores inspiraciones para muchos, muchos idiomas.
  4. OCaml: no a menudo reconozco, pero aún es un lenguaje de programación poderoso, pragmático e interesante, que he tenido el placer de ver. En mi humilde opinión, probablemente lo mejor de ambos “mundos” (funcional y orientado a objetos)
  5. Haskell / GHC: lo que hace en términos de seguridad de tipos, inferencia de tipos, optimización de compilación y mucho más es alucinante. Una pieza de software moderna, bellamente diseñada y un lenguaje verdaderamente avanzado que toma en cuenta gran parte del trabajo académico, a considerar para proporcionar una solución del mundo real. No es perfecto pero vale la pena.
  6. Unix / Linux: literalmente cambió el mundo
  7. Nube: a menudo se confunde con un término comercial … ¡Solo mire a AWS y Azure para asegurarse de que es mucho más!

Mención de Honor :

  • El recolector de basura: funciona tan bien que muchos a menudo se olvidan de que está ahí …
  • Smalltalk: verdaderamente adelantado a su tiempo, en los días anteriores
  • C ++: “con gran poder viene una gran responsabilidad”: p
  • Rust: en realidad podría matar a C ++ un día!
  • CPU / GPU: ¡se han encontrado tantas inovaciones allí!
  • Windows / OSX: sí, lo digo en serio!
  • Maquinas virtuales

Aquí está mi selección para las siete maravillas del mundo de la codificación:

7. C ++ : el lenguaje de programación más grande y eficiente jamás creado.

6. Git : la razón detrás de cómo cientos de desarrolladores pueden trabajar en un software a la vez.

5. Facebook: la aplicación de red social más increíble jamás creada, utilizada por miles de millones de personas.

4. YouTube: miles de millones de horas de contenido de video, 1000 horas de contenido subidas todos los días. La forma en que manejan tanto espacio intrigante.

3. Desbordamiento de pila: los programadores no pueden soñar con un mundo sin él.

2. Búsqueda de Google : realmente me sorprende cómo Google se las arregla para buscar miles de millones de páginas en Internet para proporcionar resultados de búsqueda más precisos.

1. World wide web: WWW o Internet definitivamente deben encabezar la lista. Este es, con mucho, el regalo más útil para la humanidad.

En ningún orden en particular:

  • sistemas operativos: proporciona una plataforma para el desarrollo (Unix y sus descendientes en particular)
  • Lenguajes de alto nivel – menos trabajo que lenguaje ensamblador
  • lenguajes interpretados – mucha funcionalidad, fácil depuración
  • compiladores – más rápido que los intérpretes
  • Controladores de dispositivo: el código puede ser independiente de un dispositivo específico
  • concurrencia / multitarea: puede hacer muchas cosas al mismo tiempo
  • números de punto flotante – compare eso con aritmética de punto fijo
  • bibliotecas de software enlazables – mejor que tener que incluir manualmente cosas de otra fuente
  • derechos de acceso a la memoria (un programa está protegido de otro): depurar cuando no se sabe quién tiene el error es un verdadero problema

Sí. Sé que he enumerado más de siete.

Conocer

  1. C: Ken Thompson y sus colegas de AT&T crearon el lenguaje perfecto en el momento perfecto: usted podría escribir un sistema operativo en C (de cualquier tamaño) y las aplicaciones, también escritas en C, se integran a la perfección. Entonces, millones de programadores pudieron aprovechar la potencia de la computadora (e Internet) en casa con una PC, UNIX o Microsoft OS, un compilador de C y un módem. Linux vino directamente de esta herencia.
  2. COBOL: Grace Hopper creó de manera brillante un lenguaje que fue fácil de aprender y usar para las aplicaciones más comunes de la época: contabilidad e inventario. Sin COBOL, la automatización masiva de las tareas básicas de negocio y de almacén habría tomado mucho más tiempo. La escasez de programadores de los años 60 se alivió y los mainframes de IBM llegaron a gobernar el mundo.
  3. C ++: Bjarne Stroustrup creó el lenguaje definitivo para casi cualquier aplicación. Basado en el procedimiento C, aprovechó la OOP de manera importante por primera vez. Por supuesto, no se usa para ninguna aplicación porque es demasiado compleja y difícil de dominar, pero C ++ continúa impulsando a la industria de las computadoras en los niveles más bajos de la pila de software (testigo Node.js).
  4. Java: James Gosling, en Sun, llevó la programación a las máquinas virtuales y eliminó toda una serie de problemas de interfaz de hardware para los programadores, lo que permitió a los programadores resolver el problema sin preocuparse por la plataforma. Aprovechó muchas de las cosas buenas en C y C ++.
  5. Smalltalk: Alan Kay entendió el poder de la OOP antes que nadie más. Cuando estaba en Adobe, vino y dio una charla a todos los programadores y nunca he visto a un grupo técnico más cautivado por una persona (incluso Stroustrup, que también vino y nos habló). Smalltalk sigue siendo algo académico, y el jurado aún está deliberando sobre su futuro, pero su potencial es ilimitado como un lenguaje pequeño, abierto, puramente OOP.
  6. LISP: John McCarthy, en Stanford, creó un lenguaje basado en la recursión y comenzó la revolución de la IA. McCarthy, admirador de Turing y alumno de John Nash (“A Beautiful Mind”), estaba muy adelantado a su tiempo, al igual que sus mentores. LISP sigue siendo en gran parte académico, pero los conceptos sobre los cuales se construye están empezando a funcionar.
  7. JavaScript: ECMAScript fue creado por la web, por lo que Internet debe ser su inventor. Algo así como un desastre, está impulsando los marcos e interfaces web (sobre todo React, impulsado por Facebook, y Angular, impulsado por Google) y estimulando el desarrollo masivo de API del lado del servidor. Junto con HTML y CSS, es el lenguaje del navegador. ECMAScript ahora está “integrado” en la web y será difícil de desalojar. Pero la web es algo así como un desastre, así que esto es apropiado. ¡Viva JS! Deja que el hackeo continúe …
  1. Haskell. Esto es solo una preferencia personal, pero me parece que es uno de los idiomas más elegantes y exóticos que existen. Tiene algunas verrugas, pero es hermosa.
  2. Programación funcional. Véase más arriba. La inmutabilidad, la transparencia referencial, la composición son 3 de las cosas más geniales que han ocurrido en la programación de la OMI.
  3. Javascript. Solo por la gran cantidad de controversia que genera (gente que la ama contra la gente que la odia). Estoy más en el lado “como, pero no amor”.
  4. Java: es básicamente COBOL 2.0. Y me molesta que sea básicamente el idioma número 1 para la disponibilidad de empleos.
  5. Recolección de basura. Odio la administración manual de la memoria (excepto en aquellas situaciones de rendimiento extremadamente alto que preferiría evitar)
  6. Desbordamiento de pila. ’nuff dijo.
  7. Café. Lo único que nos mantiene en marcha.