Live data from Hacker News

How knowing Lisp destroyed my programming career (2006)

coding.derkeiler.com

351–360 of 433 posts

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

#351
post #286

Earlier quoted context omitted.

Whatever programming language you are using, at some point or at some representation the compiler will start generating code. The difference is that the default code representation of lisp allows it at source level, making writing (and debugging) them a lot easier. An if statement in python generates a shitload of bytecode that the optimizer then does what it pleases to. With lisp you can watch that process by watchi…

> An if statement in python generates a shitload of bytecode To be precise, it will generate something like 'JUMP_IF_FALSE' which is not exactly a shitload. Not saying the execution will be fast. After all, it's an interpreted language. > Macros allow us to extend the language. We're on the same page. What I was saying is: if you need more than function calls and records, chances are you're doing something wrong... t…

I suspect that is just a matter of taste. I find source->source transformations pretty darn useful. You end up writing boilerplate code in all languages. Being able to just abstract that away is comfortable, and I don't really see the problem (together with what I suspect is the vast majority of lispers).

You can of course provide libraries that "extend" the language, but sometimes you will never be able to lose the feeling of it being bolted on, because the semantics of the la guage doesn't lend itself to that certain way of doing it.

Lisp macros solve that, at least for me. We use them like regular procedures and as long as you keep the simple rule that you sbouldnt make a macro of something you want to compose with procedures, there really isnt much that gets in the way of understanding a program, because most of the time whether something is a macro or not does not matter.

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

#352
post #235

Earlier quoted context omitted.

Thank you for your thorough reply. Colleges are under fire, even from their own ranks, by people whom I believe confuse training with education , but it's clear that's not your issue. It sounds to me like there needs to be some sort of deep-dive "onboarding" program where new hires can work on a curriculum of projects and learn the SOPs of the organization. Colleges could take some of it on, of course (testability an…

It seems to me that, out of ten graduates from a CS program, only one is going to go on to do academic computer science; the other nine are going to become computer programmers. CS programs are doing a poor job of preparing those nine. Now, in other areas, we have a distinction. We have physics departments that teach people theory, and we have separate engineering departments that prepare people for careers putting t…

There are still different levels of expertise and talent in engineering, broadly dependent on mathematical ability and skill for abstraction.

This is maybe more obvious in hardware design.

At the top of the tree you have people like Maxwell, Heaviside, and Shannon, who invent entirely new possibilities out of pure math.

At the other extreme you have technicians who don't truly understand math or theory, but can build a circuit that will probably work if handed a cookbook.

In the middle are people who can work with abstractions like DSP and filter design as long as the ground has been broken for them. They understand enough math to find their own way through a problem from first principles, but aren't creative enough to invent anything truly original.

CS is more amorphous, the levels are maybe harder to separate, and it's cursed by not having a truly consistent practical mathematical foundation analogous to the applied physics that underlies engineering of all kinds.

But IMO there are similar skill levels - although at the higher levels, abstraction can become a bad thing rather than a good one.

The problem is that although there's math in CS, after Church/Turing - which is pretty elementary compared to most physics - there isn't anything that passes for a formal theory of problem/solution specification and computation.

Without that objective basis, a lot of CS is academic opinion instantiated in a compiler. And a lot practical commercial CS is a mountain of hacks built on language and tooling traditions with no empirical foundation.

Commercially, the most productive people will be middle-rankers - not so clever they'll be thinking of new applications for category theory in an iPhone app, but clever enough to be able to think beyond cookbook development.

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

#353
post #16

> knowing Lisp made me all too keenly aware of Java's shortcomings, and I had a very hard time not being angry at how stupid it was that I was being forced to use it. I would take this as a the thing to remember from this. When you are too angry at something, you cant learn it. I have seen the emotional refusal to learn new inferior thing (or read comments that amounted to the same) many times already. It is somethin…

> When you are too angry at something, you cant learn it.

This is true in a very literal sense. Emotions appear to have a very significant effect on how well we can memorize and recall things:

https://en.wikipedia.org/wiki/Emotion_and_memory

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

#354
post #229
post #191

Earlier quoted context omitted.

This just seems like being around something awful long enough that you develop a form of stockholm syndrome.

Unless of course your perception that it is "objectively" awful is not objective at all. The "awful" categorization is oftentimes just your emotional reaction to not understanding something immediately and not knowing how to use it effectively.

I would add one more thing - even if the technology is objectively awful, it is worth learning if it serves some practical purpose. Learning something is not value judgement of its objective quality, it should be in part rational choice.

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

#355
post #65
post #3

I think the problem there was complacency, as the author mention in their mail. On the other hand, I totally do recommend that everyone picks up some tutorial or guide or book on LISP and learns what the fuzz is all about. Even today, I feel like a lot of people could learn a lot from LISP and S-Expressions, both of which are powerful constructs. (Note: I'm not saying you should use LISP productively, it's something…

People really should learn Racket through this book: "How to Design Programs, Second Edition" http://www.ccs.neu.edu/home/matthias/HtDP2e/ Dense and very complete into learning a Lisp. The one HUGE benefit is I see Racket moving into the most modern programming Lisp. Racket really looks like it has a future. 1) Concurrency and Parallelism (Without pull all your hair out) - http://docs.racket-lang.org/reference/concur…

+1 for HtDP. I think it is also a really valuable book for anyone coming from JavaScript who wants to actually learn how to do functional and reactive programming properly.

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

#358
post #241
post #47

Honestly curious why Lisp has so much admiration and praise on HN. I played around with Scheme some long time ago, read SICP, learned a lot. And I know Lisp inspired many programmers like the founder of Ruby. But I would not think of Lisp when it comes to solving day to day problems. I rather pick Python because it helps me solve all kinds of problems. There are many more solutions I can think of (Ruby, Node, Go, eve…

Peter Norvig, a serious lisper, calls Python "an acceptable lisp": https://news.ycombinator.com/item?id=1803815

Regarding that[0]:

At ILC 2002 former Lisp giant now Python advocate Peter Norvig was for some reason allowed to give the keynote address like Martin Luther leading Easter Sunday mass at the Vatican and pitching Protestantism because in his talk Peter bravely repeated his claim that Python is a Lisp.

When he finished Peter took questions and to my surprise called first on the rumpled old guy who had wandered in just before the talk began and eased himself into a chair just across the aisle from me and a few rows up.

This guy had wild white hair and a scraggly white beard and looked hopelessly lost as if he had gotten separated from the tour group and wandered in mostly to rest his feet and just a little to see what we were all up to. My first thought was that he would be terribly disappointed by our bizarre topic and my second thought was that he would be about the right age, Stanford is just down the road, I think he is still at Stanford -- could it be?

"Yes, John?" Peter said.

I won't pretend to remember Lisp inventor John McCarthy's exact words which is odd because there were only about ten but he simply asked if Python could gracefully manipulate Python code as data.

"No, John, it can't," said Peter and nothing more, graciously assenting to the professor's critique, and McCarthy said no more though Peter waited a moment to see if he would and in the silence a thousand words were said.

0: http://smuglispweeny.blogspot.com/2008/02/ooh-ooh-my-turn-wh...

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

#359
post #22

Earlier quoted context omitted.

The APL / J / K family of languages seems to be very strong with this effect. If it fits your problem domain, it's (apparently) so powerful that using anything else feels like a frustrating waste of time.

Those of you interested in APL/J/K might find Iverson's book Elementary Algebra interesting where he defines lots of operations in array notation. I dug up this PDF looking for one that was out of print: http://www.softwarepreservation.org/projects/apl/Papers/Elem...

oh wow, I have that book. I also have "calculus in a new key" and a few others. Yes, I was an APL child.

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

#360
post #40

For a while now I've had a feeling that all the comments about lack of engineers(especially in software) are vastly underestimated. Probably around 10% of us is capable of doing actual software development. The rest writes plumbing and can handle the project for only as long as abstractions available through libraries can hold the complexity. If we assume most of us don't really know what we're doing, that totally ex…

Sigh.. I for one will never understand why everyone is obsessed about titles.

Is doing front end not actual software development? What does that even mean?

Are you considered a real software engineer if you can write code in a certain language? .. Or does it mean you are really good at O(1) problems?

I think we should all agree that software development is a team effort, it requires vast knowledge and skills that different individuals bring to the table.

Doing CSS adds just as much value as writing the backend API.

Here is a good analogy. For an aircraft to function, pilots, aircraft mechanists, aerospace engineers all come together. Does that mean one is doing "plumbing"?

Certainly not, they all add value.

Post reply on HN