7 ms·
Lisp is my happiness language, and everything else isn't. So for me there are really two types. Every language that's not Lisp, while obviously inferior, usua
by drblast 16y ago
Lisp is my happiness language, and everything else isn't. So for me there are really two types.
Every language that's not Lisp, while obviously inferior, usually has some domain-specific use.
I do get a huge kick out of C and assembly when I get the chance to do something low-level. It's a lot of fun to get in there and make something totally non-portable that runs 1000 times faster than the equivalent C++ program.
Getting small things done quickly used to mean Perl, but recently I've started to use Lisp for short scripts because Perl's built-in data structures are so poorly implemented. Last week I was playing around with parsing huge volumes of U.S. census data, which should have been Perl's bread and butter, but ten lines into the Perl script I missed map and nested lists so I switched to Lisp and was done in short order.
I've done a few things with Python, but nearly every design decision they made early on rubs me the wrong way.
I like Javascript for the same reasons I love Lisp. I have a feeling I'd really like Haskell if I could find the time to learn it fully.
And then there are the languages I consider to be abominations, like C++ and Java. Still, they have some great IDE's and libraries which make up for the language in some cases. I haven't gotten around to C# or F# yet. I don't know if I want to.
There are so few honestly awful programming languages. I have been forced to use a few, including Visual Basic for Applications, Matlab script, and a few other proprietary domain-specific languages that I've long since forgotten.
So three languages? Pssh. Learn as many as you can, enough to complete a useful project or two in each. After you do that, you'll realize that Lisp is the best by far and you've wasted most of your time. But at least you'll KNOW.
- KaeseEs 16y agoHow did you miss map when Perl has it? Also, when you say Perl's builtin data structures are poorly implemented, are you referring to the necessity of refs to do lists of lists and other nested structures or something else?
- loewenskind 16y agoPerl doesn't have it. It has an imitation. Since perl can't do lists of lists (you have to use what it calls "refs") if I do something like: my @list2 = map { ($_ . '', $_ += 0) } @list; I wont get a nice list of pairs but just one flat list. This is a silly limitation to have to think about when you're used to proper high level functional languages.
- KaeseEs 16y ago>>Perl doesn't have it. It has an imitation. Since perl can't do lists of lists (you have to use what it calls "refs") if I do something like: my $l = map { ($_ . '', $_ += 0) } @list; I wont get a nice list of pairs but just one flat list. This is a silly limitation to have to think about when you're used to proper high level functional languages. Well, you won't get a flat list either since you're calling map in a scalar context :) I don't see how the necessity of doing my @l = map { [$_ . "", $_ + 0] } @list; rather than my @l = map { ($_ . "", $_ + 0) } @list; is a problem with map rather than a problem with Perl's arrays and lists only being able to contain scalars.
- loewenskind 16y agoRats, you caught me before the edit. I thought I got away with it. Perl is actually (unintuitive) a strongly typed language, which is what caught me. >I don't see how the necessity of doing... Because I'm used to being able to have lists of lists and now I have to deal with "refs" everywhere. In creating, in getting the values. The given example doesn't highlight it, but imagine in instead of the simple anonymous function given there the call to map called a function that returns a list? I have to remember to turn that into a "ref" or change the function to look at context and return a "ref" itself. I may not own the function in question. The point is that these are all artificial problems that the programmer shouldn't have to give any thought to. You don't have to in Python. Not in Ruby. Not in Lisp. The only language I have to deal with this kind of limitation I can't think of off the top of my head is C (even C++ can handle lists of lists).
- berntb 16y ago>>The point is that these are all artificial problems that the programmer shouldn't have to give any thought to. Yeah, the references of Perl sucks. Just has to be learned. The Perl feature is that it is flexible. You'll get more library and language capabilities with CPAN than using anything else I know of. The disadvantage is that you have to learn quite a bit of extra stuff. It is the natural language inspiration shining through (not a mathematically elegant and minimal notation, exactly :-). I don't have three languages anymore; just now I only do Perl. This is a choice I made, because it is fun. (I consider going functional again, next. Or, if the Android competition don't work out, maybe Objective C.)
- loewenskind 16y agoI agree with much of what you've said but every language is not inferior to Lisp. I would say Haskell is on par (in some ways superior). The way I rate the power of a language is based on how many "patterns" you need when using it. For example, I find Smalltalk an extremely powerful language but it does have one weakness: dispatching on more than one type requires a pattern (e.g. double dispatch, visitor, etc.). CLOS doesn't have this limitation. But Lisp does have a pattern that Haskell doesn't have: delayed evaluation. Every time you need it you have to reach for a closure or a macro and each of these have design side effects (e.g. macros can't be used as first class functions). Haskell doesn't have this problem because delayed evaluation is how the language works by default.
- nickik 16y agoClojure has some lazy stuff but I agree that Haskell is better in some ways but Haskell has no cool makro-system. It comes down to static vs. dynamic.
- deleted 16y ago[deleted]
- plesn 16y agoHaskell has a cool macro system : template haskell. So it comes down to typing.
- deleted 16y ago[deleted]
- drblast 16y agoWhen I said every language is inferior to Lisp, I meant that in the most tongue-in-cheek way possible :-)