19 ms·
How knowing Lisp destroyed my programming career (2006)
- siddboots 9y agoMan. That's a refreshingly humble outlook.
- zaarn 9y agoI 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 you should learn for the heck of it, not to actually use it)
- phoe-krk 9y ago> (Note: I'm not saying you should use LISP productively, it's something you should learn for the heck of it, not to actually use it) Well, I do, and I have to say that it can be done. It isn't a road often travelled and it results in people making remarks about your language choices, but as long as my software works, its development is fun for me and my co-coders do not complain, I don't think anything is wrong with my setup. :)
- zaarn 9y agoYou can do that too. I think I may have expressed poorly; whether or not you want to use LISP in production, learn it anyway, because it's LISP.
- baldfat 9y agoPeople really should learn Racket through this book: "How to Design Programs, Second Edition" http://www.ccs.neu.edu/home/matthias/HtDP2e/ 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/concurrency.html http://docs.racket-lang.org/reference/concurrency.html 2) Great Documentation http://docs.racket-lang.org/reference/index.html http://docs.racket-lang.org/reference/index.html 3) It will make you a better programmer in other languages Racket's biggest problem - It's fun to use so everyone has their own solutions for many common problems.
- sedachv 9y ago+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.
- jbreckmckye 9y agoUsing any language for twenty years straight is going to make you complacent - but goodness, how many languages would have given you that luxury?
- vgy7ujm 9y agoPerl?
- kamaal 9y agoPerl is one of those languages, if you get used to the power of Perl it could be really hard to move to other C based languages. I can only imagine how it would be for anyone using Lisp. The power there is so much, going to something like Java from there would feel down right suffocating. Going from Perl to Python in my case largely felt like trying to a run a marathon in chains.
- vgy7ujm 9y agoI share your experience. Python took all the fun out of computing for me.
- bhaak 9y agoYour comment made me think of the quote by Guy Steele: "We were not out to win over the Lisp programmers; we were after the C++ programmers. We managed to drag a lot of them about halfway to Lisp." Even the designers of Java didn't expect programmers to go from Lisp to Java.
- bhaak 9y ago> Going from Perl to Python in my case largely felt like trying to a run a marathon in chains. I find that not surprising. Python is geared a specific type of programmers. If Perl fits your programming, you will feel constrained by Python. Me personally, I never liked Perl that much. IMO it's not a programming language but a write-only brain dump. But Ruby is to me what Perl is to others. It's combining the power and expressiveness of Perl with a consistent OO model like Smalltalk and with a sane syntax.
- jng 9y agoAll of it probably to be taken with a grain of salt.
- phoe-krk 9y agoThe conclusion was inescapable: the problem wasn't Perl or C++ or Java, it was me. I just wasn't a very good programmer any more. Lisp's power had made me complacent, and the world had passed me by. Lisp can't help you if you're too smug for your own good. Disclaimer: I'm a Lisper.
- quintin 9y agoNon-English speaker. What does "smug" mean?
- phoe-krk 9y agoVia Google's dictionary: having or showing an excessive pride in oneself or one's achievements.
- YeGoblynQueenne 9y agoIt means "smartass".
- rkangel 9y agoNot quite. "Smartass" generally implies you go around showing off your (perceived) knowledge. "Smug" implies you sit quietly in a corner feeling good about your (perceived) knowledge.
- Can_Not 9y agoAlso smug is less specific than knowledge, it's more about thinking you're better (in some or all ways) or more well achieved. The opposite of humble.
- b2gills 9y agoI would say that smugness has almost nothing to do with knowledge, and everything to do with attitude. I have seen people being smug that they know nothing about a given subject. That is smugness is almost exclusively about “thinking you're better…”. If someone thinks they have more knowledge, or thinks they have achieved more; it is easier for them to become smug in that belief. People can also become smug even if they know that neither is true.
- Dude2023 9y agoA required thought-piece for all JavaScript devs. Enjoy monopoly while it lasts, but be humble.
- pavlov 9y agoFortunately JavaScript doesn't have the problem described by the OP: "With a secret weapon like Lisp in my arsenal in 1986 I could blow my competition out of the water with one hand tied behind my back and holding a martini in the other." A present-day JavaScript practitioner will have his left hand busy trying to figure out what's this week's fashionable way to pass around some data in this month's fashionable framework and his right hand busy trying to make npm and Webpack work, leaving no time for martinis or blowing anyone out of the water.
- tinderliker 9y ago> leaving no time for martinis or blowing anyone out of the water. Very true. Working with Javascript these days feels like jumping from one hoop to another with rarely getting any work done.
- demircancelebi 9y agoI disagree. It is true that many Javascript developers lack the formal CS education, but since it is the de facto language of the web with relatively lower barrier of entry, there are many people working on great projects. NPM is the largest package registry in the world, and whenever working on a project I find that I can solve most of the mini problems with a quick search. Jumping from framework to framework without really understanding the underlying technologies/thinking is a problem that should not be attributed to language itself, but to some of its users. Although this low barrier of entry sometimes lead the users of the language to bad results, I especially like Javascript because of its welcoming nature. One can even argue that it democratises the software creation process on Earth by allowing anyone to quickly start tinkering with it and see the results immediately, most likely in a web environment. Also, although it definitely has some quirks and may cause some frustration to starters, it also allows an experienced developer to be expressive and quickly build products, and may allow its users to enjoy their martinis.
- peteretep 9y ago> I saw people whip things up in Perl in a couple of hours that would have taken me days or weeks to do in Lisp. Perl, my first and only love.
- dozzie 9y agoMine too. Until Erlang, and now Ada. I'm building myself a harem.
- yoz-y 9y agoI started with Pascal, then learned Perl. When I was writing Pascal I was excited about stuff I could make the computer do, but pascal made me like the actual act of programming.
- larkeith 9y agoI can't tell if that's a typo or commentary on Perl.
- yoz-y 9y agoA typo... sadly it's too late to edit the comment.
- StavrosK 9y agoLooks like a typo, I think he meant: > When I was writing Pascal I was excited about stuff I could make the computer do, but Perl made me !@77 {{} #!@3 = ++ 90 x (%}[.
- kamaal 9y agoThat was not a valid example: $ perl -c /tmp/test.pl Missing right curly or square bracket at /tmp/test.pl line 1, at end of line syntax error at /tmp/test.pl line 1, at EOF /tmp/test.pl had compilation errors. $ cat /tmp/test.pl !@77 {{} #!@3 = ++ 90 x (%}[.
- watwut 9y ago> 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 something to be aware of and avoided.
- phoe-krk 9y agoYes, I agree. It's a problem much wider than just programming languages, it's an emotional issue in general. As a person who does Lisp out of enjoyment and Java/Erlang/bash for a living, it was good for me to get over the attitude of "my language is superior" and actually open up and learn a thing or two from these "inferior" languages, both when it comes to things that are worth repeating and not worth repeating. If anything, remember that Lisp, Java, Brainfuck and hundreds of other langs are all Turing-complete and therefore equivalent to one another when it comes to computability.
- incompatible 9y agoI'm interested in knowing your secret to finding inferior new things interesting.
- phoe-krk 9y agoStep one: stop considering them inferior, since something inferior cannot be interesting by definition.
- FroshKiller 9y agoI didn't post that, but I can tell you mine. It's reflecting to myself, "Maybe I'm the asshole." The new thing sucks. Or am I having a knee-jerk reaction to something unfamiliar? Maybe I'm the asshole. The new thing falls short of the old thing. Or does it have different goals from the old thing? Maybe I'm the asshole. Whoever made the decision to put the new thing in my path are out of touch and don't understand what I do or how the old thing helped. Or have they seen something that I don't see yet? Maybe I'm the asshole. Sometimes I'm the asshole. Never entertaining the possibility that one is the asshole is what makes one the asshole.
- daef 9y agoderkeiler.com gets blocked by uMatrix: the domain appears in Dan Pollocks hosts-file http://someonewhocares.org/hosts/ http://someonewhocares.org/hosts/ in the 'ads' section.
- nostalgeek 9y ago> Sun, 23 Apr 2006 I think it matters since languages like clojure are everywhere, including at Google.
- d--b 9y agoThis is from 2006 though. Since then functional programming has picked up a lot of steam again, and I'm pretty sure having been a lisper for 30 years gets you good jobs. If not in Lisp, haskell, F#, clojure or whatever...
- deleted 9y ago[deleted]
- OceansOnPluto 9y agoHe worked for Google pre-IPO and is now an angel investor and the CEO of Spark, I don't really think he's looking.
- d--b 9y agook, perhaps before talking about why a career is ruined, a pre-requisite should be that the said career is indeed ruined.
- phoe-krk 9y agoLisp isn't a functional programming language. It's multi-paradigm.
- drivebyops 9y agoMore importantly it isn’t statically typed (like F#, Haskell, etc)
- SlowBro 9y agoSo me being entrepreneurial-minded, I read this as: He was no good for the common programming languages of the day used by many employers. But if he would have struck out on his own, he would have crushed the competition who were writing page after page of code when his own one page would do just fine. Disclaimer: Not a Lisper
- stevedonovan 9y agoCf. Paul Graham's 'secret weapon' essay.
- SlowBro 9y agoWow, looks like he concluded exactly what I concluded. Cool essay. I'm into Python but I may give Lisp a whack some day. http://www.paulgraham.com/avg.html http://www.paulgraham.com/avg.html
- sahil-kang 9y agoYou might consider starting off with this classic: https://mitpress.mit.edu/sicp/ https://mitpress.mit.edu/sicp/ I should point out, though, SICP uses the Scheme dialect of Lisp. If you’re interested in Common Lisp, then maybe try: http://www.gigamonkeys.com/book/ http://www.gigamonkeys.com/book/
- Jtsummers 9y agoExcept by the end of the post he finds programmers in those “inferior” languages (by measure of verbosity which was a main criteria he used to rule them out for himself) were keeping up with him. And some, like the Perl coders, were faster than him on some tasks.
- SlowBro 9y agoThank you, I only skimmed the post.
- SlowBro 9y ago
- d3ckard 9y agoFor 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 explains language preferences. We don't choose the best tools, we choose the best tooling. And best tooling is the one which we can comfortably fit in our minds, so advanced concepts are mostly ignored and the hype wheel constantly turns. To put it shortly - smart people write better and better tools, so the rest can handle bigger and bigger projects writing mediocre code. Of course, as every programmer, I live in constant fear that I am part of the plumbing crowd waiting to be exposed.
- kbwt 9y agoReminds me of this picture entitled Life of a game programmer: https://i.imgur.com/sBih7ol.jpg https://i.imgur.com/sBih7ol.jpg
- DanielBMarkham 9y agoNerds screw up everything we touch. I don't think we mean to. Whatever the system, we make it more complicated, er featureful. Then we add an abstraction layer. Then we make that layer more complicated. Repeat and rinse. Some abstraction layers help more than they hurt, but the ratio is about 1-in-10 or so. For any given project, there are probably a dozen cool-sounding frameworks or layers, one of which is absolutely needed. The rest are there because somebody wants to be promised that even crappy programmers can use this to make cool stuff happens. The sales pitch is clear: don't become a better programmer, get a better toolkit. I have been quite fortunate to have come into computers before this cloud of marketing madness overtook us. I got to watch the layers roll out one-by-one. Honestly I have no idea how I would learn programming if I had to do it again today. It's just too much of a byzantine mess. Hell if I would start with the top layers, though. I'd rather know how to write simple code in BASIC than have a grasp of setting up a CRUD website using WhizBang 4.7 When you learn programming, well you should be learning how to program. Not how to breeze through stuff. Breezing through stuff is great when you already know what's going on -- but by the time you already know what's going on, it's unlikely you'll need the layer or framework. (Sadly, the most likely scenario is that you've invented yet another framework and are busy evangelizing it to others.) This guy's story strikes me as poignant and indicative of where the industry is. They don't care if you can solve people's problems. They care if you're one of the cool kids. It's nerd signaling.
- submeta 9y agoHonestly 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, even Perl).
- weavie 9y agoWe are getting to the stage now where a lot of languages are catching up with the features that lisp had in the 70's, so the huge benefits of lisp aren't quite as obvious as they used to be.
- flavio81 9y ago>so the huge benefits of lisp aren't quite as obvious as they used to be They still haven't caught up. I don't find any other language that gives at least 3 of these features - Fully interactive development -- i can recompile/redefine a function while the code is running - Fully interactive OOP development -- i can recompile/redefine a class while the code is running - OOP system based on multiple dispatch/multimethods - true metaprogramming done using the same language's syntax, not a special, cumbersome lib. - execution speed on par with the JVM and sometimes approaching C speed.
- Jach 9y agoYour confusion will go away once you recognize that Scheme is not Lisp. For most purposes, Lisp means Common Lisp, or one of the Lisps that ended up merging into Common Lisp. That means that Lisp does all of these things and more, which you might not expect if you've only seen Scheme/SICP: * Multi-paradigm programming (functional programming in the immutable sense is not dominant, the Lisp OOP system is top class, mutable state can be everywhere) * Rich looping mechanisms that don't require tail call contortions * Explicit typing that leads to optimized code and compile time warnings! (https://news.ycombinator.com/item?id=13389287 https://news.ycombinator.com/item?id=13389287) * Warnings at compile time (not run time!) about things like undefined functions/vars/wrong args/unused vars (https://news.ycombinator.com/item?id=14780381 https://news.ycombinator.com/item?id=14780381) * A pretty good set of libraries et al that (once you set up quicklisp) are just a function call away from trying out (https://notabug.org/CodyReichert/awesome-cl https://notabug.org/CodyReichert/awesome-cl) * (edit: one more since I like it a lot) Out of the box the Lisp system contains features you have to get from IDEs in other languages like breakpoints, tracing, inspection, code location questions like "who calls foo"... of course working with that system via emacs or something is nicer but it's basically all there in the base system (http://malisper.me/debugging-lisp-part-1-recompilation/ http://malisper.me/debugging-lisp-part-1-recompilation/)
- dmitriid 9y ago> Lisp's power had made me complacent, and the world had passed me by. This is very true, especially now. With all the available tools, and libraries, and infrastructure tools, and ..., and ..., and ... the choice of a programming language hardly matters anymore [see caveats below]. What matters is how comfortable you are working with a particular language and set of technologies you chose, and if your choices do not impede you. [caveats] Of course, you you want to crunch numbers, or work in a memory/CPU-constrained system, or develop avionics software, then your choice of programming language matters. But let's be honest: the vast majority of us don't do any of those things, and you can whip up a geographically-distributed, auto-scaling cat meme delivery system in any language in a matter of hours.
- lispm 9y agoThe eco-system largely defines the programming language to use. There are some ways to escape that and people try to do that all the time with huge costs, but on the JVM the majority of software is written in Java, on .net it is written in C# and on iOS it is Objective-c / Swift.
- OceansOnPluto 9y agoWorked at Google Pre IPO, worked at the Jet Propulsion Lab, became an Angel Investor, acquired Startups, founder and CEO of Spark Innovation Labs.... ....I hope to one day have my career destroyed as badly as this.
- user404d 9y agoMaybe he didn't leave his mark as a programmer/engineer the way HE wanted to, but you definitely have to admire his ability to identify good opportunities. He laments choosing and then using LISP for so long and in a way seems to blame the language for adversely affecting his perspective on programming, but it really seems like it served him well when it was useful. I think the same intuition that helped him choose LISP for solving problems (because it was a nice set of tools at the time) probably ended up helping him choose good professional opportunities, too. If he's frustrated about the way his perspective changed then I have to agree with the other commenters that he would need to work on changing that perspective and not remain complacent.
- garganzol 9y agoI came to Lisp (Scheme/Racket) from that another side (C++, Java, Perl) and it was an enlightening experience. Now I use Lisp nearly everywhere in a form of a small .NET runtime module. Lisp is excellent at templating tasks. Just for comparison: StringTemplate for .NET is a whooping 400 kB of compiled binary code while my implementation of Lisp is just 35 kB (!). Sure enough, Lisp does the very same thing as StringTemplate, but in just 1/10 of the code. There is more: Lisp is Turing-complete while StringTemplate doesn't. I can add a .NET function to Lisp environment and then call it in my template. I cannot do that with StringTemplate. I repeat, this is a 35 kB Lisp David vs 400 kB StringTemplate Goliath. Isn't Lisp beautiful? But wait, there is more. Lisp is excellent for natural language processing because you can intersperse a human text with Lisp. Suppose the first % character enters into Lisp mode and subsequent % character exits back to text. The example of Lisp NLP would then look like: "Hello %name%. It is time to do some math. Assume A + B = %(+ a b)%. What is the value of A when B is %b% ?" You then fill Lisp environment with desirable values: env["name"] = "David"; env["a"] = 15; env["b"] = 85; Evaluating aforementioned template will produce the following result: "Hello David. It is time to do some math. Assume A + B = 100. What is the value of A when B is 85 ?" With that tool at hand, you can build a user-configurable quiz system in no time. Or maybe a configurable Virtual Assistant. Or a chat bot. Or anything else, you name it. Lisp is small as the Universe before Big Bang. Nevertheless it provides nearly endless possibilities when you have a need, a fit and imagination for them.
- dahauns 9y ago>Lisp is Turing-complete while StringTemplate doesn't. Well...C# String interpolation is.
- garganzol 9y agoC# string interpolation is fast and preferable solution that works great at smaller scale (which is probably close to 99.99% of all use cases). Having said that, C# string interpolation is not user-configurable, and you cannot realistically use it to generate, say, 300 lines of highly sophisticated text that is a subject to frequent modifications during product development. One of the popular tasks for a larger scale templating is email generation. Text templates, HTML templates, for signup, for email confirmation, for password reset, for subscription renewal, for ... you name it. As you can see, it quickly goes wild. Not sure one would prefer string.Format() or C# string interpolation to do all of that.
- wheresvic1 9y agoOh 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 needed to crunch a lot of data fairly quickly). I would love to go back again and give it a shot - any pointers on the best way to learn/start?
- brisance 9y agohttp://racket-lang.org http://racket-lang.org
- zeveb 9y agoPractical Common Lisp[0] remains the near-standard text, I believe. It's amazingly good, and shows how useful it can be to develop one's own syntactic abstractions with the practical example of an MP3 ID3 parsing system. I can't recommend it highly enough. Peter Seibel's second book Coders at Work is also excellent. 0: http://www.gigamonkeys.com/book/ http://www.gigamonkeys.com/book/
- wglb 9y agoI agree about both. What I liked about Coders at Work are some of the questions he asked the folks. 1) Do you like/program in C++ 2) Have you read TAoCP? Knuth (interviewed last) claimed that he hadn't really read it. And only one person interviewed did. Oh, also, there seemed to be a general disdain for IDEs.
- flavio81 9y ago>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!
- pvaldes 9y ago"Training is what you do to dogs. What you should be doing with people is educating them, not training them. There is a big, big difference." big truth...
- 3chelon 9y agoHorses for courses, surely? I've never coded in Lisp except for one undergrad assignment in the early 90s... but I know it's good for functional, heavily recursive, algorithmic type problems. But the world is far messier than that and if, like me, you come from a systems or real-time programming background then Lisp basically did not exist and you were using C-based languages (or even assembler) that were close to the metal so you could code interrupt handlers, asynchronous I/O drivers and the like. Obviously trying to tackle those kinds of problems from a Lisp-centric viewpoint would seem slightly crazy, so why bother?
- Jach 9y agoSounds like you coded in Scheme, not Lisp. (https://news.ycombinator.com/item?id=16584082 https://news.ycombinator.com/item?id=16584082) Common Lisp was designed for the messy real world, it's a workhorse, even at the cost of 'prettiness' that Scheme fans like to point out as a benefit for Scheme. So it's been used (either directly or to output a lower level machine code) for all sorts of real world things like OSes (see the Lisp Machines), video games, CAD systems, Mars rovers (subject of this submission), etc... From the most basic level of syntax, something like https://github.com/TeMPOraL/cl-wiringpi2/blob/master/examples/blink.lisp https://github.com/TeMPOraL/cl-wiringpi2/blob/master/example... doesn't seem that different to me than the C equivalent I've written for embedded devices.
- 3chelon 9y agoYeah, I remember very little about it except a _lot_ of parentheses. Interesting to hear it is a lot more "real world" than I thought - seems my understanding is flawed... but equally interesting that I was unaware of it, having never once encountered it in my entire career.
- zeveb 9y agoYeah, it's crazy what a well-kept secret Common Lisp is. I keep on running across situations in other languages where Lisp has been sitting on the solution for decades (literally) and yet no-one knows! Despite how much I like it, it's really not the Platonic ideal of languages: it has its warts, and it could develop even further than it has. But as it stands it's an amazingly good language which could be used for anything from writing operating systems and device drivers to web browsers to text editors to expert systems. I really don't understand why it's not more popular.
- _mrmnmly 9y agoThe point of this article can be compared to JavaScript devs fatigue story: 1. Many JavaScript devs were focused on 'getting job done' in their current workplaces, where they were using jQuery-related stuff mostly. 2. After some time they want to change job. 3. They realize that the js market has changed (or maybe they were aware of it, but they just didn't care before/didn't have time to take a closer look before). 4. They try to keep up and learn tons of stuff to be employable as js/front-end devs (npm/webpack/js frameworks). It's just a personal opinion. I was at that point in my life before too (and realized that it was my personal cause of my js fatigue)
- YouAreGreat 9y agoHalf-seriously—but could it actually be true? Because by using a high level language most of the time, you will miss the practice it takes to effortlessly program manually what these languages automate. Between "GC, full numeric tower, CLOS, incremental development" and especially the ease of metaprogramming in Lisp, you may eventually lose the ability to perform the very programming tasks you have automated away for yourself, whenever you lose access to your own macros. The true Curse of Lisp would be that Lispers are constantly de-skilling themselves.
- wglb 9y agoHaving written a significant number of lines of assembler early in my career, I am happy to delegate the task of register allocation (an NP-complete problem) to a compiler. I don't miss that manual task, and don't think the rest of my career suffers for that. I also don't particularly miss worrying about malloc/free in my programs, nor having to write multi-precision floating point arithmetic routines.
- sedachv 9y agoThe number of Common Lisp programmers who are also ace system and assembly programmers (people like Luke Gorrie, Paul Khuong) disproves this hypothesis.
- flavio81 9y ago>The true Curse of Lisp would be that Lispers are constantly de-skilling themselves. Bollocks. You'd be surprised by seeing how many Lispers actually have great knowledge of low-level. In fact it's almost a "fashion" in the Lisp world.
- neo2006 9y agoThe biggest issue we are facing as a profession is abstractions. Most of us are good at abstracting things because this is the way we cope with complexity. But the moment we need to face that abstraction and need to understand what is hiding behind it we can reach some limit. A very common example I noticed with Java developers who use frameworks like spring, they use spring tooling to cope with code complexity and are able to put together a functional piece of code in minutes, but as soon as you get them out of the spring framework and ask them to code without using their toolbox, you can see difference between a java programmer and a "spring" programmer. One of the things I like to do in interview is giving people a piece of code in a language or at least using a library or framework they don't know and see how they cope with the complexity of it. It can tell which is just learned to use a tool and which know the basics and can adapt depending on the set of tools available
- contingencies 9y agoI have struggled with complexity my entire career. One of our key approaches for managing complexity is to 'walk away' and start fresh. Often new tools or languages force us to start from scratch which means that developers end up conflating the benefits of the tool with the benefits of the clean start. The clean start is what is fundamental. The simplest way of controlling complexity growth is to build a smaller system with fewer developers. - Terry Crowley An informed perspective: https://www.quora.com/Programming-is-all-about-managing-complexity-Do-you-agree-with-that-statement/answer/Keith-Bentley https://www.quora.com/Programming-is-all-about-managing-comp...
- otabdeveloper1 9y agoLisp isn't any more powerful than Javascript. Sorry.
- flavio81 9y ago>Lisp isn't any more powerful than Javascript. Sorry. Would you please elaborate?
- tmaly 9y agoIt reads like a tortoise and the hare story. I have only minimal exposure to Lisp, Prolog, and ML in a programming languages concepts class in the mid 90s. I really enjoyed using Prolog in the class and had an opportunity to use it professionally twice.
- kabdib 9y agoI learned C and LISP pretty much at the same time (back when rocks were young and you needed a PDP-11 if you wanted to run Unix). Then I went to college and the first course in the Computer Science major was a "killer" they taught in Pascal. Okay, so Pascal is a kind of screwed-up C, and I could deal with that. That "killer" course had a semester-long, multi-phase project that was a kind of symbolic calculator (with sets and operations on them). It was maybe a couple hundred lines of LISP . . . so I wrote a LISP interpreter in Pascal (with a garbage collector, natch), then wrote the meat of the project in LISP, embedded in the Pascal source. Was the only person in a class of 300 or so who completed the project that semester, but the professors were not amused with the approach I took. Can't imagine why :-) I've never used a functional language in production, but I've stolen LISP techniques and used them in quite a few products. I never felt frustrated by the fact that I couldn't use LISP or Scheme or whatever in <product> and had to use C/C++/Pascal/Java/C# instead, but have seen it happen in other engineers (notably when the Apple Newton switched from Dylan -- an object-oriented variant of Scheme -- to C++; there were a bunch of forlorn looking ex-Scheme hackers wandering the hallways, clutching copies of the C++ Annotated Reference Manual and trying not to cry).
- timbit42 9y agoTechnically, both Pascal and C are derivatives of Algol. Pascal is a variation on Algol. C is a screwed-up Algol.
- kabdib 9y agoPoint taken. Though "call by name" still makes me twitch :-)
- mcguire 9y agoOnce upon a time, I used to see forlorn C++ programmers wandering around clutching copies of the ARM. Those were the days.
- Vektorweg 9y agoI was a C++ fanboy, before I had to deal with Lisp in college. While Lisp itself seemed unusual with all the parentheses, it had a few good ideas I really missed in C++ . That was the point where I looked for languages similar to Lisp and that lead me to what I'm working today with: Haskell.
- coding123 9y agoUnless you truly are a one-man army - one must absolutely be paying attention to the tiobe index. Even if the worst possible language is on top, its the one language that can't "destroy your career". It's 10 times more valuable to be programming the same language in a company than be the one Lisp or D or Erlang guy that writes side programs that no one will help you maintain - and will definitely be re-written in Java when you leave.
- 77pt77 9y ago> I really detest the use of the word "training" in relation to professional activities. Training is what you do to dogs. What you should be doing with people is educating them, not training them. There is a big, big difference I feels this person's pain.
- deleted 9y ago[deleted]
- Francute 9y agoThe problem wasn't lisp... The problem was he didn't want to leave his comfort zone. You can love lisp, Smalltalk, and all those beauty languages, but you should never stick to a single language. NEVER. Go to another, look it's strenghts, and if it's a bit weak on some sides, try to use the nice techniques you learned back to make it better. To solve any problem, you can use different languages. Of course would be nice to use the nicest languages, but in some contexts they're not the right tool, and in others, you should have to consider outside factors like, how many people will maintain that software. All of them knows how to use the powers of those nice languages? Also, do you think would be easier to rotate people on that project using those languages instead of another ones? Everyone can learn to use some tool, but experience using others may help you to discover better ways to use new tools.
- 6ak74rfy 9y agoOn 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 important part of the developer experience?
- CrystalLangUser 9y agoProgramming functionally forces you to approach programming in a fundamentally different way than what you’re used to. It’s not a magic bullet. But what you learn can be used in other languages, especially things like Map, Filter, and Reduce. I totally recommend experimenting with Clojure or Haskell and implementing a project with a pure approach & immutable binding, or as much as you can.
- vzcx 9y agoYou can get good work done in Java (where good means providing value for your company), but sticking to any one language or paradigm means that you will miss out on the lessons from others. Lisp is not a pure functional language, by the way. It's very multi-paradigm and has one the best object and exception systems ever designed. Not only are all these excellent features available to you, but they are available to you at the metalevel as well.
- bluesnowmonkey 9y agoYes, probably. Get some experience with languages that are good at memory layout (C), concurrency (Erlang/Elixir), productivity (Ruby). It's eye opening. You may realize you've been hammering nails with a screwdriver your whole life.
- RivieraKid 9y agoI have experience with a lot of languages and modern Java is ok to be honest. I like Swift the most but the productivity difference is not that big.
- machiaweliczny 9y ago
- jackconnor 9y agoIt wasn't "Knowing Lisp" rather it was "not learning any other languages as the industry changed", and he still got a developer job at Google. Why is this here?
- zaro 9y agoYeah, I totally agree with the sentiment of the article. While Lisp my have been cool in the 80s, it's not the 80s anymore and nobody wants to write AST directly. No matter how powerful the technique , it's way too low level for the modern world.
- frou_dh 9y agoPecking out the ASCII tokens and punctuation of mainstream languages isn't a 'high-level' experience either. Syntax is way down the list of difficult things in the craft of programming, compared to properly understanding problem domains, internalising techniques for robustness, etc.
- deleted 9y ago[deleted]
- B1FF_PSUVM 9y ago> Java and Perl came along (and later, Python). Perl 1987, Python 1991, Java 1995 (cf. Wikipedia "first appeared" info). But yeah, the "coming along", i.e. gaining traction, may be said in that order. Minor nit, a very level-headed assessment.