Add es blog post
BIN
public/img/blog/es/tutorial/009-zig.jpg
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
public/img/blog/es/tutorial/010-zig.jpg
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
public/img/blog/es/tutorial/011-zig.jpg
Normal file
After Width: | Height: | Size: 4.9 KiB |
BIN
public/img/blog/es/tutorial/012-zig.jpg
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
public/img/blog/es/tutorial/013-zig.jpg
Normal file
After Width: | Height: | Size: 19 KiB |
BIN
public/img/blog/es/tutorial/014-zig.jpg
Normal file
After Width: | Height: | Size: 3.1 KiB |
BIN
public/img/blog/es/tutorial/015-zig.jpg
Normal file
After Width: | Height: | Size: 5.6 KiB |
BIN
public/img/blog/es/tutorial/016-zig.jpg
Normal file
After Width: | Height: | Size: 5.8 KiB |
BIN
public/img/blog/es/tutorial/017-zig.jpg
Normal file
After Width: | Height: | Size: 5.2 KiB |
BIN
public/img/blog/es/tutorial/018-zig.jpg
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
public/img/blog/es/tutorial/019-zig.jpg
Normal file
After Width: | Height: | Size: 8.6 KiB |
BIN
public/img/blog/es/tutorial/020-zig.jpg
Normal file
After Width: | Height: | Size: 21 KiB |
BIN
public/img/blog/es/tutorial/021-zig.jpg
Normal file
After Width: | Height: | Size: 8.8 KiB |
@ -91,9 +91,9 @@ programación se implementa en sí mismo. Curioso, y confuso.
|
|||||||
Poniendo como ejemplo el lenguaje C:
|
Poniendo como ejemplo el lenguaje C:
|
||||||
|
|
||||||
1. Primero se crea un compilador para C en cualquier lenguaje
|
1. Primero se crea un compilador para C en cualquier lenguaje
|
||||||
[(C se implementó inicialmente en B)](https://www.bell-labs.com/usr/dmr/www/chist.html).
|
[(C se implementó inicialmente en BCPL)](https://www.bell-labs.com/usr/dmr/www/chist.html).
|
||||||
2. Ahora que tenemos un compilador de C capaz de crear programas
|
2. Ahora que tenemos un compilador de C capaz de crear programas
|
||||||
nuevos (escrito en B), crearemos el siguiente programa:
|
nuevos (escrito en BCPL), crearemos el siguiente programa:
|
||||||
un compilador de C.
|
un compilador de C.
|
||||||
3. Una vez que terminamos de escribir el compilador de C, en C,
|
3. Una vez que terminamos de escribir el compilador de C, en C,
|
||||||
listo. Tenemos un lenguaje de programación escrito en sí mismo.
|
listo. Tenemos un lenguaje de programación escrito en sí mismo.
|
||||||
|
@ -56,8 +56,86 @@ Felicidades! Has ejecutado tu primer programa.
|
|||||||
Utiliza la imágen como guía.
|
Utiliza la imágen como guía.
|
||||||
|
|
||||||
|
|
||||||
|
## ¿Qué significan todas estas letras?
|
||||||
|
|
||||||
|
Como verás, hay un monton de palabras y símbolos con colorcitos.
|
||||||
|
Este es el código, es como un lenguaje especial utilizado
|
||||||
|
para comunicarse con el computador.
|
||||||
|
|
||||||
|
Así como el francés, árabe o coreano, el **lenguaje** de programación Zig
|
||||||
|
tiene un conjunto de reglas. Aprenderemos las reglas a medida que avance
|
||||||
|
el tiempo. Mientras tanto, puedes ignorar todas esas palabras.
|
||||||
|
|
||||||
|
> ¿Que pasa si eliminas alguna de esas palabras y ejecutas el programa
|
||||||
|
(con el boton "Run")? ¿Qué mensaje obtienes? ¿Qué crees que significa?
|
||||||
|
|
||||||
|
|
||||||
|
## Magia negra y abstracción
|
||||||
|
|
||||||
|
Según [Significados.com](https://www.significados.com/abstracto/),
|
||||||
|
abstracto significa vago, impreciso, teórico, que no tiene existencia
|
||||||
|
física (entre otras cosas). Algo abstracto suele ser algo difícil
|
||||||
|
de entender, o imaginario.
|
||||||
|
|
||||||
|
|
||||||
|
En programación, abstracto tiene otro significado. Puedes buscar su
|
||||||
|
definición técnica en internet, pero me parece muy confusa para
|
||||||
|
un principiante, así que lo explicare en mis términos.
|
||||||
|
|
||||||
|
En programación, abstracto significa que sabemos **qué** hace, pero
|
||||||
|
no **cómo** lo hace. Un ejemplo claro sería un auto. Sabemos que
|
||||||
|
al pisar el acelerador, el auto avanza. Pero no sabemos **cómo**
|
||||||
|
pisar el acelerador ocasiona que el combustible se transforme en
|
||||||
|
energía cinemática.
|
||||||
|
|
||||||
|
Por ejemplo, voy a hablar más adelante de "imprimir" en el programa.
|
||||||
|
Imprimir significa mostrar un mensaje en la pantalla. Sin embargo,
|
||||||
|
no te voy a explicar cómo funciona la impresión. El concepto de
|
||||||
|
"imprimir" es abstracto.
|
||||||
|
|
||||||
|
### Magia negra
|
||||||
|
|
||||||
|
Escuché este termino del canal de Youtube Imesi.net. Magia negra
|
||||||
|
es algo que: no se qué hace, cómo funciona, ni tampoco me importa.
|
||||||
|
|
||||||
|
Voy a utilizar el término "magia negra" para referirme a algo
|
||||||
|
por lo que no necesitas preocuparte, o intentar entender. Por
|
||||||
|
ejemplo, en el código de más arriba:
|
||||||
|
|
||||||
|
![Zig online 1](/img/blog/es/tutorial/007-zig1.jpg)
|
||||||
|
|
||||||
|
Todo el texto que dice:
|
||||||
|
|
||||||
|
```zig
|
||||||
|
const std = @import("std")
|
||||||
|
|
||||||
|
pub fn main() {
|
||||||
|
std.debug.print();
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
es magia negra. Funciona, hace algo, pero no importa. No te
|
||||||
|
preocupes en intentar entenderlo.
|
||||||
|
|
||||||
|
Eventualmente, y a medida que aprendas conceptos nuevos,
|
||||||
|
entenderas qué significan esas cosas.
|
||||||
|
|
||||||
|
|
||||||
## Inglés
|
## Inglés
|
||||||
|
|
||||||
|
Como habras visto, prácticamente todo el código está en inglés.
|
||||||
|
Si ya sabes ingles, o lo estas aprendiendo, no tendrás muchos
|
||||||
|
problemas continuando.
|
||||||
|
|
||||||
|
En mi opinion, programar sin saber inglés es contraproducente.
|
||||||
|
Los lenguajes de programación (en su mayoría) se escriben en
|
||||||
|
inglés, las mnemotécnicas están en inglés, y mucha información
|
||||||
|
útil e importante está en inglés. Programar sin saber inglés
|
||||||
|
es sumamente difícil.
|
||||||
|
|
||||||
|
Seguramente aprenderás algunas palabras a lo largo del tutorial,
|
||||||
|
pero lo mejor que podrías hacer es aprender inglés.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
171
src/pages/blog/es/programacion-04.md
Normal file
@ -0,0 +1,171 @@
|
|||||||
|
---
|
||||||
|
layout: ../../../layouts/BlogLayout.astro
|
||||||
|
title: "04: Programación desde cero: Modificando el hola mundo"
|
||||||
|
description: |
|
||||||
|
Impresión, strings/cadenas y stdout.
|
||||||
|
pubDate: "2024-07-30"
|
||||||
|
tags: ["tech", "lenguajes", "intro", "tutorial", "zig"]
|
||||||
|
image:
|
||||||
|
url: ""
|
||||||
|
alt: ""
|
||||||
|
caption: ""
|
||||||
|
---
|
||||||
|
|
||||||
|
En el artículo anterior escribimos nuestro primer programa:
|
||||||
|
Hola mundo. En este artículos vamos a modificar el mensaje
|
||||||
|
y aprender el primer concepto: Strings
|
||||||
|
|
||||||
|
|
||||||
|
## Modificando "Hola mundo"
|
||||||
|
|
||||||
|
Entra a la página web
|
||||||
|
[https://zig.fly.dev/p/xNluereqmgW](https://zig.fly.dev/p/xNluereqmgW),
|
||||||
|
donde se encuentra el programa "Hola mundo". Esta vez vamos a modificar
|
||||||
|
el mensaje.
|
||||||
|
|
||||||
|
El resto de las palabras son magia negra. Te habras dado cuenta que
|
||||||
|
hay palabras en español: Hola y mundo.
|
||||||
|
|
||||||
|
![Zig online](/img/blog/es/tutorial/009-zig.jpg)
|
||||||
|
|
||||||
|
Hay varias cosas que notar:
|
||||||
|
|
||||||
|
- Estan pintadas de color amarillo
|
||||||
|
- Tienen comillas dobles `"` al inicio y al final
|
||||||
|
|
||||||
|
Dentro de estas comillas `"` podemos escribir el texto que querramos.
|
||||||
|
|
||||||
|
Por ejemplo, si reemplazas `Hola` por `Adios` y ejecutas el programa,
|
||||||
|
se imprimirá `Adios mundo!`
|
||||||
|
|
||||||
|
![Zig online](/img/blog/es/tutorial/010-zig.jpg)
|
||||||
|
|
||||||
|
![Zig online](/img/blog/es/tutorial/011-zig.jpg)
|
||||||
|
|
||||||
|
Y también, si reemplazas `mundo` por otra palabra, se imprimirá
|
||||||
|
lo que escribiste.
|
||||||
|
|
||||||
|
Tambien puedes agregar otro texto en ambos lados. Por ejemplo:
|
||||||
|
|
||||||
|
![Zig online](/img/blog/es/tutorial/012-zig.jpg)
|
||||||
|
|
||||||
|
|
||||||
|
## Strings / cadenas de caracteres
|
||||||
|
|
||||||
|
Los strings (cadenas de caracteres en inglés) son la forma
|
||||||
|
en la que almacenamos texto.
|
||||||
|
|
||||||
|
Un string empieza con una comilla doble `"`, el contenido
|
||||||
|
del string, y termina con una comilla doble `"`.
|
||||||
|
|
||||||
|
Unos ejemplos de strings son: `"hola"`, `"adios"`,
|
||||||
|
`"multiples palabras"`, `"123456"`.
|
||||||
|
|
||||||
|
En el programa de arriba hay 2 strings:
|
||||||
|
|
||||||
|
![Zig online](/img/blog/es/tutorial/013-zig.jpg)
|
||||||
|
|
||||||
|
Estos strings son lo que se muestra en pantalla al
|
||||||
|
ejecutar el programa.
|
||||||
|
|
||||||
|
Los strings tienen algunas características:
|
||||||
|
|
||||||
|
- En el código, los strings tienen otro color para que
|
||||||
|
sea más fácil identificarlos.
|
||||||
|
- No puede haber comillas dentro de un string.
|
||||||
|
|
||||||
|
El string termina cuando aparece la primera comilla.
|
||||||
|
Por ejemplo:
|
||||||
|
|
||||||
|
![Zig online](/img/blog/es/tutorial/014-zig.jpg)
|
||||||
|
|
||||||
|
Aquí el string termina despues del `Hola `, la palabra
|
||||||
|
`familia` no es parte del string. Puedes ver que el
|
||||||
|
color amarillo del string termina en la segunda comilla,
|
||||||
|
y la palabra familia está de color blanco.
|
||||||
|
|
||||||
|
- No puede haber nuevas lineas en un string. Esto es un error:
|
||||||
|
|
||||||
|
![Zig online](/img/blog/es/tutorial/015-zig.jpg)
|
||||||
|
|
||||||
|
Sin embargo, hay ocasiones donde queremos tener varias lineas
|
||||||
|
en un string. Para esto se utilizan 2 caracteres especiales:
|
||||||
|
`\n`. Estos nos permiten "señalar" que ahí va una linea nueva.
|
||||||
|
|
||||||
|
![Zig online](/img/blog/es/tutorial/016-zig.jpg)
|
||||||
|
|
||||||
|
Estos caracteres especiales se conocen como "caracteres de escape".
|
||||||
|
Hay varios de ellos, pero no los veremos por ahora.
|
||||||
|
|
||||||
|
|
||||||
|
## Impresión
|
||||||
|
|
||||||
|
Imprimir es mostrar información a través de la pantalla. Esta
|
||||||
|
información puede ser palabras, letras, números, símbolos, etc.
|
||||||
|
|
||||||
|
Para imprimir en Zig se escribe lo siguiente:
|
||||||
|
|
||||||
|
![Zig online](/img/blog/es/tutorial/017-zig.jpg)
|
||||||
|
|
||||||
|
`std.debug.print` es una invocación que imprime lo que tenga
|
||||||
|
dentro. Para poner algo dentro, se utilizan parentesis `()`.
|
||||||
|
|
||||||
|
Dentro de los paréntesis va el string que queremos imprimir
|
||||||
|
y una secuencia misteriosa, así: `("Tu mensaje", .{})`.
|
||||||
|
|
||||||
|
Y finalmente, muy importante, todas las invocaciones
|
||||||
|
terminan con un punto y coma `;`. Si la invocación
|
||||||
|
no termina con su punto y coma tendrás un error misterioso.
|
||||||
|
|
||||||
|
Por ejemplo, para imprimir un nuevo texto `Me gusta Zig`
|
||||||
|
se escribiriá el código así:
|
||||||
|
|
||||||
|
`std.debug.print("Me gusta Zig", .{});`
|
||||||
|
|
||||||
|
Podemos tener varias invocaciones a la vez, y ejecutarlas en
|
||||||
|
siempre que la invocación esté bien escrita.
|
||||||
|
|
||||||
|
![Zig online](/img/blog/es/tutorial/018-zig.jpg)
|
||||||
|
|
||||||
|
Y al ejecutar el programa se imprimiran los mensajes en orden.
|
||||||
|
|
||||||
|
![Zig online](/img/blog/es/tutorial/019-zig.jpg)
|
||||||
|
|
||||||
|
|
||||||
|
## Nuevas lineas
|
||||||
|
|
||||||
|
Notarás que el mensaje se imprimió junto: `Mi primera impresiónMe gusta Zig`.
|
||||||
|
|
||||||
|
Este es un buen momento para presentar un concepto muy importante:
|
||||||
|
la computadora hace lo que le pides, no lo que quieres.
|
||||||
|
|
||||||
|
El código que ejecutamos no le pide a la computadora que imprima
|
||||||
|
una nueva linea `\n`. Así que la computadora no la imprime.
|
||||||
|
|
||||||
|
Para tener una nueva linea hay que incluirla en los strings, y con
|
||||||
|
eso al ejecutar estará cada linea separada:
|
||||||
|
|
||||||
|
![Zig online](/img/blog/es/tutorial/020-zig.jpg)
|
||||||
|
|
||||||
|
![Zig online](/img/blog/es/tutorial/021-zig.jpg)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Glosario
|
||||||
|
|
||||||
|
No es necesario que memorices o entiendas estas palabras.
|
||||||
|
|
||||||
|
- String: "cadena de caracteres"
|
||||||
|
- `const`: abreviatura de "constante", que no cambia
|
||||||
|
- `std`: abreviatura de "estandar"
|
||||||
|
- `import`: "importar"
|
||||||
|
- `pub`: abreviatura de "público", que es accesible
|
||||||
|
- `fn`: abreviatura de "función". en este artículo les llamé
|
||||||
|
invocaciones
|
||||||
|
- `void`: "vacio"
|
||||||
|
- `main`: "principal"
|
||||||
|
- `debug`: el debugging es un proceso mediante el cual
|
||||||
|
se eliminan errores (tambien conocidos como "bugs")
|
||||||
|
- `print`: "imprimir"
|
||||||
|
|
||||||
|
|