Revista Tecnología

7 Servicios online para compilar, ejecutar y ver la salida de pequeños programas

Publicado el 21 diciembre 2016 por Gaspar Fernández Moreno @gaspar_fm

Servicios online para compilar, ejecutar salida pequeños programas7 Servicios online para compilar, ejecutar y ver la salida de pequeños programas
Cuando estamos aprendiendo a programar o, cuando estamos probando algún pequeño código que hemos encontrado en Stack Overflow nos viene muy bien tener a mano un lugar para compilar rápidamente y ver qué sucede. Es más, incluso se nos puede presentar el caso de que una versión específica de un compilador tiene un fallo que nos trae de cabeza y nos vendría bien probar otra versión para salir de dudas.

Actualmente hay multitud de páginas que nos dan la posibilidad de compilar pequeños programas online y probar la salida de los mismos sin necesidad de tener que compilarlos nosotros (no imagináis la de pruebaX.c y pruebaX.cc que tengo en mi disco duro para cosas pequeñas de unas pocas líneas).

Hace unos 10 años tal vez pensaríamos que sería inviable lanzar un compilador dentro de un servidor para que todo el mundo compile lo que quiera (cosas buenas y malas). Por un lado, necesitamos potencia, pero actualmente los servidores son muy potentes, además, no habrá tantos programadores, por otro lado este tipo de servicios tienen controlados los tiempos de compilación y de ejecución, vamos, tenemos un tiempo límite para todo; también controlan la carga en cada momento del servidor, ya que habrá momentos en los que no se pueda compilar y te tienes que esperar, que para eso es gratis; también controlan el espacio en el que ejecutas el código, por un lado el usuario que ejecuta el programa tendrá unos privilegios muy básicos, por otro lado tendremos nuestro sistema enjaulado, además de RAM máxima y espacio en disco acotados; sin olvidar que habrá cosas que no podamos ejecutar. Aún así, son muy buena idea para pequeñas pruebas, algo como jsfiddle, codepen, sqlfiddle, pero para otro tipo de lenguajes.

En algunos casos, estos servicios online nos dicen cuáles son sus límites, en otros casos no, por lo que he llevado a cabo algunos experimentos para determinarlo. Creo que algunos factores importantes que se pueden mirar en estos servicios son los lenguajes soportados, el límite de tiempo de compilación y ejecución (así no hacemos bucles infinitos), el límite de memoria RAM que puede utilizar un programa, el límite de procesos que se pueden crear, y si podemos utilizar ficheros o tenemos acceso a red.

Como veis, son factores que aseguran la persistencia del servicio y que no son utilizados para realizar ataques. Por ejemplo, dejar que ejecutemos muchos procesos o hilos puede dejar sin servicio a otros usuarios haciendo que uno acapare los recursos, lo mismo sucede con la memoria y los tiempos límite. Por otro lado el acceso a red limitado impide que hagamos ataques con la IP de este servidor, o incluso que sea parte de una botnet.

Desde la web podemos crear nuestro código online, compilarlo y ejecutarlo online viendo la respuesta de manera inmediata desde el navegador y sin necesidad de instalar nada. Todo se ejecuta en servidor.

Lenguajes: Ada, Assembler, AWK, BC, Brainfuck, C, C++, C++14, C#, C99, CLIPS, Clojure, COBOL, CoffeScript, Common Lisp, D, Elixir, Erlang, F#, Factor, Falcon, Fantom, Forth, Fortran, Go, Groovy, Icon, Intercal, Haskell, Java, Javascript, Lua, Nemerie, Nice, Nim, Node.js, Objective-C, Ocalml, Octave, Oz, Pascal, Perl, PicoLisp, PHP, Pike, Prolog, Python, R, Ruby, Rust, Scala, Scheme, Smalltalk, SQL, Tcl, Unlambda, VB.NET, Whitespace; incluyendo variantes o compiladores diferentes para algunos de ellos.
Límite de tiempo de compilación: 10s
Límite de tiempo de ejecución: 5s
Límite de memoria: 256Mb
Acceso a red: no
Acceso a ficheros: no
Tamaño máximo del código: 64Kb
Procesos máximos: 16

Es una plataforma para programadores de la India. Pero podemos utilizarla para hacer pruebas y cargar nuestros programas.
Podemos utilizar decenas de lenguajes como C, C++, Java, PHP, Bash... Como detalle indicaré que el editor me ha gustado, puedes elegir temas y te ayuda a codificar a medida que vas escribiendo.

Lenguajes: ADA, Assembler, Bash, Bf, C, C++, Clips, D, Erlang, F#, Fortran, Go, Haskell, Ick, Icon, Java, Javascript, Lisp, Lua, Nice, NodeJs, Ocaml, Pascal, Perl, PHP, Pike, Prolog, Python, Ruby, Scala, Scheme, Tcl, Wspace.
Límite de tiempo de ejecución: 5s
Límite de memoria: 1Gb
Acceso a red: no
Acceso a ficheros: no

Originalmente esta aplicación sirve para hacer entrevistas de programación online. Es decir, tú como reclutador en una empresa vas a hacer una prueba a un futuro empleado, y quieres ver cómo lo hace. Bueno, es una herramienta que te permite esto, aunque también nos permite compilar en varios lenguajes y utilizar un entorno bastante amigable. Algo muy bueno es que ha publicado en github bajo licencia MIT el software que utilizan para que lo ejecutes en tu servidor. Utilizan docker para crear un sandbox de compilación y ejecución.

Otra cosa muy buena es que, incluso sin ser usuario guardan tus sesiones de edición durante un tiempo (de hecho, mientras estoy probando han pasado varios días y he logrado rescatar código de hace 3 días).

Lenguajes: Bash, C, C++, C#, Clojure, Elixir, Erlang, Go, HTML, Java, Javascript, Objective-C, Perl, PHP, Powershell, Python, Ruby, Scala, Shell, Swift, VB.NET
Límite de tiempo: 20s
Límite de memoria: 128Mb
Límite de procesos: 31
Acceso a red: No
Acceso a ficheros:

Un sistema mucho menos protegido que los anteriores. Y con los límites no muy claros, aunque se pueden averiguar algunas cosas. Todo se ejecuta en servidor también y tenemos una pequeña consola de bash online.

Lenguajes: Ada, Algol, AngularJs, Assembler, Awk, Bash, Basic, Befunge, Brainfuck, C, CSS, Clojure, Cobol, CoffeeScript, Coldfusion, C99, C++, C++0x, C++11, C#, Dart, D, Erlang, Elixir, Factor, Fantom, Falcon, Fortran, Forth, F#, Groovy, Go, Haxe, Haskell, HTML, Intercal, Icon, Java, Javascript, Jquery, Julia, Ksh, Latex, Lisp, LOLCODE, Lua, Octave, Malbolge, Markdown, MathML, Mozart-OZ, Nimrod, Node.js, Objective-C, OCaml, Pascal, Pawn, Perl, PHP, Pike, Processing.js, Prolog, Python, Rexx, Ruby, Rust, R, Scala, Scheme, Smalltalk, SML, Simula, Sqlite, Tcl, Tex, Unlambda, VB.NET, Verilog, Whitespace, Yasm
Límite de tiempo de ejecución: (variable, desde 10s a más de dos minutos)
Límite de memoria: 128Mb
Procesos máximos: 16 (probando)
Acceso a ficheros: Sí.
Acceso a red: Sí

En realidad es una web tipo pastebin que permite compilar y ejecutar programas que escribas en él, para ver el resultado del código generado. Es muy sencillo, pero robusto. Los códigos se ejecutan en máquinas virtuales estancas y a menudo se restauran las imágenes de las mismas (por si ha pasado algo). No tiene un editor demasiado bueno, es un simple textarea, pero para copiar y pegar nos vale.

Lenguajes: C, C++, D, Haskell, Lua, OCaml, PHP, Perl, Python, Ruby, Scheme, Tcl
Límite de memoria: 128Mb
Acceso a red: No
Acceso a ficheros:

No informa muy bien acerca de los límites del sistema. Pero para unas pruebas rápidas funciona muy bien. Sólo compila C++98, C++11, o C++14 y tenemos unas pocas opciones para utilizar. Hay veces que el sistema está saturado y no compila bien, o no ejecuta el programa por completo, pero es cuestión de refrescar la página varias veces (eso sí, guardad primero el trabajo que habéis hecho antes!!)

Lenguajes: C++, C++11, C++14
Límite de tiempo de ejecución: >30s
Acceso a red: no
Acceso a ficheros: no
Límite de memoria: 128Mb
Procesos máximos: (He conseguido lanzar más de 200 procesos hijos)

Un editor y compilador online sólo para Java. Permite cambiar temas y bajarte un ZIP con los archivos.

Lenguajes: Java
Límite de tiempo de ejecución: 5s

¿Conoces algún otro?

¿Conoces algún otro sistema para compilar y ejecutar programas en línea? ¿Has tenido alguna experiencia con ellos? ¡Déjanos un comentario!

También podría interesarte...


Volver a la Portada de Logo Paperblog