Mucho Python, C# y Java, todo en INGLÉS, pues si ya estás harto como yo, que sepas que ha comenzado la revolución hispánica, hoy vengo a presentarles mi último proyecto, ¡TORO! , unos de los primeros lenguajes de programación en español y de los únicos de este milenio.
Un poco de Toro
Originalmente TORO iba a ser un lenguaje de broma para entretenerme una tarde y luego sacar un vídeo llamativo para el canal de YouTube (¡sígueme eh!), pero al final he ido recibiendo buenos comentarios y he decidido publicarlo, pero de una forma especial.
El proyecto fue comenzado en Ensamblador, el objetivo era crear un compilador desde 0 (simplemente por mérito), aprendiendo únicamente Ensamblador (si menciono ASM que sepas que es lo mismo) para ello. El resultado fue estar casi un mes intentando sacar algo que no iba a tener salida, con una cantidad de errores inmunda y poco mas que basura de código. En ese momento en el que estaba pensando dejarlo cogí y grabé el video como pude pero a los dias decidí finalmente abandonar la locura que me estaba montando y ponerme a hacerla de la forma más fácil posible, basándome en otro lenguaje, en este caso python.
¡¡¡¡¿¿¿¿ENTONCES TORO NO ES UN LENGUAJE???!!!! Efectivamente, Toro acabó siendo un pseudolenguaje, pero eso no es tan malo, sigue sirviéndote para programar en español.
Por cierto, aquí te dejo el video 🙂
Descarga de Toro
Tras la migración caótica a un semi-compilador, Toro funciona mucho mejor ya que es más liviano y en velocidad, por lo general es más rápido, además de que tiene otras ventajas. Para empezar a usarlo puedes descargarlo aquí (es un .exe
):
Una vez descargado encontraras un zip con 2 archivos, un primer archivo, el ejecutable de Toro y un segundo archivo, un JSON que luego explicaré para que sirve.
Toro está pensado para usarse mediante línea de comandos, actualmente tiene 7 modos de uso distintos:
¿Cómo uso Toro?
Toro sin parámetros
toro.exe
Al entrar sin parámetros entras en la consola en la que puedes usar comandos sencillos:
Consola, escribe salir() para salir
>>> manzanas_de_pepe = "dos"
>>> imprimir(f"Pepe tiene {manzanas_de_pepe} manzanas")
Pepe tiene dos manzanas
Toro con un archivo como parámetro
Al entrar con el parámetro de un archivo, Toro intentará ejecutar este archivo:
Si tenemos un archivo .toro
que contiene, por ejemplo esto:
código_en_inglés = "Mucho"
si código_en_inglés == Nada:
imprimir("¡Vamos!, 0 código inglés")
ysi código_en_inglés == "Poco":
imprimir("¡Cachis!, hay un poco de código inglés")
sino:
imprimir("¡AHHHHH!, DEMASIADO CÓDIGO INGLÉS")
Y ejecutamos empleando:
toro.exe archivo.toro
Nos dará como resultado:
¡AHHHHH!, DEMASIADO CÓDIGO INGLÉS
Toro con un archivo y el parámetro -i
Al entrar con el parámetro -i
, Toro intentará transformar código python convencional en Toro, útil si quieres probar Toro con código ya escrito o pasar proyectos a toro (no recomendable).
Si tenemos un archivo .py
que queremos pasar a toro, por ejemplo esto:
def vida_loca(edad):
if edad < 18:
return "¡Eres un joven padawan!"
elif edad >= 18 and edad < 30:
return "¡La juventud es tuya, disfruta, pero no tanto!"
elif edad >= 30 and edad < 50:
return "Estás en la mejor edad, ¡pero cuidado con los achaques!"
else:
return "¡Bienvenido al club de los sabios, pero ya toma tu medicina!"
# Prueba
edad = int(input("Tu edad por favor: "))
print(vida_loca(edad))
Y ejecutamos empleando:
toro.exe -i archivo.py
Nos dará como resultado:
>>> Archivo python toreado con éxito
Una vez hecho esto aparecerá donde estaba el directorio del archivo traducido con el mismo nombre pero acabado en .toro (cuidado que este se remplaza sin ya existe uno sin preguntar). Al abrirlo veremos el código en Toro:
definir vida_loca(edad):
si edad < 18:
devolver "¡Eres un joven padawan!"
ysi edad >= 18 y edad < 30:
devolver "¡La juventud es tuya, disfruta, pero no tanto!"
ysi edad >= 30 y edad < 50:
devolver "Estás en la mejor edad, ¡pero cuidado con los achaques!"
sino:
devolver "¡Bienvenido al club de los sabios, pero ya toma tu medicina!"
# Prueba
edad = int(input("Tu edad por favor:"))
imprimir(vida_loca(edad))
Toro con un archivo y el parámetro -o
Al entrar con el parámetro -o
y un archivo de salida (el nombre de como quieres que se guarde), Toro mostrará la versión en python que se está ejecutando internamente en el semi-compilador. En otras palabras más sencillas, pasa el código de Toro a python.
Si tenemos un archivo .toro
que queremos pasar a python, por ejemplo este:
definir batalla_epica( arma, enemigo) :
si arma == "espada" y enemigo == "dragón":
devolver "¡La batalla comienza ! ¡La espada brilla contra el dragón ! "
ysi arma == "arco" y enemigo == "orc":
devolver "¡Flechas volando, orcos cayendo ! ¡La precisión es legendaria ! "
ysi arma == "martillo" y enemigo == "troll":
devolver "¡El martillo de los dioses resuena ! ¡El troll no sabe lo que le espera ! "
sino:
devolver "¡El destino está en tus manos, guerrero ! ¿Qué harás ahora?"
# Prueba
arma = "espada"
enemigo = "dragón"
imprimir( batalla_epica( arma, enemigo))
Y ejecutamos empleando:
toro.exe archivo.toro -o salida.py
Nos dará como resultado (aunque insisto, no es una traducción sino una extracción de datos del proceso, está asi para simplificar el entender lo que hace):
>>> Intento de traducción guardado
Una vez hecho esto aparecerá donde estaba el directorio del archivo traducido con el nombre elegido como salida, pero acabado en .py
(cuidado que este se remplaza sin ya existe uno sin preguntar). Al abrirlo veremos el código en python:
def batalla_epica(arma, enemigo):
if arma == "espada" and enemigo == "dragón":
return "¡La batalla comienza! ¡La espada brilla contra el dragón!"
elif arma == "arco" and enemigo == "orc":
return "¡Flechas volando, orcos cayendo! ¡La precisión es legendaria!"
elif arma == "martillo" and enemigo == "troll":
return "¡El martillo de los dioses resuena! ¡El troll no sabe lo que le espera!"
else:
return "¡El destino está en tus manos, guerrero! ¿Qué harás ahora?"
# Prueba
arma = "espada"
enemigo = "dragón"
print(batalla_epica(arma, enemigo))
Toro con el parámetro -h
toro.exe -h
Al entrar con el parámetro -h
entras en el menú de ayuda, no hay más historias.
usage: toro [-h] [-o OUTPUT] [-i] [--install INSTALL] [--uninstall UNINSTALL] [archivo]
Compilador Toro: El compilador MÁS ESPAÑOL DEL MUNDO
Toro install y uninstall (no suele funcionar, experimental)
toro.exe --install rickroll
toro.exe --uninstall rickroll
Al entrar con el parámetro --install
o --uninstall
toro descargará desde PyPi módulos de python, que son parcialmente funcionales con Toro, de momento el 90% no funcionan correctamente, pero no pierdes nada por probar, además la desinstalación no muestra salida durante bastante tiempo.
Al ejecutar nos devolverá algo así:
>>> INTENTO DE INSTALACION COMPLETA
Lista de equivalencias:
Aquí encontraras la versión en Toro de las palabras reservadas para python, las palabras que vienen de módulos no se traducen en Toro, aunque puedes agregar tu una traducción en el siguiente bloque del post.
En Python | En Toro Classic |
---|---|
imprimir | |
if | si |
else | sino |
elif | ysi |
while | mientras |
for | por |
import | importar |
from | desde |
def | definir |
return | devolver |
class | clase |
try | probar |
except | excepción |
finally | finalmente |
break | romper |
continue | continuar |
pass | pasa |
in | en |
not | no |
and | y |
or | o |
True | Verdad |
False | Falso |
None | Nada |
with | con |
as | como |
lambda | lambda |
global | global |
nonlocal | nolocal |
assert | asegura |
del | eliminar |
raise | elevar |
is | es |
async | asíncrono |
await | esperar |
yield | ceder |
Crea tu propio lenguaje en toro
Te acuerdas de aquel archivo llamado ttp1.json
, pues sirve justo para eso, si le cambias el nombre a ttp.json
toro usará esa lista de traducciones para funcionar, por lo que puedes modificar lo quieras en ese archivo que se hará efectivo inmediatamente en Toro, además puedes añadir para traducciones para módulos en tu código o resumir pequeñas lineas como que salto
sea print(" ")
para que al poner salto se genere (cutremente) un pequeño salto de página.
Junto al código viene una versión de traducciones de broma, concretamente las que estaban en el video de YouTube.
Si Toro no encuentra el archivo, le cambias el nombre o tiene una sintaxis incorrecta usará los valores por defecto.
Usa PyCharm con Toro (recomendado)
Si quieres ver la sintaxis de Toro con colores te recomiendo seguir estas instrucciones de PyCharm para tener coloreada la sintaxis de Toro al igual que en otros lenguajes:
Paso 1:
Abre los ajustes de PyCharm y vete a Editor > File types
luego crea en el botón más, debajo de «Recognized File Types» un tipo de archivo, llámalo como quieras aunque lógicamente recomiendo llamarlo Toro.
Paso 2:
Luego a la derecha, en «File name patterns» agrega una extension de archivo, en este caso *.toro
para que cualquier archivo acabado en .toro sea afectado.
Paso 3:
Haz doble click en el archivo que agregaste en el primer paso se te abrirá esto:
En el apartado «Keywords» hay 4 bloques, copia y pega esto en cada uno:
Bloque 1 | Bloque 2 | Bloque 3 | Bloque 4 |
si sino ysi mientras por romper continuar pasa en no y o | imprimir importar desde definir devolver probar excepción finalmente esperar ceder | clase lambda global nolocal asegura eliminar elevar es asíncrono | Verdad Falso Nada con como |
Una vez hecho esto dale a Ok, luego Aceptar y prueba a escribir código en Toro, ahora se resaltarán las palabras como debe ser. Lo único es que si modificas las palabras clave mediante el archivo ttp.json
tendrás que agregar a estos bloques esas palabras nuevas.
Por hacer
Una lista breve que se irá ampliando con los objetivos de Toro, estos son los objetivos de momento:
Notas
LO SE, LO SE, PROMETÍ CÓDIGO ABIERTO, Y VENDRÁ, en serio, siento los retrasos, pero mi vida a dado muchos problemas últimamente, por lo que no he tenido tiempo. No me gusta mucho como está el código ahora de feo e inoptimizado. Por lo que en cuanto vuelva de un viaje que voy a hacer le haré un lavado de cara y prepararé un precioso repositorio para Toro, donde todas vuestras ideas serán bienvenidas. Además si ya me conocen algunos sabrán que soy programador autodidacta y no he tocado una clase de código en mi vida por lo que todas aquellas «buenas prácticas» nunca las aprendí y sigo teniendo algo de miedo de como va a ser visto mi código por programadores reales y personas que se dedican a ello.
Y como siempre, eso es todo, nos vemos próximamente con algún otro proyecto absurdo que nadie necesita. ¡Hasta prontoooo!