On Mon, Mar 30, 2009 at 8:43 AM, kcrisman <kcris...@gmail.com> wrote: > >> > +1. And in fact it probably should define y as a variable even if you >> > just do differentiate(y^3). >> >> For the record, that will never happen by default in Sage. That goes >> along with choosing Python as the user language of Sage. Some >> reasons: >> >> 1. Except for ^-->** and int/float wrapping, I think the Sage >> preparser _only_ transforms expressions that would be syntax errors in >> Python into valid expressions. Since differentiate(y^3) is valid >> Python, the preparser shouldn't touch it. >> >> 2. If you make differentiate(y^3) automatically define y, then in any >> code anywhere, anytime one makes a typo in a function name or variable >> name, that variable will magically spring into existence and the code >> may continue to run producing wrong answers. This goes against the >> "explicit is better than implicit" maxim of Python. > > These reasons are very sensible. I wasn't aware of them, but that > makes sense. #1 is very interesting! > >> Are you saying the syntax of Mathematica and Maple have *changed* >> significantly since those days? What "things have gotten better"? I >> have the impression that the syntax of both Mathematica and Maple's >> languages are nearly identical to what they were 15 years ago. >> > > Well, at any rate they seem slicker to me. If they are the same, then > I guess I still wouldn't be using them - maybe?
It sounds like you're talking about the user interface rather than the language itself... > It's hard to deal > with such hypotheticals, now that I know Python; I just know that > really turned me off at the time, though. That said, the "clickable" > aspect of current Maple is intriguing and sometimes makes things easy, > though it is VERY busy. Palettes etc. can help too with routine but > long-to-type things - which is why tab-completion is so wonderful in > Sage, it is sort of an intelligent non-GUI response to palettes. Perhaps tab completion was around before there were any GUI's or palettes, so maybe palettes are a GUI response to tab completion. :-) > >> > problem, which I can understand as being interpreted as a problem, it >> > seems like this proposal is solving a problem that doesn't exist. The >> > only ambiguity here is for someone doing >> > sage: (y^3).integrate() >> > 3*y^2 >> > who wanted >> > 0 >> > because the variable was x, but such a user would presumably know that >> > the variable of choice makes a difference anyway and would have done >> > sage: (y^3).integrate(y) >> > anyway. Or am I missing something? Maybe something in Pynac would >> > break otherwise? I would be very open to seeing a technical argument >> > for this. >> >> The above is language design, and in Sage development we do not have >> to do language design, since Python is the language. (Except for a few >> small conveniences without which mathematics becomes way too painful, >> e.g., if 1/3 evaluates to 0.) >> > > Understood. But my understanding of Python is that > sage: (x^3).integrate() > is perfectly valid Python, even perhaps just as Pythonic as > sage: (x^3).integrate(x) > if there is a way internally to determine what should be passed to the > keyword/input var if there is ambiguity? So at least both should be > possible, even if one is "official". It's possible since it's currently what Sage does. The question is whether it is a good idea. Many people think it isn't. I was refereeing to Rob Beezer's suggestion to make e.g., (y^3).integrate(y) work even if y isn't defined. That's not possible. > Again, I am maybe missing something here due to my knowing just enough > Python, so it would be very helpful to get it cleared up in case it > comes up in an unrelated context. Thanks! > > - kcrisman > > > -- William Stein Associate Professor of Mathematics University of Washington http://wstein.org --~--~---------~--~----~------------~-------~--~----~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~----------~----~----~----~------~----~------~--~---