3 ms·
"Not smart enough to use Lisp." I hear that more often and I do not understand it. I chose Common Lisp (CL) because it is an easy language not because it's ha
by aerique 8y ago
"Not smart enough to use Lisp." I hear that more often and I do not understand it. I chose Common Lisp (CL) because it is an easy language not because it's hard (I would have chosen Haskell or C++ then).
I'm not sure I can answer your questions. While I do use CL at work for smaller jobs I've only used it for bigger personal / solo projects, so I'm not sure that counts.
About refactoring: it's not a thing that comes up very much. Not in the sense that it was a thing like when writing enterprise Java. Maybe because I try to keep my code composable I don't have to change it in many places? But this isn't limited to Common Lisp for personal projects: also bigger projects with multiple persons at work in C++, Python, etc. refactoring isn't such a big thing that I'd use it as an argument when chosing programming languages.
Also once your code settles down, when you're going from the exploratory phase to the "let's make this ready for maintenance"-phase, CL has the option to annotate functions with types. Not at the level of Haskell but close enough to catch most things.
That's what I like about CL: it's very practical and multi-paradigm. It doesn't force into a specific paradigm like object oriented or whatever fad comes next.
I never have that feeling "what did I forget?". I'm sure I do forget things, but by building up code function by function and testing those functions one gets a pretty good feel for the code base. BUT, I've never worked on CL projects with multiple people, so I get where you come from.
I love being able to use macros and the Lisp syntax is one of its main appeals to me. It is so simple and straight-forward. Algol-like languages with their curly braces, brackets, statement-ending, etc. etc. feel like such a chore. I try not to overuse macros, in fact I rarely use them but they're there when I need them and make the language very powerful and, if used correctly, more readable and easier to understand.
"Code is data" … Do you mean something like this?: http://www.moserware.com/2008/04/towards-moores-law-software-part-3-of-3.html http://www.moserware.com/2008/04/towards-moores-law-software...
I guess I've been using Lisp long enough that I don't quite get what it means but I use it automatically.
"Do you wish you had static types?" — Not really, like I said one can add garnish to the CL code to get something that is good enough, but even then I rarely use it. However, I only use it in mission-critical stuff and I don't write much of that.
- lmm 8y ago> Maybe because I try to keep my code composable I don't have to change it in many places? But this isn't limited to Common Lisp for personal projects: also bigger projects with multiple persons at work in C++, Python, etc. refactoring isn't such a big thing that I'd use it as an argument when chosing programming languages. I find refactoring is the most important part of programming; as the problem (or one's understanding of it) evolves, the code that describes it needs to evolve to match. When I worked in Python I found that I hit a wall where as my codebase got bigger, changes to my model took longer and longer to apply, because I had no way of reliably knowing what was coupled to what else; types solved that. (I like lightweight syntax but not to the extent of giving up infix operators/methods)