Skip to content

Latest commit

 

History

38 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Fal

Un lenguaje de programación en español, sin símbolos raros. Un solo ejecutable, sin nada que instalar.

tipo Perro hereda de Animal con nombre
    funcion habla
        devuelve nombre de mi mas " dice guau"
    fin
fin

para cada p en perros
    escribe habla de p
fin

El juego de la serpiente corriendo en Fal

Eso es ejemplos/snake.fal, escrito entero en el lenguaje. Y se puede jugar en el navegador, con las flechas, sin instalar nada.

El intérprete entero corre dentro del navegador. Escribes, le das a ejecutar y ya. Y si estás empezando, tiene diez lecciones con sus ejercicios, desde escribir en pantalla hasta funciones.

Lo que escribe el programa va apareciendo según pasa, así que las cosas se mueven: puedes dibujar, animar y jugar con el teclado sin salir de la página.

Lo que escribes se guarda solo, así que puedes cerrar y volver. Y el botón de Compartir te da un enlace con tu programa dentro, para enseñárselo a quien quieras: se abre y ya está ahí, sin cuentas ni nada que instalar.

No hay ; ni {} ni == ni +. Los bloques cierran con fin, las cuentas se escriben 3 mas 4, y las comparaciones si edad es mayor que 18. Con tildes o sin ellas, en mayúsculas o en minúsculas: da igual.

Para quién es

Entre Scratch y un lenguaje de adultos no hay nada. Un crío se harta de arrastrar bloques, quiere seguir, y lo que se encuentra es sintaxis llena de símbolos y encima en inglés. Ese salto se lleva por delante a un montón de gente que habría continuado.

Si has pasado por PSeInt conoces el otro lado del problema. Sirve para aprender lógica, pero es pseudocódigo: no tiene librerías, no abre un archivo, no te deja montar un juego. Aprendes y ahí se acaba, no sale del aula.

Fal está pensado para ese hueco. Se lee casi como el pseudocódigo, pero por debajo hay un intérprete completo: tipos con herencia, clausuras, módulos, archivos, JSON, fechas, expresiones regulares y peticiones a internet. El mismo lenguaje con el que aprendes a repetir diez veces una línea te sirve luego para leer un CSV de gastos y sacar un informe que cuadra al céntimo.

Qué sabe hacer

Todo lo que se espera de un lenguaje de verdad: listas, diccionarios, conjuntos, funciones que se pasan como datos, clausuras, objetos con herencia, errores con clase, módulos, archivos, JSON, fechas, expresiones regulares e internet. Son 93 funciones y 42 palabras.

Tres cosas que lo separan de un lenguaje de juguete:

Los decimales son exactos. Aquí le gana a Python, a JavaScript y a Java:

escribe 0.1 mas 0.2              → 0.3
escribe (0.1 mas 0.2) es 0.3     → verdadero
escribe 19.99 por 3              → 59.97

Y no es un detalle de juguete. ejemplos/gastos.fal suma 23 gastos de un CSV: Fal da 1546.19 y las categorías cuadran al céntimo. Las mismas sumas en coma flotante dan 1546.1900000000005, que no cuadra con la suma de sus partes. Con dinero, eso es un descuadre en el arqueo.

Los errores enseñan. Dicen la línea, por dónde pasó el programa y cómo se arregla:

  X  No conozco nada llamado "nombree".
     linea 2 |  escribe nombree
     Pista: Quizas querias decir "nombre".

Trae de todo dentro. El mismo ejecutable corre tus programas, pasa su propio banco de pruebas (fal --probar) y genera el coloreado para VS Code (fal --editor).

Dibujar y jugar

Un bucle que dibuja se entiende mejor que un bucle que escribe números. La tortuga es un lápiz que se arrastra por la pantalla: camina la mueve hacia donde mira y gira la tuerce.

repite 36 veces
    camina de 100
    gira de 170
fin

Cuatro líneas y sale una estrella de 36 puntas. En el navegador aparece debajo del texto; desde la terminal se guarda en un .svg junto a tu programa.

Y tecla dice qué tecla acabas de pulsar sin quedarse esperando a nadie, que es lo que separa un juego de un cuestionario:

mientras jugando
    t es tecla
    si t es "arriba"
        fila es fila menos 1
    fin
    espera de 0.05
fin

Están en ejemplos/dibujo.fal y ejemplos/mueve.fal.

Descargar

Coge el paquete de tu sistema en la página de versiones, descomprímelo entero y ejecuta el instalador que viene dentro.

Tu sistema Paquete Instalador
Windows fal-windows.zip doble clic en instalar.bat
Mac con chip Apple fal-mac-apple.tar.gz sh instalar.sh
Mac con Intel fal-mac-intel.tar.gz sh instalar.sh
Linux fal-linux.tar.gz sh instalar.sh
Linux en ARM fal-linux-arm.tar.gz sh instalar.sh

No hace falta ser administrador. Si tu sistema avisa de que el programa no está firmado, mira LEEME.

Primer programa

Guarda esto como hola.fal:

nombre es pregunta "¿Cómo te llamas?"
escribe "Hola " mas nombre

si largo de nombre es mayor que 5
    escribe "Tienes un nombre largo"
fin

Y ejecútalo:

fal hola.fal

Ejemplos

Vienen en el paquete, en la carpeta ejemplos:

Archivo Qué enseña
hola.fal Variables, condiciones, repetir
dibujo.fal La tortuga: un bucle que dibuja en vez de escribir
mueve.fal Un tablero que se mueve con las flechas, usando tecla
listas.fal Listas, bucles, funciones
adivina.fal Un juego con pregunta y mientras
completo.fal Recorrido por lo básico
agenda.fal Objetos, archivos y un menú
avanzado.fal Clausuras, herencia, JSON, fechas, internet
snake.fal El juego de la serpiente, en tiempo real con tecla
gastos.fal Analiza un CSV de gastos y saca un informe
cifrado.fal Cifra un mensaje y luego lo rompe sin saber la clave
romanos.fal Numeros romanos de ida y vuelta, y comprueba los 3999
hanoi.fal Las torres de Hanoi, para ver que es la recursion
fal ejemplos/snake.fal
 SNAKE en Fal      Puntos: 60      Largo: 11
 +----------------------+
 |             @        |
 |             o *      |
 |             o        |
 |           ooo        |
 +----------------------+

Documentación

  • LEEME.md: instalar, desinstalar y poner el color en el editor
  • MANUAL.md: el lenguaje entero, con una tabla de traducción desde Python y JavaScript al final

Compilar tú mismo

Solo hace falta Go:

go build -o fal .
sh construir.sh

Lo primero compila para tu sistema. Lo segundo prepara los cinco paquetes, y se niega a hacerlo si las pruebas no pasan.

Añadir una función al lenguaje es una entrada más en la tabla de biblioteca.go. No hay que tocar ni el lector ni el armador.

Licencia

MIT. Haz lo que quieras con él.

About

Un lenguaje de programación en español, sin símbolos raros. Un solo ejecutable, sin nada que instalar.

Topics

Resources

Stars

4 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages