“GolfScript es un lenguaje de programación esotérico orientado a la pila destinado a resolver problemas (agujeros) con la menor cantidad de pulsaciones de teclas posible. También pretende ser simple y fácil de escribir” – Página oficial de [Pagina original](http://www.golfscript.com/golfscript/).
El código corto se logra mediante el uso de símbolos únicos para representar operaciones de alto nivel (como mapa, unión, tamaño de matriz, etc.). Estar basado en pilas permite que las funciones y otras manipulaciones funcionen sin necesidad de variables explícitas; sin embargo, las variables siguen existiendo y son útiles para manipulaciones de pilas más complicadas.
Para aprender GolfScript, comience con el tutorial y descargue la implementación. Una vez que se sienta cómodo con él, es posible que desee verificar exactamente cómo se analiza el código y ver todas las funciones integradas.
Para mas información y tutoriales sobre GolfScript
GolfScript se basa en el manejo de pila(Esto hay que saberlo si o si), por lo que todas las operaciones se basan en sacar y meter algo dentro de la pila.
Meter algo en la pila:
> 1
[ 1 ]
> "hola"
[ 1 "hola" ]Eliminar algo de la pila:
> 1 2 3 4 5 #Primero introducimos algo para después sacarlo.
[ 1 2 3 4 5 ]
> ;
[ 1 2 3 4 ]
> ;;
[ 1 2 ]
> ;;;
[ ]
Error se intenta sacar mas elemento del que hay en la pila.Operaciones aritméticas simples:
> 2 2 3 4 4 6 4 3 #Ingresamos los números que vamos a calcular.
[ 2 2 3 4 4 6 4 3 ]
> 1 +
[ 2 2 3 4 4 6 4 4 ]
> +
[ 2 2 3 4 4 6 8 ]
> 2 - -
[ 2 2 3 4 4 0 ]
> *
[ 2 2 3 4 0 ]
> 1 + /
[ 2 2 3 4 ]Creando variables:
> 1:var_1
[ 1 ]
> 1:var_2;# Notar que pusimos “;” para que el valor de la variable se elimine de la pila.
[ 1 ]
> var_1# Pasamos var_1 a la pila
[ 1 1 ]
> { + "Feliz dia" puts }:+;# Redefino el operador suma.
[ 1 1 ]
> +
"Feliz día"
[ 2 ]
> { "Hola " }: ;# Redefino el espacio(' ')
[ 2 ]
> ;
[ 2 "hola " "hola " "hola " "hola " ]Creando funciones:
> { 1 + 4 2 3 - -}:function;# Creamos una función.
[ { 1 + 4 2 3 - -} ]
> { 1 2 4 4 6 7 }:llenar_pila;
[ { 1 + 4 2 3 - -} ]
> llenar_pila# Llamamos a nuestra función.
[ { 1 + 4 2 3 - -} 1 2 4 4 6 7 ]
> function
[ { 1 + 4 2 3 - -} 1 2 4 4 6 8 3 ]- GMP: Biblioteca para hacer operaciones con números realmente largos.
- GCC: Para compilarlo.
- make: Para automatizar el compilado.
Con solo ejecutar el archivo makefile compilarás toda la app:
makeY para debuggear solo debes pasar DEBUG=1, aconsejo limpiar los compilados si ya lo has compilado:
make clean
make DEBUG=1Pero si deseas hacerlo tu mismo, debes hacer:
gcc -Wall ./src/main.c {Pon aquí todos los archivos ./src/operators/*.c} {Pon aquí todos los archivos ./src/*.c} -o ./gsp -lgmpY para debugear aconsejo pasar al gcc el parámetro -D DEBUG, y compilar con el archivo ./test/memory.c. Esto trae como agregado que puedes saber si hay fuga de memoria al final de main.
Si quieres testear los códigos fuente por separado solo debes pasar -E TEST=1 al makefile para hacer el test.
make TEST=1Esto generará los test para cada archivo por separado, y binarios independientes de la APP principal.
Nota: Si deseas colaborar, no guardes un archivo importante en el directorio raiz con un nombre que contenga
*_testy_test.exeo./test/*_testy./test/*_test.exe. Esto porque serán eliminados al llamarmake clean, se colocó porque la salida de los testeos siguen ese patrón.
- Interprete basado en interprete GolfScript de: Darren Smith.
