fbpx
Wikipedia

Go (lenguaje de programación)

Go es un lenguaje de programación concurrente y compilado inspirado en la sintaxis de C, que intenta ser dinámico como Python y con el rendimiento de C o C++. Ha sido desarrollado por Google[9]​ y sus diseñadores iniciales fueron Robert Griesemer, Rob Pike y Ken Thompson. [10]​ Actualmente está disponible en formato binario para los sistemas operativos Windows, GNU/Linux, FreeBSD y Mac OS X, pudiendo también ser instalado en estos y en otros sistemas mediante el código fuente.[11][12]​ Go es un lenguaje de programación compilado, concurrente, imperativo, estructurado, orientado a objetos y con recolector de basura que de momento es soportado en diferentes tipos de sistemas UNIX, incluidos Linux, FreeBSD, Mac OS X y Plan 9 (puesto que parte del compilador está basado en un trabajo previo sobre el sistema operativo Inferno). Las arquitecturas soportadas son i386, amd64 y ARM.

Go
Desarrollador(es)
Google
https://golang.org y https://go.dev
Información general
Extensiones comunes .go
Paradigma compilado concurrente, imperativo, estructurado[1][2][3]
Apareció en 2009
Diseñado por Robert Griesemer, Rob Pike y Ken Thompson
Última versión estable 1.16.5 [4](03 de junio de 2021 (2 meses))
Sistema de tipos fuerte, estático
Implementaciones gc (8g, 6g, 5g), gccgo
Influido por C, Modula-2, Pascal, Oberon, Limbo
Sistema operativo GNU/Linux, Mac OS X, Windows, otros[5][6]
Licencia BSD[7]​ + patent grant[8]

Nombre

El día de la publicación del lenguaje Go, Francis McCabe, desarrollador del lenguaje de programación Go! (anteriormente llamado Go), solicitó que se le cambiase el nombre al lenguaje de Google para evitar confusiones con su lenguaje.[13]​ McCabe creó Go! en el año 2003; sin embargo, aún no ha registrado el nombre.[14]​ Go es un nuevo lenguaje de programación para sistemas lanzado por Google en noviembre de 2009. Aunque empezó a ser desarrollado en septiembre de 2007 por Robert Griesemer, Rob Pike y Ken Thompson.

Características

  • Go es un proyecto opensource.[15]
  • Go usa una sintaxis similar a C.[16]
  • Go usa tipado estático (statically typed ).
  • Go es un lenguaje compilado, al igual que C y C++.
  • Provee de un recolector de basura , reflexión y algunas otras capacidades de lenguajes de alto nivel.
  • El binario de Go tiene la característica de compilación cruzada de manera nativa.
  • Go admite el paradigma de programación orientada a objetos, pero a diferencia de otros lenguajes de programación no dispone de herencia de tipos y tampoco de palabras clave que denoten claramente que soporta este paradigma.
  • En Go, la definición de un tipo ("clase") se realiza por medio de declaraciones separadas (interfaces, structs, embedded values).
  • Go permite el uso de delegación (a través de embedded values) y polimorfismo (por medio de interfaces).
  • Go utiliza la concurrencia a través de las gorutinas.
  • Go esta orientado a aprovechar sistemas con múltiples procesadores y procesamiento en red.[17]
  • Go admite la tipificación dinámica de datos también conocida como duck Typing.[18][19]
  • Un struct puede implementar una interfaz de forma automática.[20]

Excepciones

Go no utiliza excepciones.[21]​ Los creadores del lenguaje han dado varios motivos para que esto sea así. La principal es que añadir una capa de excepciones agrega una complejidad innecesaria al lenguaje y al entorno de ejecución. Por definición las excepciones deberían ser excepcionales pero al final se acaban usando como controladores del flujo de la aplicación y dejan de tener la finalidad de excepcionalidad. Según los creadores, las excepciones tienen que ser realmente excepcionales y el uso que se le da mayoritariamente no justifica su existencia.

Diferencias principales con C

Aunque su sintaxis es similar, Go difiere mucho de C. Véanse algunos ejemplos.

Declaraciones al revés

En Go las declaraciones se realizan al revés desde la perspectiva de C (o C++ o Java). La idea principal en C es que se declara una variable como una expresión que denota su tipo. Según los creadores, aunque la idea detrás de la declaración de tipos en C es buena, los tipos y las expresiones gramaticales no se mezclan demasiado bien y el resultado puede ser confuso. Go sin embargo, separa la expresión y la sintaxis de tipo, lo cual simplifica las cosas.

Punto y coma

En Go el uso del carácter punto y coma “;“ al final de una instrucción es opcional.

Aritmética de punteros

Go no tiene aritmética de punteros. Según los creadores, la razón es la seguridad. Sin aritmética de punteros es posible crear un lenguaje en el que no se puede obtener una dirección ilegal que sea usada de forma incorrecta. La falta de aritmética de punteros simplifica la implementación del recolector de basura. Además, optimizando el compilador y con el hardware actual, un bucle que utiliza los índices de un array puede ser tan eficaz como un bucle que utiliza aritmética de punteros.

++ y --

En Go, el uso de ++ y -- para incrementar y decrementar el valor de una variable es una sentencia y no una expresión. Además, solo puede utilizarse en su versión sufija pues según los autores, la versión prefija pierde todo su sentido en la ausencia de aritmética de punteros.

Programación orientada a objetos

Para algunos autores, la herencia o las clases no son conceptos esenciales para el paradigma de POO, sino más bien un medio de implementación. Existen desde hace tiempo lenguajes orientados a objetos que no admiten clases, sino que se basan en prototipos, como Javascript o Self. Según declaraciones de Alan Kay, creador de Smalltalk, lo esencial del paradigma es el paso de mensajes.[22]

Go tiene tipos y métodos, y permite un estilo de programación orientado a objetos que reemplaza el uso de clases por estructuras las cuales admiten construir jerarquías, es decir, no soporta el uso herencia y favorece en su lugar el patrón de composición. En Go, el concepto de “interfaz“ es similar al usado en Java: cualquier objeto (value) que cumpla el contrato especificado por una interfaz (sin necesidad de una declaración explícita) obtiene ese tipo. También existen formas de embeber estructuras dentro de otras estructuras para obtener algo análogo a las subclases. Los métodos de Go son más generales que los de C++ o Java, y se incluyen en las estructuras declarando funciones asociadas a estas. Pueden ser definidos para cualquier tipo de datos; no solo para los registros. Por su parte las interfaces de Go a diferencia de lenguajes como Java, son de tipo implícito, es decir que se considera que la interfaz ha sido implementada cuando una estructura implementa sus métodos aun cuando esto no se especifique.

Ejemplos

El clásico programa Hola mundo en Go es similar a como se haría en C++. Con este típico ejemplo podemos apreciar que en cuanto a sintaxis son muy similares:

package main import "fmt" func main() { fmt.Println("Hola, mundo.") } 

La notación de los comentarios es exactamente la misma que la de C++

/* ...  ...  ... */ // ... 

Un programa para una aplicación web.

import (  "fmt"  "log"  "net/http" )  func holaFunc(w http.ResponseWriter, r *http.Request) {  fmt.Fprintf(w,"Hola mundo!") }  func main() {  http.HandleFunc("/",holaFunc)  log.Fatal(http.ListenAndServe(":8080", nil)) } 

Referencias

  1. «First-Class Functions in Go». Consultado el November 14, 2018. «Go supports ... a functional programming style in a strongly typed language.» 
  2. «Is Go an object-oriented language?». Consultado el April 13, 2019. «Although Go has types and methods and allows an object-oriented style of programming, there is no type hierarchy.» 
  3. «Go: code that grows with grace». Consultado el June 24, 2018. «Go is Object Oriented, but not in the usual way.» 
  4. https://golang.org/doc/devel/release.html
  5. «lang/go: go-1.4 – Go programming language». OpenBSD ports. December 23, 2014. Consultado el January 19, 2015. 
  6. «Go Porting Efforts». Go Language Resources. cat-v. January 12, 2010. Consultado el January 18, 2010. 
  7. «Text file LICENSE». The Go Programming Language. Consultado el October 5, 2012. 
  8. «Additional IP Rights Grant». The Go Programming Language. Consultado el October 5, 2012. 
  9. Kincaid, Jason (November 10, 2009). «Google's Go: A New Programming Language That's Python Meets C++». TechCrunch. Consultado el January 18, 2010. 
  10. «Language Design FAQ». golang.org. January 16, 2010. Consultado el February 27, 2010. 
  11. Guía de instalación (inglés)
  12. Francis McCabe (10 de noviembre de 2009). «I have already used the name for *MY* programming language» (en inglés). Consultado el 13 de noviembre de 2009. 
  13. Thomas Claburn (11 de noviembre de 2009). InformationWeek, ed. «Google 'Go' Name Brings Accusations Of 'Evil'» (en inglés). Consultado el 13 de noviembre de 2009. 
  14. «The Go Programming Language». golang.org. Consultado el 4 de diciembre de 2020. 
  15. Metz, Cade (5 de mayo de 2011). «Google Go boldly goes where no code has gone before». The Register. 
  16. «Documentation - The Go Programming Language». golang.org. Consultado el 4 de diciembre de 2020. 
  17. Ryer, Mat (3 de junio de 2016). «Duck typing in Go». Medium (en inglés). Consultado el 4 de diciembre de 2020. 
  18. «Is Go Duck-Typed?». Bionic | FullStory. 4 de marzo de 2020. Consultado el 4 de diciembre de 2020. 
  19. Go by Example: Structs
  20. «Error handling and Go - The Go Blog». blog.golang.org. Consultado el 4 de diciembre de 2020. 
  21. Alan Kay (10 de octubre de 1998). «prototypes vs classes was: Re: Sun's HotSpot». Lista de distribución de Squeak (en inglés). squeakfoundation.org. Consultado el 21 de noviembre de 2015. 

Enlaces externos

  • Página web oficial (en inglés)
  • Examples of the most important features of this languages. (en inglés)
  •   Datos: Q37227
  •   Multimedia: Go (programming language)

lenguaje, programación, lenguaje, programación, concurrente, compilado, inspirado, sintaxis, intenta, dinámico, como, python, rendimiento, sido, desarrollado, google, diseñadores, iniciales, fueron, robert, griesemer, pike, thompson, actualmente, está, disponi. Go es un lenguaje de programacion concurrente y compilado inspirado en la sintaxis de C que intenta ser dinamico como Python y con el rendimiento de C o C Ha sido desarrollado por Google 9 y sus disenadores iniciales fueron Robert Griesemer Rob Pike y Ken Thompson 10 Actualmente esta disponible en formato binario para los sistemas operativos Windows GNU Linux FreeBSD y Mac OS X pudiendo tambien ser instalado en estos y en otros sistemas mediante el codigo fuente 11 12 Go es un lenguaje de programacion compilado concurrente imperativo estructurado orientado a objetos y con recolector de basura que de momento es soportado en diferentes tipos de sistemas UNIX incluidos Linux FreeBSD Mac OS X y Plan 9 puesto que parte del compilador esta basado en un trabajo previo sobre el sistema operativo Inferno Las arquitecturas soportadas son i386 amd64 y ARM GoDesarrollador es Googlehttps golang org y https go devInformacion generalExtensiones comunes goParadigmacompilado concurrente imperativo estructurado 1 2 3 Aparecio en2009Disenado porRobert Griesemer Rob Pike y Ken ThompsonUltima version estable1 16 5 4 03 de junio de 2021 2 meses Sistema de tiposfuerte estaticoImplementacionesgc 8g 6g 5g gccgoInfluido porC Modula 2 Pascal Oberon LimboSistema operativoGNU Linux Mac OS X Windows otros 5 6 LicenciaBSD 7 patent grant 8 editar datos en Wikidata Indice 1 Nombre 2 Caracteristicas 3 Excepciones 4 Diferencias principales con C 4 1 Declaraciones al reves 4 2 Punto y coma 4 3 Aritmetica de punteros 4 4 y 5 Programacion orientada a objetos 6 Ejemplos 7 Referencias 8 Enlaces externosNombre EditarEl dia de la publicacion del lenguaje Go Francis McCabe desarrollador del lenguaje de programacion Go anteriormente llamado Go solicito que se le cambiase el nombre al lenguaje de Google para evitar confusiones con su lenguaje 13 McCabe creo Go en el ano 2003 sin embargo aun no ha registrado el nombre 14 Go es un nuevo lenguaje de programacion para sistemas lanzado por Google en noviembre de 2009 Aunque empezo a ser desarrollado en septiembre de 2007 por Robert Griesemer Rob Pike y Ken Thompson Caracteristicas EditarGo es un proyecto opensource 15 Go usa una sintaxis similar a C 16 Go usa tipado estatico statically typed Go es un lenguaje compilado al igual que C y C Provee de un recolector de basura reflexion y algunas otras capacidades de lenguajes de alto nivel El binario de Go tiene la caracteristica de compilacion cruzada de manera nativa Go admite el paradigma de programacion orientada a objetos pero a diferencia de otros lenguajes de programacion no dispone de herencia de tipos y tampoco de palabras clave que denoten claramente que soporta este paradigma En Go la definicion de un tipo clase se realiza por medio de declaraciones separadas interfaces structs embedded values Go permite el uso de delegacion a traves de embedded values y polimorfismo por medio de interfaces Go utiliza la concurrencia a traves de las gorutinas Go esta orientado a aprovechar sistemas con multiples procesadores y procesamiento en red 17 Go admite la tipificacion dinamica de datos tambien conocida como duck Typing 18 19 Un struct puede implementar una interfaz de forma automatica 20 Excepciones EditarGo no utiliza excepciones 21 Los creadores del lenguaje han dado varios motivos para que esto sea asi La principal es que anadir una capa de excepciones agrega una complejidad innecesaria al lenguaje y al entorno de ejecucion Por definicion las excepciones deberian ser excepcionales pero al final se acaban usando como controladores del flujo de la aplicacion y dejan de tener la finalidad de excepcionalidad Segun los creadores las excepciones tienen que ser realmente excepcionales y el uso que se le da mayoritariamente no justifica su existencia Diferencias principales con C EditarAunque su sintaxis es similar Go difiere mucho de C Veanse algunos ejemplos Declaraciones al reves Editar En Go las declaraciones se realizan al reves desde la perspectiva de C o C o Java La idea principal en C es que se declara una variable como una expresion que denota su tipo Segun los creadores aunque la idea detras de la declaracion de tipos en C es buena los tipos y las expresiones gramaticales no se mezclan demasiado bien y el resultado puede ser confuso Go sin embargo separa la expresion y la sintaxis de tipo lo cual simplifica las cosas Punto y coma Editar En Go el uso del caracter punto y coma al final de una instruccion es opcional Aritmetica de punteros Editar Go no tiene aritmetica de punteros Segun los creadores la razon es la seguridad Sin aritmetica de punteros es posible crear un lenguaje en el que no se puede obtener una direccion ilegal que sea usada de forma incorrecta La falta de aritmetica de punteros simplifica la implementacion del recolector de basura Ademas optimizando el compilador y con el hardware actual un bucle que utiliza los indices de un array puede ser tan eficaz como un bucle que utiliza aritmetica de punteros y Editar En Go el uso de y para incrementar y decrementar el valor de una variable es una sentencia y no una expresion Ademas solo puede utilizarse en su version sufija pues segun los autores la version prefija pierde todo su sentido en la ausencia de aritmetica de punteros Programacion orientada a objetos EditarPara algunos autores la herencia o las clases no son conceptos esenciales para el paradigma de POO sino mas bien un medio de implementacion Existen desde hace tiempo lenguajes orientados a objetos que no admiten clases sino que se basan en prototipos como Javascript o Self Segun declaraciones de Alan Kay creador de Smalltalk lo esencial del paradigma es el paso de mensajes 22 Go tiene tipos y metodos y permite un estilo de programacion orientado a objetos que reemplaza el uso de clases por estructuras las cuales admiten construir jerarquias es decir no soporta el uso herencia y favorece en su lugar el patron de composicion En Go el concepto de interfaz es similar al usado en Java cualquier objeto value que cumpla el contrato especificado por una interfaz sin necesidad de una declaracion explicita obtiene ese tipo Tambien existen formas de embeber estructuras dentro de otras estructuras para obtener algo analogo a las subclases Los metodos de Go son mas generales que los de C o Java y se incluyen en las estructuras declarando funciones asociadas a estas Pueden ser definidos para cualquier tipo de datos no solo para los registros Por su parte las interfaces de Go a diferencia de lenguajes como Java son de tipo implicito es decir que se considera que la interfaz ha sido implementada cuando una estructura implementa sus metodos aun cuando esto no se especifique Ejemplos EditarEl clasico programa Hola mundo en Go es similar a como se haria en C Con este tipico ejemplo podemos apreciar que en cuanto a sintaxis son muy similares package main import fmt func main fmt Println Hola mundo La notacion de los comentarios es exactamente la misma que la de C Un programa para una aplicacion web import fmt log net http func holaFunc w http ResponseWriter r http Request fmt Fprintf w Hola mundo func main http HandleFunc holaFunc log Fatal http ListenAndServe 8080 nil Referencias Editar First Class Functions in Go Consultado el November 14 2018 Go supports a functional programming style in a strongly typed language Is Go an object oriented language Consultado el April 13 2019 Although Go has types and methods and allows an object oriented style of programming there is no type hierarchy Go code that grows with grace Consultado el June 24 2018 Go is Object Oriented but not in the usual way https golang org doc devel release html lang go go 1 4 Go programming language OpenBSD ports December 23 2014 Consultado el January 19 2015 Go Porting Efforts Go Language Resources cat v January 12 2010 Consultado el January 18 2010 Text file LICENSE The Go Programming Language Consultado el October 5 2012 Additional IP Rights Grant The Go Programming Language Consultado el October 5 2012 Kincaid Jason November 10 2009 Google s Go A New Programming Language That s Python Meets C TechCrunch Consultado el January 18 2010 Language Design FAQ golang org January 16 2010 Consultado el February 27 2010 Guia de instalacion ingles Guia de instalacion espanol Francis McCabe 10 de noviembre de 2009 I have already used the name for MY programming language en ingles Consultado el 13 de noviembre de 2009 Thomas Claburn 11 de noviembre de 2009 InformationWeek ed Google Go Name Brings Accusations Of Evil en ingles Consultado el 13 de noviembre de 2009 The Go Programming Language golang org Consultado el 4 de diciembre de 2020 Metz Cade 5 de mayo de 2011 Google Go boldly goes where no code has gone before The Register Documentation The Go Programming Language golang org Consultado el 4 de diciembre de 2020 Ryer Mat 3 de junio de 2016 Duck typing in Go Medium en ingles Consultado el 4 de diciembre de 2020 Is Go Duck Typed Bionic FullStory 4 de marzo de 2020 Consultado el 4 de diciembre de 2020 Go by Example Structs Error handling and Go The Go Blog blog golang org Consultado el 4 de diciembre de 2020 Alan Kay 10 de octubre de 1998 prototypes vs classes was Re Sun s HotSpot Lista de distribucion de Squeak en ingles squeakfoundation org Consultado el 21 de noviembre de 2015 Enlaces externos EditarPagina web oficial en ingles Examples of the most important features of this languages en ingles Datos Q37227 Multimedia Go programming language Obtenido de https es wikipedia org w index php title Go lenguaje de programacion amp oldid 137318659, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos