¿Qué golang aprendió Erlang?
Como todos sabemos, Python, Ruby e incluso Java resuelven problemas comerciales. Son lenguajes orientados a aplicaciones y se centran principalmente en resolver la lógica empresarial. Sin embargo, existe otro campo de sistemas. se centra en la capa de red y las operaciones subyacentes. He estado buscando una solución elegante para esto y C fue el primero en ser eliminado para mí. La eficiencia de desarrollo de C es demasiado baja, pero Java es más adecuado, pero está demasiado inflado y carece de los genes de la programación de sistemas. Después de todo lo es.
Al final, elegí Erlang porque tiene un rendimiento excelente en la capa de red, buena tolerancia a fallos y robustez. Su máquina virtual es la única que puede competir con la JVM, y OTP es un peso súper pesado. El arma puede eliminar casi instantáneamente las aplicaciones de la capa de red, pero según mi resumen, tiene un defecto y una debilidad, que se desarrollarán más adelante. Podría decirse que Erlang es la mejor solución que conozco en este momento.
Hasta que un día conocí a Golang, no sabía que Golang era bastante temprano. Alrededor de 2008, me enteré de que Google estaba desarrollando un lenguaje extraño. En los años siguientes, mucha gente, representada por Lao Mo, susurraba sobre Golang. De hecho, nunca le presté mucha atención. La lección que aprendí de ROR es que la madurez es muy importante para los negocios y cada vez se desarrollan más productos basados en Golang. Tuve que investigarlo y supe que esta era la pitón de mis sueños. La eficiencia y el rendimiento están perfectamente equilibrados. Cuanto más aprenda sobre Go, menos querrá escribir código en Erlang. Las principales razones son:
1. La deficiencia de Erlang radica en la legibilidad y expresividad del código. Déjame darte un pequeño ejemplo. Por ejemplo, si crea una interfaz RESTFUL para el software de su sistema, podemos tener una idea general del estilo de codificación. No hablemos primero de Erlang. Si tienes experiencia en c/c/python/ruby/java, ¿tienes un sentimiento perdido hace mucho tiempo sobre Go? ¿Por qué es un defecto? Porque para un idioma, es poco probable que la gramática tenga cambios importantes, ni habrá cambios importantes. Me pregunto si alguien ha leído "Programming World" de Yukihiro Matsumoto, que explica los principios muy claramente. El método de programación realmente bueno es que la persona domine la computadora y no la computadora. Siento que Erlang tiene una pequeña ventaja en mi pensamiento de programación (¡tengo problemas de vista y todavía me estoy matando los ojos! La programación se trata primero de lógica, luego de ingeniería y finalmente de matemáticas. Esto me recuerda a "La belleza" de Wu Jun. de Matemáticas". La inteligencia artificial ha estado tomando desvíos en el último siglo, esperando que las máquinas sean muy Turing, ignorando la civilización humana existente y la aplicación de la inducción estadística.
2.La debilidad de Erlang radica en la falta de bibliotecas de alta calidad. Aunque existen muchas aplicaciones excelentes, Go también tiene una debilidad en este sentido. Esto es comprensible para un idioma que tiene menos de cinco años, pero es un poco irrazonable para un idioma que tiene más de 20 años. Por ejemplo, cuando utilizan bibliotecas de análisis json, muchas personas las extraen de mochiweb, una biblioteca que básicamente no está actualizada. Creo que cosas como json se pueden integrar en la biblioteca estándar del lenguaje, porque la tendencia API del software comercial será cada vez más obvia en el futuro. Para decirlo sin rodeos, uno confía en su vejez y vende su vejez, mientras que el otro se mantiene al día. De todos modos, no me preocupan en absoluto las bibliotecas de Golang. El I Ching actual es muy bueno, mucho mejor que los primeros cinco años de Ruby/Python. Consulte la lista de bibliotecas de alta calidad existentes.
3. Erlang no es gregario, lo que se refleja principalmente en su interacción con otras lenguas. Por supuesto que hay razones más profundas. El propio Erlang tiene su propia filosofía, como el mecanismo de recuperación de errores.
Si integras algo en otro idioma, la puntuación es tan mala como si insistieras en que un bebedor de café se sentara al lado de un comedor de ajo. En resumen, escribir una adaptación a Erlang es mucho más complicado que Go. Es incluso más complicado que Python/Java, lo que hace que la programación subyacente de Erlang no sea muy efectiva y no pueda aprovechar muchos de los logros sobresalientes de Linux. Siempre pensé que Erlang no necesitaba ningún controlador mysql/pg/oracle. Erlang debe ser una aplicación independiente, siempre y cuando uses otras cosas, según la teoría del barril, no te atreves a llamarlo nueve nueves y mirar el problema desde una perspectiva sistemática. Creo que la solidez de un sistema no puede depender de un determinado componente, razón por la cual las aplicaciones Erlang de Ericsson no se utilizan mucho.
4. Hablemos primero de los tipos de datos. He escuchado a más de una persona decir que Erlang no maneja bien las cuerdas. Trata las cadenas como listas, que es exactamente lo que debería ser. Sin embargo, la misma oración va en contra del concepto orientado a las personas, y se debe hacer algo de DSL, como: = está recubierto de azúcar en Golang, equivalente a var xx yyy = zzzz. Es muy conveniente para los programadores ingresar menos caracteres. En Golang, la conversión de caracteres es básicamente similar a Python. El mapeo de sectores es muy poderoso y admite condiciones lambda. Aunque Erlang tiene pocos tipos básicos, tiene muchas estructuras. La llamada estructura es equivalente a la estructura compleja de Golang. Esto también es muy extraño. Simplemente creo que la estructura de Erlang daña los ojos, ¿de acuerdo? Quizás sea la comparación de paréntesis, no creo que sea necesario. Es obvio que Erlang carece del gen DSL, que está relacionado con la época en la que nació Erlang. No es exagerado decir que desde que tomé Erlang, mi visión ha disminuido unos 65.438.000 grados. Realmente no me gusta la notación mencionada en lisp, pero puede que tenga algo que ver con la programación funcional: la deducción formal es mucho mayor que la deducción lógica.
5. De hecho, lo que no me importa más es el rendimiento, porque con la Ley de Moore, la rentabilidad de una unidad informática será infinitamente alta. Pero como Golang ha propuesto que el rendimiento se acerque a C, todavía lo menciono. Por supuesto, también se puede utilizar Erlang. Aunque es más lento que Java, está al mismo nivel que Python.
6. Hablemos del mecanismo de informe de errores, porque la información de informe de errores de Erlang es demasiado complicada. Al principio pensé que no podría leer los mensajes de error, pero luego usé Sasl, pero todavía no era lo suficientemente intuitivo. A veces incluso necesito utilizar herramientas para analizar archivos de fallos y localizar el problema. Todavía está relacionado con la filosofía de Erlang. Todo es paralelo en Erlang, por lo que no importa qué línea de la física esté equivocada. Simplemente vincúlelo al actor y luego indíquele el ID y el código de error del actor. Puedes analizarlo tú mismo según la experiencia. Esto tiene la ventaja de facilitar la localización de problemas que ocurren en paralelo, pero todo es relativo y un poco excesivo. En mi experiencia, muchas veces solo quiero señalar primero qué línea es incorrecta para mí, ¿de acuerdo? Incluso imprime el rastreo de la secuencia en oraciones completas en inglés, ¿de acuerdo? En cuanto a los errores de concurrencia, no son comunes en lenguajes imperativos multiproceso. Aunque no es imposible, haré todo lo posible para depurar cuando encuentre errores. Pero no toda la lógica utiliza el pensamiento paralelo para localizar problemas. Incluso pienso que un sistema no es completamente paralelo o conectado, al igual que no podemos simplemente usar el materialismo o el idealismo para medir el mundo. Golang hace un buen compromiso. Cuando no se necesita paralelismo, el código de serie se puede escribir honestamente.
7. Hablemos de reclutamiento. He reclutado a varias personas de C antes. La verdad es que el nivel es bastante bueno. Puedo completar un pequeño componente en una semana. Libervent es familiar. Más tarde, obligué a la gente a usar Erlang, pero al final los ahuyenté. Todavía lamento que sea realmente inapropiado imponer mis propias ilusiones a los demás. Pero se puede decir que me resulta más difícil reclutar gente de Junjiro que de objc. Nadie. Hablar de la elegancia de la tecnología no es fiable al principio, y luego miramos la lista de correo. El nivel de actividad de Golang es obviamente mucho más alto que el de Erlang, básicamente cercano al de Ruby.
Más importante aún, no me preocupa en absoluto el talento de Golang, porque siempre que esté familiarizado con Python/C/Ruby/o C, básicamente puedo comenzar en medio día y luego puedo buscar información mientras trabajo. Si bien hay mucha profundidad, el umbral es extremadamente modesto y los ingenieros pueden reutilizar muchos de los existentes. En realidad, Erlang está relacionado con el primer punto. La mayoría de la gente queda confundida durante una semana. ¿No es el mismo pensamiento abstracto y visión del mundo de todos? Por lo tanto, aunque la programación funcional comenzó no más tarde que los lenguajes imperativos, pocas personas la aprenden. Esto es historia. La mayoría de las personas prefieren resolver problemas y crear valor en lugar de utilizar las matemáticas para deducir.
8. Finalmente, te sugiero que si juegas c/c, ahora es el mejor momento para aprender Golang y crecer en un lenguaje confiable. Esto se siente genial. Te has metido con una aplicación usando Erlang, pero me temo que has completado 10 proyectos de código abierto usando Go. Eso sí, tienes que combinarlo con tu propio gusto. Golang es sublimemente literal, Erlang.
Cree en tu propio criterio y en tu propia lógica. Ganar es ganar, perder es perder.
Reimpreso únicamente como referencia, los derechos de autor pertenecen al autor original. Que tenga un lindo día. Por favor adopte si está satisfecho.