Live data from Hacker News

Teach Yourself Programming in Ten Years (1998)

norvig.com

81–90 of 117 posts

Re: Teach Yourself Programming in Ten Years (1998)

#81
post #48

>> Learn at least a half dozen programming languages I'm always surprised by how many people disagree with this; they're on the search for that one language they can use for every task. Or even worse, they think they've found it and their search is over, that's a tragic situation given how spoiled we are for great languages today. Clojure (STM / refs, vars, atoms & agents), kdb/q (non-loopy array code), Rust (ownersh…

I was one of those who disagreed with that, but then I was forced to learn several new languages for work. Now I agree with it wholeheartedly. my favs: -clojure for processing deeply nested data -rust for general stuff -java for concurrency support and general stuff -c for easy pointer manipulation and "tricks" -sql -bash for scripting (I'm that weirdo who would rather make a huge shell script rather than using pytho…

Python's NumPy library deliberately emulates much of the functionality of Matlab's core (similarly, fundamental plotting with matplotlib follow similar design cues). As a lapsed long-time Matlab user, I think they're just as fun to use.

There is also Octave, an open-source Matlab alternative, but when I last used it (admittedly quite a while ago) it had limited support for toolboxes (e.g. signal processing). I imagine it has only improved since.

Re: Teach Yourself Programming in Ten Years (1998)

#82

>> Learn at least a half dozen programming languages I'm always surprised by how many people disagree with this; they're on the search for that one language they can use for every task. Or even worse, they think they've found it and their search is over, that's a tragic situation given how spoiled we are for great languages today. Clojure (STM / refs, vars, atoms & agents), kdb/q (non-loopy array code), Rust (ownersh…

I like the general purpose GC languages like Java JS c# python lisp for most tasks though, and then go with something a bit wilder or low level like Go Haskell Rust Erlang c++ c when needed. Or R/apl for a mathy problem. Since I enjoy high level programming and the natural experience chicken/egg I never do the low level stuff. Not since Acorn Electron assembler! But I know of it.

Haskell is also garbage collected

Re: Teach Yourself Programming in Ten Years (1998)

#83

>> Learn at least a half dozen programming languages I'm always surprised by how many people disagree with this; they're on the search for that one language they can use for every task. Or even worse, they think they've found it and their search is over, that's a tragic situation given how spoiled we are for great languages today. Clojure (STM / refs, vars, atoms & agents), kdb/q (non-loopy array code), Rust (ownersh…

I think it's fine to "learn" lots of languages, but you're going to be pretty bad at most of them. And I personally wouldn't be comfortable with building a system that will reach hundreds of thousands of LOC in the majority of the dozen or so languages I've "learned" over the years.

If you're really going to learn a language - as in, build idiomatic programs - its a constantly moving target and requires a lot of effort to maintain.

I think it's better to learn 2-3 languages, and have passing familiarity with others. People like to pretend that language choice solves all your problems, but usually you're talking in percentages: one language is a 80% fit for your problem, another is an 85% fit... there is never a 100% fit - are these differences worth working in a language you barely have any experience in?

Re: Teach Yourself Programming in Ten Years (1998)

#84
post #69
post #39

Earlier quoted context omitted.

not all code is life threatening in worst case scenario. Better comparison would be "would you like to be served by first time waiter or rather expert one?". In most cases it doesn't matter, and when it does, the price point of the service is significantly higher.

I once experienced a waiter holding raw meat (to be cooked at the table) over the drinks while serving, unknowingly letting it drip into the glass. (But as I didn't want to find out if it would life-threatening or not, I didn't try the drink.)

This one time I had a waiter who it turned out wasn't even our waiter and we gave him our money and the food was good but where did he get the food?

Also there are some great thoughts in this thread on why there is such a shocking amount of spaghetti code out there and I like the ransomware note also. Thought provoking. Too bad I'm such a terrible programmer.

Re: Teach Yourself Programming in Ten Years (1998)

#85
post #81
post #48

Earlier quoted context omitted.

I was one of those who disagreed with that, but then I was forced to learn several new languages for work. Now I agree with it wholeheartedly. my favs: -clojure for processing deeply nested data -rust for general stuff -java for concurrency support and general stuff -c for easy pointer manipulation and "tricks" -sql -bash for scripting (I'm that weirdo who would rather make a huge shell script rather than using pytho…

Python's NumPy library deliberately emulates much of the functionality of Matlab's core (similarly, fundamental plotting with matplotlib follow similar design cues). As a lapsed long-time Matlab user, I think they're just as fun to use. There is also Octave, an open-source Matlab alternative, but when I last used it (admittedly quite a while ago) it had limited support for toolboxes (e.g. signal processing). I imagin…

For elegant matrix syntax I like julia or fortran better, if I need a lack of a license or more speed. Octave is good too, but it is much slower than Matlab. Numpy is in a weird spot. Its still slower than Matlab, but its everywhere, but all the versions and environments are different so you need containers to be portable.

Re: Teach Yourself Programming in Ten Years (1998)

#86

>> Learn at least a half dozen programming languages I'm always surprised by how many people disagree with this; they're on the search for that one language they can use for every task. Or even worse, they think they've found it and their search is over, that's a tragic situation given how spoiled we are for great languages today. Clojure (STM / refs, vars, atoms & agents), kdb/q (non-loopy array code), Rust (ownersh…

Well, this advice is from 1998 and still got some truth to it.

In 1998 languages did not have that many features and were in my opinion easier to grasp. Just have a look at modern C++ or Java's cadence of new features.

In 1998 Java and JavaScript were new. Now they evolved into widely adopted general purpose languages.

Re: Teach Yourself Programming in Ten Years (1998)

#87

Earlier quoted context omitted.

I like the general purpose GC languages like Java JS c# python lisp for most tasks though, and then go with something a bit wilder or low level like Go Haskell Rust Erlang c++ c when needed. Or R/apl for a mathy problem. Since I enjoy high level programming and the natural experience chicken/egg I never do the low level stuff. Not since Acorn Electron assembler! But I know of it.

JS isn‘t a general purpose language, even though is has been shoehorned to be one.

I'd be curious to hear some examples where JS doesn't fit as a general purpose language. In my arrogance I suspect it would be hard to give examples that don't also disqualify other scripting langs like python and ruby. Perhaps you don't consider those to be general purpose either?

Re: Teach Yourself Programming in Ten Years (1998)

#88
One of the concepts in the name that tune, errr learn to Code in fewer days than the other brands of books is that each chapter is a Lesson that should be worked on for a while before proceeding to the next lesson.

So while it is 24 hours or 7 days or whatever, they are not meant to be a sequential 24 hours, but 24 hours spread over a period of time.

I could never interest a publisher in creating a series called "Learn in 23 Hours", I'm sure it would have a clear advantage over its slower 24 hour competition. Perhaps 23.99 hours?

Re: Teach Yourself Programming in Ten Years (1998)

#89
post #48

>> Learn at least a half dozen programming languages I'm always surprised by how many people disagree with this; they're on the search for that one language they can use for every task. Or even worse, they think they've found it and their search is over, that's a tragic situation given how spoiled we are for great languages today. Clojure (STM / refs, vars, atoms & agents), kdb/q (non-loopy array code), Rust (ownersh…

I was one of those who disagreed with that, but then I was forced to learn several new languages for work. Now I agree with it wholeheartedly. my favs: -clojure for processing deeply nested data -rust for general stuff -java for concurrency support and general stuff -c for easy pointer manipulation and "tricks" -sql -bash for scripting (I'm that weirdo who would rather make a huge shell script rather than using pytho…

APL is awesome for matrices.

https://en.wikipedia.org/wiki/APL_(programming_language)

Re: Teach Yourself Programming in Ten Years (1998)

#90

The title is a bit misleading to me. 10 years is not to "teach yourself programming," it's to "become an expert in programming." Most people do not want to learn programming to become experts, most people want to learn programming to get a job. After getting a job, some will plateau right away, others will plateau after some time, and others still will keep learning even after years and years. The problem is "how lon…

> And, I would say that the number of jobs that require the mastery of the craft is not large. This mindset is how we end up with layers upon layers of badly designed and buggy software that underpins almost every aspect of modern life. Just apply the same reasoning to other areas: Would you want to drive in a bus with a bus driver who just barely got his driver's license? Would you want to use a bridge designed by a…

How often do you check your surgeon's grades?

Or any of those things you mention? I normally just trust that the bus company has hired a guy with a license.

Post reply on HN