Live data from Hacker News

How knowing Lisp destroyed my programming career (2006)

coding.derkeiler.com

371–380 of 433 posts

Re: How knowing Lisp destroyed my programming career (2006)

#371
post #252
post #199

Earlier quoted context omitted.

> I'm basically waiting for the previous generation to die/retire so I can have the chance to build software the way I think it should be built. And by the time you'll be able to do that you'll be the 50-something who keeps using functional programming while the 37-year-olds want to use dilithium crystal programming :p

While you're joking, one thing that appeals to me about my recent dive into functional programming is that it strikes me as knowledge that is 'fundamental' enough that it'll never disappear or become irrelevant.

Exactly like OOP!

Re: How knowing Lisp destroyed my programming career (2006)

#372
post #310

Earlier quoted context omitted.

Keep in mind there's a part of the Lisp crowd that prefers loop and setf over more functional idioms. Unlike many other languages, Lisp is good for writing functional code, but people tend to forget that it's also a pretty kickass imperative and object-oriented language.

> Keep in mind there's a part of the Lisp crowd that prefers loop and setf over more functional idioms. I have used Common Lisp for low-level concurrency and IO code, and as a target language for transpilers, and the most indispensable construct for those applications is GOTO . The only other substitute is a good compiler with guaranteed tail-call optimization. Some people love to point out how you don't need Lisp be…

>and the most indispensable construct for those applications is GOTO.

That's what I like about Lisp: It isn't opinionated. There's no weenie saying "GOTOs are harmful so we delete them from our language", or "OOP sucks so our language won't have any OOP facilities", or "mutable data is bad so there's no mutable data here", etc.

Quite the opposite, Lisp gives you everything. Want OOP? Here's a deluxe OOP system. Want to do GOTOs? Ok, here you are.

Re: How knowing Lisp destroyed my programming career (2006)

#373

On a tangential topic : I am intimidated by how myriad experiences with programming languages HN commentators on this thread have. I have been in this industry for about 8 years and am considered an above average developer in my current company. I have primarily worked with Java, while fiddling with others here and there. No experience with pure functional languages such as Lisp or Haskell. Am I missing out some impo…

I like to think of each programming language as a separate musical instrument. If Java is a tuba, then maybe Python is a trumpet. They're two very different instruments, but they share a lot of the same underlying intuitions. In fact, I would say that C-style languages are probably equivalent to the collection of brass instruments. There are major variations from trombones to trumpets to french-horns, but not as larg…

[deleted]

Re: How knowing Lisp destroyed my programming career (2006)

#374

Oh wow, I was first introduced to Java in my undergrad and somehow I had some serious issues with the whole OOP stuff. Thankfully, I took some AI courses, which came with LISP and I was so excited to use it everywhere. Unfortunately, however, doing basic I/O, networking (this is around 2006) and testing was too complicated for me so I dropped it again in favor of C++ in grad school (performance was also an issue, we…

>Unfortunately, however, doing basic I/O, networking (this is around 2006) and testing was too complicated for me

It is trivial today. Many good libraries for networking, web servers, JSON, serialization, etc, etc. Many excellent Common Lisp implementations as well, some of them being very fast.

>any pointers on the best way to learn/start?

Read Practical Common Lisp, install "Portacle" (the Portable Common Lisp Environment) and be happy!

Re: How knowing Lisp destroyed my programming career (2006)

#375
post #86

Earlier quoted context omitted.

What made it click for me is the nature of scheme: a few, very well thought out abstractions, that compose well to build a really neat language. I never really made friends with other languages. Where scheme composes the primitives for problem solving, I find that languages like python or ruby provide either one way for each different thing, or a very large hammer for every problem you might find, be it list comprehe…

> a very large hammer for every problem you might find, be it list comprehensions or generators or whatever OO voodoo you can come up with. List comprehensions, to me, are what makes Python a productive (or the most productive) prototyping language. It allows me to think and program in mathematical relations without much fuss. Add to that nice sets and dicts (needed for asymptotic efficiency), and I can easily forgiv…

Why do you need the meta-capabilities of lisp? Well, language designers are human and can't predict all the features that you might find useful. Take, for example, list comprehensions.

I added some basic ones to common lisp in a couple of minutes.

  (defun read-comprehension (stream char)
    (declare (ignore char))
    (destructuring-bind (expr for var in list &optional if filter-exp)
        (read-delimited-list #\] stream)
      `(loop ,for ,var ,in ,list
          ,@(when filter-exp `(,if ,filter-exp))
          collect ,expr)))

  (set-macro-character #\[ #'read-comprehension)

  (eval (read-from-string "[(+ x 1) for x in '(1 2 3) if (> x 2)]"))
  ;; => (4)

Re: How knowing Lisp destroyed my programming career (2006)

#376

Earlier quoted context omitted.

As I know as couple of people who either build aircraft for a living or build aircraft for their personal use, neither of them is an aerospace engineer. But I'd happily fly in their aircraft. Irrespective of the title, can they design and build the object in question. This applies to all fields. The point that we must look at is whether or not the problem before us can be solved by us. It doesn't matter if you build…

People who build aircraft are not people who design aircraft. Moreover, the point of the comment isn't about the titles assigned to these people by someone external: it's about the actual skills they have that would cause you to assign such titles to them. If you know people who can design new aircraft, then they are, by definition, aircraft engineers. They may have a job as an aircraft mechanic, but that's besides t…

My point is that the aircraft fly. An awful lot of designs fail to fly and these are deigned by aeronautical engineers.

My other point is that solving the problems at hand is the more important function, irrespective of what title is attributed to you.

Re: How knowing Lisp destroyed my programming career (2006)

#377
post #375

Earlier quoted context omitted.

> a very large hammer for every problem you might find, be it list comprehensions or generators or whatever OO voodoo you can come up with. List comprehensions, to me, are what makes Python a productive (or the most productive) prototyping language. It allows me to think and program in mathematical relations without much fuss. Add to that nice sets and dicts (needed for asymptotic efficiency), and I can easily forgiv…

Why do you need the meta-capabilities of lisp? Well, language designers are human and can't predict all the features that you might find useful. Take, for example, list comprehensions. I added some basic ones to common lisp in a couple of minutes. (defun read-comprehension (stream char) (declare (ignore char)) (destructuring-bind (expr for var in list &optional if filter-exp) (read-delimited-list #\] stream) `(loop ,…

This looks impressive on the first sight (kudos!). But on the other hand it's still a pretty fragile and unreadable macro, no? And it supports only a very limited form of list comprehensions. Can "destructuring-bind" support them fully?

Re: How knowing Lisp destroyed my programming career (2006)

#378
post #375

Earlier quoted context omitted.

Why do you need the meta-capabilities of lisp? Well, language designers are human and can't predict all the features that you might find useful. Take, for example, list comprehensions. I added some basic ones to common lisp in a couple of minutes. (defun read-comprehension (stream char) (declare (ignore char)) (destructuring-bind (expr for var in list &optional if filter-exp) (read-delimited-list #\] stream) `(loop ,…

This looks impressive on the first sight (kudos!). But on the other hand it's still a pretty fragile and unreadable macro, no? And it supports only a very limited form of list comprehensions. Can "destructuring-bind" support them fully?

Yes, it is fragile (less than five minutes, man!) but hardly unreadable to the macro-accustomed eye.

A "real" implementation would do more processing of the forms in the list read by read-delimited-list and perform appropriate checks. This is more to just give you a sense of how trivial it is to extend the language.

I don't actually know python well enough (I had to look up "list comprehension") to say, but I would estimate that it would only take a page or so of code to give you something fully-featured and robust.

In practice, I would never abuse the reader like this when typical "loop" expressions are enough to do these kind of things (and more).

Re: How knowing Lisp destroyed my programming career (2006)

#379
post #244
post #153

Earlier quoted context omitted.

College doesn't go half the way to prepare you to be a successful engineer. This is something I'm hearing alot at the moment, and not just about engineering. What would you say college taught you?

In general, undergraduate assignments: - are well specified and known to be completable - start from a blank slate - produce relatively short programs - once complete and accepted, will never be run or looked at again - are required to work individually Whereas in a real software engineering department: - goals will be to some extent vague and fluid, may be contradictory => requiring negotiation skills with PM, custo…

For whats worth i think that in college you mostly learn to learn... So what u learn Isn't that important, to me you are just proving that u can learn fast.

Re: How knowing Lisp destroyed my programming career (2006)

#380
post #95

Earlier quoted context omitted.

I'm not trying to impose that one is more "noble" than the other. As you said yourself, businesses usually run on plumbing. I'm trying to understand the industry, as it appears to be(at least to me) different than what I thought was true. I believe it to be important if we're going to do better and there is a ton of metrics showing we should do better(percent of projects failing, percent on projects exceeding budget…

Indeed, the "plumbing" role is getting more and more important as there are more reusable software out there, so less need to write it from scratch. It reminds me of how MIT changed their intro-to-programming course, from the Scheme-based one to a python based one, because "the SICP curriculum no longer prepared engineers for what engineering is like today. Sussman said that in the 80s and 90s, engineers built comple…

Yes, and virtually all software job postings/interviews are tests for experience with specific fittings (abstractions/frameworks)
Post reply on HN