提交 fcbfc56c 编写于 作者: M ma0

translated chapters 2.0 and 2.1 to spanish

上级 ce3d03c9
# 2 Go, Conocimiento básico
Go es un lenguaje de progrmación compilado y pertenece a la familia de C. Sin embargo su velocidad de compilación es mayor que otros lenguajes de la familia de C. Tiene únicamente 25 palabras reservadas ... ¡Incluso menos que las 26 letras del alfabeto Inglés! Vamos a echarle un vistazo a a estas palabras reservadas antes de comenzar
break default func interface select
case defer go map struct
chan else goto package switch
const fallthrough if range type
continue for import return var
En este capítulo voy a enseñarles algún conocimiento básico de Go. Encontrarás que concizo es el lenguaje de programación Go y la belleza del diseño del lenguaje. Programar puede ser muy dvertido en Go. Despuś de completar este capítulo, estarás familiarizado con las palabras reservadas de arriba.
## Enlaces
- [Directorio](preface.md)
- Capítulo anterior: [Capítulo 1 Resumen](01.5.md)
- Siguiente sección: ["Hola, Go"](02.1.md)
## ¿Qué hace a Go diferente de otros lenguajes
El lenguaje de programación Go fue creado con una meta en mente, ser capaz de construir aplicaciones web escalables para grandes audiencias ocn un equipo grande. Esta es la razón por la cual ellos hicieron el lenguaje tan estandarizado como fuera posible, por esto razón la herramienta `gofmt` y el estricto uso de las guías base del lenguaje fueron creados por el motivo de no tener dos caras en la base del desarrollo, en otros lenguajes existen guerras religiosas en ¿Dónde debo colocar la llave abierta?
```
public static void main() {
}
or
public static void main()
{
}
```
O para python debo usar 4 espacios, 6 espacios o tabulación y otras preferencias de usuario.
Esto puede parecer ser un problema superficial en la superficie, pero cuando la base de código crece y muchas mas personas están trabajando en la misma base de código, entonces es dificil mantener la "belleza" del código. Si usted conoce python, entonces usted debe ser conciente del PEP8, el cual es un conjunto de guías sobre como escribir código elegantemente. Vivimos en un mundo donde los robots pueden conducir un carro, entonces nosotros no solo debemos escribir código, debemos escribir código elegante.
Para otros lenguajes existen muchas variables cuando es hora de escribir código, cada lenguaje es bueno para su caso de uso, pero Go es un caso especial en esa superficie porque fue diseñado por una compañia la cual es sinónimo de Internet (y de la computación distribuida), tipicamente el flujo de escribir código va de Python a Java a C++ para propósitos de optimización, pero el problema es que casi todos los lenguajes de programación fueron escritos décadas atrás, cuando 1GB de almacenamiento tenía un costo mucho mas alto comparado con hoy en día, donde el costo de almacenamiento y computación se ha vuelto mas económico. Los computadores se están volviendo multinúcleo estos días y los "lenguajes viejos" no aprovechan la concuerrencia de la manera que Go lo hace, no porque esos lenguajes sean malos, simplemente porque el caso de uso no era reelevante cuando esos lenguajes evolucionaron.
Entonces para mitigar todos los problemas que Google enfrentó con las herramientas actuales, ellos escribieron un sustema de lenguaje llamado Go, ¡el cual estás a punto de aprendeer! Hay muchas ventajas para usar Golang, y también muchas desventajas, para cada moneda hay dos caas. Pero hay avances significativos en lugares donde el formato de código, desde que llos diseñaron el lenguaje en una manera que no habrían guerrras con como darle formato al código. El código de formato de Go, escrito por cualquier persona en el mundo (asumiendo que usan `gofmt`) se verá exactamente igual, ¡esto parecerá no importar hasta que trabajes en un equipo! también cuando una compañia usa revisión de código automatizada o alguna otra técnica lujosa, donde en otros lenguajes que no tienen un estándar en las reglas de formato, todo el código estará comprometido, ¡pero no en Go.
Go fue diseñado con la concurrencia en mente, por favor note que paralelismo != concurrencia. Hay un post maravilloso escrito por Bob Pike en el blog de Go, blog.golang.org, que usted encontraréa ahí y vale la pena leerlo.
Otro cambio muy importante que Go trajo a la programación y que yo personalmente amo es le concepto de `GOPATH`, los tiempos donde tenías que crear una carpeta llamadacode y entonces crear espacios de trabajo para eclipse y otros. Ahora usted puede tener un árbol de carpetas para el código en Go y se mantendrá actualizado automáticamente por el administrador de paquetes. También bajo el código que estamos recomendando crear carpetas con cada dominio específico o el dominio de github, por ejemplo yo creé un manejador de tareas usando Go, entonces creé un conjunto de carpetas
`~/go/src/github.com/thewhitetulip/Tasks` Nota: En sistemas * nix `~` se refiere al directorio del usuario, que en windows es equivalente a `C:\\Users\\username`
Ahora el `~/go/` es el universo de código Go en su máquina, este es solo una significante mejora en comparación con otros lenguajes, entonces podemos almacenar código eficientemente sin molestias, esto puede parecer raro al comienzo pero tiene un montón de sentido a comparación de los nombres de paquete en otros lenguajes que usan sistemas como el del dominio inverso.
nota: junto con el src, existen dos carpetas adicionales, que son el `pkg` y el `bin` que es para los archivos binarios
Estas ventajas de `GOPATH` no están restringidas a guardar código en una carpeta particular, pero cuando tu tienes creado 5 paquetes para tu proyecto entonces tu no vas a tener tiempo de importarlos como `import ./db`, usted puede escribir `import "github.com/thewhitetulip/Tasks/db"`, entonces esto hará un `go get` a mi repositorio y la herramienta `go` encontrará el paquete de `github.com/...` si no estaba descargado inicialmente, eso estandariza un montón de cosas en la disciplina de la programación.
Algunos se quejan que los creadores de go han ignorado toda la investigación de lengaujes hecha los pasados 30 años, bueno, esto puede ser verdad, pero de nuevo, no puedes crear un lenguaje que todo mundo ame, siempre hay alguna u otra causa o restricción que hace a los creadores considerar, y considerando todas las ventajas al menos para el desarrollo web, yo no creo que algún lenguaje se acerque tanto a las ventajas que ha alcanzado `Go`, incluso si ignoras todo lo que he dicho arriba, Go es u lenguaje compilado, lo que significa que en producción no vas a tener que configurar un `JVM` o un `virtualenv`, ¡solo vas a tener un un estático binario! y como un cubo de hielo en un pastel, todas las librerías modernas están en la librería estándar, como `http`, lo cual es una ventaja mayor, es la razón principal por la que puedes crear aplicaciones web en Go sin tener que usar un framework de terceros.
# 2.1 Hola, Go
Antes de comenzar a contruir una aplicación en Go, necesitamos aprender como escribir un simple programa. No puedes esperar construir un edificio sin saber como construir sus fundamentos. Por esta razón, vamos a aprender la sintaxis básica para correr algunos programas en esta sección.
## Programa
De acuerdo con la prácica internaciona, antes de que tu puedas contruir en algún lenguaje, usted querrá escribir un programa que imporima "Hola Mundo".
¿Estamos listos? ¡Empecemos!
```
package main
import "fmt"
func main() {
fmt.Printf("Hola, mundo o 你好,世界 o καλημ ́ρα κóσμ o こんにちは世界\n")
}
```
Esto imprime la siguiente información
```
Hola, mundo o 你好,世界 o καλημ ́ρα κóσμ o こんにちは世界
```
## Explanation
Una cosa que usted debería tener en cuanta es que los programas en Go están compuestos por `package`s o paquetes.
`package <nombreDelPaquete>` (En este caso es `package main`) nos dice que el archivo pertenece al paquete `main` y la palabra main nos dice que este paquete será compilado a un programa en vez de a un archivo cuya extensión es `.a`.
Cada programa ejecutable tendrá un solo paquete `main` y una única función de enrtada llamada `main`sin ningún argumento de entrada o salidad en el paquete `main`.
En orden de imprimir `Hola, mundo ...` llamamos a una función llamada `Printf`. Esta funcieon viene del paquete `fmt`, entonces importamos este paquete en la tercera línea de código, que es `import "fmt"`
La manera de pensar sobre estos paquetes es similar a Python, y hay muchas otras ventajas: Modularidad (dividir tu programa en muchos módulos) y reusabilidad (cada módulo puede ser reusado en muchos programas). Nosotros solo hemos hablado sobre los conceptos relacionado con los paquetes, y luego daremos un paseo por nuestros propios paquetes, después.
En la quinta línea, usamos la palabra reservada `func` para definir la función `main`. El cuerpo d ela función está dentro de `{}`, como en C, C++ o Java.
Como puedes ver, no hay argumentos. Aprenderemos como escribir una función con argumentos en un segundo, y también hay funciones que no retornan nada o que retornan muchos valores.
En la sexta lína, llamamos la la funcieon `Printf` la cual pertenece al paquete `fmt`. Esta fue llamada por la sintaxis `<nombreDelPaquete>.<nombreDeLaFunción>`, que es mucho el estilo de Python.
Como mencionamos en el capítulo 1, el nombre de paquete y el nombre de la carpeta que contiene el archivo puede ser diferente. Aquí el `nombreDelPaquete` viene del nombre en `package <nombreDelPaquete>`, no del nombre de la carpeta.
Usted se puede dar cuenta que el ejemplo de arriba contiene catacteres no ASCII. El propósito de mostrar esto es para decir que Go soporta UTF-8 por defecto. Usted puede usar cualquier caracter UTF-8 en sus programas.
Cada archivo en Go está en algún pauqete, y el paquete debería estar en una carpeta distina en el GOPATH, pero el paquete `main` no requiere estar en una carpeta llamada `main`. ¡Este es un aspecto que ellos dejaron fuera de la estandarización! Pero si usted escoge crear una carpeta llamada main, tiene que asegurarse de ejecutar el binario correctamente. Un programa en go no puede tener mas de 1 archivo main.
`~/go/src/github.com/thewhitetulip/Tasks/main $ go build`
`~/go/src/github.com/thewhitetulip/Tasks $ ./main/main`
El detalle aquí es que cuando está usando algun archivo estático o algo mas, entonces vas a tener que ejecutar el archivo desde la raiz de la aplicación, como se ve en la segunda línea de arriba. Estoy ejecutando el binario `main` *fuera* del paquete main, en algún momento notarás que nuestra aplicación no está funcionando de la manera que queremos, por esta razón, para evitar problemas, mantenga esto en mente.
Una caosa que usted puede notar es que Go no usa punto y comas para terminar una sentencia, bueno, si lo hace, solo que el usuario no tiene que preocuparse por colocar los punto y comas, el compilador agregas los punto y comas al final del gocode, por esta razón esto es un error de sintaxis
```
func main ()
{
}
```
porque el compilador coloca un punto y coma al final de `main()` lo cual es un error de sintaxis , y esto ayuda a evitar guerras religiosas. Espero que combinen `vim` y `emacs` y creen un editor universal que nos ayude a evitarnos mas guerras, pero por ahora vamos a concentrarnos en aprender Go.
## Conclusión
Go usa `package` (como lo módulos en Python) para organizar los programas. La función `main.main()` (esta funcieon debe estar en el paquete `main`) es el punto de entrada de cualquier programa. Go estandariza el lenguaje y la mayoría de la metodología de programación, ahorrándole tiempo a los desarrolladores que se pierden en guerras religiosas. Solo puede existir un paquete main y solo una función main dentro del paquete main de Go. Go soporta caracteres UTF-8 porque uno de los creadores de Go es el creador de UTF-8, así que Go soporta múltiples lenguajes desde el momento en que nació.
## Enlaces
- [Directorio](preface.md)
- Sección anterior: [Go, Conocimiento básico](02.0.md)
- Siguiente sección: [Fundamentos de Go](02.2.md)
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册