- Joined
- Jan 28, 2018
Common Lisp has a lot of things that seem to match what Im interested in. Lots of flexibility and power without being dependent on importing 100 libraries of functions made by other people.
You can have that with other languages too. Just don't use the libraries. But I get what you mean. I think the main "selling points" of lisp are the REPL and the everything is a list thing (code is data and data is code), which I otherwise only know from Forth really. First thing you need to get away from is from the coding -> compiling -> executing thought process. It makes more sense to think of lisp images as living virtual machines you feed data into. That data can be functions or variables and eventually you'll understand there's no real difference between the two. You can even save the state of a machine as it is, external files not required, and start it back up later. Smalltalk does that better but it can feel even more alien if you are used to more conventional approaches. Then since once again data is code and code is data, it is trivial to write your own language (the keyword is DSL) in lisp, specialized to solve a given problem.
Good advice has been given but I cannot stress enough that you will need emacs. Emacs is basically a lisp interpreter that deals in the currency of text buffers. You can write everything in emacs. Some People will tell you emacs is bloated but once again, it makes the most sense to not see emacs as a text editor, but as a virtual lisp machine you run programs in. Emacs has slime (although I recommend using sly) which is a "plug in" with which you can connect it to lisp images and send data to them. So with emacs then, you will basically develop your program *while* it's running adding and changing functions and variables, with the direct ability to test them or to manipulate the lisp VMs internal state on the fly. It's completely different from programming in languages like C and when you master it, programming in these languages will feel clumsy and slow.
But yes, start with emacs. It comes with a lisp dialect called elisp which is very "batteries included" when it comes to everything text. The biggest difficulty will be wrapping your mind around some of the aged terms and workflows. I actually don't recommend starting with any "emacs distro" or adding too many packages to it because they add a considerable amount of complexity that will be impossible to understand if you're not used to emacs. You'll see many people ricing their emacs by adding 2482384822 packages, mostly to completely change how default emacs works but that really isn't necessary and I wouldn't recommend doing it before you actually understand bog standard emacs workflows, which in all honesty, are different from what you are probably used to, but not bad at all.
I recommend SBCL as common lisp, it's the most batteries included and up to date one in my opinion. Good luck.