{"id":617,"date":"2026-09-06T10:52:53","date_gmt":"2026-09-06T13:52:53","guid":{"rendered":"https:\/\/www.linuxpro.com.br\/2026\/09\/a-historia-da-linguagem-go\/"},"modified":"2026-09-08T13:02:09","modified_gmt":"2026-09-08T16:02:09","slug":"a-historia-da-linguagem-go","status":"publish","type":"post","link":"https:\/\/www.linuxpro.com.br\/es\/2026\/09\/a-historia-da-linguagem-go\/","title":{"rendered":"La historia del lenguaje Go"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" alt=\"Mascote do LinuxPro encaixando tubos-canal entre goroutines, com o gopher oficial do Go na mesa\" src=\"\/wp-content\/uploads\/2026\/09\/golang-historia-v4.webp\" width=\"1486\" height=\"856\" \/><\/p>\n<p>Go naci\u00f3 en una pizarra de Google, en 21 de septiembre de 2007, porque C++ tardaba demasiado en compilar. En noviembre de 2025 el lenguaje cumpli\u00f3 16 a\u00f1os de c\u00f3digo abierto. En septiembre de 2026 la serie estable es la <strong>1.27.1<\/strong>. Docker, Kubernetes, Terraform, todo <code data-no-translation=\"\">go<\/code> lo que instalas en Linux, desciende de esa reuni\u00f3n de tres personas.<\/p>\n<p><!-- more --><\/p>\n<h2>Por qu\u00e9 un lenguaje nuevo<\/h2>\n<p>Google a finales de los a\u00f1os 2000: servidores en C++ y Java, builds de tres cuartos de hora,concurrencia a pulso, dependencias que no cerraban. Rob Pike describi\u00f3 el encargo en <em>Go at Google: Language Design in the Service of Software Engineering<\/em>: no era moda ling\u00fc\u00edstica, era ingenier\u00eda de software a escala. Compilar r\u00e1pido, tipado est\u00e1tico, hablar con la red sin un framework de hilos, y un \u00fanico binario.<\/p>\n<p>El FAQ oficial cierra el origen: Robert Griesemer, Rob Pike y Ken Thompson empezaron a esbozar metas en la pizarra el 21 de septiembre de 2007. En pocos d\u00edas se convert\u00eda en plan. En enero de 2008 Ken ya ten\u00eda un compilador que emit\u00eda C. En mayo, Ian Lance Taylor, por cuenta propia, empezaba un frontend GCC. Russ Cox entr\u00f3 a finales de 2008 y sac\u00f3 el prototipo del laboratorio.<\/p>\n<h2>Unix, Plan 9, CSP<\/h2>\n<p>Los tres curr\u00edculos explican el gusto de la lengua. Ken Thompson co-cre\u00f3 Unix y el lenguaje B. Pike vino de Plan 9 y de Inferno, co-invent\u00f3 UTF-8 con Thompson, y pas\u00f3 d\u00e9cadas en lenguajes concurrentes \u2014 Newsqueak, Alef, Limbo \u2014 todos en la l\u00ednea del CSP de Tony Hoare (1978). Griesemer vino de compilador: HotSpot de Java, V8. Go hereda el minimalismo Unix, los canales del CSP y la testarudez de un runtime que compila en segundos.<\/p>\n<p>El nombre surgi\u00f3 en el correo de Pike del 25 de septiembre de 2007: \u201cgo\u201d. Corto, verbo, dominio f\u00e1cil. \u201cGolang\u201d es el apodo de b\u00fasqueda \u2014 el <code data-no-translation=\"\">golang.org<\/code> exist\u00eda porque <code data-no-translation=\"\">go.org<\/code> no estaba libre. El sitio can\u00f3nico hoy es <a href=\"https:\/\/go.dev\/\">go.dev<\/a>.<\/p>\n<h2>La idea central: goroutines y canales<\/h2>\n<p>Antes de seguir la cronolog\u00eda, conviene ver qu\u00e9 hace la lengua de forma diferente \u2014 porque no es la sintaxis, es el modelo de concurrencia.<\/p>\n<p>Una <em>goroutine<\/em> no es un hilo del sistema. Es una funci\u00f3n que el runtime de Go planifica sobre un pu\u00f1ado de hilos reales, con pila inicial de pocos kilobytes que crece bajo demanda. Por eso lanzas diez mil de ellas sin pensarlo dos veces \u2014 lo que con <code data-no-translation=\"\">pthread<\/code> ser\u00eda irresponsable:<\/p>\n<pre data-no-translation=\"\"><code class=\"language-go\" data-no-translation=\"\">go processar(pedido)   \/\/ \u00e9 isso. N\u00e3o h\u00e1 pool, n\u00e3o h\u00e1 executor, n\u00e3o h\u00e1 Future.<\/code><\/pre>\n<p>La comunicaci\u00f3n entre ellas es la otra cara del dise\u00f1o y viene directamente del CSP de Tony Hoare: en lugar de compartir memoria y protegerla con <em>mutex<\/em>, pasas el dato por un canal. El lema de la comunidad lo resume: <em>\u201cno te comuniques compartiendo memoria; comparte memoria comunicando\u201d<\/em>.<\/p>\n<pre data-no-translation=\"\"><code class=\"language-go\" data-no-translation=\"\">resultados := make(chan string)\n\nfor _, host := range hosts {\n    go func(h string) {\n        resultados &lt;- checar(h)      \/\/ envia pelo canal\n    }(host)\n}\n\nfor range hosts {\n    fmt.Println(&lt;-resultados)        \/\/ recebe, bloqueando at\u00e9 chegar\n}<\/code><\/pre>\n<p>Y el <code data-no-translation=\"\">select<\/code> es el <code data-no-translation=\"\">epoll<\/code> del lenguaje: espera en varios canales a la vez, incluyendo uno de timeout.<\/p>\n<pre data-no-translation=\"\"><code class=\"language-go\" data-no-translation=\"\">select {\ncase r := &lt;-resultados:\n    fmt.Println(r)\ncase &lt;-time.After(2 * time.Second):\n    fmt.Println(\"estourou o tempo\")\n}<\/code><\/pre>\n<p>Es ese conjunto \u2014 goroutine barata, canal, <code data-no-translation=\"\">select<\/code>, y un binario est\u00e1tico sin VM \u2014 lo que explica por qu\u00e9 pr\u00e1cticamente toda herramienta de infraestructura de la \u00faltima d\u00e9cada eligi\u00f3 Go. No es el lenguaje m\u00e1s expresivo; es el que todo un equipo lee igual el lunes.<\/p>\n<h2>10 de noviembre de 2009<\/h2>\n<p>Go se convirti\u00f3 en proyecto p\u00fablico ese d\u00eda. La mascota \u2014 el gopher azul de ojos enormes \u2014 vino con el lanzamiento. Ren\u00e9e French, que ya hab\u00eda dibujado al conejo del Plan 9 (y est\u00e1 casada con Pike), adapt\u00f3 un gopher de una camiseta de la WFMU. Se llam\u00f3 Gordon durante un tiempo; desde 2010 es simplemente \u201cthe Go gopher\u201d. Las GopherCon de todo el mundo surgieron de ah\u00ed.<\/p>\n<p>Todav\u00eda no era Go 1. Hab\u00eda dos compiladores: el <code data-no-translation=\"\">gc<\/code> (la l\u00ednea Plan 9, 6g\/8g) y el gccgo de Taylor. La biblioteca est\u00e1ndar copiaba el gusto del Plan 9 \u2014 el paquete <code data-no-translation=\"\">fmt<\/code> incluido el nombre.<\/p>\n<h2>Go 1.0 y la promesa<\/h2>\n<p>28 de marzo de 2012: Go 1.0. El contrato que asegur\u00f3 la adopci\u00f3n: un programa escrito para Go 1 sigue compilando en cualquier 1.x. No habr\u00e1 un Go 2 que rompa el mundo. Las empresas apostaron. El ritmo pas\u00f3 a ser semestral (febrero y agosto, con retraso de d\u00edas, no de a\u00f1os).<\/p>\n<p>Hitos que importan en Linux:<\/p>\n<ul>\n<li><strong>1.5<\/strong> (agosto de 2015): el compilador pasa a estar escrito en Go (self-hosting); GC concurrente.<\/li>\n<li><strong>1.11<\/strong> (agosto de 2018): m\u00f3dulos, a\u00fan experimentales. Adi\u00f3s a GOPATH como prisi\u00f3n.<\/li>\n<li><strong>1.13<\/strong> (2019): m\u00f3dulos oficiales; <code data-no-translation=\"\">errors.Is<\/code> \/ <code data-no-translation=\"\">%w<\/code>.<\/li>\n<li><strong>1.16<\/strong> (2021): <code data-no-translation=\"\">\/\/go:embed<\/code>, m\u00f3dulos por defecto.<\/li>\n<li><strong>1.18<\/strong> (15 de marzo de 2022): gen\u00e9ricos \u2014 par\u00e1metros de tipo. La solicitud m\u00e1s antigua del FAQ.<\/li>\n<li><strong>1.21<\/strong> (2023): <code data-no-translation=\"\">GOTOOLCHAIN<\/code> baja por s\u00ed solo la versi\u00f3n que el <code data-no-translation=\"\">go.mod<\/code> pide; <code data-no-translation=\"\">min<\/code>\/<code data-no-translation=\"\">max<\/code>; paquetes <code data-no-translation=\"\">slices<\/code> e <code data-no-translation=\"\">maps<\/code>.<\/li>\n<li><strong>1.22<\/strong> (2024): variable de bucle por iteraci\u00f3n (fin del cl\u00e1sico bug del <code data-no-translation=\"\">for<\/code>); enrutamiento mejorado en <code data-no-translation=\"\">net\/http<\/code>.<\/li>\n<li><strong>1.25<\/strong> (agosto de 2025): el recolector <em>Green Tea<\/em> aparece como experimento (10\u2013% menor coste de recolecci\u00f3n en muchos servicios).<\/li>\n<li><strong>1.26<\/strong> (10 de febrero de 2026): el <em>Green Tea<\/em> se convierte en el recolector <strong>por defecto<\/strong>; <em>modernizers<\/em> no <code data-no-translation=\"\">go fix<\/code>.<\/li>\n<li><strong>1.27<\/strong> (agosto de 2026; 1.27.1 el 28 de agosto): <strong>m\u00e9todos gen\u00e9ricos<\/strong> \u2014 propuesta de Griesemer aprobada en marzo de 2026 \u2014, el nuevo motor de JSON (<code data-no-translation=\"\">encoding\/json\/v2<\/code>) y criptograf\u00eda poscu\u00e1ntica en la biblioteca est\u00e1ndar. Tambi\u00e9n se a\u00f1ade la opci\u00f3n de desactivar Green Tea.<\/li>\n<\/ul>\n<h2>La infra de internet<\/h2>\n<p>Docker (2013) es Go. Kubernetes tambi\u00e9n. Terraform, Prometheus, el cliente de Git, la mitad de las CLI de nube. Un binario est\u00e1tico, sin VM, sin <code data-no-translation=\"\">node_modules<\/code> de 400 MB \u2014 eso vendi\u00f3 la lengua a quien opera Linux. En el ranking TIOBE de 2026 Go oscila cerca del puesto 12; en GitHub y en los repositorios de infraestructura, el peso es otro.<\/p>\n<p>La competencia es la carta: <code data-no-translation=\"\">go func()<\/code>, canales, <code data-no-translation=\"\">select<\/code>. No es Erlang, no es Java con pool de hilos. Es CSP que cabe en un syslog.<\/p>\n<h2>Lo que Go rechaz\u00f3<\/h2>\n<p>Sin herencia de tipos, sin excepciones al estilo <code data-no-translation=\"\">throw<\/code>, sin macros, sin sobrecarga de m\u00e9todos. Los gen\u00e9ricos llegaron tarde y estrechos. Los m\u00e9todos gen\u00e9ricos solo en 2026. La FAQ a\u00fan dice: si echas de menos X, quiz\u00e1 Y ya lo cubra. Pike, en 2023 (<em>What We Got Right, What We Got Wrong<\/em>), admite lo que pes\u00f3: el gopher acert\u00f3; el GOPATH tard\u00f3 en morir; la comunicaci\u00f3n del \u201cporqu\u00e9\u201d lleg\u00f3 en 2013, cuatro a\u00f1os despu\u00e9s del lanzamiento.<\/p>\n<p>Las quejas que quedaron, y que valen para quien va a decidir el stack:<\/p>\n<ul>\n<li><strong><code data-no-translation=\"\">if err != nil<\/code> en cada l\u00ednea.<\/strong> La ausencia de excepciones deja el error expl\u00edcito \u2014 y deja tambi\u00e9n un tercio del archivo repitiendo la misma verificaci\u00f3n. Es el debate m\u00e1s antiguo de la comunidad, y ninguna propuesta de az\u00facar sint\u00e1ctico ha pasado hasta hoy.<\/li>\n<li><strong><code data-no-translation=\"\">nil<\/code> sigue existiendo.<\/strong> Puntero nulo, mapa nulo, interfaz nula que no es nula: Go no sigui\u00f3 el camino del <code data-no-translation=\"\">Option<\/code> que el <a href=\"\/es\/2026\/09\/a-historia-da-linguagem-rust\/\">Rust<\/a> tom\u00f3, y el <em>panic<\/em> por desreferencia sigue siendo el error m\u00e1s com\u00fan en producci\u00f3n.<\/li>\n<li><strong>Recolector de basura es recolector de basura.<\/strong> Green Tea redujo bastante el coste, pero quien necesita latencia predecible en el percentil 99,9 a\u00fan choca con \u00e9l \u2014 y es justo ah\u00ed donde Rust entra en la conversaci\u00f3n.<\/li>\n<li><strong>La gobernanza corresponde a Google.<\/strong> Abierta, con propuestas p\u00fablicas y revisi\u00f3n a la vista, pero la \u00faltima palabra la tiene el equipo de la empresa. Es diferente de la fundaci\u00f3n independiente que montaron Rust y Kubernetes.<\/li>\n<\/ul>\n<p>Nada de esto es casualidad. Go fue dise\u00f1ado para que equipos grandes escriban servicios de red con poca ceremonia, no para ser el lenguaje m\u00e1s poderoso de la sala. Las renuncias son el producto.<\/p>\n<h2>En Linux, hoy<\/h2>\n<p>La serie estable en septiembre de 2026 es la <strong>1.27.1<\/strong>, de 28 de agosto. El camino recomendado es el tarball de go.dev, porque el paquete de la distro suele quedarse una o dos versiones atr\u00e1s:<\/p>\n<pre data-no-translation=\"\"><code class=\"language-bash\" data-no-translation=\"\"># descobre a vers\u00e3o atual sem abrir o navegador\nVER=$(curl -fsSL 'https:\/\/go.dev\/VERSION?m=text' | head -n1)\necho \"$VER\"\n\n# instala no lugar can\u00f4nico\ncurl -fLO \"https:\/\/go.dev\/dl\/${VER}.linux-amd64.tar.gz\"\nsudo rm -rf \/usr\/local\/go\nsudo tar -C \/usr\/local -xzf \"${VER}.linux-amd64.tar.gz\"\n\n# PATH permanente\necho 'export PATH=$PATH:\/usr\/local\/go\/bin' | sudo tee \/etc\/profile.d\/go.sh\nsource \/etc\/profile.d\/go.sh\ngo version<\/code><\/pre>\n<p>Para mantener varias versiones en paralelo \u2014 \u00fatil cuando un proyecto sigue atascado en una antigua \u2014 el propio Go lo resuelve, sin gestor externo:<\/p>\n<pre data-no-translation=\"\"><code class=\"language-bash\" data-no-translation=\"\">go install golang.org\/dl\/go1.26@latest\ngo1.26 download\ngo1.26 version<\/code><\/pre>\n<p>Desde la 1.21, por cierto, el <code data-no-translation=\"\">GOTOOLCHAIN<\/code> lo hace solo: si el <code data-no-translation=\"\">go.mod<\/code> pide una versi\u00f3n que no tienes, el toolchain adecuado se descarga en el momento del build.<\/p>\n<p>El howto completo est\u00e1 en <a href=\"\/es\/2019\/12\/install-golang-linux\/\">Instalando Golang en Linux<\/a>; el hermano de 2017, con el 1.8.3, qued\u00f3 en <a href=\"\/es\/2017\/05\/instalando-golang-no-linux\/\">Instalando Golang 1.8.3 en Linux<\/a>.<\/p>\n<h2>L\u00ednea de tiempo<\/h2>\n<ul>\n<li><strong>21 de septiembre de 2007<\/strong> \u2014 Griesemer, Pike y Thompson garabatean los objetivos en la pizarra blanca de Google.<\/li>\n<li><strong>25 de septiembre de 2007<\/strong> \u2014 en el correo electr\u00f3nico de Pike, el lenguaje recibe nombre: <em>go<\/em>.<\/li>\n<li><strong>Enero de 2008<\/strong> \u2014 Ken Thompson tiene un compilador que genera C.<\/li>\n<li><strong>Mayo de 2008<\/strong> \u2014 Ian Lance Taylor empieza, por su cuenta, el frontend de GCC.<\/li>\n<li><strong>Fin de 2008<\/strong> \u2014 Russ Cox entra y saca el prototipo del laboratorio.<\/li>\n<li><strong>10 de noviembre de 2009<\/strong> \u2014 el proyecto se abre; el gopher de Ren\u00e9e French viene incluido.<\/li>\n<li><strong>28 de marzo de 2012<\/strong> \u2014 <strong>Go 1.0<\/strong> y la promesa de compatibilidad que sostuvo la adopci\u00f3n.<\/li>\n<li><strong>2013<\/strong> \u2014 Docker nace en Go y lleva el lenguaje a la infraestructura.<\/li>\n<li><strong>2014<\/strong> \u2014 Kubernetes tambi\u00e9n; el <code data-no-translation=\"\">cargo<\/code> de Go, el <code data-no-translation=\"\">go get<\/code>, todav\u00eda depend\u00eda de GOPATH.<\/li>\n<li><strong>Agosto de 2015<\/strong> \u2014 la 1.5 se autoaloja (compilador escrito en Go) y\u83b7\u5f97 GC concurrente.<\/li>\n<li><strong>Agosto de 2018<\/strong> \u2014 la 1.11 trae los m\u00f3dulos, todav\u00eda experimentales; el GOPATH comienza a morir.<\/li>\n<li><strong>2019<\/strong> \u2014 la 1.13 convierte los m\u00f3dulos en oficiales.<\/li>\n<li><strong>2021<\/strong> \u2014 la 1.16 aporta <code data-no-translation=\"\">\/\/go:embed<\/code> y m\u00f3dulos por defecto.<\/li>\n<li><strong>15 de marzo de 2022<\/strong> \u2014 la 1.18 por fin incorpora <em>generics<\/em>.<\/li>\n<li><strong>2023<\/strong> \u2014 la 1.21 trae <code data-no-translation=\"\">GOTOOLCHAIN<\/code>, <code data-no-translation=\"\">min<\/code>\/<code data-no-translation=\"\">max<\/code>, <code data-no-translation=\"\">slices<\/code> e <code data-no-translation=\"\">maps<\/code>.<\/li>\n<li><strong>2024<\/strong> \u2014 a 1.22 corrige el bug cl\u00e1sico de la variable de bucle.<\/li>\n<li><strong>Agosto de 2025<\/strong> \u2014 a 1.25 incorpora el recolector <em>Green Tea<\/em> como experimento.<\/li>\n<li><strong>10 de febrero de 2026<\/strong> \u2014 a 1.26 convierte Green Tea en el est\u00e1ndar.<\/li>\n<li><strong>Agosto de 2026<\/strong> \u2014 a 1.27 ofrece m\u00e9todos gen\u00e9ricos, JSON v2 y criptograf\u00eda poscu\u00e1ntica.<\/li>\n<\/ul>\n<h2>Cierre<\/h2>\n<p>Tres personas, un tablero, una lengua que rechaz\u00f3 el peso y gan\u00f3 la nube. Diecis\u00e9is a\u00f1os despu\u00e9s del open source, el contrato de la 1.x sigue vigente y el gopher sigue siendo azul. La apuesta contraria, de la misma d\u00e9cada, est\u00e1 en <a href=\"\/es\/2026\/09\/a-historia-da-linguagem-rust\/\">La historia del lenguaje Rust<\/a>; el mapa completo, en <a href=\"\/es\/2017\/05\/linguagens-de-programacao\/\">Las 7 principales lenguajes<\/a>. Y lo que Go construy\u00f3 est\u00e1 en <a href=\"\/es\/2026\/09\/a-historia-do-docker\/\">A hist\u00f3ria do Docker<\/a> e <a href=\"\/es\/2026\/09\/a-historia-do-kubernetes\/\">A hist\u00f3ria do Kubernetes<\/a>. Fuentes: <a href=\"https:\/\/go.dev\/doc\/faq\">FAQ<\/a>, <a href=\"https:\/\/go.dev\/blog\/16years\">La dulce 16 de Go<\/a>, <a href=\"https:\/\/commandcenter.blogspot.com\/2017\/09\/go-ten-years-and-climbing.html\">Pike, diez a\u00f1os<\/a>, wiki y notas de la versi\u00f3n en <a href=\"https:\/\/go.dev\/doc\/devel\/release\">go.dev\/doc\/devel\/release<\/a>.<\/p>\n<p style=\"font-size:.9em;opacity:.75\">Gopher basado en la mascota oficial de <a href=\"https:\/\/commons.wikimedia.org\/wiki\/File:Gogophercolor.png\">Renee French<\/a>, licencia CC BY 3.0.<\/p>","protected":false},"excerpt":{"rendered":"<p>Go nasceu num quadro branco do Google, em 21 de setembro de 2007, porque C++ demorava demais para compilar. Em novembro de 2025 a linguagem fez 16 anos de c\u00f3digo aberto. Em setembro de 2026 a s\u00e9rie est\u00e1vel \u00e9 a 1.27.1. Docker, Kubernetes, Terraform, o go que voc\u00ea instala no Linux \u2014 tudo isso desce &#8230; <a title=\"La historia del lenguaje Go\" class=\"read-more\" href=\"https:\/\/www.linuxpro.com.br\/es\/2026\/09\/a-historia-da-linguagem-go\/\" aria-label=\"Leer m\u00e1s sobre A hist\u00f3ria da linguagem Go\">Leer m\u00e1s<\/a><\/p>","protected":false},"author":0,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[45,46,2],"tags":[58,31,280,279],"class_list":["post-617","post","type-post","status-publish","format-standard","hentry","category-desenv","category-devops","category-linux","tag-go","tag-golang","tag-google","tag-historia"],"_links":{"self":[{"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/posts\/617","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/types\/post"}],"replies":[{"embeddable":true,"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/comments?post=617"}],"version-history":[{"count":6,"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/posts\/617\/revisions"}],"predecessor-version":[{"id":1442,"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/posts\/617\/revisions\/1442"}],"wp:attachment":[{"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/media?parent=617"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/categories?post=617"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/tags?post=617"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}