Node.js vs Golang: Batalla de les llengües properes

Recentment, hi ha hagut crítiques sobre el valor d’utilitzar Node.js en un entorn d’aplicació en xarxa d’altes prestacions i alguns desenvolupadors s’han traslladat al llenguatge Go..

També hi ha diversos exemples corporatius d’alt perfil que utilitzen Go, més enllà del creador de l’idioma, Google. Dropbox s’ha traslladat a Go, al·legant importants augments del rendiment i els desenvolupadors del sistema de virtualització Docker també utilitzen Go.

Tot i això, és important tenir en compte que Node.js segueix sent utilitzat per una audiència molt més àmplia, té més mòduls, és més fàcil d’utilitzar i no anirà enlloc en cap moment. A més, si creeu una aplicació web, Node.js serà probablement el vostre idioma escollit, ja que actualment Go s’utilitza més com a llenguatge de script quan es prioritza la concurrència i la velocitat..

En aquest article, analitzarem les diferències entre Node.js i Go des del punt de vista del desenvolupador per descobrir els punts forts i els punts febles de cada entorn..

Node.js i l’idioma Javascript

Emblema de Node.js

Emblema de Node.js

Node.js (i la seva recent forquilla, IO.js) és una plataforma cada cop més popular basada en un temps d’execució ràpid basat en JavaScript: V8.

V8 és una màquina virtual JS creada per Google que està dissenyada per crear aplicacions en xarxa escalables. Compila codi JavaScript amb codi de màquina nativa, utilitzant algunes optimitzacions complexes. V8 també fa l’assignació de memòria i la recollida d’escombraries d’objectes JS.

Tot i que aquestes optimitzacions dinàmiques per a un llenguatge tipografiat dinàmic ofereixen una gran flexibilitat per als desenvolupadors, de vegades comporten uns costos de rendiment..

Com Node.js està escrit en JavaScript, hereta la majoria de les propietats d’aquest idioma. JavaScript és tan popular avui en dia que el desenvolupament estàndard ECMAScript es fa principalment de forma evolutiva, més que no pas una moda revolucionària.

Això té alguns efectes secundaris importants per al desenvolupament de nodes i JavaScript:

  • Alguns dels defectes del llenguatge de JavaScript són difícils de solucionar sense que es pugui incomplir la compatibilitat endarrerida, encara que s’estan solucionant els pitjors problemes.
  • Les funcions de llenguatge JS útils, però radicals, poden no ser implementades o només es poden “enganxar” com a sintaxi addicional. Això pot conduir a un disseny d’idiomes més desordenat en comparació amb idiomes que integren netament les funcions en el seu disseny. Un bon exemple d’això és la computació simultània amb JS. Les millors pràctiques de JS per a la computació simultània van anar des d’una API de concurrència (utilitzant devolucions basades en esdeveniments), al devolopment de les promeses, al proper suport per als generadors d’asinc. Actualment, l’infern de devolució de tornada continua sent un problema seriós amb moltes aplicacions Node.js; tanmateix, això ha comportat un codi menys llegible, un desenvolupament més lent i, potser, encara més errors.

Tot això fa que el llenguatge JavaScript evolucioni força lentament (i alguns dirien que malament), fins i tot quan es coneixen bons conceptes d’altres idiomes..

Node.js encara té una comunitat enorme i tones d’aplicacions fantàstiques que s’estan escrivint per això, no volem espantar-nos amb algunes de les seves molèsties en petits casos; segons la gran majoria de desenvolupadors, encara és una plataforma fantàstica amb la qual treballar.

El Go Language o Golang

El gang golang

El Golang Gopher

Go, que també es coneix com a “Golang”, és un llenguatge de programació orientat als sistemes compilat iniciat per Google el 2007. Go es pot considerar el resultat d’una evolució lingüística bastant conservadora a partir de llenguatges com C i C++.

Anem millorant alguns dels dolents d’aquests idiomes:

  • mala gestió de la dependència
  • sistemes complicats
  • difícil gestió de la memòria
  • manca de suport de càlcul paral·lel
  • falta d’assistència multicentre

Go també redueix la quantitat de tipus de codi necessari per ser més expressiu que C o C++.

Go fa que sigui molt més fàcil escriure aplicacions en xarxa robustes, sense renunciar a la prestació en comparació amb C o C ++. L’elevat rendiment és en gran part degut a la recopilació estàtica del codi de tipus estàtic de Go. Moltes optimitzacions són possibles quan un compilador pot fer prèviament tots els treballs d’inspecció de codi, a diferència del treball dinàmic del compilador JS realitzat durant el temps d’execució..

Comparació de característiques de Golang vs Node.js

Podem començar a veure per què, per a alguns tipus de desenvolupament d’aplicacions, pot ser útil fer servir Go en lloc de Node.js; tanmateix, Node.js segueix sent un llenguatge molt útil en molts casos d’ús.

Comparem els punts forts i els punts febles de cada llenguatge de programació, de manera que pot ser més fàcil triar quin entorn és l’eina adequada per al vostre següent treball.

Va
Node.js

MaduresaMadura i robusta per la seva edatMadura, però l’API continua canviant una mica. Els recents canvis de forquilla de node de IO.js també poden convertir-se en motiu de problemes d’API per a desenvolupadors que escriuen i utilitzen mòduls Node. Com de gran serà aquest problema, no està clar ara mateix.
RendimentCaracterístiques de rendiment similars a les de C o C ++, és a dir molt bonesA causa de la naturalesa de tipus dinàmic de JS, Node no pot assolir el rendiment brut de les tasques de CPU o de memòria que Go pot aconseguir en moltes proves. Tanmateix, en els casos d’ús comú en què hi ha comunicació de xarxa o interacció de bases de dades, el rendiment de Node i Go solen ser iguals.
ConcurrènciaGo utilitza coroutines anomenades goroutines. Una goroutina és un fil lleuger gestionat pel temps d’execució de Go. La comunicació entre goroutines es fa de manera molt elegant mitjançant canals. Per obtenir més informació, consulteu aquest vídeo.El node pateix una assistència de concurrència inferior a JavaScript mitjançant el mecanisme de devolució d’esdeveniments. Tanmateix, per a moltes aplicacions, bastarà treballar amb les promeses de JS i el pròxim suport del generador asínc (també anomenat “semi-coroutines”). Alguna cosa com el marc de Koa ja és compatible amb l’enfocament del generador asínc a Node.
EscalabilitatGo va ser realment dissenyat per escalabilitat i concurrència, sense cap problema.Diverses persones i empreses que utilitzen Node.js han afirmat que Node té alguns problemes en entorns que han de fer una escala massiva. Potser Node pot superar aquests problemes massius a escala amb el temps.
Facilitat de desenvolupamentLes persones procedents d’un fons JS / Node hauran d’aprendre alguns conceptes nous de programació, com ara: coroutines, canals, escriptura estricta (amb recopilació), interfícies, estructures, punteres i algunes altres diferències..Per a un desenvolupador de JS, és molt fàcil accedir a la programació de nodes.
Frontend & BackendTot i que podeu executar codi Go al navegador mitjançant gopherjs, JS segueix sent la forma en què la majoria de desenvolupadors els agrada programar el frontend. Go s’adreça més al backend, en particular per desenvolupar serveis concurrents d’alt rendiment al costat del servidor.No és necessari fer cap canvi de context mental mentre es desenvolupa un sistema client-servidor basat en JS.
Paquets & EinesEl nombre de paquets Go estàndard està creixent constantment, actualment és de més de 100, i es poden cercar fàcilment els paquets de la comunitat Go. Tot i que encara no hi ha tants marcs d’aplicacions diferents per a desenvolupadors en relació amb Node, podeu fer una ullada als paquets “go get” de la comunitat Go, que actualment té més de 58.000 disponibles per utilitzar. i creixent.El nombre de paquets de nodes se situa actualment en més de 100.000. Això significa que s’han fet moltes tasques de terra i això pot fer que alguns projectes de programari siguin molt més fàcils i / o més barats d’implementar. Les eines del node també són excel·lents. El gestor de paquets npm es va assabentar de tots els gestors de paquets anteriors i va fer les coses bé.
Desenvolupador Mindshare Un estudi recent va mostrar l’ascens de Go a un lloc entre els primers 20. El ritme en què va ocórrer això va superar les expectatives. Go sens dubte té força impuls, sobretot amb el recent suport del sistema operatiu mòbil Android.En aquest moment, el node és molt més popular per molts ordres de magnitud. Obtenir una bona assistència d’allotjament, suport comercial i autònoms de Node.js per al vostre projecte serà molt més fàcil per a NodeJS en aquest moment.
Gestió d’errorsEl maneig d’errors a Golang requereix que implementeu la comprovació d’errors explícita, cosa que pot dificultar la resolució de problemes d’errors. Tanmateix, hi ha qui argumenta que, en general, obteniu una aplicació més neta, un cop entès el maneig d’errors Golang. El maneig d’errors a Node.js pot ser inconscient de vegades, però ofereix el mecanisme de llançament / captura més comú per als errors que els desenvolupadors estan acostumats a utilitzar amb altres idiomes.

Resum de Node.js vs Golang

L’elecció entre Node.js o Go depèn molt del tipus de desenvolupament que més us convingui i de quina quantitat massiva necessita el servei de xarxa..

Pot ser que Go encara no disposi de tots els paquets de comunitat o de memòria compartida que Node té, però el seu model de concurrència més net sintàcticament, un millor rendiment de CPU i memòria brut i la seva capacitat per augmentar-se millor amb les càrregues concurrents podrien constituir un millor fonament per a determinades xarxes. tipus d’aplicació.

Si necessiteu alguns paquets Node.js que encara no estan disponibles per a Go i que serien difícils o costosos de tornar a implementar a Go, pot ser que Node sigui l’elecció més sàvia.

Si voleu instal·lar Go al vostre sistema Ubuntu / Linux, mireu la nostra guia per instal·lar Go. A continuació, visiteu GoByExample i el llibre en línia Go per obtenir uns tutorials més fantàstics.

Si voleu donar-li un tomb a Node.js, assegureu-vos de consultar el nostre guia d’instal·lació de Node.js, així com la nostra llista de serveis d’allotjament gratuïts de Node.js. A continuació, vés a NodeSchool.io per obtenir uns tutorials fantàstics sobre programació amb Node.js.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me