4 ms·
When I read things like the second paragraph above, I start to wonder if maybe I am actually a terrible programmer because I only ever learned what you might ge
by xp84 3y ago
When I read things like the second paragraph above, I start to wonder if maybe I am actually a terrible programmer because I only ever learned what you might generously call “applied computer science” aka only the languages commonly used in typical workplaces (Java, PHP, Ruby, JS) and none of the CS classics. Does anyone else without the so-called ‘academic’ languages foundation ever feel this way when you see people on HN always writing about Lisp and its peers?
- zsh_89 3y agoNo, I say you won't get too much by learning LISP. I was attracted to LISP-related topic by similar arguments; looking back now, I found those argument at least not true for me. You WILL get very interesting ideas and concepts, it's fun, basically, that's it. + You won't solve problem faster than your colleges with solid competitive programming background; + you won't be able to optimize the code and cut 30% of your company's server cost, + you won't feel comfortable to read real-world complex project code, + you won't get some domain-specific knowledge to solve problems you previously can't solve. + ..... It won't make you a better problem solver; at least its impact is way smaller than pick up go/rust/cpp/java and carefully try implement challenge like: https://github.com/codecrafters-io/build-your-own-x https://github.com/codecrafters-io/build-your-own-x
- vipermark7 3y agoI also wish I would have studied classical CS in college. However, I was sick most of the time, and there were half a dozen weed-out classes, so the computer science courses I did take were non-major courses to supplement a GIS degree. GIS is certainly interesting in its own ways, and it taught me some visualization and design skills, but I wish it would have been possible for me to learn more of what's going on under the hood of the massive libraries and high-level languages I use every day as a professional "software engineer"
- 2143 3y agoMe too. So I decided to learn SICP on my own. I already have the book, so I'll watch the MIT lectures of the original authors available online, and try to make progress. I'm not in any hurry to complete it anytime soon.
- gglitch 3y agoI think I had the inverse experience. I started with Lisp because I was customizing and extending Emacs. As I self-taught programming from that point forward, most other languages have sooner or later frustrated me with inexplicable inconsistencies with the syntax and data model. Lisp, Tcl, and Prolog all clicked into place quickly and easily, and for everything else, I'm constantly referring to a guide to the syntax. Not that big a deal, but feels internally like at best sort of a head-scratcher. None of this has anything to do with academic computer science. I think I'm just unusually bad at memorizing syntax.
- ign0ramus 3y agoYou're probably not. Programming in lisp,back in my college days, felt enlightening. I remember flying through quiet complex projects with a clarity that I've rarely experienced in my professional career. I do yearn for those days when I'm deep within a nonsensical "enterprise" Java codebase or a messy frontend codebase but I don't think Lisp made me an objectively "better" programmer. There is enough imposter syndrome in this industry as it is. If you ever want to, pick up SICP or "How to design programs", you'll probably find them interesting but don't expect to find programming nirvana.
- tigen 3y agoChapter 1 of the SICP book says that the main reason it uses Lisp is its convenience in manipulating procedures as data. There is a "JavaScript Edition" of SICP. The preface says ECMAScript 2015 enabled a close match by adding lambda expressions, tail recursion, and block-scoped variables and constants. It doesn't mention much downside except that JavaScript's "rigid syntactic structure complicated the implementation" of some programming language design book material.
- scj 3y agoI had the same prof for several courses. His exams were pretty straight forward, but always contained a "tough question". In order to get that tough question, you could carefully read the book, read his assignment solutions, and pay close attention to his caveat warnings in lectures... One of the three would typically contain the tough question. Or, you could just read the book, do the assignments, and accept ~95% on the final exam as a maximum grade. A ~95% cap, for a lot less work, is a good deal. Taking the deal is probably the right call for most people. That being said, the thing I wish someone explained well is how amazing lambdas can be. I understood the benefits of list/array/stream processing on first glance, but it took a few years before I really understood the practical application of lambdas.
- xedrac 3y agoWell you had a nice professor. Mine would have a few "tough questions" that accounted for 50% of your grade. It forced you to know everything inside and out if you hoped to pass.