h a l f b a k e r y
A riddle wrapped in a mystery inside a rich, flaky crust

meta:

account: browse anonymously, or get an account and write.

 user: pass:
register,

# OO Mathematics

Organize mathematical knowledge according to the principles of object-oriented programming paradigm. (An idea concerning the naming-scheme for mathematical results.)
 (+3) [vote for, against]

In computer programming, we generally operate with variables and functions. By analogy in mathematics, we generally operate with definitions and propositions.

Recently, the need to increase the code readability made us invent OOP paradigm. It's become so important, that the code that doesn't follow such paradigm, tends to be referred to as "spaghetti code" due to poor readability.

In mathematics, however, we did not make this leap. From the ancient times, we began naming mathematical results by giving them specific names, and we stick to this tradition.

When there were relatively few results in mathematics, it was not a problem, but in modern days, with skyrocketing amount of results, it *is* a problem. Few mathematicians are good in many subfields of mathematics. A professional mathematician has to move random names of mathematical results into symbolic expressions and long term memory before comprehending the big picture implied by multiple theories.

It has been suggested by examples that mathematics implicitly follow the OO paradigm (see the first link). However, there seem to have been no attempt to organize mathematics using namespaces, multiple inheritance, etc. The simple idea is then, to do it, and make these connections explicit.

Just like an import statement in a computer program lets you import a special package with working variables and methods, conveniently readable and accessible through following the dot-notation, the mathematics, if explicitly organized in OO paradigm, would let you easily and precisely refer and access mathematical results.

Such organization could potentially let more people understand the whole mathematics better, and easily extend it, say, by multiple inheritance, and creation of new classes of objects with novel properties.

(Not sure if this is not yet existing. Computer languages
for pure mathematics do exist, but are they OO?)

 — Inyuki, Sep 14 2012

(?) Is mathematics object oriented? http://www.cut-the-...g/Mset99/math.shtml
[Inyuki, Sep 14 2012]

FMathL - Formal Mathematical Language http://www.mat.univ...t/~neum/FMathL.html
[Inyuki, Sep 14 2012]

Bertrand Russell http://en.wikipedia...ki/Bertrand_russell
Pioneer of systematization [8th of 7, Sep 14 2012]

Probably a good starting point. [Inyuki, Sep 16 2012]

// let's OO everything // (Why) http://stackoverflo...o-more-of-those-why
"Namespaces are one honking great idea -- let's do more of those!" [Inyuki, Sep 16 2012]

Category theory http://en.wikipedia...iki/Category_theory
baked, but called functional programming [placid_turmoil, Dec 26 2014]

 // However, there seem to have been no attempt to organize mathematics using namespaces, multiple inheritance, etc. //

 — 8th of 7, Sep 14 2012

 I was disappointed to discover that this was not a proposal for mathematics conducted on a 1:72 scale. I had visions of tiny blackboards, on which minuscule chalks were wielded by inch-high mathematicians. No, "disappointed" is too weak a word. Heartbroken, I say - heartbroken.

 However, having managed my own expectations, this is an interesting idea - a sort of theorem ontology.

But I wonder whether serious mathematics is amenable to this. A really nice theorem surely has much more going on than just inputs and outputs?
 — MaxwellBuchanan, Sep 14 2012

Well, there's a lot of digestion and peristaltic ambulation that takes place between the two, but it's all just a load of shit.
 — Alterother, Sep 14 2012

 I disagree. I am not a mathematicist by any means, but I suspect that every significant theorem contains lots of lemmas which are not expressed explicitly and independently, but are nevertheless valuable to mathematicians.

To take an analogy, I can treat my Blu-Ray player as a black box with disc in and entertainment out. But, if I understand enough of its inner workings, I know that I can harvest from it a half-watt blue laser diode with which I can maim individuals remotely.
 — MaxwellBuchanan, Sep 14 2012

 //However, there seem to have been no attempt to organize mathematics using namespaces, multiple inheritance, etc. //

 Sure there has. Arithmetic, algebra, geometry, and so on. There's even a form of inheritance. Algebra is a subclass of arithmetic, trigonometry is a subclass of geometry, vector calculus is a subclass of both calculus and geometry (multiple inheritance!), and so on.

But I'm not sure what this idea is really supposed to mean. Object orientation is nothing more than an abstraction for the convenience of the programmer. At its core, /every/ program is procedural. No matter how much you try to hide what's actually happening, at runtime you've still gotta calculate 2+2=4. No way around that. Fortunately, computers are very good at that sort of thing, so we came up with OOP to allow them to do what they're best at without having to be overly concerned with how they're going about it. But mathematics cannot be abstracted in and of itself. Or, rather, it can, but it's called programming.
 — ytk, Sep 14 2012

 // But, if I understand enough of its inner workings, I know that I can harvest from it a half-watt blue laser diode with which I can main (sic) individuals remotely. //

Yes, but your mad scientist blu-raygun is capable of maiming anyone, whereas any weapon constructed from the innards of an abstract mathematical theorem can only cause harm to other mathematicians.
 — Alterother, Sep 14 2012

 Asking what software would not be possible without OOP may suggest what could be possible with OO Mathematics.

 (1) Collaboration on large-scale projects involving many subsystems would be much harder.

 Figuring out the big picture of what the code is doing would involve tracing back all the execution and data flows. In case of object-oriented programming, you see it through interactions of highly abstract objects, and all you need do is just to look at their methods, which are usually self-explanatory. The inherited properties are resolved automatically.

 Thus, in OO mathematics: computer could sort out all the properties pertinent to an object, and let you quickly look through the theoretical results pertinent to the objects, and its superclasses.

 (2) The reuse of code would be harder.

 You would not be able to take some functionality by just importing a member function of a class, and immediately have all you need to execute that function, because that function may depend on a hierarchy of other functions, and you'd have to manually import all of them.

 The mathematicians don't have this problem. They are okay with specifying the settings of a problem, because others are supposed to know what is what, and be able to trace-back manually, if needed. (It may be time-consuming for a reader, unfamiliar with the mathematical subfield and new naming of the already-familiar objects, though.)

 (3) The modification of code by adding extra properties to classes to enrich its object's behavior would be impossible.

 Following the functional programming paradigm, you would have to immediately deal with primitive data types, already provided by the programming language, and choose a different language, if it doesn't support the desired applications, because only the specialists who are working on developing that language, are able to extend its core capabilities, because such extension requires a review of the uses of the object throughout the codebase. (In other words, a person can't just inherit your class, and extend it with something of his or her needs.)

 In mathematics, introducing new theories based on the previous, is easy. You just state the previously known objects you will use, and extend them by explaning what extra you add. However, there is a caveat -- new theories usually introduce new naming for those new objects created through inheritance, making the learning of a new theory an exercise in memorizing new names for those same objects with extra properties.

 The limits of human memory creates the desire to keep the number of names within the manageable limits, which prevents the approval (and thus, use) of new ad-hoc theories and names (compare: in programming, we can create new classes freely, and they are immediately ready to be used by others, without almost any overhead for memorizations). New theories are accepted and become useful only when a new theory has significantly useful tools, making the memorization of the names of the new constract - a worthwhile exercise.

OO Mathematics could remove that barrier of memorization of new names, and perhaps make ad-hoc theories as prevalent and useful as ad-hoc computer programs (or scripts) on the web.
 — Inyuki, Sep 15 2012

 //Asking what software would not be possible without OOP...//

 what ? I can't parse that, sorry.

 err... 3 decades is "recently" ?

 //It's become so important, that the code that doesn't follow such paradigm, tends to be referred to as "spaghetti code" due to poor readability.//

 sp. "poor reading ability". Those commas are superfluous, btw.

At a quick glance OO seems to be just transferring stuff, previously documented on paper, onto computer media. Apart from increased xref'ing and pigeonholing what's the big deal ?
 — FlyingToaster, Sep 16 2012

 // err... 3 decades is "recently" ? //

"The most ancient mathematical texts available are Rhind Mathematical Papyrus (Egyptian mathematics c. 2000-1800 BC)." (Wikipedia, History of Mathematics)
 — Inyuki, Sep 16 2012

 ^ and . . . ? Smalltalk-80 hit the public in 1980. You can tell by the "8" and "0" after "Smalltalk". A language name followed by a couple numbers is often used to denote "release date" which, if you apply a bit of mathematics to the object in question, is some 30 years ago.

 oh, and as long as I'm here, your "3)" from 2 anno's ago is a tautology.

 I mean it's all very well to say "let's OO everything", but when "OO" just means "computerize the crap out of it" . . .

 Have you any experience in mathematics andor programming ?

A real-world example might be of some use.
 — FlyingToaster, Sep 16 2012

 // real-world //

Sorry, did you miss the part about "mathematics" ?
 — 8th of 7, Sep 16 2012

 I know even less about mathematics than I do about computer programming.

 mathematics mathematics sounds interesting, but I'm wondering why.

Have we run out of greek letters again ?
 — FlyingToaster, Sep 16 2012

 // greek letters //

Like french letters, except economically rather than moraly bankrupt …
 — 8th of 7, Sep 16 2012

 [annotate]

back: main index