-
-
Notifications
You must be signed in to change notification settings - Fork 15
/
library-why.html
428 lines (359 loc) · 21.4 KB
/
library-why.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<title>SageMath - Why use SageMath
</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="search"
type="application/opensearchdescription+xml"
href="https://www.sagemath.org/res/sage-search.xml"
title="Search sagemath.org" />
<link href='res/sage.css' type="text/css" rel="stylesheet" />
<link rel="shortcut icon" href="pix/sageicon.png" type="image/x-icon" />
<link rel="mask-icon" href="pix/icon_only/sagemath_pinned_tab_icon.svg" color="blue" />
<script src="//code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
<script src='res/sage.js' type="text/javascript"></script>
<link href='//fonts.googleapis.com/css?family=RobotoDraft:regular,bold,italic,thin,light,bolditalic,black,medium&lang=en,fr,de,es' rel='stylesheet' type='text/css'>
<link href="https://mathstodon.xyz/@sagemath" rel="me" />
<meta property="og:title" content="SageMath Mathematical Software System - Sage"/>
<meta property="og:type" content="website"/>
<meta property="og:url" content="https://www.sagemath.org/"/>
<meta property="og:image" content="https://sagemath.org/pix/logo_sagemath+icon_oldstyle.png"/>
<meta property="og:site_name" content="SageMath Mathematical Software System"/>
<meta property="og:description" content="SageMath is a free and open-source mathematical software system."/></head>
<body>
<div id="header" class="small">
<div id="header-logo">
<a href="index.html">
<img width="250" height="65" alt="SageMath Logo" class="round raised"
src="pix/logo_sagemath+icon_oldstyle.png" title="SageMath Mathematical Software" />
</a></div>
<div id="header-text"><form action="search.html" method="get">
<a href="https://github.com/sagemath/sage">GitHub</a>
·
<a href="https://wiki.sagemath.org/">Wiki</a>
·
<a href="https://ask.sagemath.org/">Questions?</a>
·
<a href="https://github.com/sponsors/sagemath" style="font-weight: bold;">
<span style="color:#ea4aaa">♥</span> Sponsor
</a>
·
<a href="https://opencollective.com/sage_math" style="font-weight: bold;">Donate</a>
</form>
Online:
<a href="https://cocalc.com/?utm_source=sagemath.org&utm_medium=top">CoCalc</a>
·
<a href="https://sagecell.sagemath.org/">SageCell</a>
or
<a href="https://doc.sagemath.org/html/en/installation/index.html">Install</a>,
<a href="https://github.com/sagemath/sage">Clone</a>
<br/>
<a href="https://www.facebook.com/pages/Sage-Math/26593144945">
<img alt="F" src="pix/facebook-favicon.ico" width="16" height="16" /></a>
<a href="https://twitter.com/sagemath">
<img alt="T" src="pix/twitter-favicon.ico" width="16" height="16"/></a>
<a href="https://mathstodon.xyz/@sagemath">
<img alt="T" src="pix/mastodon-favicon.ico" width="16" height="16"/></a></div>
</div>
<div id="sage-nav-buffer" style="display: none"></div>
<ul id="sage-nav"><li><a href="index.html">Home</a>
<ul>
<li><a href="search.html">Search</a></li>
<li><a href="development-ack.html">Acknowledgments</a></li>
<li><a href="https://wiki.sagemath.org/Workshops">SageMath Days</a></li>
</ul>
</li>
<li><a href="tour.html">Tour</a>
<ul>
<li><a href="tour.html">Overview</a></li>
<li><a href="library-why.html">Why Sage?</a></li>
<li class="section"><a href="tour-quickstart.html">Quickstart</a></li>
<li><a href="tour-graphics.html">Graphics</a></li>
<li><a href="tour-research.html">Research</a></li>
<li class="section"><a href="https://wiki.sagemath.org/interact/">Interactive Plots (wiki)</a></li>
<li><a href="https://doc.sagemath.org/html/en/a_tour_of_sage/">A Tour of SageMath</a></li>
</ul>
</li>
<li><a href="help.html">Help</a>
<ul>
<li><a href="https://doc.sagemath.org"><b>Online Documentation</b></a></li>
<li class="section"><a href="help.html">Support Resources</a></li>
<li><a href="help-groups.html">Mailing Lists</a></li>
<li><a href="https://ask.sagemath.org" class="ext">Ask a question</a></li>
<li><a href="https://sagemath.zulipchat.com/" class="ext">Chat on Zulip</a></li>
<li><a href="help-video.html">Videos</a></li>
<li class="section"><a href="https://doc.sagemath.org/html/en/tutorial/">Tutorial</a></li>
<li><a href="https://doc.sagemath.org/html/en/constructions/">Constructions</a></li>
<li><a href="https://doc.sagemath.org/html/en/reference/">Reference Manual</a></li>
</ul>
</li>
<li><a href="library.html">Library</a>
<ul>
<li><a href="library.html">Overview</a></li>
<li><a href="library-stories.html">Testimonials</a></li>
<li><a href="library-publications.html">Publications</a></li>
<li><a href="library-publications-combinat.html">Publications Combinat</a></li>
<li><a href="library-publications.html#books" >Books</a></li>
<li class="section"><a href="library-marketing.html">Marketing</a></li>
<li><a href="library-press.html">Press Kit</a></li>
<li class="section"><a href="calctut/index.html">Calculus Tutorial</a></li>
</ul>
</li>
<li><a href="https://doc.sagemath.org/html/en/installation/index.html">Download</a>
<ul>
<li><a href="https://doc.sagemath.org/html/en/installation/index.html">Install guide: What/how to download</a>
<li class="section"><a href="https://github.com/sagemath/sage">Clone from GitHub</a></li>
<li class="section"><a href="https://github.com/3-manifolds/Sage_macOS/releases" class="ext">macOS binaries (3-manifolds)</a></li>
<li><a href="https://doc.sagemath.org/html/en/installation/conda.html#sec-installation-conda">Linux/macOS binaries (conda-forge)</a></li>
<li><a href="https://docs.microsoft.com/en-us/windows/wsl/install">Windows: Use Windows Subsystem for Linux</a></li>
</ul>
</li>
<li><a href="development.html">Development</a>
<ul>
<li><a href="https://github.com/sagemath/sage/blob/develop/CONTRIBUTING.md" class="ext">Contributing to SageMath</a></li>
<li><a href="https://github.com/sagemath/sage" class="ext">GitHub repository</a></li>
<li><a href="development-groups.html">Mailing Lists</a></li>
<li><a href="development-map.html">Developer Map</a></li>
<li><a href="development-prize.html">Prize</a></li>
<li><a href="development-ack.html">Acknowledgment</a></li>
<li><a href="https://doc.sagemath.org/html/en/developer/" class="ext">Developer Guide</a></li>
</ul>
</li>
<li><a href="links.html">Links</a>
<ul>
<li><a href="https://github.com/sagemath/sage/wiki/Mathematical-Software-Landscape" class="ext">Math Software Landscape</a></li>
<li><a href="https://doc.sagemath.org/html/en/reference/spkg/" class="ext">SageMath Components</a></li>
<li class="section"><a href="https://sagecell.sagemath.org/" class="ext">SageMath Cell Server</a></li>
<li><a href="https://wiki.sagemath.org/">SageMath Wiki</a></li>
<li><a href="https://groups.google.com/forum/#!forum/sage-devel">Report a bug</a></li>
<li><a href="contact.html">Contact</a></li>
</ul>
</li></ul>
<h1>Why SageMath?</h1>
<h2>Dan Drake</h2>
<div class="justify bodypadding">
First, I'll say a bit about how I use SageMath: in the first place, I use it for my own research,
and also use it for my teaching -- I've used it in calculus and differential equations
courses, and next semester will use it in a discrete math course. Mostly I use it in my lectures
to do demonstrations, but someday I hope to incorporate SageMath into the homework.
</div>
<h3>Free-as-in-beer means:</h3>
<div class="justify bodypadding">
I can install it anywhere I want -- my office computer, my laptop, the computer in the lecture
hall, anywhere. I spend exactly zero time wondering if what I'm doing is allowed by the site
license, wondering when we'll get the next version, and so on.
</div>
<div class="justify bodypadding">
Free means my students can use it. At the university where I went to graduate school, we used
Matlab and Mathematica for our engineering calculus courses. During the first week, I would walk
around the computer lab pretending not to hear everyone say 'if you want to use it at home,
just go to [whatever site/service is popular for pirated software] and download it.' With
SageMath, *I* say, "if you want to use it at home, go to sagemath.org and download it."
</div>
<div class="justify bodypadding">
So the students who would otherwise pirate the software benefit by not doing something illegal
(and risking installation of malware) -- but the honest students benefit too. Everyone can
download and use SageMath, so I can take a demo from class, publish it, and *everyone* they can look
at it after class and interact with it themselves, instead of just watching me fiddle with it.
Sure, Mathematica has their "Player" application, but with SageMath, my students can easily
alter the demo for themselves, which isn't possible with the Mathematica Player.
</div>
<div class="justify bodypadding">
Free also means that students who graduate and go into industry can continue to use SageMath.
Maplesoft may not be interested in suing a student who put Maple on his laptop and whose
university has a site license, but if your company is developing a product and uses a pirated
copy of Maple to do it, they will not be happy.
</div>
<h3>Python means:</h3>
<div class="justify bodypadding">
You have some familiarity with one of the best and most popular programming languages out there,
that is available for every platform, and is ubiquitous throughout industry. Students in my math
courses who aren't math majors and will work in industry gain something by learning a bit of
Python.
</div>
<h3>Free-as-in-speech + Python means:</h3>
<div class="justify bodypadding">
When students run up against a bug, they might be able to fix it. Instead of just telling them to
sit quietly and be patient until someone else fixes the problem for them, there's a
reasonable chance that a good student can be involved in the solution. In education nowadays we
encourage students to be "active learners" and so on; there is talk of
"discovery-based learning". It is very much in the spirit of these educational
philosophies for a student to discover a bug, realize it is a bug, and go about trying to fix it.
</div>
<h3>For higher-level students:</h3>
<div class="justify bodypadding">
Upper division students in mathematics or similar field can participate in fixing bugs on more
meaningful level, since they might understand the algorithms being used or know enough about
programming to fix broken code. SageMath is intended for professional-level real-world use, so for
such students, working on improving SageMath is real-world experience, useful to the students after
graduation. (Who would you rather hire? The guy who did all his assignments, or the one who says,
"I fixed bugs and added features to a large software project used by tens of thousands of
people"?)
</div>
<div class="justify bodypadding">
Also, undergrad research is super hot these days, and SageMath allows students to be up and running
fast. Students who are not already highly proficient programmers have to spend tons of time
learning, say, C, and then waste a lot of time messing around with pointer arithmetic. SageMath
allows those students who are more interested in math than malloc() to spend more time thinking
about math and less time figuring out why their code segfaults.
</div>
<h3>The SageMath notebook server means:</h3>
<div class="justify bodypadding">
The notebook allows network transparency, so I only need to get SageMath working well *once*, then
use a web browser in the classroom. With shared computers in lecture halls, getting things
installed is a pain -- but you can definitely rely on a web browser being installed. (And if the
computer only has IE6, as many around here do, it's easy to get Firefox.) It also means that
if I have SageMath running on a fast computer, I get the benefits of that computer when accessing it
from anywhere else.
</div>
<div class="justify bodypadding">
Dan
</div>
<h2>Ted Kosan</h2>
<div class="justify bodypadding"><em>William: </em>"If it isn't too much trouble, if you have the time, could you consider
posting a rough list of some of the factors that went into your decision, why you chose SAGE, how
other competitors fared, and what isn't perfect yet about SAGE for your desired
goals?"</div>
<div class="justify bodypadding">
The reasoning behind why I chose SAGE was heavily influenced by the unusual nature of the degree
program I teach in. Our Computer Engineering Technology degree is a hybrid degree which is half
computer science and half computer engineering with an overall emphasis on application. The
program's faculty consist of 2 computer scientists, 2 engineers and 1 technologist and the
type of student that the degree is designed to produce is a deep generalist. I am the
technologist and this has placed me in a good position to observe both the algorithm-oriented
computer science approach and the mathematics-oriented engineering approach to problem solving.
</div>
<div class="justify bodypadding">
I observed that the engineering classes were using software like MathCad and MatLab to great
advantage but, after seeing how the CS classes were solving problems using programming languages,
tools like MathCad and MatLab did not appear to have a general enough design to me. I eventually
decided to try Mathematica because of its more general design and in spite of the fact the
engineers didn't quite understand why I would choose it over a traditional
engineering-oriented software application :-) I worked with Mathematica for over 2 years and I
liked its mathematics capabilities and notebook user interface but I found its programming
capabilities to be somewhat awkward to use, especially when compared to the Python we had started
to use in some of our CS classes. Beyond this, I am a Linux user and many of our students are
too. I found that Mathematica's support for Linux was fairly poor and I was constantly
running into issues that needed to be worked around or fixed.
</div>
<div class="justify bodypadding">
When we began our distance learning initiative, we chose to base it on open source software as
much as possible and this is when I decided to find an open source alternative to Mathematica. I
think that most people who are searching for mathematics software quickly find this Comparison of
Computer Algebra systems page and so did I: <a href=
"https://en.wikipedia.org/wiki/Comparison_of_computer_algebra_systems">https://en.wikipedia.org/wiki/Comparison_of_computer_algebra_systems</a>
</div>
<div class="justify bodypadding">
After eliminating all of the proprietary applications, the short-list of applications I selected
to evaluate consisted of Axiom, Mathomatic, Maxima, SAGE, and Yacas. At that time I was heavily
influenced by Mathematica's GUI notebook front-end along with the GUI front-end of
applications like MathCad. Therefore, I rated having a nice GUI front-end high on my list of
requirements when I evaluated each of the applications on this list. I eventually decided to move
forward using Maxima and Python running inside of TeXmacs and for a while I thought I had found
what I was looking for. Maxima seemed like it was able to handle most of my mathematics needs and
Python was able to handle most of the computing needs I had, even though I was only a newbie
Python developer at the time. TeXmacs was also where I received experience with the concept of
wrapping a wide range of software tools in one user interface and I liked the flexibility that
this provided. The more I worked with TeXmacs, however, the more 'quirky' it began to
seem to me. Beyond this, I began to want maxima and Python to be able to work together more
intimately than they were able to do within TeXmacs. I reluctantly decided that I needed to
continue my search.
</div>
<div class="justify bodypadding">
Fortunately for me, it was at this point that I experienced a kind of revelation with respect to
Python. The language I had learned just before Python was Java and I came to Java from C. For me,
Java opened a whole new world of programming that I did not know existed before, especially when
I observed the way that computer scientists used it. When I decided to learn Python, however, my
experience with Java put limits on what I expected Python to be capable of. As I dug deeper into
Python, I started to see that Python was even more advanced than Java than Java had been with C.
When I moved from C to Java, it felt like I had moved from manually pounding nails with a hammer
to using a pneumatic nail gun. As I started to grasp the amazing power that a dynamic language
like Python contains, however, it began to feel like moving from nailing boards with a nail gun
to pointing a magic wand and having them appear in a board with no more effort than a flick of
the wrist. As I began to study Python deeper and program in it more, it felt like my mind was
starting to light up and I began to think about programming-based problem solving in a whole new
way. This was the feeling that Python gave me when I started to see how to properly use it. I
found myself wanting to enter this frame of mind more frequently and to hold it for longer
periods of time. I also started to become convinced that this was the kind of thinking that we
should be encouraging our students to embrace.
</div>
<div class="justify bodypadding">
It was with this new perspective that I reevaluated the list of mathematics applications I had
compiled earlier and when I looked at SAGE again, it was with new eyes. Instead of Python being
just a tool among equals like it was in TeXmacs, in SAGE it was elevated to the position of being
the means of managing the enormous complexity inherent in these other tools and enabling the
power in them to be made available in a way that seemed more natural and effective than the other
approaches that I had looked at. I am also changing my thinking on the worth of entering
mathematics using a rich graphical front-end vs. entering it using typed source code. When I was
using Mathematica, I use to enter almost all of my input though the graphical notebook front-end
because I thought it was somehow superior to entering input as ASCII text. I continued this
thinking while I was using TeXmacs but as I have studied SAGE's documentation further, and
started to work with it more, I am beginning to form the opinion that it is much more efficient
to work at the Python source code level because staying at the Python source code level tends to
keeps one's mind in the 'light up' state that I referred to earlier. Therefore, I
went from thinking that the best approach for teaching newbies mathematics software was to hide
the source code as much as possible behind a GUI front-end to coming up with a way to teach
newbies how to program as easily as possible so that they would be able to effectively use a
source code interface.
</div>
<div class="justify bodypadding">
Anyway, I know this answer is somewhat abstract, but that is how I made my decision :-)
</div>
<div class="justify bodypadding">
As for what isn't perfect yet about SAGE itself for my desired goals, I am still learning how
to use SAGE properly ( and I am also still learning how to use Python properly ) so I am not
quite ready to provide suggestions yet, but I will probably be coming up with some in the future.
What I currently see a need for is a SAGE tutorial that is targeted at the programmer/mathematics
newbie. I am going to try to develop a tutorial like this but it would be helpful if I could
periodically ask some dumb questions on this email list about SAGE and mathematics in general.
</div>
<div class="justify bodypadding">
Thanks,
</div>
<div class="justify bodypadding">
Ted
</div>
<div style="height:auto;min-height:50px;"> </div>
<div id="footer" class="center">
<table>
<tr id="links">
<td><a id="footer-webmaster" href="https://github.com/sagemath/website"></a></td>
<td>·</td>
<td><a id="footer-cc" title="website content is Creative Commons 3.0 licensed"
href="https://creativecommons.org/licenses/by-sa/4.0/"></a></td>
<td>·</td>
<td><a id="footer-contact" title="Contact SageMath Project" href="contact.html"></a></td>
</tr>
<tr style="height: 70px;">
<td align="right" colspan="1">
<a style="background:none;" href="https://www.clustrmaps.com/map/Sagemath.org">
<img width="65" height="42"
style="border:0px;"
id="clustrMapsImg"
src="https://www.clustrmaps.com/stats/maps-no_clusters/sagemath.org-thumb.jpg" alt="Locations of visitors to this page" />
</a>
</td>
<td></td>
<td align="center" style="padding-bottom: 10px;vertical-align: center">
<div id="histats_counter"></div>
<noscript>
<a href="https://www.histats.com" alt="free web stats" target="_blank" >
<div id="histatsC"><img border="0" src="https://s4is.histats.com/stats/i/1579950.gif?1579950&103"></div></a>
</noscript>
</td>
<td></td>
<td>
<a href="https://twitter.com/share" class="twitter-share-button" data-url="https://sagemath.org" data-text="I like @sagemath" data-related="sagemath">Tweet</a>
</td>
</tr>
<tr>
<td colspan="7" style="text-align: center;">
<iframe src="https://github.com/sponsors/sagemath/button" title="Sponsor sagemath" height="35" width="116" style="border: 0; vertical-align: middle;"></iframe>
</td>
</tr>
</table>
</div></body>
</html>