TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Poor, Poor Child. You have no idea.

82 pointsby bryanwoodsover 15 years ago

16 comments

jerfover 15 years ago
What is math? There are many answers, so the one I pick for this post is that math consists of starting with some basic axioms, chosen to be as simple as possible, then rigorously exploring what else you can extract from your simple axioms by concrete proofs. It is staggering what you can get from simple axioms. It is staggering the subtly with which they can interact.<p>What is programming? It is the art of starting with very simple primitives, then rigorously building up slightly more complicated primitives, then building another layer on top of that, until eventually you get to a level where you can do actual work. It is staggering how far we get on how few primitives; it is incredibly educational to read what opcodes a processor actually implements. (Even better, make sure you read just the modern subset.) I mean, it pretty much just has "move this here", "add this", "multiply this", "divide this", and "if this thingy is 0 jump there". Yes, I know there's a few more, but the point is that it definitely doesn't have an opcode that downloads a webpage. It is staggering the subtle ways in which these things can interact.<p>It is absolutely possible in both the mathematical and programming cases to do "real work" without having the understanding of things that I refer to in my previous paragraphs. A web programmer does not constantly sit and do logic proofs, an accountant does not constantly refer to number theory throughout their day. Of course this is fine for the accountant, who is not expected to do original work in the field of accounting. (It is rather discouraged, in fact.) So of course it's OK for an accountant to have a very tool-like understanding of numbers. Are you, the programmer, expected to do no original work in the field of computing, such that you don't need to understand computing deeply? It may be so. Such jobs exist. But <i>watch out</i>, that means you're one library acquisition away from not having a job anymore! (And if you can't be replaced by a library, you're doing original work of some kind. Most programmers are.)<p>Look back at my first two paragraphs, where I have obviously drawn parallels. The real value of mathematics for a programmer is not that the programmer is likely to be sitting there doing matrices all day long, or even worrying much about logic problems, and they certainly aren't going to be sitting around all day doing sums. What mathematics provides is a clean place to learn the relationships I talk about, how we build the large concepts from the small concepts, and provides a playground where you can have that famous all-but-100% certainty that mathematicians like to go on about (justifiably so).<p>This is great practice for programming anything beyond a trivial project, where, if you have a clue, you will probably be starting with building up some reliable primitives, and then trying to build bigger things out of them. Bad programmers just start slopping concepts together with glue and just pour on more glue when they get in trouble, and produce what can only be described as, well, big piles of glue with no underlying order. A programmer who has become skilled in mathematics has at least a chance of producing something that is not merely a big pile of glue, and can have characteristics in their program that are characteristics that a big pile of glue can't have.<p>It is possible to come to this understanding without passing through formal mathematics, but it is much harder, because the world of programming is ultimately the world of engineering, and it is much harder to see these patterns. They are there, but they are obscured by the dirtyness of the real world.<p>That the mathematics may have an independent use is <i>gravy</i>; even if they were somehow otherwise worthless but programming was somehow unchanged (not really possible, but go with me here for the sake of argument) it would <i>still</i> be a worthwhile study. There are few better ways a programmer can spend their time than to become familiar with mathematics. Without the understanding of programming I outline above, regardless of which path you take to get there, your skillset will plateau, the maximum size or complexity of a system you can build without it coming apart will top out noticeably sooner than those who do have this understanding, and there will be things that remain forever a mystery to you. (Like how those large programs really work.)
kristiandupontover 15 years ago
While there are clearly differences between languages, I think it is rather deterministic to put that much weight on the <i>first</i> language? My first language was GW Basic. By your logic, there wouldn't be much hope for me I guess..
评论 #1054278 未加载
评论 #1054177 未加载
shin_laoover 15 years 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.
评论 #1053912 未加载
评论 #1054048 未加载
评论 #1053841 未加载
评论 #1055417 未加载
评论 #1053845 未加载
评论 #1055091 未加载
tptacekover 15 years ago
There's not a lot of math in plugging forms into database rows, or even in plugging values into MSRs and managing interrupts, but there's enough math in general programming that I constantly regret ditching that part of my education.<p>I am, with surprising regularity, annoyed that I can't pull basic trig out of my head without looking things up --- to say nothing of signal processing and number theory.
RyanMcGrealover 15 years ago
&#62;As a linguistics major, you're no stranger to the idea that a person is only capable of having thoughts and ideas that can be expressed in their language<p>As a linguistics major, you have no excuse for not knowing that Sapir-Whorf is utterly discredited.
评论 #1054140 未加载
philwelchover 15 years ago
"As a linguistics major, you're no stranger to the idea that a person is only capable of having thoughts and ideas that can be expressed in their language, and there is no reason to expect programming languages to differ from spoken languages in this area."<p>I thought this idea (the Sapir-Whorf hypothesis) had been discredited.
评论 #1054109 未加载
pvgover 15 years ago
It's ok to suck at maths if your idea of maths is limited arithmetic, something computers are indeed very good at and your idea of programming is limited to hooking up web forms to databases.<p>I'm not a linguistics major but I do speak several human languages and have no trouble thinking in them and expressing ideas in them. The first computer languages I learned (6502 assembly, BASIC) don't enter my conscious thought when I think about the programming problems I encounter with the languages I use today.
Eliezerover 15 years ago
Look, I'm sorry to be the one to break this to you, but if you have difficulty with any programming concept, you must not be a supergenius. You're just an ordinary genius at best. I'm sorry. Life isn't always fair.<p>Of course, I say this as someone who hasn't yet tried to learn Haskell. On the other hand, I know someone who competes at the national level and I never saw <i>him</i> have trouble with anything including Haskell, so...<p>The sad truth is that there <i>are</i> some people for whom programming comes as naturally as thinking, with code formed as easily as thoughts; and if it takes an effort to understand any aspect of programming, you have just learned that you are not one of those people. Alas.
评论 #1054250 未加载
proeeover 15 years ago
"Programming is not always intuitive, it's inherently complex, and it's challenging. Once you start feeling like you've gotten a handle on it, you'll learn something new that will make things seem even more complex for a while."<p>This applies to pretty much any field - engineering, physics, chemistry, even music!<p>My background is in electrical engineering and it's quite daunting to realize how little I REALLY understand when it comes to the fundamentals... Sure an engineer can make things "go" but they're standing on the shoulders of giants.<p>Learning is a humbling en devour.
NathanKPover 15 years ago
Has anyone else checked out the main page of the site?<p><a href="http://bryanwoods4e.com/" rel="nofollow">http://bryanwoods4e.com/</a><p>Be sure to view the HTML code to see the "hail satan" comment. This guy has some personality thats for sure....<p>Another of his sites linked from the main page:<p><a href="http://www.howtousetwitterformarketingandpr.com/" rel="nofollow">http://www.howtousetwitterformarketingandpr.com/</a>
评论 #1054596 未加载
sonofjanohover 15 years ago
What about game programming? Nobody mentioned it. It's the ultimate test. Try to hack together a simple pool game. You'll be amazed of how much maths and physics go into a simple game that millions use and enjoy.
评论 #1054229 未加载
评论 #1053943 未加载
ytinasover 15 years ago
I like the layout of the page, nice fonts etc.<p>The bit about being constrained by your first language is demonstrably not true (read pg's own account!). It can be a burden, but what stops people from progressing isn't this, it's the usual suspects: arrogance and ignorance. Once you stop judging a language purely on its merits and, thinking you've found the best, begin evangelizing it you will have problems seeing more powerful ones (because the language has become part of your id).<p>You have to treat a programming language like a great chess player treats possible moves: when you find a great one, sit on your hands and look for a better one.<p>As far as math: in my experience it isn't required. It will make you better and make your work easier. I've had good math people replace whole algorithms of mine with a couple of math statements. But if you really devote yourself to getting better at programming, learning a lot of diverse languages and so on, your math will get better. I've found it easier to learn certain math concepts from related programming concepts that I had already learned.
almostover 15 years ago
Programming isn't hard, programming is fun! Ok, it is hardish sometimes, but hard in a fun way not hard in the non-fun way this article seems to imply.<p>And I really don't think your first language is all that important, programming is still fun usually, whatever the language. It's only later that we learn the fine art of language snobbery ;)
评论 #1053835 未加载
dangrossmanover 15 years ago
I didn't need any advanced math to program until I started tackling computer vision problems.<p>Estimating 3D surface normals and depth from multiple photos of an object? Break out the matrix solvers. Computing homographies between images? Better know what an eigenvector is.
评论 #1056370 未加载
EricBurnettover 15 years ago
My first experiences with programming must have been very different than his, with respect to the first section in particular. I always knew that programming was supposed to be hard - I grew up knowing no programmers, teaching myself the esoteric art of C++ from a copy of "Sams Teach Yourself Visual C++ 6 in 21 Days". So when I understood it reasonably well, I felt I must be above average. Indeed, I've never felt the feelings of "frustration and discomfort" he references. Instead, I have always had to battle with my hubris in thinking that I'm that much better than the programmers around me.
评论 #1054413 未加载
J3L2404over 15 years ago
In the beginning of Hillegass's book, Cocoa Programming for Mac OS X, he has a great quote of someone from Caltech being asked about the real world usefulness of a degree in astrophysics. His response was "Not much, but if I run into a hard problem and start thinking I must be stupid because I can't figure this out, then I remember I have a degree in astrophysics so I am not stupid and this must be hard. So in that way it is useful." I'm paraphrasing (the book is buried somewhere) but that always stuck and your post reminded me how important it is to keep at it because coding is not easy, but it is worth it.
评论 #1053823 未加载