From 27c1b3b72e1d399ffebaf44c40e814f76eb9c255 Mon Sep 17 00:00:00 2001 From: zeroidentidad Date: Tue, 7 May 2024 11:13:56 -0600 Subject: [PATCH] add new post --- .../images/gophers.jpg | Bin 0 -> 35704 bytes .../simplificaciones-creacion-go/index.md | 99 ++++++++++++++++++ 2 files changed, 99 insertions(+) create mode 100644 content/posts/simplificaciones-creacion-go/images/gophers.jpg create mode 100644 content/posts/simplificaciones-creacion-go/index.md diff --git a/content/posts/simplificaciones-creacion-go/images/gophers.jpg b/content/posts/simplificaciones-creacion-go/images/gophers.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bcf63e98766b8e8a539eab0eb207b24b0df574e9 GIT binary patch literal 35704 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 literal 0 HcmV?d00001 diff --git a/content/posts/simplificaciones-creacion-go/index.md b/content/posts/simplificaciones-creacion-go/index.md new file mode 100644 index 0000000..3d5c188 --- /dev/null +++ b/content/posts/simplificaciones-creacion-go/index.md @@ -0,0 +1,99 @@ +--- +title: "Simplificaciones en creación de Go" +date: 2024-05-05T19:15:14-06:00 +draft: false +author: zeroidentidad +year: "2024" +month: "2024/05" +categories: +- Comunidad +- Experiencias +- Creadores +tags: +- basis +- golang +keywords: +- creators +disableComments: false +--- + +{{}} + +Para apostar todo por la expresividad del lenguaje entiéndase como hacer más fácil o comprensiva la lectura y escritura, en la creación de Go se establecieron simplificaciones fundamentales bajo la premisa "Less can be more". + + + +- Nota: en el transcurso de los años alguno que otro punto puede variar o haber derivado en otros cambios. + +1. **Regular syntax (don't need a symbol table to parse):** [Sintaxis regular (no necesita una tabla de símbolos para analizar)] Se refiere a una sintaxis de lenguaje de programación que es predecible y coherente, lo que facilita el análisis del código sin necesidad de una tabla de símbolos compleja. + +2. **Garbage collection (only):** [Recolección de basura (solamente)] Es un proceso automático en el que el sistema de ejecución de un lenguaje de programación gestiona automáticamente la memoria liberando objetos que ya no son necesarios. + +3. **No header files:** [No hay archivos de encabezado] En algunos lenguajes de programación, como C y C++, los archivos de encabezado (.h) se utilizan para declarar funciones, tipos y variables que se comparten entre varios archivos fuente (.c o .cpp). En Go, no se utilizan archivos de encabezado. + +4. **Explicit dependencies:** [Dependencias explícitas] Se refiere a tener que especificar claramente las dependencias que un módulo de software tiene con otros módulos, en lugar de depender de importaciones implícitas o automáticas. + +5. **No circular dependencies:** [No hay dependencias circulares] Se refiere a una restricción en la cual dos o más módulos dependen uno del otro de manera circular, lo cual puede causar problemas de compilación y diseño de software. + +6. **Constants are just numbers:** [Las constantes son solo números] En Go, las constantes pueden ser cualquier tipo de valor constante, no solo números, pero aquí se hace referencia específicamente a que las constantes pueden ser valores numéricos. + +7. **Int and int32 are distinct types:** [Int y int32 son tipos distintos] En Go, int y int32 son tipos de datos distintos. Aunque int es una palabra clave para un tipo de entero de tamaño variable en función de la arquitectura, int32 es específicamente un tipo de entero de 32 bits. + +8. **Letter case sets visibility:** [El caso definido de las letras establece la visibilidad] En Go, los nombres de variables, funciones y tipos que comienzan con una letra mayúscula son visibles fuera de su paquete (exportados), mientras que los nombres que comienzan con una letra minúscula son privados y solo visibles dentro del paquete. + +9. **Methods for any type (no classes):** [Métodos para cualquier tipo (no clases)] En Go, puedes definir métodos en cualquier tipo de datos, no solo en clases o estructuras. Esto se hace utilizando receptores. + +10. **No subtype inheritance (no subclasses):** [No hay herencia de subtipo (no hay subclases)] En Go, no hay concepto de clases ni herencia de subclases como en lenguajes orientados a objetos tradicionales. En su lugar, se utilizan interfaces para lograr polimorfismo. + +11. **Package-level initialization and well-defined order of initialization:** [Inicialización a nivel de paquete y orden de inicialización bien definido] En Go, las variables globales en un paquete pueden ser inicializadas con valores constantes o mediante funciones de inicialización definidas en el mismo paquete. La inicialización se realiza en un orden específico. + +12. **Files compiled together in a package:** [Archivos compilados juntos en un paquete] En Go, todos los archivos fuente de un paquete se compilan juntos en un solo paquete. No hay archivos de encabezado ni una separación física entre la declaración y la definición de las funciones y tipos. + +13. **Package-level globals presented in any order:** [Variables globales a nivel de paquete presentadas en cualquier orden] Las variables globales en un paquete de Go pueden ser declaradas y definidas en cualquier orden dentro del archivo fuente del paquete. + +14. **No arithmetic conversions (constants help):** [No hay conversiones aritméticas (las constantes ayudan)] En Go, las conversiones automáticas entre tipos numéricos no se realizan implícitamente, lo que ayuda a evitar errores y promueve una mayor precisión. + +15. **Interfaces are implicit (no "implements" declaration):** [Las interfaces son implícitas (no hay declaración de "implements")] En Go, no necesitas declarar explícitamente que una estructura o tipo implementa una interfaz. Si una estructura implementa todos los métodos de una interfaz, se considera que implementa automáticamente esa interfaz. + +16. **Embedding (no promotion to superclass):** [Incorporación (sin promoción a superclase)] En Go, puedes embeber un tipo de estructura dentro de otro, lo que permite la composición de objetos. Sin embargo, no hay promoción automática de métodos como en algunos otros lenguajes orientados a objetos. + +17. **Methods are declared as functions (no special location):** [Los métodos se declaran como funciones (sin ubicación especial)] En Go, los métodos se declaran dentro del cuerpo del paquete, junto con otras funciones. + +18. **Methods are just functions:** [Los métodos son solo funciones] En Go, los métodos son simplemente funciones que toman un receptor como su primer argumento. + +18. **Interfaces are just methods (no data):** [Las interfaces son solo métodos (no datos)] En Go, las interfaces se componen solo de una lista de métodos que los tipos que las implementan deben proporcionar. + +19. **Methods match by name only (not by type):** [Los métodos coinciden solo por nombre (no por tipo)] En Go, dos métodos diferentes en dos tipos diferentes pueden tener el mismo nombre sin conflicto, siempre y cuando se apliquen a tipos diferentes. + +20. **No constructors or destructors:** [No hay constructores ni destructores] En Go, no hay métodos especiales para la inicialización o destrucción de objetos, como en algunos lenguajes orientados a objetos. En su lugar, se utilizan funciones de inicialización y limpieza según sea necesario. + +21. **Postincrement and postdecrement are statements, not expressions:** [El postincremento y el postdecremento son declaraciones, no expresiones] En Go, los operadores de postincremento (i++) y postdecremento (i--) se consideran declaraciones independientes y no pueden usarse como parte de expresiones más grandes. + +22. **No preincrement or predecrement:** [No hay preincremento ni predecremento] En Go, los operadores de preincremento (++i) y predecremento (--i) no están disponibles. + +23. **Assignment is not an expression:** [La asignación no es una expresión] En Go, la asignación de variables no devuelve un valor, por lo que no se puede utilizar como parte de una expresión más grande. Por ejemplo, x = y no devuelve ningún valor. + +24. **Evaluation order defined in assignment, function call (no "sequence point"):** [Orden de evaluación definido en la asignación, llamada de función (sin "punto de secuencia")] Se refiere al hecho de que en Go, el orden en el que se evalúan las expresiones dentro de una asignación o llamada de función está bien definido y no hay un "punto de secuencia" como en otros lenguajes donde el comportamiento puede ser ambiguo. + +25. **No pointer arithmetic:** [No hay aritmética de punteros] En Go, no se permite realizar operaciones aritméticas directamente en punteros, como en lenguajes como C o C++. + +26. **Memory is always zeroed:** [La memoria siempre está inicializada a cero] En Go, la memoria asignada se inicializa siempre con cero, lo que significa que las variables y estructuras de datos se inicializan automáticamente a sus valores cero por defecto. + +27. **Legal to take address of local variable:** [Legal tomar la dirección de una variable local] En Go, es perfectamente válido tomar la dirección de una variable local y pasarla a funciones o devolverla como un valor, sin preocuparse por el tiempo de vida de la variable. + +28. **No "this" in methods:** [No hay "this" en métodos] A diferencia de otros lenguajes orientados a objetos, en Go no hay una palabra clave "this" para referirse al receptor en los métodos. En su lugar, se utiliza el nombre del receptor como el primer parámetro de los métodos. + +29. **Segmented stacks:** [Pilas segmentadas] Go utiliza pilas segmentadas para manejar la memoria de forma eficiente, lo que permite una mejor gestión del espacio de la pila en situaciones de concurrencia y recursión profunda. + +30. **No const or other type annotations:** [No hay "const" u otras anotaciones de tipo] En Go, no hay una palabra clave "const" que sea como en otros lenguajes de programación. Además, las anotaciones de tipo no son necesarias ya que el compilador puede inferir el tipo de manera automática. + +31. **No templates:** [No hay plantillas] A diferencia de algunos lenguajes como C++ que tienen plantillas, Go no proporciona un mecanismo de plantillas para la generación de código genérico. + +32. **No exceptions:** [No hay excepciones] Go no utiliza excepciones como mecanismo para manejar errores excepcionales. En su lugar, se prefieren los valores de retorno de error explícitos. + +33. **Builtin string, slice, map:** [String, slice y map incorporados] En Go, los tipos string, slice y map son tipos de datos incorporados en el lenguaje y proporcionan funcionalidad para manejar cadenas, listas dinámicas y mapas respectivamente. + +35. **Array bounds checking:** [Comprobación de límites de array] En Go, se realizan comprobaciones de límites de array en tiempo de ejecución para asegurar que no se acceda a índices fuera del rango válido del array, lo que ayuda a prevenir errores de segmentación y otros problemas relacionados con el acceso fuera de los límites del array. + + +- Fuente de referencia: https://commandcenter.blogspot.com/2012/06/less-is-exponentially-more.html \ No newline at end of file