5 ms·
Well, I'm sorry to say I strongly disagree with the mathematics part. Basis in linera algebra are a definitive plus and helped me approach programming in a sens
by shin_lao 17y ago
Well, I'm sorry to say I strongly disagree with the mathematics part. Basis in linera algebra are a definitive plus and helped me approach programming in a sensible way.
- dandelany 17y ago"especially for a web developer" is the important part. As a fellow web developer, I agree. I'd certainly like to get into the mathier side of programming someday, but it's rarely necessary for my day-to-day operations. Remember, he's writing a letter to his former self, so the advice applies more to his life than it does in general.
- shin_lao 17y agoAFAIK web development uses SQL, SQL is relational algebra.
- dangrossman 17y agoNo, DBAs tried to come up with a math-like name for writing queries so that they appear to have a more prestigious skillset than they really do. Any high school kid who's written "hello world" can get through databases 101, including expressing queries as relational algebra, in a week.
- btilly 17y agoTry to debug performance problems in queries, or scalability problems across your whole database. Trust me, competence in math will quickly prove very useful. Of course if you are not competent in math you won't do well at that kind of task, and because you don't know better you won't necessarily recognize your inability for what it is.
- loup-vaillant 17y agoThe amount of math which you need in programming may not enormous, but it is certainly not limited to boolean algebra, and it needs to be internalized. For instance, if you don't understand that a function is a mathematical object like any other, you won't understand some very useful things in day to day web programming: closures, lambda, `map`, `filter`… Without those, my web site generator[1] would have been much more complicated. [1]: http://www.loup-vaillant.fr/projects/ussm/ http://www.loup-vaillant.fr/projects/ussm/
- kls 17y agoExactly you can do it without math, but elegance and performance are much easier with math on your side. The one I always find funny is the massive volumes of time money and energy spent "Load Testing" code, when some simple algebra and statistics can rapidly give you a projection of your scalability. Then you only have to run a test to validate you work. Yuo can test load without math but it sure saves a lot of time and money to do it with it. It is always people that don't understand math and its application that say oh, I don't need it for what I do "web development I am looking at you" and then wonder why their systems are, complex, ill performant, and inelegant. Please learn math before you say you don't need it. Or more specific to this article stating that programming is complex / hard and following that with you don't need math. It's only hard because you are not using math. I have done 3D simulation, AI, robotics, embedded and now web over the coarse of my career and the only complex systems that I have run into where designed without the assistance of mathmatics.
- palish 17y agoSeconded. As your command of mathematics becomes stronger, many aspects of programming become a lot easier.
- albertcardona 17y agoI found this particularly true for Set theory and the structuring/interactions of my lists, sets, maps, linked lists, queues, stacks ...
- m0th87 17y agoI think it really depends on what you want to make. How does math help you make a CRUD application, for example?
- run4yourlives 17y agoNot much until you need to actually need to do something with the data, which is usually returned to you in a large, two-dimensional array, basically. At that point, if you haven't figured out basic algebra at least, you'll have trouble conceptualizing the data. At best, this means you won't be as efficient as you could be, at worst, you'll write buggy code.
- dusklight 17y agoThe thing is the answer is YES, but you won't even understand why unless you have the appropriate math knowledge. There would be a lot less terrible code written out there if people had a better grasp of discrete math, knew how to make their O(n) analysis, knew how to create and implement provably correct algorithms, knew lambda calculus and e.t.c. and that's just for general programming. I would say a basic grasp of set theory and graph theory applies to almost everything too.
- ubernostrum 17y agoI have discrete under my belt. And a bunch of other stuff too (came a bit short of having a minor in math in college). And... well, I can't say that I've ever explicitly used any of it in programming. I suspect you're falling into the trap of generalizing from a field you're familiar with to all fields, and that's a generalization that doesn't hold up.
- RiderOfGiraffes 17y agoIn part the key word here is "explicitly." I have a PhD in Combinatorics and Graph Theory, and I have lectured in Calculus, Group Theory, Functional Analysis and Topology. In my daily work for the past 18 years I have explicitly used that background exactly once. But the ongoing influence, the style of thought, the ability to visualise and the ability to abstract away from the details - these things I use all the time, every day. They have been enhanced and honed by all that math. I use my math background implicitly all the time, and I don't know how I'd do what I do without it. And this is perhaps the most important point about studying math. Often the greatest take-away is the abstract problem solving capability, not the material itself. I've never had to analyse the genus of a manifold in real life, but I have thought about objects moving in an 11 dimensional space with holes, because while everyone else was stuch in the detail, I was seeing things differently. It turned out that the combination of styles was critical to solving the problem.
- aaronblohowiak 17y agoI started programming before I learned algebra, and was a couple years ahead of the class because solving algebra problems was just "running the computer" as I used to call evaluating code in my head. Substitution was just expanding an inline function (at the time i thought of it like copy+pasting the gosub...) I think that abstract symbol manipulation within a set of constraints facilitates skill transfer between math and programming. Learning to see paterns, to perform abstractions of statements for simplification, to construct something larger out of component parts bottom-up (like simple proofs,) these are all useful skills in both.
- clutchski 17y agoAgreed. Graph theory, set theory and statistics are all great tools for a web developers belt.
- kls 17y agonot to mention the points on elegance and simplicity may be a manifestation of a lesser understanding of mathematics. I found that after a more competent grasp on advanced mathematics concepts my systems became more ordered and elegant. Even to individuals with a lesser grasp on certain forms of mathematics. Math helps you find elegant solutions to complex problems, this is hard to convey to someone who does not have the education in mathematics and they only get that they have been doing things the hard way after they have learned mathematics and found that the two are interrelated even for web development.