Hacker News new | past | comments | ask | show | jobs | submit login

In Steve Yegge’s linked post:

> Math is a lot easier to pick up after you know how to program. In fact, if you're a halfway decent programmer, you'll find it's almost a snap.

This couldn’t be more wrong. Mathematics is the hardest thing I have ever done. I’m sorry, but mathematics is orders of magnitude more intensive and difficult than most programming. A simple fact that shows this is the amount of programmers who have no formal training in engineering or computer science but we’re able to self-teach the concepts. The same cannot be said of mathematics, which requires deep, dedicated study. Most programmers I know know very little mathematics, and it’s not like I’d claim I know a lot either. I’ve forgotten more than I know.

He even mentions how little math he took, so I’m not sure he’s an authority on the subject. Most of his post is just surface level platitudes. I’m generally confused why I see his posts referenced so frequently.

To be clear, this isn't some attempt at gatekeeping. It's just that mathematics is a very deep, difficult, and misunderstood subject. I think maybe only true philosophy is harder because there, it's usually not even clear what the questions are.




> mathematics is orders of magnitude more intensive and difficult than most programming

But what level of programming and mathematics are you comparing here though? because college-level algebra and calculus is really not that hard imho (once it "clicks" for you, but it's the same for programming), and if we are comparing math as in what you see in a BSc/Msc of Mathematics (or research-level) then I agree it's hard but you have to compare for an equivalent level of programming.

> simple fact that shows this is the amount of programmers who have no formal training in engineering or computer science but we’re able to self-teach the concepts. The same cannot be said of mathematics

I would blame it more on the fact that programming is a very useful tool for people outside Computer-Science, it has very direct applications and you can monetize it very easily, so it's very likely that they might want to learn it, however, rarely you see someone deciding to take Calculus just for the sake of it if they never bothered with it in College.

Overall I agree with you, but personally I find math more difficult, most people probably do but I don't think it's inherently more difficult, it's just that people are less used to study it.


I would hard disagree that undergrad level Analysis or even just the trickier corners of vector calculus are within the bounds of what programmers can easily pick up without dedicated and guided study. Everybody's gangster until they have to parameterize some bullshit helical structure in R3.

Comparable levels of programming, what we expect of CS juniors, are regularly picked up by "the guy who is good with Excel" in office settings as it's mostly a function of experience and exposure, not theory.

And now my worthless anecdotal evidence: I self taught myself into professional programming and it was a simple matter of banging my head against a wall until shit started working. The feedback loop, "did the thing crash or not", permitted me to learn on my own. I wouldn't even begin to understand how to self-teach myself Stokes Theorem or some shit, and have zero ability to author the proofs required to reach the conclusions higher level mathematics are built on.


I think you're hitting the nail on the head here. Something about the learning process makes programming much easier to pick up.

What if we had something similar for mathematics?

Rapid feedback, error messages, maybe even linters and highlighting for the "mathematical syntax".

I've though about this before and I think tools like this could unlock math for a lot of people, and also increase the effectiveness of professional mathematicians.

When learning math / seeing other learning math I've noticed that simple errors such as typos often slow down or hinder understanding of the subject.


Take a look at the Natural Number Game! [1] It does exactly that: "Rapid feedback, error messages, maybe even linters and highlighting for the "mathematical syntax"."

After you get the hang of the system, you can play with the interactive theorem prover behind it: Lean [2]. There's also plenty other interactive theorem provers (Coq, Isabelle, HOL, Mizar, Metamath, ...) but Lean has a lot of traction amongst mathematicians at the moment.

There are no limits to the math you an do with this. There is mathlib [3], the main mathematical library. It covers a lot of undergraduate material [4], and plenty of stuff beyond that [5]. The community has even covered some state of the art research math in Lean [6a, 6b].

You are very welcome to hang out on the leanprover zulip [7]] and ask questions about the Natural Number Game or anything else that is Lean-related.

[1]: https://wwwf.imperial.ac.uk/~buzzard/xena/natural_number_gam... [2]: https://leanprover-community.github.io/ [3]: https://github.com/leanprover-community/mathlib [4]: https://leanprover-community.github.io/undergrad.html [5]: https://leanprover-community.github.io/mathlib-overview.html [6a]: https://github.com/leanprover-community/lean-liquid [6b]: https://www.nature.com/articles/d41586-021-01627-2 [7]: https://leanprover.zulipchat.com/


Is it the learning process, or the subject itself?

Programming works with manmade abstractions, carefully designed to have very few interactions, keep mutable state contained, and to have all the parts structured in a hierarchy without recursion.

In math you have systems of equations that all reference each other. And they all happen at the same time because there's no steps and time or lines of code just 5 equations that all interact.

The atomic pieces are much larger and tied together and it inherently seems to require being able to fit nontrivial ideas in your head.

Programming lets you design a complex architecture one tiny piece at a time without considering other pieces.


Isn’t math just manmade abstractions as well? I’m not saying they’re equally hard (I think maths is harder too), but you seem to be overly simplifying programming, under the assumption that the system you are working with and building on is actually well designed, rather than what is actually more likely (a munge of SOME clean design with many layers of hacks on top).

I think Maths is harder because the abstractions are higher level, have less intuitive bases, the feedback loop is longer and doesn’t have robust testing. I don’t think the abstractions themselves are that much harder in general, but getting an intuition and doing anything useful (correctly) at a really high level of abstraction is quite difficult.


My view is that math is man made. It's a mash of notation for various ideas, more or less unambiguous, more or less rigorous. Some are more well designed than others. It's closer to natural language than programming languages.

Not every programming language has a concept of time. Sometimes that's a good thing, it depends on what you're used to. Math arguably has less mutable state than most typical programing languages.


I'd love to play around with such tools, but I think they'd only get you so far before they'd start to become a hinderance.

The linter in mathematics is whether the other mathematician (whoever you're proving to) knows what you mean. If you're locked into a rigidly defined syntax, an obvious line of questioning is: what's not expressible in this syntax?

I fear that by the time the tooling was agreed on, built, and taught in schools, you'd have something like APL, which might be cool to code in, but from which the mathematical conversion would have moved on a while ago. Efforts like that, after all, are how math becomes engineering.

Consider, for instance, Russel's theory of types, which was interesting math at the time and now strikes the student with an engineering background as "pretty much just Java" (or any "normal" statically typed language).


If you're learning math for career reasons rather than just pure curiosity, engineering is the main/possibly only place you'd use it besides statistical analysis.


Yeah that sounds about right. I was more musing about the philosophical boundary between math and engineering (math being a creative pursuit and engineering being about outcomes).

I can't quite pin it down, like with a definition, but I'm tempted to say that if it has a linter it's not math anymore, even if it once was.


I think this is the goal of proof assistants based on the Curry-Howard isomorphism, which the original author thought to denigrate for some reason.


What a creative, delightful solution. I encourage you to pursue this!


> I wouldn't even begin to understand how to self-teach myself Stokes Theorem or some shit

Input it into a proof assistant, and rely on the same sort of feedback "does the computer accept your proof, or get stuck". The hard job of formalizing stuff for this purpose has seen significant progress, e.g. by the Lean mathlib project.


> Input it into a proof assistant, and rely on the same sort of feedback "does the computer accept your proof, or get stuck". The hard job of formalizing stuff for this purpose has seen significant progress, e.g. by the Lean mathlib project.

As a math teacher who disagrees with the premise of the GGP post ("This couldn’t be more wrong. … I’m sorry, but mathematics is orders of magnitude more intensive and difficult than most programming"), and thinks that any good programmer can learn mathematics—of course there are code wodgers out there who don't really understand their craft of programming, and so can't translate that knowledge to facilitate an understanding of mathematics—I think I also disagree with this. I've never tried it, but I can't imagine someone learning about Stokes's theorem in anything like this way. One of the many axes along which I imagine this failing are that the state of human readability in proof assistants is, well, let's say it's less well developed than the, cough, stellar state of the art in compiler error messages.

But, more importantly, you can, at least in principle, know every single step in a proof of Stokes's theorem without understanding in any real sense why it's true—and a proof assistant in particular will force you into the weeds of minutiae that absolutely do not help to build any intuitive picture—and, even if you manage in the process to piece together that understanding of why it's true, you will never thereby gain an understanding of why it's interesting (e.g., among other things, its connections to physics and the entrée it offers to differential geometry).


The flip side of a proof assistant's 'minutiae' (and there's plenty of room to disagree wrt. whether paying attention to those minutiae helps with gaining a better, more accurate intuition!) is its ease of refactoring a proof. A proof assistant can instantly tell you whether a seemingly nicer, better-abstracted proof B really manages to prove the same thing as proof A, something that's very hard to do without the use of precise formalized statements and automated checking.


Self teach Stokes Theorem by inputting it into a proof assistant? Are you serious? That is very inefficient; the OP was talking about learning the kind of vector calculus taught in first calculus sequence. I think just watching a short YouTube video and doing a few exercises will work and is a proven method. Proofs of theirebs are very often much more complicated than applying them (understatement intended).


If you don't understand the proof of any theorem, you haven't really "learned" it in any real sense. Wrt. doing computational exercises in vector calculus, that requires knowing the "rules of the game" which is also something that you can test precisely in a proof assistant.


First, of course you can understand a theorem without knowing the proof! Uniqueness of prime factorization, for instance, is notoriously tricky to prove, but it would be a stretch to say people who haven't majored in maths haven't learned it in any real sense.

Second, even if you wanted to understand the proof of a theorem, doing it with a proof assistant is an atrocious way to go about it.


Many proofs of theorems in calculus would require topology to understand. You’re suggesting that you cannot be competent in vector calculus without knowing the proofs at a professional. I think I, along with probably everyone, will have to disagree with that.


I would quibble with whether this is exactly equivalent.

In programming I knew I needed to sort a list or find a most efficient path because some practical problem I was trying to solve demanded that I do that. Frequently I had a basically crap but working independent solution before I learned the names "EWD" or "A*". I independently discovered that I needed virtual interfaces (before I knew them by that name, "I wish pointers to parent classes could call implementations in subclasses") and then discovered language facilities for polymorphism and OOP.

Without formal or at least guided instruction I would never think to move towards or discover "I wonder if there's a relationship that makes these double integrals of curls of vector fields easier to solve for".

Programming has a high coupling between necessity, experience, and theory. In mathematics that coupling is much, much, much looser. Self learners in programming regularly re-discover and re-implement, typically less efficiently, all sorts of fundamentals of CS. The equivalent in mathematics rarely happens post-algebra.


I think your comparison is a bit unfair. Essentially, CS is as hard as mathematics because it is mathematics.

For example, take any good static analyzer that implements abstract interpretation. It generally works using Galois connections, which is just abstract algebra.

Dijkstra's algorithm or A* came pretty early in the history of CS. It would be fair to compare their difficulty to something similar in mathematics, say some basic results in Euclidean geometry.


CS may be mathematics but programming certainly isn't

If you're discussing pure CS, the thing you can write down in a book and for which a computer is a largely theoretical device, sure CS is mathematics.

If we're talking about the practical reality that CS majors in America today are trying to achieve, and their undergraduate programs are trying to prepare them for, that's becoming a working programmer and has very little relation to mathematics.


I wish we'd just start issuing software engineering degrees so it would be easier to get an actual computer science education.


A* is already intermediate level programming. CS is math because it's what we call the parts of programming that are math.

But so much of programming isn't. It doesn't require deep understanding, static analysers are advanced level things that are way beyond what many working programmers ever encounter.

I can't say I've ever seen "Real math" myself.


Do you have more information on this approach? Sounds very interesting. I've read and toyed a little with things like Lean and I'm interested in that field but the barrier seems a bit high (without pre-existing knowledge) to just "input" a theorem and toy with it.


College-level means undergraduate-level? If so, how is algebra/calculus not that hard? Abstract algebra is one of the hardest stuff I've come across. Calculus? Do you think it's not that hard to prove convergence/bounds/limits of random series and sequences... I agree though that calculus is not that hard, compared to the rest.

Programming is child's play compared to undergraduate mathematics taught in math departments. It's important that you take a module from the math department, not from a physical science or engineering department if you want to experience what it is like.


> Programming is child's play compared to undergraduate mathematics taught in math departments.

One thing you might learn in math is to avoid making overgeneralized statements that you can’t support.

A valid substitution in your statement for “programming” is writing a compiler. And for “undergraduate mathematics taught in math departments”, basic differential calculus.

Yet we regularly teach smart high school students and first-year undergraduates calculus, and almost never try to teach them to write a compiler, contradicting your proposition.

But what do I know? I’m just a dumb programmer. I can’t read your mind, so maybe you had something a little more specific you wanted to say.


> "Yet we regularly teach smart high school students and first-year undergraduates calculus..."

High school students are taught plug-and-chug calculus where one uses rules and formulae without any real understanding of the underlying subtleties that make calculus work.


Bulletproof counter argument, you sure showed me.


For practical purposes, a fair comparison would be "a useful amount of programming" vs "A useful amount of math".

You can get hired after a brief boot camp, although it's not common.

A useful amount of math is like, ordinary differential equations in engineering school, since apps have taken over most use cases for simpler math.

The only direct use is to learn to access the "New way of thinking" math people talk about, and even that seems harder than making detailed to do lists.


Calculus is significant more difficult and requires many Times more studying than algebra


Si


I'd agree: there's a common misconception that math is "objective." Even if one agrees on the axioms (Axiom of Choice [1]), one must reach consensus on definitions, which seem to be consciously chosen to allow generalization of theorems to more mathematical objects; that is, building connections between previously disparate fields of math, e.g. algebra and geometry, calculus and geometry, etc. Why have many domain-specific theorems when we can have one?

One could have a valid proof to a theorem, but there's the human element of having people understand and accept the result.

That said, I think when people speak of math, they speak of its application to the real-world, not the proofs.

[1] - From the Wikipedia page for the axiom, Jerry Bona has an amusing quote: "The axiom of choice is obviously true, the well-ordering principle obviously false, and who can tell about Zorn's lemma?"


> That said, I think when people speak of math, they speak of its application to the real-world, not the proofs.

I think it very much depends on who the people are. I'm a math teacher, and, when I speak of math, I definitely don't just mean its applications to the real world. I definitely think programming—in the sense of thinking about the craft, not just cudgelling the computer into doing what one wants—is good preparation for learning the proof-theoretic arts of mathematics.


Math hard. Can confirm. Starwind have math degree. Starwind much better at programming than Starwind ever was at math.


I spend 5 years doing mathematics and still can't wrap my head around lot of maths. If you really want to see the difficulty in Computer science you'll have to go explore the theoretical stuff which at the end is just maths.


Same here, I remember putting so much effort into a course on Riemannian geometry and still not really fully grasping the content on an intuitive level. That was by far the hardest thing I've ever tried to learn.

The only areas in CS that come close to that in terms of difficulty are discrete math/algorithms related ones and the CS chairs that are involved in such research also tend more towards the applied side of those topics. Really theoretical discrete math stuff resides in math departments most of the time.

Still, having also taken some discrete math classes, in terms of difficulty those somewhat paled in comparison to differential geometry/topology/abstract algebra kind of stuff. I can't even imagine how difficult it must be to be doing research in those areas.


A copy of the classic "Mathematics Made Difficult" (which by the way is perhaps the pinnical of human literature) is saved to my desktop as mathhard.pdf


I learned Haskell before I learned to write proofs. And yes it did help.

But no I don't think experience doing boot camps and churning out React apps and gluing together APIs would help with learning mathematics.

Go learn a language that seriously challenges you like Haskell.


What do you mean by “learning Mathematics?” It should be notes that significantly less than 50% of the US population even has to learn calculus so getting into the stuff that most people would consider pretty advanced is not so hard, right?

I’d be curious what people’s coolest math tricks are that they’ve used at work. I did like one Taylor Series expansion and felt cool for a week.


Never mind calculus; a non-trivial fraction of the U.S. population has trouble learning elementary algebra. The fact that the U.S. K-12 educational system is notoriously a failure compared to otherwise similar countries should not be used to draw inferences about the inherent worth of any particular subject. Not least because that same system also often fails to teach functional literacy, or any amount of basic facts about society that may elsewhere be assumed to be known by any educated adult.


Then why do all New England states outcompete most European countries?

Why is most STEM research produced in Eastern Europe, the US, or China?

This really depends on what metrics you are using and has infinite room for gaming.

US undergrads (both native and foreign born) absolutely crush all of these nondescript places you are suggesting are better, and graduate programs make the gap even wider.

A non trivial fraction of those are educated K12 in the US system.


New England is mostly sanely governed, it shouldn’t be used as a stand in for the rest of the country.

The US was a neat idea we had but it went a little off-kilter around the second half of Pennsylvania.


Texas A&M is ranked 67, Urbana Champaign 41. (USNWR)

After you pull out HPYSM, these are not ridiculous rankings either.

Georgia Institute of Technology is 38th in the world by research impact, with the top ten or twenty being your standard prestige universities. (Elsevier)

If the US is so bad, why is a poorer southern state competitive with far more prestigious institutions from other countries you would perceive as better?

This is ahead of University of Tokyo, Urbana Champaign, etc.


I should have been more explicit; I was being a bit flip, trying to inject a little lightheartedness.

To specifically respond to just that one point, New England is in many ways an unusual region so I don’t think we should use the scores from here to come to any particular conclusions about the country in general.

This shouldn’t be taken as a response to your other points, most of which seem reasonable enough or at least I don’t know anything in particular about them.


Yeah sorry the issue that I run into frequently on this topic is "US bad because those poorer, more conservative states are terrible and if we just governed them like the utopia of New York City, we'd do much better in rankings", and while I think red states have their own failure modes - the stats show that at least some of them are doing just fine.

Sorry for being a bit reactionary there, sometimes a certain opinion is common enough that you respond like it's being stated due to similar comments being a prelude to it.


U.S. undergrads have to complete "general educational requirements" that are taken care of in high school in practically every other developed country. Why does that happen? Because U.S. colleges don't trust K-12 to provide a satisfactory education.


We do not trust the average student, however access to universities in the US is less gated on ability or achievement than most of the nations you're going to be comparing it to.


or that there's value in a college level comprehensive education as well


All other things being equal (including quality), high school is actually better than college at doing the "comprehensive education" thing. College level gen-eds are almost universally reviled as a pointless box-ticking exercise that gets in the way of specialized education. This particular dysfunction has effects even further out; U.S. college education pushes things out to the grad school level that are elsewhere part of the later years of undergrad.


You are right about the 50% but you might as well have said “fewer than 99%”. I mean, the real number is far, far less. A very small percentage of US residents would recognize and calculus or be able to solve a simple linear equation.


Apparently around 15% of highschoolers take calculus. I dunno, I think “significantly less than 50%” has a generally right-ish feeling, sort of like, something that most people don’t do but not like super-esoteric. But it is subjective.

https://www.edweek.org/teaching-learning/calculus-is-the-pea...

It is possible that the majority of students forget it though, I tutored calculus for a bit and it didn’t always seem like their hearts were in it.


I think Yegge is actually completely correct. I started to learn to program when I was 14, and once I understood the concept of functions, I found it much easier to do my calculus and physics work. Fundamentally I understood how to break things down into computable steps.

Granted, I think get the impression we might be overloading the term "mathematics".


Mathematics is not just functions and calculus.

And it seems to me that you learned the concept of functions through programming first but that there's not evidence that you couldn't have learned it from mathematics at first. Functions are a pretty easy concept, so I think it's pretty easy to introduce it from a variety of points of view. So I'm not sure the anecdote backs up any argument about learning programming makes mathematics easy.

I am of the opinion that programming can be used to explore and learn mathematical ideas and am a big proponent of that, but that is something different than "I know how to program so mathematics will be easy now".


Always wonder about this. Other than foundation of maths, the function abd calculus view … my wonder is about the data part of the maths. Not the process. Yes one can view matrix as a function but could it be data. One can real number line, complex or integer as data?


For most mathematicians, calculus as is often taught in typical undergrads is not "true" mathematics. It's just a tool for computation. For them, calculus is analysis (theorems/proofs that are used to build up calculus).

So my question is: Did you study analysis and would you credit programming in helping you get good at it?


+1 for this comment. Calculus, i.e., Calculating with mostly finite numbers and (usually) a known set of well defined rules is only a part of mathematics.

As a student that currently learns Analysis and linear algebra, it is far more complex and abstract than calculus. It is not neccessarily harder to learn but different. And adapting to this paradigma takes time (and effort).

It is similiar to learning Assembley as a Python developer. Knowing Python will help with Assembley. But the levels of abstraction are obviously different and will require a lot of learning.


I don't understand this comment. Calculus as taught to mathematics undergrads is analysis, right?

Where is calculus "often taught" without "theorems/proofs that are used to build up calculus"?


In most US universities, the courses called "calculus" are mostly about computing integrals and derivatives. Yes, they'll have some theorems (Fundamental Theorem, Mean Value Theorem, etc), but most of the problems are related to computation than proving.

Unfortunately, since engineering students outnumber math majors by a large margin, the departments cater to them and not the math majors. The latter study analysis in later years - usually third or fourth.[1] Universities with strong math programs may offer it in the first or second year.

[1] I just checked my undergrad's program. They begin taking analysis in their 4th year, and it's offered only one semester a year!


That's just sad.

I was taught Calculus in high school, years 11 and 12 (two optional senior years for those that want more education prior to university, etc rather than transfer to a trade apprenticeship or leave school altogether).

That was a mixture of basic theory and proof and some computation (eg: derive an expression for the volume of intersection of two pipes at right angles, etc).

University went straight in to heavy analysis and foundations (for Math 100 - math for the serious (math, physics, hard chemistry)), with seperate streams for "casual math" - engineering, business, law, etc.

Engineering math prepped people for calculating dynamics and kinetics with vary loads, masses, thrusts, harmonic forces, network propagation, mesh computations, etc.

This was Australia in 1980.


> They begin taking analysis in their 4th year, and it's offered only one semester a year!

This is insane to me. In the UK about ten years ago, on literally the first day of my degree, my first class was real analysis. Yes, it was the easy stuff like proving sequences and series converge, various things about continuous functions, but we learnt how to prove it all and the exam was all about proving various things. And we built up to harder stuff as the year went on.

What is even happening if math majors aren't studying analysis until their fourth year?

Sorry I'm so incredulous, it's just that I literally don't know what I would've been studying if analysis had been delayed so much.


Not US, but for GCSE A's further math equivalent, calculus primarily involved applying intermediate rules (chain rules, trig identities, etc.) to evaluate differentiation/integrals on elementary functions, and a bit on geometric and arithmetic series.

Analysis discusses less well behaved functions and spaces than these.


You can do the first part without even relying on analysis in a mathematical sense. You simply define a differential algebra, by introducing a derivation function that just happens to respect the correct rules. Then "calculus" is the topic of how to perform computations in such an algebra. Note however that you do need analysis to rigorously address other parts of a typical "calculus course", especially those dealing with infinities, sequences and etc.


Not them but I def would. I built a fintech/econometric-lite system in python years back and it was mostly just taking in a ton of “obvious” knowledge and realizing the cool stuff you could do in practice


functions in traditional programming and functions in math are two different things entirely. They should have been called procedures (I think there's historical debate about this but I can't find the reference). Obviously, functional programming is an attempt to address this.


I grew up programming (from 10 or so) and couldn’t agree more. I have almost no formal education yet I’ve picked up enough math to do ML and (mediocre) cryptography and keep up with people who have scary sounding degrees. in the process I’ve fallen in love with math and think as programmers we haven’t been meeting mathematicians half way.


> get the impression we might be overloading the term "mathematics".

We are; the challenge is there is a near infinite difficulty in both "programming" and "mathematics" and at a certain point, the skill sets diverge greatly.


Implementing numerical solutions for math concepts can give you insight into the math ex. Newton-Raphson Method or FFT. I would not sell yourself short on being able to understand. You may not be skilled at doing all the symbol manipulation required for what people consider typical "math" but that does not mean you cannot understand it.


I do agree that programming is very useful as a medium of exploration, a la what you said. I really like how the book Turtle Geometry approaches this. But that is really something different than what the quoted text is attempting to get at.

> I would not sell yourself short on being able to understand.

I have a master's in mathematics and have continued to take courses while working full-time. It's just that I'm more than aware of the amount of mathematics I do not know compared to an active graduate student in mathematics and above. Or maybe you meant the royal you.


I am more a recreational mathematician. There seems to be a lot of unnecessary math phobia lurking about. Simply like to encourage people that sound like they fall into that category - obviously you are not one of them:)


The only thing comparable is maybe drawing or playing an instrument. Math can never be learned from a textbook.

Anything that's just algorithmic steps would be done by a computer, so the useful math people want to learn requires some kind of insight or new mode of thought, or advanced methods that have not been made into an app yet.

I suspect when people say math is easy, they mean arithmetic and pre-algebra, and they're not concerned with practical applications at all, just the idea of general education and new ways of thought, and who knows if the level of math they are talking about is even enough to indirectly do much in daily life.


I agree, most modern academic mathematics is essentially a codebase with too much abstraction, impressive, but insane. It doesn't have to be harder, and programming is the out. So, in my opinion, you are just learning the wrong kind of math. Ideally, programming is exactly as hard as math.

Closer to the right kind of math: https://sites.math.rutgers.edu/~zeilberg/GT.html


For me the opposite was true. My mathematical education made it incredibly easy to pick up programming and programming languages, everything was somewhat familiar and the concepts just came naturally.


How did you feel when you first came across a global variable, or even a pointer? It seems to me that math-first people would probably find C to be an abomination.


I believe one thing which came really natural was to think in virtual machines, to see a programming language as something which acts upon a fictitious environment, where certain instructions map to certain consequences. Of course programming and mathematics are very different activities, but one core principle that I always relied on was thinking in abstractions. What option do I have to manipulate the environment and what invariants are there? How are complex thing constructed out of others?

>It seems to me that math-first people would probably find C to be an abomination.

I certainly don't. You might do so if you wanted programming to be an expression of pure mathematics, but I do not think that is the right approach. C does well for what it is an abstraction over an underlying, real machine and thinking of it as an abstraction is the right thing.


Technically, that's the converse, not the opposite ;-)

Someone may be led into thinking you're countering the OP.


Most definitely. For me, I have never used any specific mathematical concept in programming aside from some side projects for using programming to explore mathematical ideas. But my so-called training in mathematics taught me both highly abstract thinking and deep, concrete, in the weeds thinking, and that's what really comes in handy in programming.


I disagree because Math is programming. All those symbols you see map to a set of steps (a program.). It’s just knowing what subroutine every esoteric symbol stands for that’s hard.

I will agree it’s been more difficult learning math than programming for myself as well: but that’s because math is geared and targeted for people who like doing symbolic logic by hand. Math people think we’re a level below them (we are in some ways from a working perspective) so they tend to write off complaints like this as us just wanting to make math more like programming.

The fact we don’t have a nice and intuitive way of writing math via a keyboard is proof that these two fields, which should be tightly coupled, are not on the same page.


>All those symbols you see map to a set of steps (a program.)

Simply not true. Most mathematical statements, e.g. proofs of existence have no relation to a "program".

>math is geared and targeted for people who like doing symbolic logic by hand.

No, it is not. There is absolutely nothing interesting about symbol manipulation, it is always the least interesting part of a proof. It usually is the part the author handwaves away, while focusing on the actual interesting parts, the idea behind the proof and the possible intuitions for them. Textbook might include them, but as training and because you need to be more explicit when teaching.


>Simply not true.

Okay. What is a proof other than a step by step explanation for why something’s true? You’re getting caught up in “program” when it’s objectively the case that all math follows a series a steps. A lot of those steps are “handwavy” I’ll give you that. That’s not relevant to what I said though.

>there is nothing interesting about symbol manipulation

Cool. You missed my entire point again. Math education is geared towards a certain set of people who pick up on (and gain an interest in) the language of math. Only once you get to higher level math do you even start to get alternative visualizations etc (at which point you’ve weeded out a ton of people who would have benefited from e.g. visualizing numbers as groups of shapes). There are a million ways to teach math and we’re leaving a lot of people behind. That was my point


>Okay. What is a proof other than a step by step explanation for why something’s true?

Cooking instructions are a series of steps as well. Would you also claim cooking, mathematics and programming really are all the same thing?


The first part of your answer is incorrect about programming in a general sense (not the particular software programming most of HN does). I push it so far back as to call it programming in a computer science sense, which is very simply just proof theory encoded into a system.

There is a reason Turing is considered one of the greatest minds to ever live. He didn’t just invent a concept. He invented a completely new branch of science. We would’ve gotten there eventually but his idea to solve the Entscheidungsproblem using his machine was such a step ahead of the times that we christened him the father of an entire science.


Errr, Alonzo Church solved it first, Turing followed .. and both of their independent methods were heavily based upon similar earlier work by Kurt Gödel, with Church also incorporating ideas from Stephen Kleene.

There is no doubt that Turing was bright, very bright indeed, but next you'll be claiming he cracked the Enigma Code or something.


A constructive proof of existence is exactly a program. (It might not always be a program for a Turing machine, because "constructive" and "computable" are not exactly the same - but that's beside the point.) Even a non-constructive proof of existence for x can be significant in a programmatic context; it tells you that you can posit an oracle for x (e.g. asking for it to be input by the user, introducing further assumptions based on some special case, etc.) without thereby crashing the program or causing it to behave incorrectly.


>but that's beside the point

It seems to me that it is an important point though.

> Even a non-constructive proof of existence for x can be significant in a programmatic context

Which has no relation whatsover to proofs and programms being the same thing.


A type-level program is still a program. Non-constructive proofs are addressing the question "will this program crash or go wrong if I extend it to do X, regardless of how I achieve that?", which is exactly the domain of type-level programming.


Programs and proofs are the same thing though according to the Curry Howard Correspondence, if I'm not wrong.


> Math is programming.

That doesn't make any sense. What do you mean by that?

> I agree it’s been more difficult learning math than programming for myself as well: but that’s because math is geared and targeted for people who like doing symbolic logic by hand.

Mathematics is not about symbolic logic. Mathematics is the study of idealized structures, their properties, and their relationships. Symbols are just a convenient shorthand. They are not the mathematics in and of themselves.

> The fact we don’t have a nice and intuitive way of writing math via a keyboard is proof that these two fields are not on the same page.

What does that have to do with anything? Although LaTeX and the like are pretty decent at it, there's a lot of things we can't do easily via a keyboard. Why is that a constraint on anything or relevant?

Not trying to be provocative, but I honestly have little idea what you're talking about.


I think the math you've been exposed to is mostly on the computational side (compute an integral, solve an equation, etc).

Much (most?) of math is quite different from it. Proving that there is a well ordering of the reals, and simultaneously proving that it is impossible to show you such an ordering: Very different from skills needed in programming.


I disagree. You’re only able to prove that ordering of the reals (and that it’s impossible to show) because you are computing the abstract structure underlying the reals (which is based on some lower level ideas etc.) Just because a problem is computationally hard with a step by step CPU doesn’t mean it isn’t computation.

This is actually a problem of interest to me, so I’ve definitely been exposed to it and the limits of modern computation. But I’m not speaking strictly about the modern day CPU.


> You’re only able to prove that ordering of the reals (and that it’s impossible to show) because you are computing the abstract structure underlying the reals (which is based on some lower level ideas etc.) Just because a problem is computationally hard with a step by step CPU doesn’t mean it isn’t computation.

The set of computable real numbers is countable and thus has measure zero. In other words, almost all real numbers are non-computable, and almost all has an exact definition.

So you can’t compute the real numbers unless you’re meaning something else by computing.


If you want to get technical then programming is also math, provably so.


He might be describing one bifurcation in the world of math, where constructive proofs reign, but overlooking nonconstructive "existence" proofs.


I wrote a book based on this premise: www.pimbook.org.

The ebook is pay what you want.


If I may, would like to add that the statement is not even wrong …


Si




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: