5 ms·
Emacs is one of those things everybody knows is good, but few take the time to learn. Over the years I've learnt quite a few languages, and what strikes me is
by FatalBaboon 13y ago
Emacs is one of those things everybody knows is good, but few take the time to learn.
Over the years I've learnt quite a few languages, and what strikes me is that they're all so very alike. You find the same features with slight syntactic changes.
At the end of the day, what really makes a difference is not which language you chose but what tools you are using. Do you have to memorize every important method or are they helping you find the documentation? What happens when something is a little broken, wait for a fix or patch the code immediately? Give up and live with it?
With Emacs, the languages change but the tool stays the same, you just extend it. In a way akin to how programming enhances my mind to be able to solve tough problems, emacs enhances my capacity to hack by letting me hack the tool itself.
Having a userbase made of people hardcore enough to learn some Lisp so they can hack their tool is just a bonus. Please keep fearing the parens!
Emacs is still being actively developed, v24.4 is in feature freeze: https://github.com/mirrors/emacs/blob/master/etc/NEWS https://github.com/mirrors/emacs/blob/master/etc/NEWS (that's 1200+ lines of changelog for 24.4)
How many pieces of software can you name that have been around for 36 years and are still kicking? Do you think it has something to do with Lisp?
- SkyMarshal 13y agoWith Emacs, the languages change but the tool stays the same, you just extend it. In a way akin to how programming enhances my mind to be able to solve tough problems, emacs enhances my capacity to hack by letting me hack the tool itself. Oblig reference to classic essay on that topic: http://www.osteele.com/posts/2004/11/ides http://www.osteele.com/posts/2004/11/ides
- nabla9 13y agoLearning something that takes time should be seen as investment. If you invest your time and effort, you want to know that your investment pays dividends in the future. I feel that Emacs is one of those tools where my investment is safe and the code I write to ~/.emacs produces huge value over several decades. It's not going away. Development community is so big that it supports all new stuff that comes along.
- actsasbuffoon 13y ago> Over the years I've learnt quite a few languages, and what strikes me is that they're all so very alike. I used to think this as well, then I learned some Prolog. For those who aren't familiar with it, Prolog is a logic programming language (as opposed to imperative and functional languages). Instead of telling Prolog how to solve a problem, you give it a set of facts and tell it what you want to know. Prolog takes care of the rest, without writing any conditionals, loops, etc. At least in theory; in my (small amount of) experience most non-trivial Prolog programs usually involve some imperative style code. Still, it's wildly different and a lot of fun. There's also lambda calculus, which is crazy, and wonderful, and absurdly difficult, and one of the most joyous experiences I've ever had. It's a language with nothing but functions applied to other functions. Even numbers are functions in lambda calculus, which has some fascinating implications. I wouldn't want to build anything non-trivial in LC, but I've learned a lot about programming as a result of studying it. Discovering how to create singly linked lists in LC using nothing but partially applied functions was a profound and emotional experience. I remember how hard I laughed when I noticed that LC's false function is the same as the Church-encoded numeral for zero. These are things most other developers don't think are funny because they have no idea what I'm talking about. I think a few of my co-workers suspect I should be institutionalized when I start talking about lambda calculus. Of course, there's also Haskell. A lot of lambda calculus is applicable to Haskell, which makes sense as Haskell descends from the ML family of languages, which in turn come from lambda calculus. Haskell doesn't look or feel like most other languages, and it makes some decisions that seem really strange at first glance. Lazy evaluation, all functions are curried, no mutable state, all functions are pure, there are no variables, no exception handling... the language sounds almost unusable. Then you learn about monads and you realize that it's trivial to add support for something that looks and feels like mutable state, except it's a system of your own design. Imagine what would happen if you could change the way variable assignment works in your language of choice. For instance, software transactional memory was originally implemented in Haskell as a monad. They didn't have to modify the language to add support. I can't think of many other languages where that's the case, and it's a thing of beauty. That's a long and rambling way to say that lots of languages are really similar, but there are some wonderful languages that are extremely different. I highly recommend experimenting with them, but be aware that your friends and co-workers are unlikely to have any idea what you're talking about. And on the off chance that they do understand, please let me know where you work. I want to work with you people.
- agumonkey 13y agoTwo thing that I found lacking for less-than-good hackers like me : - idiomatic (minor|major) mode organization (I found a book and a pdf which are old and might not represent the best way to do so) - at emacs conf, jwiegley showed some old and tiny extensions (edebug, redshank) part of his workflow. Very interesting to discover dark corners of the large emacs extensions space and how people solve problems their way.