¿No pueden los programadores chinos inventar Node.js?

Hoy pensé en una pregunta: las innovaciones como Node.js no son invenciones fundamentales, sino que en realidad combinan tecnologías existentes: motor V8, impulsado por eventos, libuv, etc. ¿Por qué tal innovación no apareció primero en China?

En los últimos años, la Internet doméstica y la Internet móvil se han desarrollado muy bien y deben haber encontrado los problemas que tiene que resolver Node.js. Los técnicos nacionales también deberían poder implementarlo. ¿Por qué no aparece?

Con esta pregunta en mente, eché un vistazo al historial de nacimiento de Node.js y la experiencia de su autor Ryan Dahl para ver si puedo obtener algo de iluminación.

Rayan Dahl nació en California, EE. UU. En 1981. Cuando tenía 6 años, su madre le compró una computadora Apple IIc. Esto fue en 1987. Mucha gente de la misma edad en China todavía juega al barro, ¿verdad?

La Universidad Ryan Dahl estudió matemáticas en la Universidad de California, San Diego, y luego ingresó a la Universidad de Rochester, Nueva York para obtener un doctorado, con especialización en topología algebraica.

(Estructura a menudo estudiada en topología algebraica)

El entrenamiento en matemáticas le dio a Ryan una gran habilidad para pensar de manera abstracta, pero en el tercer año de su doctorado, sintió que la dirección de su investigación tenía poco que ver con la vida real. Sentarse en una habitación todo el día escribiendo y dibujando en papel era realmente aburrido. No es tan bueno como programar, simplemente crea un sitio web y luego puedes "presumir" ante los demás.

Entonces, en julio, abandonó la escuela y compró un boleto de ida a Chile en América del Sur (¿por qué?). Inesperadamente, julio es invierno en América del Sur. Lo congela bastante. Después de alquilar una casa, no tiene nada a mano. Con dinero, hambre y frío, el ex estudiante de doctorado Ryan comenzó a enseñar inglés en Chile para ganar dinero.

(El contorno rojo es Chile)

En ese momento conoció a un programador llamado Eric, que estaba construyendo un sitio web con PHP para una empresa de snowboard. Ryan recordó que había escrito un programa en la universidad y preguntó: ¿Puedo ayudar yo también? Así que comenzó su carrera como programador, ya ves, la vida aún necesita ser más activa.

En 2006, Ruby on Rails se hizo popular. Ryan comenzó a usarlo para desarrollar sitios web. La sintaxis de Ruby es muy elegante, y Rails desarrolla sitios web muy rápido, pero funciona lentamente y no es fácil de expandir. Entonces Ryan comenzó a estudiar este problema y comenzó Acceso al conocimiento subyacente.

Ryan pasó un año en Sudamérica y la mayor ganancia puede ser tener novia. Como su novia regresaba a la universidad, la acompañó a Alemania y comenzó una carrera como autónomo, principalmente haciendo el desarrollo del módulo Nginx.


A Ryan le gusta mucho el diseño de servidores basados ​​en eventos como Nginx. Tal vez esté aprendiendo matemáticas. Cree que este modelo de programación es más hermoso y más fácil de entender. Por el contrario, la forma tradicional (un bucle infinito para aceptar sockets y bloquear para leer y escribir sockets) lo hace sentir extraño.

Todavía está interesado en Ruby. Cuando asistió a la conferencia de Ruby, conoció a un tipo llamado Chris Neukirchen. Chris desarrolló una cosa llamada Rack, que hacía un alto nivel de abstracción en varias operaciones del servidor web: una función llamada llamada. , Acepta un parámetro llamado entorno y devuelve una matriz que contiene tres valores (estado, encabezados, cuerpo).

A Ryan, del Departamento de Matemáticas, le gustan mucho estas hermosas abstracciones.Una idea surgió en su mente: ¿Puedes combinar las ideas de Rack con la IO sin bloqueo de Nginx para crear algo nuevo?

Ryan intentó utilizar varios lenguajes de programación para desarrollar un sistema de este tipo. Por ejemplo, su lenguaje favorito Haskell, pero sintió que no podía obtener GHC (Glasgow Haskell Compiler). Lua era su lenguaje favorito, pero Lua estaba escrito demasiado bloqueando. La biblioteca es incómoda de usar.

En 2008, se lanzó el navegador Chrome basado en el motor JavaScript V8. Basándose en la curiosidad, Ryan comenzó a estudiar V8. Descubrió que el código de V8 era limpio, rápido y muy atractivo. Un día, de repente se dio cuenta: ¡Oh, Dios mío! ¡JavaScript no es de un solo subproceso y sin bloqueo! ¡Y JavaScript no tiene biblioteca de bloqueo de E / S!

Si combina JavaScript, IO asincrónico y Http Server, ¡será algo genial!

Ryan estaba muy emocionado e inmediatamente comenzó a desarrollar. ¡Unos meses después, nació Node.js!

En resumen, hay varias características distintivas en la experiencia de Ryan:

1. Jugar a la computadora a los 6 años  

Esto fue en 1987, y los compañeros domésticos estimaron que más gente jugaba en el barro.

2. Buena formación académica

Un estudiante de doctorado en el Departamento de Matemáticas (aunque no se graduó) ha cultivado su fuerte capacidad de pensamiento abstracto.

3. Siga el interés, el médico abandonará si quiere

Se estima que no hay mucha gente que se atreva a hacer esto en China. Necesitamos un título para encontrar un trabajo, evaluar un título de trabajo, establecer una residencia permanente registrada e introducir talentos ...

4. Vida libre

Ir directamente de Estados Unidos a Chile, ¿qué tipo de espectáculo es este?

Para su novia se fue de Chile a Alemania, en su mente tal vez así sea la vida.

La mayoría de los programadores domésticos tomarán otro camino: encontrar un trabajo estable en una gran fábrica, se ven obligados a 996, tienen una hipoteca (¡no necesariamente pueden pagarla!), Autos, niños ...

5. Hacker típico

Un estudiante sin especialización en computación que ha dominado C, Lua, Haskell, C ++, JavaScript y otros lenguajes de programación, y ha pasado del desarrollo de la capa de aplicaciones web al desarrollo de software de la capa del sistema como Nginx, lo que demuestra completamente que es muy hábil técnicamente y aprende Super habilidad.

6. Curiosidad

Investigando nueva tecnología, Chrome V8 salió y jugó con ella, ¡y el resultado fue un mundo nuevo!

Personalmente, siento que Ryan es una persona muy libre que ha estado siguiendo sus intereses y haciendo cosas sin preocuparse por la vida en absoluto. Oh, en realidad no es exacto. En Sudamérica, Ryan una vez estuvo "muerto de hambre y frío".

Admiro este tipo de libertad, pero no puedo aprenderlo. ¡Creo que la mayoría de la gente tampoco puede aprenderlo!

Dios le dio a Ryan la responsabilidad de extender JavaScript al lado del servidor. Hay una cierta inevitabilidad, porque por su experiencia, él ha estado pensando en este problema y ha hecho varios intentos fallidos. Él ha estado buscando uno adecuado. Lenguaje de programación, y luego pasó a Chrome V8 por casualidad.

El colega de Ryan, Brock Whitten, hizo este comentario sobre él:

Ryan es un programador encantador. Tiene una habilidad que es rara entre los programadores. Puede ver las cosas desde diferentes ángulos. Ryan "cuestionará" varias cosas, ¿cómo se implementa la base de datos? ¿Cómo se implementa Parser y cómo es Web Server? Siempre puede pensar en diferentes formas de abordar un problema.

Un programador que tenga una buena formación académica, pueda vivir libremente y seguir sus intereses, junto con la capacidad de Pensar diferente, naturalmente puede hacer grandes innovaciones. ¡La aparición de Node.js en China puede deberse a la falta de tal suelo!

Cómic: Hermano, ¡tienes que quedarte despierto toda la noche esta noche!

De tres mil sueldos mensuales a tres mil sueldos mensuales

¿Cómo entrenó Daniel? ¿Cómo se gana dinero?

Cómic: ¿Por qué la computación cuántica es tan asombrosa?

Guía de despido de arquitectos

Cada vez que se mata a Java, siempre hay un gran dios al que salvar

El destino de los programadores

70 años de guerra de chips, ¡el verdadero rey está a punto de aparecer !

Mata al mayor monstruo del desarrollo de software: ¡el hombre lobo !

¿Quién es el IDE número uno del universo?

Servidor HTTP: un mal contraataque

¿Cómo reducir el salario de un programador?

Programador, ¡tienes que elegir el momento adecuado para ejecutar!

¡En dos años, aprendí todos los lenguajes de programación!

Javascript: un contraataque de una polla

Soy un hilo

Cartero daming TCP / IP

Https después de una historia

CPU Forrest

Supongo que te gusta

Origin blog.csdn.net/coderising/article/details/109088919
Recomendado
Clasificación