Live data from Hacker News

How I Learned to Program

rdegges.com

41–50 of 78 posts

Re: How I Learned to Program

#41
post #27

The one point I really disagree on is Linux. Sure learning Linux will most likely teach you something about the platform on which anything you write will probably be deployed but that's really marginal (IMHO). You get things done (programming included) by getting all the roadblocks out of your way. Linux is (IMHO) a roadblock. The OP claims it teaches you researching skills by giving you problems everyday you need to…

I didn't start to really understand how things all work and go together until I installed Linux on my desktop, and started exploring that world. I don't disagree with using OSX, in fact I use a Mac to do all my work now. But I never got started or interested or developed an understanding until I started using linux. Linux almost forces you to learn the underworkings of your system, computing in general, and loves to make you do work in the terminal. All good for learning programming.

I used to have a jokes tab on my iGoogle page, one day the joke of the day was: "If you want you computer to work, use a mac, if you want to know how you computer works, use linux, and if you don't want to know why your computer doesn't work, use windows." I thought it was funny, and it was a step in my inspiration to use Linux.

One analogy I'll make to promote learning on Linux: When I started playing guitar, any experienced player or teacher will tell you to learn on an acoustic guitar. Why? It's more challenging to make it sound good, you have to press harder on the strings, The strings are further away from the frets, you get buzz and damping if you don't use just the right form. It teaches you to over learn, then when you switch to an electric, it's easy peasy, and just sounds sooo good. I think in this case you could consider Linux to be the acoustic guitar, and Mac to be an electric. Just my two cents.

Re: How I Learned to Program

#42

This is probably going to raise some ire, but am I in the minority of people who are tired of "How I learned to program?" type posts showing up on HN? You learned how to code. Great, I am legitimately, truthfully happy for you. It's a very cool skill/career path and a wonderful feeling when you have the ability to create something on your own. But...do we really need to read that on the frontpage? Am I the only one t…

I really appreciate them because I have no idea how to teach people how to program, but I know I need to do so.

Re: How I Learned to Program

#43

Nice article, I second that programming is a way of life. Although I'm in my early 20's right out of college, I look forward to how much knowledge & experience I will amass, and the radical transformations this industry will go through, 10 - 20 years down the road. > "On linux, if you want to copy a file from one box to another, you use scp or rsync" No, not really... I just SFTP at the moment simply cause I find it…

yes rsync for single files is over kill

That depends on the size of the file, the size of the updates, and the speed of your connection.

Re: How I Learned to Program

#44

This is probably going to raise some ire, but am I in the minority of people who are tired of "How I learned to program?" type posts showing up on HN? You learned how to code. Great, I am legitimately, truthfully happy for you. It's a very cool skill/career path and a wonderful feeling when you have the ability to create something on your own. But...do we really need to read that on the frontpage? Am I the only one t…

Re: kragen & jseliger - thanks for the explanations, I hadn't considered it from that point of view. I'll take a friendly view towards them in the future =)

Re: How I Learned to Program

#45
post #27

The one point I really disagree on is Linux. Sure learning Linux will most likely teach you something about the platform on which anything you write will probably be deployed but that's really marginal (IMHO). You get things done (programming included) by getting all the roadblocks out of your way. Linux is (IMHO) a roadblock. The OP claims it teaches you researching skills by giving you problems everyday you need to…

To my taste, Linux puts a lot less roadblocks in my way than MacOS does. Maybe my complaints that follow are simply due to my ignorance, in which case I hope you will take the time to correct me, but as far as I know they're real roadblocks.

I want to see the source to the ls command? dpkg -S /bin/ls; apt-get source coreutils. I have no idea how to do that on MacOS. I want to be able to compile it? apt-get build-dep coreutils, which IIRC will install the compiler. The equivalent on MacOS involves signing up for a developer account with Apple, signing a contract that promises God knows what, and downloading a multi-gigabyte disk image. Even after installing, gcc still isn't in your PATH, and won't work properly with the platform SDK without a verbose -isysroot option. I want to make executable the file named gooba somewhere under my current directory? chmod +x $(find -name gooba). Apple's find requires an explicit `.` and maybe an explicit `-print`, I don't remember. Got performance problems on your machine? On Linux you have htop, dstat, iotop, powertop, and latencytop, none of which have MacOS equivalents as far as I know. Even plain old top has keystroke commands to switch between sorting by CPU and sorting by resident set size. As far as I can tell, doing that on MacOS requires restarting top with different command-line options. And there's no package-management system, so if you're building a server-based app, good luck installing the same versions of the same libraries on the server that you tested against in development. Or on your new dev box. And the server's probably running Linux anyway. Also, where the fuck is strace? Dtruss is a fucking piece of shit.

Admittedly XCode is a pretty nice IDE, but there are a lot of nice IDEs out there, and most of them run on Linux too. And I'd love to have dtrace on Linux.

Re: How I Learned to Program

#46
post #45
post #27

The one point I really disagree on is Linux. Sure learning Linux will most likely teach you something about the platform on which anything you write will probably be deployed but that's really marginal (IMHO). You get things done (programming included) by getting all the roadblocks out of your way. Linux is (IMHO) a roadblock. The OP claims it teaches you researching skills by giving you problems everyday you need to…

To my taste, Linux puts a lot less roadblocks in my way than MacOS does. Maybe my complaints that follow are simply due to my ignorance, in which case I hope you will take the time to correct me, but as far as I know they're real roadblocks. I want to see the source to the ls command? dpkg -S /bin/ls; apt-get source coreutils. I have no idea how to do that on MacOS. I want to be able to compile it? apt-get build-dep…

http://opensource.apple.com/

Re: How I Learned to Program

#47

This is probably going to raise some ire, but am I in the minority of people who are tired of "How I learned to program?" type posts showing up on HN? You learned how to code. Great, I am legitimately, truthfully happy for you. It's a very cool skill/career path and a wonderful feeling when you have the ability to create something on your own. But...do we really need to read that on the frontpage? Am I the only one t…

I both agree and disagree. I don't much want to see them on the frontpage either, but I absolutely do want to see them because I forward them on to friends to whom I'm making the case that it is a good career move (as best career prep = CS + X, for all X [1]). It would be nice to have a subsection or something for them.

1. https://plus.google.com/114765095157367281222/posts/1mrFdZXm...

Re: How I Learned to Program

#48
post #27

The one point I really disagree on is Linux. Sure learning Linux will most likely teach you something about the platform on which anything you write will probably be deployed but that's really marginal (IMHO). You get things done (programming included) by getting all the roadblocks out of your way. Linux is (IMHO) a roadblock. The OP claims it teaches you researching skills by giving you problems everyday you need to…

Fwiw, in my own experience, I learned more about how computers and computing work from the first year of exclusively using Linux than from a decade of using Windows. Windows is designed from scratch to hide all that and abstract it into a GUI.

Linux both forces you to figure stuff out, and enables you to, which in my case also motivated me to.

I don't know how that would have worked out had I been using OS X instead of Linux though, maybe the same since it's BSD-based. But I suspect Linux may be the only one where you can feel full ownership over your own system, and can be motivated by the knowledge that if you take the time and effort to figure it out, you can make it do anything you want to.

That personal, emotional investment I believe is the most important, rewarding, and incentivizing aspect of learning computers, computing, programming, and/or CS.

Re: How I Learned to Program

#49
post #27

The one point I really disagree on is Linux. Sure learning Linux will most likely teach you something about the platform on which anything you write will probably be deployed but that's really marginal (IMHO). You get things done (programming included) by getting all the roadblocks out of your way. Linux is (IMHO) a roadblock. The OP claims it teaches you researching skills by giving you problems everyday you need to…

Fwiw, in my own experience, I learned more about how computers and computing work from the first year of exclusively using Linux than from a decade of using Windows. Windows is designed from scratch to hide all that and abstract it into a GUI. Linux both forces you to figure stuff out, and enables you to, which in my case also motivated me to. I don't know how that would have worked out had I been using OS X instead…

Windows is also designed to make you start paying to get at details. And keep paying. If you are e.g. a youngster, or a "this should be automated" worker who doesn't have any tech budget, this can be a significant hindrance. (Yes, I know there are now various MS initiatives such as the Express Studios and Spark whatnot. There didn't used to be (I wonder what changed ;-), and I remain skeptical.)

Re: How I Learned to Program

#50
post #27

The one point I really disagree on is Linux. Sure learning Linux will most likely teach you something about the platform on which anything you write will probably be deployed but that's really marginal (IMHO). You get things done (programming included) by getting all the roadblocks out of your way. Linux is (IMHO) a roadblock. The OP claims it teaches you researching skills by giving you problems everyday you need to…

For someone who already has a Windows machine (still the majority, I believe) you just replaced one roadblock with another. One is technical and the other is financial (buying a Mac). Really, Norvig sums this up best: "When asked "what operating system should I use, Windows, Unix, or Mac?", my answer is usually: "use whatever your friends use." " (I use a Mac and think it's swell, but I definitely couldn't have shell…

> you just replaced one roadblock with another. One is technical and the other is financial (buying a Mac)

I think you hit on an important point. Most people seem to be approaching this from an adult / professional perspective. I'm thinking of the bright 14-year-old kid who wants to learn about computers. He (or his parents) may not be able to afford a $2000 Macbook, but he could build his own box relatively cheaply and put a free operating system on it. Linux is democratizing that way. And he can download the source code to virtually everything running on that box. That has undoubtedly inspired a few programmers.

Post reply on HN