CoCalc Public Fileswww / talks / 2006-10-07-sagedays2 / 2006-10-07-sagedays2-stein / current-longtalk.texOpen with one click!
Author: William A. Stein
Compute Environment: Ubuntu 18.04 (Deprecated)
1
\documentclass[10pt]{beamer}
2
\include{macros}
3
4
\mode<presentation>
5
{
6
\usetheme{Warsaw}
7
\usecolortheme{rose}
8
%\usecolortheme{seahorse}
9
\setbeamercovered{transparent}
10
% or whatever (possibly just delete it)
11
}
12
13
14
\usepackage[english]{babel}
15
% or whatever
16
17
\usepackage[latin1]{inputenc}
18
% or whatever
19
20
\usepackage{times}
21
\usepackage[T1]{fontenc}
22
% Or whatever. Note that the encoding and the font should match. If T1
23
% does not look nice, try deleting the line with the fontenc.
24
25
26
\title{SAGE: Python Software for Algebra and
27
Geometry Experimentation}
28
29
\author{William Stein}\vspace{-2ex}
30
31
% - Use the \inst command only if there are several affiliations.
32
% - Keep it simple, no one is interested in your street address.
33
34
\date[August 17] % (optional)
35
{August 17, 2006\\
36
SCIPY 2006\\
37
\includegraphics[width=8em]{icon-4.jpg}}
38
39
\subject{Talks}
40
41
% Delete this, if you do not want the table of contents to pop up at
42
% the beginning of each subsection:
43
\AtBeginSubsection[]
44
{
45
\begin{frame}<beamer>
46
\frametitle{Outline}
47
\tableofcontents[currentsection,currentsubsection]
48
\end{frame}
49
}
50
51
% If you wish to uncover everything in a step-wise fashion, uncomment
52
% the following command:
53
54
%\beamerdefaultoverlayspecification{<+->}
55
56
\begin{document}
57
58
\begin{frame}
59
\titlepage
60
\end{frame}
61
62
\begin{frame}
63
\frametitle{Outline}
64
\tableofcontents
65
% You might wish to add the option [pausesections]
66
\end{frame}
67
68
69
\section{What is SAGE?}
70
\begin{frame}
71
\frametitle{The GOAL}
72
73
{\bf \large {\dblue GOAL:} Create the {\dred best available free software}
74
for algebra, number theory, and geometry. Very Quickly.}\vspace{-1.5ex}
75
76
\begin{center}
77
\includegraphics[width=0.9\textwidth]{sage-car.jpg}
78
\end{center}
79
80
\end{frame}
81
82
\begin{frame}[fragile]
83
\small
84
From the Axiom mailing list (yesterday):
85
\begin{verbatim}
86
From: "Page, Bill" <Bill.Page@drdc-rddc.gc.ca>
87
Subject: Sage on MathAction
88
Date: Wed, 16 Aug 2006 07:48:48 -0400
89
90
Axiom Developers and computer algebra enthusiasts!
91
92
I have a very preliminary demonstration of the integration
93
of Sage with the MathAxiom wiki here:
94
95
http://wiki.axiom-developer.org/SandBoxSageTest
96
97
I would like to encourage you to test this further. You will
98
find that Sage is quite different than any other computer
99
algebra system with which you might be familiar - truly a
100
"new generation".
101
102
[...]
103
104
Enjoy!
105
106
Regards,
107
Bill Page.
108
\end{verbatim}
109
\end{frame}
110
111
\begin{frame}[fragile]
112
\begin{verbatim}
113
[...]
114
I think the Sage developers were very bold - maybe
115
even audacious - to actually attempt this. And they
116
are doing it in a largely pragmatic way without
117
attempting to incorporate the more formal and
118
theoretical ideas developed by the OpenMath
119
community.
120
121
One might have been tempted to predict
122
an early failure to this effort but on the contrary
123
Sage seems to be growing more rapidly than any
124
other computer algebra research and development
125
effort. I guess this just provides one more
126
demonstration that software development -
127
particularly open source software development -
128
is not a linear process.
129
\end{verbatim}
130
\end{frame}
131
132
\begin{frame}[fragile]
133
\begin{verbatim}
134
From: "Hoon Hong" <hong@math.ncsu.edu>
135
To: <wstein@gmail.com>
136
Subject: SAGE project
137
Date: Wed, 16 Aug 2006 20:26:12 -0400
138
139
Dear William (call me Hoon),
140
141
I am writing in the capacity as the editor-in-chief
142
of Journal of Symbolic Computation (JSC).
143
144
I believe that the SAGE project is a very important
145
effort for symbolic computation, and that it should
146
be widely recoqnized and supported.
147
148
Therefore, I would like to invite you
149
to submit a paper on SAGE project to JSC
150
(say about up to 30 pages).
151
152
[...]
153
\end{verbatim}
154
\end{frame}
155
156
\begin{frame}
157
\frametitle{What is SAGE?}
158
{\Large
159
\begin{enumerate}
160
\item A {\dred distribution} of free open source math software: 52MB source
161
tarball that builds self-contained (``no'' dependencies).
162
\item A {\dred new Python library:} algebraic analogue of SCIPY?
163
{\small (Though SCIPY is very important to SAGE)}
164
\item A {\dred new way to use} your favorite mathematics software: Mathematica,
165
Maple, etc.
166
\end{enumerate}
167
}
168
169
SAGE supports {\dred Linux, OS X, and Windows}.
170
Some people use SAGE on Solaris.
171
\end{frame}
172
173
\begin{frame}
174
\frametitle{Who is Writing SAGE?}
175
176
I am a number theorist in a ``pure mathematics'' department.
177
178
\begin{center}
179
\large
180
Professors, Postdocs, Graduate students, Undergraduates,
181
High school teachers, Professionals, Retired tech workers, {\dred YOU!}
182
\end{center}
183
184
\vfill
185
186
{\dblue Contributors Include:}
187
{\em Tom Boothby},
188
Robert Bradshaw,
189
David Harvey,
190
Craig Citro,
191
Bobby Moretti,
192
Emily Kirkman,
193
Yi Qiang,
194
Josh Kantor,
195
{\em David Kohel},
196
{\em David Joyner},
197
Iftikhar Burhanuddin,
198
John Cremona,
199
{\em Martin Albrecht},
200
Wilson Cheung,
201
{\em Alex Clemesha},
202
Didier Deshommes,
203
Naqi Jaffery,
204
Kiran Kedlaya,
205
David Roe,
206
David Kirkby,
207
Jon Hanke,
208
Gregg Musiker,
209
Fernando Perez,
210
Nathan Ryan,
211
Kyle Schalm,
212
Steven Sivek,
213
Jaap Spies,
214
{\em Gonzalo Tornaria},
215
Justin Walker,
216
Mark Watkins,
217
Joe Weening,
218
Joe Wetherell
219
220
\vfill
221
222
{\dred We use DARCS for revision control and code sharing. It
223
works {\em shockingly well}.}
224
225
\end{frame}
226
227
\begin{frame}[fragile]
228
\frametitle{Where are they writing SAGE?}
229
{\tt http://sage.math.washington.edu}\\
230
\vfill
231
\includegraphics[width=0.9\textwidth]{sageserver.jpg}
232
\vfill
233
The SAGE ``sandbox'': {\dred 64GB RAM}, {\dblue 16 processor} Opteron
234
server. You can browse the developer working directories
235
over the web here!
236
\end{frame}
237
238
\section{Technology Overview}
239
\begin{frame}
240
\Huge
241
\vfill
242
\begin{center}
243
Technology Overview
244
\end{center}
245
\vfill
246
\end{frame}
247
248
249
\begin{frame}
250
\frametitle{The SAGE Notebook}
251
252
{\dred Surprising FACT}: Most people I've polled {\dred vastly
253
prefer} using a good GUI for interacting with math software, if
254
available.
255
\vfill
256
{\dblue So now SAGE has one.} Creating this was {\dred not easy} (for me).
257
\vfill
258
259
\begin{enumerate}
260
\item The SAGE Notebook -- An {\dred ``AJAX application''} like Google maps or
261
Gmail. I don't want to reinvent the GUI.
262
\item {\dred Written from scratch} recently by me, Alex C. and Tom B.\vfill
263
\item Uses Python's built-in {\dred BaseHTTPServer} web server (we may
264
soon switch to Twisted for a more robust security model).
265
\vfill
266
\item Works well with Firefox, Safari, and Opera.\vfill
267
\item Client/server model which works {\dred over network} or locally. \vfill
268
\item A very usable and (mostly) robust version {\dred is done and
269
fully usable}. There is a big idea list that will influence the next
270
version.
271
\item Try it now at {\tt http://sage.math.washington.edu:8100}
272
\end{enumerate}
273
\end{frame}
274
275
276
\begin{frame}
277
\frametitle{Interfaces (mostly use pexpect)}
278
{\dblue Continue to use} your favorite programs and code
279
from within SAGE (but with a {\dblue Pythonic} interface!):
280
\vfill\large
281
\begin{itemize}
282
\item SAGE includes (mostly pseudo-tty) interfaces to
283
\begin{center}
284
{\em\dred GAP}, {\em\dred GP/PARI}, Kash, Macaulay2,
285
Magma, Maple, Mathematica,
286
{\em\dred Maxima}, Octave, {\em\dred Singular}, etc.
287
\end{center}
288
\item Red systems are included standard with SAGE.
289
\item Get access to all of the functionality of the other
290
systems via interfaces. (But there is some overhead.)
291
\item Get tab completion and online help even for interfaces (demo this).
292
\end{itemize}
293
294
\end{frame}
295
296
\begin{frame}[fragile]
297
\frametitle{Pyrex: Fast compiled code}
298
\begin{itemize}
299
\item Is SAGE {\dred ``impossible''}???:
300
{\small \begin{verbatim}
301
Date: Mon, 14 Aug 2006 15:26:36 +0100 (BST)
302
From: Kevin Buzzard <k.buzzard@imperial.ac.uk>
303
I've never understood how you can think something that
304
sits on top of python can beat some custom code like
305
magma. How does SAGE multiply two numbers? Does it use
306
python to do it? I was trying to explain SAGE to Jon
307
Dee and failed miserably.
308
Kevin
309
\end{verbatim}}
310
311
\item SAGE can be very fast, since it is partly written in {\dred
312
Pyrex}, which is a Python-like language that is converted to C and
313
compiled: {\tt\small
314
http://www.cosc.canterbury.ac.nz/greg.ewing/python/Pyrex/} My plan
315
is that all of SAGE's basic arithmetic types will be
316
(re-)written this way in the next few months.
317
318
\item Martin Albrecht and I have had to {\dred modify Pyrex}.
319
320
\end{itemize}
321
322
\end{frame}
323
324
\begin{frame}
325
\frametitle{Distribution Model}
326
Platforms: Linux, OSX, Windows, Solaris
327
\begin{itemize}
328
\item {\dblue Linux} -- Easy build from source; .dep and .rpm's will
329
be forthcoming.
330
\item {\dblue OS X} -- Easy build from source; precompiled binaries (tarballs) just
331
work.
332
\item {\dblue Windows} -- {\em impossible} to do a native build without cygwin,
333
which sucks. We tried {\em everything} in practical environments.
334
{\dred Colinux is bar far the best solution for SAGE}.
335
\item {\dblue Solaris} -- very difficult; can be built mostly...
336
\end{itemize}
337
\end{frame}
338
339
340
\section{History and Status Report}
341
\begin{frame}
342
\Huge
343
\vfill
344
\begin{center}
345
History and Status Report
346
\end{center}
347
\vfill
348
\end{frame}
349
350
\begin{frame}
351
\frametitle{History: SAGE 0.1 to SAGE 1.3.6.3}
352
\large
353
\begin{itemize}
354
\item {\dblue Feb 2005:} I got job offers with {\dred tenure} -- {\em SAGE 0.1}
355
\item {\dblue April 2005:} Created {\dred interfaces} to Mathematica, Magma, etc.
356
\item {\dblue Feb 2006:} SAGE Days 1 workshop -- {\dred SAGE 1.0}
357
\item {\dblue June 2006:} High school workshop -- {\dred SAGE Notebook }
358
\item {\dblue August 2006:} MSRI Workshop -- two week super-intense {\em graduate
359
student} coding sprint.
360
\item {\dblue Today:} SAGE now has a {\dred huge range of
361
functionality}. It was the only system to do all the
362
math-polyglot problems. But for much of importance to me currently
363
{\dred SAGE is not fast enough. This is {\em unacceptable}.}
364
\end{itemize}
365
366
\end{frame}
367
368
\begin{frame}[fragile]
369
\frametitle{The SAGE Library}
370
\small
371
\begin{verbatim}
372
algebras edu lfunctions monoids sets
373
categories ext libs plot structure
374
coding functions matrix quadratic_forms tests
375
combinat geometry misc rings
376
crypto groups modular schemes
377
databases interfaces modules server
378
379
UNIQUE Source Code Lines (including docstrings):
380
$ cat */*.py */*/*.py */*/*/*.py */*.pyx \
381
*/*/*.pyx */*/*.pyx |sort |uniq | wc -l
382
81128
383
384
UNIQUE Input Docstrings:
385
$ cat */*.py */*/*.py */*/*/*.py */*.pyx \
386
*/*/*.pyx */*/*.pyx |sort|uniq|grep "sage:" | wc -l
387
8867
388
\end{verbatim}
389
%Over 250 (of the about 1100) patches were not written by me.
390
\end{frame}
391
392
\begin{frame}
393
\begin{tabular}{|l|l|}\hline
394
Group theory and combinatorics & GAP \\\hline
395
Symbolic computation and Calculus & Maxima \\\hline
396
Commutative algebra & Singular \\\hline
397
Number theory & PARI, MWRANK, NTL \\\hline
398
Graphics & Matplotlib \\\hline
399
Numerical linear algebra & Numeric \\\hline
400
Mainstream programming language & Python \\\hline
401
Interactive Shell & IPython \\\hline
402
Graphical Interface & Notebook (Javascript) \\\hline
403
\end{tabular}
404
And much more!!
405
\end{frame}
406
407
%\begin{frame}
408
%\frametitle{What is included in SAGE?}
409
%\begin{enumerate}
410
%\item {\dblue Standard packages:}\\
411
%cddlib, {\dred clisp}, conway\_polynomials, cremona\_mini,
412
%doc, ecm, freetype, gap,
413
%genus2reduction, gfan, givaro, {\dred gmp}, {\dred gnuplotpy},
414
%{\dred ipython}, lcalc, libpng, {\dred matplotlib}, {\dred maxima},
415
%{\dred mpfr}, mwrank, ntl, {\dred numeric}, pari, {\dred pexpect},
416
%{\dred pyrex}, {\dred pyrexembed}, {\dred python}, readline,
417
%singular, sympow, tachyon, termcap, zlib, {\dred zodb3}
418
%\item {\dblue Optional Packages: {\tt sage -i package\_name}}\\
419
%darcs, database\_cremona\_ellcurve,
420
%database\_gap, database\_jones\_numfield,
421
%database\_kohel, database\_odlyzko\_zeta, database\_sloane\_oeis,
422
%database\_stein\_watkins\_mini, {\dred dvipng}, extra\_docs, gap\_packages,
423
%gd, {\dred gnuplot}, hermes, kash3\_linux, kash3\_osx, lie, linbox,
424
%macaulay2, {\dred mayavi}, {\dred moin (wiki)}, {\dred numarray},
425
%{\dred numpy}, nzmath, polymake,
426
%pygtk, RealLib3, {\dred scipy}, {\dred soya}
427
%\end{enumerate}
428
%\end{frame}
429
430
\begin{frame}
431
\frametitle{SAGE is not Just a Python Package?}
432
\large
433
SAGE is {\dred self-contained} and builds into its own copy of Python.
434
\begin{enumerate}
435
\item In some ways this is {\dred very good}.
436
\item In some ways this is {\dred very bad}.
437
\item You can use system-wide Python modules in SAGE:\\
438
{\tt\small import sys
439
sys.path.append('/usr/lib/python2.4/site-packages')}
440
The opposite direction unfortunately doesn't work yet.
441
\item {\dblue Surprising FACT:} That SAGE is self-contained greatly
442
{\dred encourages ordinary users to be developers}.
443
444
\end{enumerate}
445
446
\end{frame}
447
448
\begin{frame}
449
\frametitle{Goals for SAGE 2.0}
450
{\Large Goals for SAGE 2.0 -- December 2006}
451
\large
452
\begin{enumerate}
453
\item {\dblue Very fast} basic arithmetic, e.g., finite fields, polynomials, etc.
454
\item Very fast {\dred everyday {\em exact} linear algebra} (much work
455
done by D. Harvey and R. Bradshaw last week).
456
\item Much better source code {\dred introspection} (e.g., Pyrex code,
457
hyperlinks to files, etc.).
458
\item {\dblue Stable release} -- feature freeze, bug fixing, etc.
459
460
\item Create {\dred SAGE Foundation} -- doing SAGE right
461
costs about \$100K/year, and it is very difficult to cover that
462
with grants: (4 undergrad employees, 2 workshops,
463
grad student support, hardware, visitors, teaching reduction).
464
465
\end{enumerate}
466
467
468
\end{frame}
469
470
\begin{frame}
471
\frametitle{The Future (2007) -- SAGE 3.0: Very easy to use parallelism}
472
\large
473
\begin{enumerate}
474
\item Good support for {\dblue coarse grain parallelism} and use of
475
it for {\dred our algorithms}.
476
\item Systematically add {\dblue fine-grained parallelism} for very specific
477
operations, e.g., multimodular matrix multiplication over $\Q$.
478
\item Hopefully a {\dred workshop in January} at MSRI on this.
479
\item Hopefully followed by a series of {\dred intense 2-week coding
480
sprints}.
481
\item Fernando Perez et al., Yi Qiang, Jason Martin, etc.
482
\end{enumerate}
483
484
\vfill
485
\LARGE
486
\dblue Any Questions?
487
488
\end{frame}
489
490
491
\end{document}
492
493
494