5 ms·
For me it's either been emacs with a lisp (SBCL or Clojure), or C# with Visual Studio. In both cases the reasons were similar -- deep editor integration with th
by icey 8y ago
For me it's either been emacs with a lisp (SBCL or Clojure), or C# with Visual Studio. In both cases the reasons were similar -- deep editor integration with the language. Having an editor that understands how the language works and is structured makes refactoring and navigation much simpler, and makes it faster for me to author code.
That being said, most of the major editors are pretty great today. There's great support for all the top 10 languages in multiple editors, so if you want to write Go in VS Code, or Elixir in Atom, or Python in vim, you're probably going to have a good time (or at least the editor will do quite a lot for you). It's a great time to be a software developer!
- Zak 8y agoSomething that makes a big difference to me with Emacs and a Lisp relative to other languages and editors is that everything works by communicating to a running process. Need to look up function args or a docstring? It doesn't have a separate thing that statically analyzes the code. It asks the running process. Want to see what an updated function outputs? It can use the state of the running process. Trying out some other change? It doesn't have to reload anything, lose or persist state, etc... it just updates the running process and you go from there. Want that running process to be on a remote server? An Android device? A page running in a web browser? Your powerful desktop while you work from a small laptop while lying in your hammock? No problem. I don't understand why this hasn't caught on to the same degree with other languages. Most of them have REPLs and introspection tools, so they could behave this way.
- xxxdarrenxxx 8y agohttp://brackets.io/ http://brackets.io/ has a live view for basic html and css. There's a package for the nodejs ecosystem called "nodemon" https://github.com/remy/nodemon https://github.com/remy/nodemon That restarts the webserver on filechanges automatically. The former is very basic and I don't really use it, but nodemon is quite nifty.
- Zak 8y agoReload-on-change is a relatively common feature. While a lot of modern web programming frameworks and libraries don't rely heavily on in-memory state, this is very much a different experience from having your editor constantly communicating with a live process.
- nickbauman 8y agoI got a chance to program a planning / operations research solution using Clojure back in 2011. It was my first encounter with a lisp language. For the first 1-2 months I felt like my brain was being rewired. After that, other (imperative) languages looked like shadows. At first I used Counterclockwise as my IDE, but eventually switched to Emacs. I still use CCW to step debug something because it has a visual debugger, but it's rare. I used to curse at Clojure libraries out there because they had no documentation. Then I looked at the library itself and saw it was written in 25 lines of code... Documentation would just make things harder. No other language has this power with this simplicity. Sadly people can't handle the parenthesis. It's a canard. Move the open paren one word to the left and use prefix notation and you stop seeing them entirely. Give it a go!