Live data from Hacker News

Programming: Attitude Trumps Intelligence

alarmingdevelopment.org

31–40 of 67 posts

Re: Programming: Attitude Trumps Intelligence

#31
The compelling part about pg's lisp "triumphalism" is that he describes how lisp helped him build a better product and add/debug features faster. This author doesn't address that point -- he's talking about a kind of elitism that one would find in newsgroup flame wars.

I (and many others) couldn't care less if a language makes me appear brilliant, but I do care about what advantage that language gives me.

(EDIT: I wrote this comment before viewing the link to his previous post where he directly addresses the issue. Still wish he'd elaborate more though on how the abstraction level of a language would not help a programmer do better work. Is it enough to just proclaim "There are no super programming languages, only super programmers" for it to be true?)

Re: Programming: Attitude Trumps Intelligence

#32

Reflecting upon my previous post, I am wondering why LISP triumphalists like Paul Graham annoy me so much? Perhaps it is because I used to be one myself, in spirit if not in syntax. And also because I now see them as a major symptom of what ails programming. Responding just to the Lisp part of this post, all programming languages suck (but not equally!). Lisp isn't designed to let you show how clever you are, it's ju…

The only language? What about Haskell's type inference and lazy computation? Or the great pattern matching. These show up in my current favorite language - Scala - but I don't exactly think this a mainstream language.

Re: Programming: Attitude Trumps Intelligence

#33
Programming is an embarrassment compared to other fields of engineering and design. Our mainstream culture is one of adolescent self-indulgence

Alan Kay made the same point in a interview with ACM: http://queue.acm.org/detail.cfm?id=1039523. He, much more eloquently, said:

Once you have something that grows faster than education grows, you’re always going to get a pop culture.

Fixing this is a much bigger issue. It in fact encompasses a lot of other areas, and they are no closer to solving it than computer science is (which was humorously cited to be a grab bag of tenuously related areas thrown together by an accident of history, like Yugoslavia).

Edit: As a side note, Eric Ries recently said on a Lean Startup talk we live in an era where ignorance is truely optional http://bit.ly/9v0XI6 . The problem is that most people opt in.

Re: Programming: Attitude Trumps Intelligence

#34
I agree that attitude trumps pure intelligence in general for programming projects. Indeed, pure intelligence tests (e.g., "why are manhole covers round?") fell out of favour as interview techniques at Microsoft. As far as I know (my own and friends' personal interview experience) Google never used such for programming interviews: ability to apply intelligence to the task at hand (programming, software engineering/architecture and algorithm/data-structure design) is what the industry leaders look for. This (the ability to strip away non-mathematical details and break a problem down to pieces that are machine-solvable, preferably by known and proven algorithms) in itself takes not just intelligence, but also practice.

Nonetheless, there are some projects that require a minimal amount of intelligence and/or education and beyond that no amount of attitude can help. E.g., I'd love to hack on applications of machine learning algorithms, but I don't have the educational background to do so. It would require years of serious study to be able to even do even the most basic work in that field.

On the topic of the author's previous post, I would agree that a way to get top programmers to work on less-interesting business applications is to let them use a more interesting language. In fact, some of the most difficult development (systems programming, scientific computing) goes on in fairly boring languages (although using higher level languages for this sort of work is becoming a reality).

I will, however, take strong issue with the assertion that Common Lisp is a language only suitable to top percentile of programmers: countless schools teach Scheme as the first programming language to undergraduates and Scheme is a much more functional language than idiomatic Common Lisp. Macros aren't inherently related to functional programming (nor is writing your own macros required for Lisp hacking, Graham is fairly unique in this respect). Closures (a heavily used feature of Common Lisp) aren't inherently functional, neither are multiple dispatch nor dynamic typing. Lack of syntax is a salient feature, orthogonal to all other distinguishing features (except for macros) and again, not especially "functional". If it's possible for newbies to write fairly mind-bending Scheme(1), why shouldn't it be possible for educated and experienced (even if not 99.99th percentile aptitude-wise) programmers to do the same in a less pure language (Common Lisp, OCaml)?

(1) My alma matter (which most people, even those living next to it, haven't heard of) uses Haskell: http://www.cse.scu.edu/~atkinson/teaching/wi10/070/

Re: Programming: Attitude Trumps Intelligence

#35
post #15

Earlier quoted context omitted.

Lisp dialects afford you more powerful tools for abstraction. Whereas most languages provide abstraction at the function level, Lisp allows for syntactic abstraction via macros. Think of constructs like the if-statement that only evaluates one of its consequent and alternative, or short-circuiting and- and or-expressions. These things are impossible (or awkward/difficult) in most languages, but Lisp makes them relati…

It's a nice tool for abstraction, but its simply another tool. Once you have the ability to make a function that returns an arbitrary value, including other functions, and can take an arbitrary value, I think you're largely done. I can build conditionals, lazy vs eager eval, and the whole nine with this simple contruct. And sure, it starts out looking uglier, but c'mon, we're comparing to Lisp. :-) The real question…

Yeah, you can simulate that stuff with lambdas. For that matter, you can simulate function calls by following conventions in assembly language. That's what I meant by "awkward/difficult". Surely you'd concede that you're happy to have syntactic support for if-statements and lambdas?

Given that, it's not a stretch to imagine that syntax could be useful in other scenarios.

Re: Programming: Attitude Trumps Intelligence

#36
post #31

The compelling part about pg's lisp "triumphalism" is that he describes how lisp helped him build a better product and add/debug features faster. This author doesn't address that point -- he's talking about a kind of elitism that one would find in newsgroup flame wars. I (and many others) couldn't care less if a language makes me appear brilliant, but I do care about what advantage that language gives me. (EDIT: I wr…

I think the author is responding to the self-indulgent "Reddit clone in three lines of lisp!" variety of stunt-programming, where best practices, standards, and readability take a backseat to showing off how much hard-to-read compound logic you can cram into a single line of code.

Honestly, I don't have a problem with those, as long as the practices involved in them don't seep into everyday programming.

Re: Programming: Attitude Trumps Intelligence

#37
Why is clever programming always associated with some awful monstrous unmaintainable implementation?

Being clever shouldn't mean that you're hacking things together ad-hoc just to make it work. On the contrary, that is the opposite of being clever.

I really doubt that most of the bad code is written by "clever" programmers. Other factors are at play here.

Re: Programming: Attitude Trumps Intelligence

#38

Reflecting upon my previous post, I am wondering why LISP triumphalists like Paul Graham annoy me so much? Perhaps it is because I used to be one myself, in spirit if not in syntax. And also because I now see them as a major symptom of what ails programming. Responding just to the Lisp part of this post, all programming languages suck (but not equally!). Lisp isn't designed to let you show how clever you are, it's ju…

Lisp is the perfect language for its ex-users and wannabes to wax poetic about.

For the rest of us that do it for a living, it just has the least annoyance. I would happily jump ship the moment I get a dynamic, interactive language with CLOS, s-exp notation and some industrial, enterprise-y tools.

I hope to see the day when franz and lispworks partner with IBM and Oracle and push Lisp certifications at the masses. Also, For Dummies books!

Throw these smug lisp weenies off their pedestal and replace them with armies of impressionable and malleable macro-jockeys.

Re: Programming: Attitude Trumps Intelligence

#39
There is a subfield of programming that feels pretty grown-up: mission critical applications where a bug can cost you a multi-million dollar spacecraft or a plane-load of human lives.

The pace of innovation can feel glacial, safety("has this been done before, is it reliable") is valued above "brilliance", and the whole process with its checks and tests and paperwork can feel stifling, but it produces complex code that works(most of the time).

I wonder if this is a local maxima, though, and if there are more effective ways to produce rock-solid, high performance code. I'd love to see how SpaceX produce their code, for instance.

Re: Programming: Attitude Trumps Intelligence

#40
post #31

The compelling part about pg's lisp "triumphalism" is that he describes how lisp helped him build a better product and add/debug features faster. This author doesn't address that point -- he's talking about a kind of elitism that one would find in newsgroup flame wars. I (and many others) couldn't care less if a language makes me appear brilliant, but I do care about what advantage that language gives me. (EDIT: I wr…

Still wish he'd elaborate more though on how the abstraction level of a language would not help a programmer do better work. Is it enough to just proclaim "There are no super programming languages, only super programmers" for it to be true?)

This is trivially easy to disprove. C vs assembly. Java/C#/Python/Ruby/etc vs C and assembly. Manually creating databases in something like C for every application vs relational databases and SQL.

I think it is painfully obvious that we have come a long way due to "triumphalism." Not all ideas bear fruit, but those that do can have a huge impact. His conclusion advocates that we should all simply program in assembly and use good practices. I feel that is an absurd notion.

Post reply on HN