\frametitle {SAGE Demo: Interfaces} {\dred HOW IT WORKS:} Use buffered psuedo-tty's and Python objects that wrap native objects. This makes it possible to wrap {\dred all} math software that has a command line interface using very similar code. \vfill \begin{verbatim} sage: x = singular('2+3') \end{verbatim} This fires up one copy of Singular (if it wasn't already started) and sends the line {\tt '2+3'} to Singular. It also creates a Python class R with a field set to {\tt "sage0"}. {\small \begin{verbatim} sha:~ was$ ps ax |grep Singular 21664 pe Ss+ 0:00.01 /bin/sh /Volumes/HOME/s/local/bin/Singular -t --ticks 21666 pe S+ 0:00.06 Singular-3-0-2 -t --ticks-per-sec 1000 sage: type(x) sage: x 5 sage: R.name() 'sage0' \end{verbatim} }