REPLs
(Entornos interactivos de programación)




 Antonio Ognio Cesti
 <gnrfan@gnrfan.org>
   http://gnrfan.org
REPLs / Antonio Ognio




¿Qué es un REPL?

● Read-Eval-Print Loop
● Entorno interactivo de programación

● Escribo código...
REPLs / Antonio Ognio




Mas sobre los REPLs
● El nombre viene de las funciones que se utilizaron en
su implementación en...
REPLs / Antonio Ognio




Lenguajes con REPLs disponibles
● LISP (top-level)
                          ● Perl (Perl Consol...
REPLs / Antonio Ognio




Cualquier linea de comandos...
● Bash / C Shell / Z Shell (UNIX)
● command.com (DOS)

● Microsof...
REPLs / Antonio Ognio




Los REPLs nos acompañan hace mucho
tiempo...

●
  Orígenes en LISP en los 60's y 70's
● Integrac...
REPLs / Antonio Ognio




La tortuga de Logo...
REPLs / Antonio Ognio




Commodore 64 logo
REPLs / Antonio Ognio




Turtle Art en OLPC
REPLs / Antonio Ognio



F# Interactive en Visual Studio
REPLs / Antonio Ognio




Ventajas de un REPL
● Ideal para dar los primeros pasos
● Programación exploratoria

● Depuració...
REPLs / Antonio Ognio




Desventajas de un REPL
●
  Los errores se notan de inmediato y
no hay mucha oportunidad de
corre...
REPLs / Antonio Ognio




Algunos REPLs disponibles en Ubuntu
●
  c-repl
● ipython

● irb

● erlang-base (erl)

● slime

●...
REPLs / Antonio Ognio




... a solo un apt-get install de distancia


  $ sudo apt-get install <paquete>
REPLs / Antonio Ognio




Ejemplo: iPython


  $ sudo apt-get install ipython
REPLs / Antonio Ognio




Demo de iPython
REPLs / Antonio Ognio




Demo de iPython
REPLs / Antonio Ognio




Características de iPython
●
  “pretty-printing” de resultados
● Autocompletar con Tab

● Auto i...
REPLs / Antonio Ognio




      Demo Online
      Python REPL

http://datamech.com/devan/trypython/trypython.py
REPLs / Antonio Ognio




http://tryruby.hobix.com/
REPLs / Antonio Ognio




http://www.phpsh.org


  http://developers.facebook.com/opensource.php
REPLs / Antonio Ognio



[gnrfan]:~/src/phpsh-0.86b$./phpsh ejemplo.php
phpsh (c)2006 by Charlie Cheever and Dan Corson an...
REPLs / Antonio Ognio


php> = starts_with
starts_with                 starts_with($s, $prefix)
php> = starts_with(quot;ab...
REPLs / Antonio Ognio

php> = array(array(1,2,3), array(quot;aquot; => quot;bquot;, quot;cquot; => quot;dquot;, quot;equot...
REPLs / Antonio Ognio




http://www.mono-project.com/CsharpRepl
REPLs / Antonio Ognio
REPLs / Antonio Ognio
REPLs / Antonio Ognio
REPLs / Antonio Ognio
REPLs / Antonio Ognio




$ ./manage.py shell
REPLs / Antonio Ognio




$ ./manage.py shell
$ ./manage.py shell
Python 2.5.2 (r252:60911, Jul 31 2008, 17:28:52)
Python ...
REPLs / Antonio Ognio




Conclusiones
● Los REPLs son fáciles de usar
● Nos facilitan aprender programación

● Nos permit...
Gracias!!!
 Antonio Ognio Cesti
 <gnrfan@gnrfan.org>
   http://gnrfan.org
Upcoming SlideShare
Loading in …5
×

REPLs

1,043
-1

Published on

Una mirada a los entornos REPL (Read-Eval-Print-Loop) o consolas interactivas de programación.

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,043
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
9
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

REPLs

  1. 1. REPLs (Entornos interactivos de programación) Antonio Ognio Cesti <gnrfan@gnrfan.org> http://gnrfan.org
  2. 2. REPLs / Antonio Ognio ¿Qué es un REPL? ● Read-Eval-Print Loop ● Entorno interactivo de programación ● Escribo código y obtengo el resultado de inmediato ● Ideal para probar ideas y estrategias ● Manera rápida y fácil de obtener el fragmento de programación buscado
  3. 3. REPLs / Antonio Ognio Mas sobre los REPLs ● El nombre viene de las funciones que se utilizaron en su implementación en LISP ● Muchas veces se le llama intérprete sin embargo esto no es exacto porque hay lenguages como Python o C# que si compilan el código fuente a bytecode y lo ejecutan el código de forma interactiva ● Actualmente se encuentran disponibles para muchos lenguajes y cada vez hay más y nuevas implementaciones
  4. 4. REPLs / Antonio Ognio Lenguajes con REPLs disponibles ● LISP (top-level) ● Perl (Perl Console) ● F# (fsi) ● Python / Ipython ● Clojure ● Java (Beanshell) ● C (c-repl) ● Ruby (IRB) ● Ocaml (top-level) ● Haskell (ghci) ● C# (CSREPL) ● PHP (phpsh) ● Scheme (top-level) ● Javascript (Rhino js) ● Otros mas... ● Scala (scala) ● Erlang (erl)
  5. 5. REPLs / Antonio Ognio Cualquier linea de comandos... ● Bash / C Shell / Z Shell (UNIX) ● command.com (DOS) ● Microsoft Powershell (.Net) ● Cualquier otro “intérprete” de comandos
  6. 6. REPLs / Antonio Ognio Los REPLs nos acompañan hace mucho tiempo... ● Orígenes en LISP en los 60's y 70's ● Integración con editor Emacs (SLIME) ● Popular con Logo en los 80's
  7. 7. REPLs / Antonio Ognio La tortuga de Logo...
  8. 8. REPLs / Antonio Ognio Commodore 64 logo
  9. 9. REPLs / Antonio Ognio Turtle Art en OLPC
  10. 10. REPLs / Antonio Ognio F# Interactive en Visual Studio
  11. 11. REPLs / Antonio Ognio Ventajas de un REPL ● Ideal para dar los primeros pasos ● Programación exploratoria ● Depuración ● Aprender a usar una API ● Prototipear alguna idea ● Afinar una expresión y/o algoritmo ● Demostraciones en vivo! :)
  12. 12. REPLs / Antonio Ognio Desventajas de un REPL ● Los errores se notan de inmediato y no hay mucha oportunidad de corregirlos ● ¿Esto último es un feature o un bug? ● No es muy cómodo editar muchas líneas de código ● No funcionan muchas características presentes en un IDE
  13. 13. REPLs / Antonio Ognio Algunos REPLs disponibles en Ubuntu ● c-repl ● ipython ● irb ● erlang-base (erl) ● slime ● rhino ● haskell-mode (ghci) ● bsh (Bean Shell)
  14. 14. REPLs / Antonio Ognio ... a solo un apt-get install de distancia $ sudo apt-get install <paquete>
  15. 15. REPLs / Antonio Ognio Ejemplo: iPython $ sudo apt-get install ipython
  16. 16. REPLs / Antonio Ognio Demo de iPython
  17. 17. REPLs / Antonio Ognio Demo de iPython
  18. 18. REPLs / Antonio Ognio Características de iPython ● “pretty-printing” de resultados ● Autocompletar con Tab ● Auto identación ● Historial de comandos ● Ayuda formateada ● Traceback enriquecidos ● plain ● context ● verbose
  19. 19. REPLs / Antonio Ognio Demo Online Python REPL http://datamech.com/devan/trypython/trypython.py
  20. 20. REPLs / Antonio Ognio http://tryruby.hobix.com/
  21. 21. REPLs / Antonio Ognio http://www.phpsh.org http://developers.facebook.com/opensource.php
  22. 22. REPLs / Antonio Ognio [gnrfan]:~/src/phpsh-0.86b$./phpsh ejemplo.php phpsh (c)2006 by Charlie Cheever and Dan Corson and Facebook, Inc. type 'h' or 'help' to see instructions & features Commandline: php -q ./phpsh.php example.php php> = 3 + 3 6 php> = $_ 6 php> = $_+ $_ 12 php> $x = $_ php> print $x 12 php> $y = $x * $x php> print quot;$y=144quot; 144=144
  23. 23. REPLs / Antonio Ognio php> = starts_with starts_with starts_with($s, $prefix) php> = starts_with(quot;abcquot;, quot;aquot;) 1 php> d starts_with function starts_with($s, $prefix) { type=None file=example.php /home/.dogmatic/ccheever/src/phpsh-0.86b/example.php, lines 2-10: /** * Returns true if the first arg starts with the second arg * @param string $big_string * @param string $little_string * @return true or false * * @author ccheever */ php> = 2 + 2 4
  24. 24. REPLs / Antonio Ognio php> = array(array(1,2,3), array(quot;aquot; => quot;bquot;, quot;cquot; => quot;dquot;, quot;equot; => quot;fquot;), 'g', 'h') Array ( [0] => Array ( [0] => 1 [1] => 2 [2] => 3 ) [1] => Array ( [a] => b [c] => d [e] => f ) [2] => g [3] => h ) php> q
  25. 25. REPLs / Antonio Ognio http://www.mono-project.com/CsharpRepl
  26. 26. REPLs / Antonio Ognio
  27. 27. REPLs / Antonio Ognio
  28. 28. REPLs / Antonio Ognio
  29. 29. REPLs / Antonio Ognio
  30. 30. REPLs / Antonio Ognio $ ./manage.py shell
  31. 31. REPLs / Antonio Ognio $ ./manage.py shell $ ./manage.py shell Python 2.5.2 (r252:60911, Jul 31 2008, 17:28:52) Python 2.5.2 (r252:60911, Jul 31 2008, 17:28:52) [GCC 4.2.3 (Ubuntu 4.2.3-2ubuntu7)] on linux2 [GCC 4.2.3 (Ubuntu 4.2.3-2ubuntu7)] on linux2 Type quot;helpquot;, quot;copyrightquot;, quot;creditsquot; or quot;licensequot; for more Type quot;helpquot;, quot;copyrightquot;, quot;creditsquot; or quot;licensequot; for more information. information. (InteractiveConsole) (InteractiveConsole) >>> from django.contrib.auth.models import User >>> from django.contrib.auth.models import User >>> user = User() >>> user = User() >>> user.email = 'gnrfan@gnrfan.org' >>> user.email = 'gnrfan@gnrfan.org' >>> dir(user) >>> dir(user) >>> user.username = 'gnrfan' >>> user.username = 'gnrfan' >>> user.first_name = 'Antonio' >>> user.first_name = 'Antonio' >>> user.last_name = 'Ognio' >>> user.last_name = 'Ognio' >>> user.save() >>> user.save()
  32. 32. REPLs / Antonio Ognio Conclusiones ● Los REPLs son fáciles de usar ● Nos facilitan aprender programación ● Nos permiten descubrir nuevas APIs ● Nos ayudan a plasmar ideas en código ● Existen para muchos lenguajes ● Es posible que un REPL para tu lenguaje favorito este a la vuelta de la esquina
  33. 33. Gracias!!! Antonio Ognio Cesti <gnrfan@gnrfan.org> http://gnrfan.org
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×