Posts Tagged ‘ill considered rant’

I see Yegge’s Lisp is not an Acceptable Lisp post has been submitted to reddit again. What he actually means is I don’t like Lisp.

Lisp is an Acceptable Lisp

If a Lisp has s-expressions, cons cells and atoms, it is probably an acceptable lisp even if it isn’t to you or Yegge. Emacs Lisp – fine1, cripple scheme from SICP – fine, SBCL – fine, Clojure fine. Racket fine. They’re all fine perfectly acceptable lisps.

I don’t care to dispute any of his points – none of them have anything to do with lispiness. They are just reasons he doesn’t like lisp.

A programming language doesn’t owe you anything. If I said Perl 5 is not an acceptable Perl maybe because it isn’t fast enough, or I’m not good enough to write a parser and port it to alternative runtimes people would rightly think I was crazy. Those complaints have nothing to do with what makes Perl Perl.

Ruby is not a Lisp

The related meme Ruby (or Python or Perl) is an acceptable Lisp is even more ridiculous. Roughly translated that means I don’t know what Lisp is. Yes, even if it is Norvig saying it.

I can’t [be bothered to] define precisely what makes a Lisp, but I know what it is when I see it. Ruby aint it.

I thought the X is or is not an acceptable Lisp had gone for good.

I may be a couple of years late to this rant, but it felt good to get it off my chest.

1. Obviously I have plenty of complaints, like lack of proper lexical scoping (require ‘cl hacks not withstanding) and reader macros, but it is still an acceptable, even a pretty good lisp.


Read Full Post »

1. A person with rude, clumsy manners and little refinement.

A couple of surprising attacks from Zloyrusskiy on my recent posts. I’m honour-bound to respond in kind.

Your problems with Perl programs is in not so good understanding of the language[sic]. Try to understand it[sic] principles or write your programs in python if deems[sic] more appropriate.

P.P.S. Author of post, Perl is not for you, it requires a sharp mind and intellect (and knowledge of the syntax of course). Write your programs in python and everything will be fine.

Dude, as one of the rare multilingual1 Engländers, I feel fully qualified in saying this: Your English is poor and unidiomatic. Despite this, I don’t say "Stop speaking English. Try Russian mate, English clearly doesn’t suit you". No sir. I hope you’ll improve. The more people who speak English, the better [for me].

You can use your sharp mind and intellect to draw parallels with Perl.

Second example (about numbers) i never used in my life in any language =). I can not even imagine where this might come in handy, so you worry about this.

What do you mean here? You mean you have never used a language that protected you from adding a string to an integer? Python, Lisp, C++, Java (in fact any modern statically typed language) all do this automatically. Which languages have you used?

And you missed my point. I was saying that with subroutines in any languages, you can fix things about that language that you don’t like. I used Perl for the examples, but I could have easily used C or Emacs Lisp, or Python.

Maybe I should be more explicit about what I’m trying to say. Or maybe it’s just you.

I’m perfectly comfortable with the default behaviour of Perl hashes. And sometimes I’m fine with the fact that 1 + 'banana' == 1. But when I’m writing my nuclear reactor software, I like to protect against that type of error.

Thanks for the comments and for providing material for this post.

1. I can also get by in American and Australian

Read Full Post »

It seems that Ian Eure does not understand us1.

I like to think I’m well acquainted with human laziness…

Maybe apply Occam’s Razor and attribute it to something other than laziness? Even better, trying to look at it from my point of view instead of your own.

Let’s say I’ve sent you a hello world program but it doesn’t work. What do you do? Do you a) write to me and ask me for support, or b) write your own? But this is a bit different you might say.

  1. It is more complicated than hello world, and
  2. I should have some faith in an emacs core module.

Okay then, once I’ve noticed the error, what is my next step? Do I?

  1. Try a bunch of things, figuring that maybe I’ve forgotten to setq a variable or (initialize) something.
  2. Or perhaps I try and debug the module (because we all know that debugging is the favourite programmer activity)?
  3. Do I write to the module maintainer asking what the problem is, or do I
  4. Implement my own solution?

Does he seriously not see how appealing the final option is? If he doesn’t he doesn’t understand programmer mentality very well. At a stroke I get full control over how everything works. I don’t have to wait for someone to respond to me. I don’t have to find out who to contact. I don’t need to fire up my rusty debugger. I get to work on greenfield code. Perhaps best of all, it makes a great case study into how to use comint to interact with a REPL.

And what was the downside in this case? I confused someone I don’t know2.

…but this is a species I just don’t understand.

Hmmm… nice.

So. We can agree that:

  • The UX of sql-mode is bad.
  • Nobody has clearly explained how to use it.

Given this situation, I think it’s insane to say that the correct solution is to document how to work around the bad UX.

Actually, I don’t think I even agree with the first point. And to call documenting how to make things work insane? Well, we’ve all indulged in rhetoric on the internet. No harm no foul.

But you know what? Even now it has been ‘fixed’, I’m still not going to use it. Because I’m guessing he didn’t fix the main thing that I didn’t like and also it takes effort and mine works perfectly well for me.

Thank you to commonman for your comments on Ian’s blog, although I must admit, I’m strangely warming to his point of view after this post.

1. I tried to resist the urge to respond but could not. There goes the moral high ground. I really hope that normal service will be resumed shortly.

2. Just kidding Ian. I know you’re not confused.

Read Full Post »

So Ian Eure mistrusts my code because he thinks I don’t read documentation1. Nice. In fact, I did read that page before I implemented db mode. "Fantastic" I thought, "just what I need".

select count(*)
  from person

And what is the response from emacs?

No SQL process started.

Well gee, so much for the documentation2. At this point I figure that feature doesn’t work correctly and implement my own code, the core of which takes around 10 minutes.

Please understand that I’m not blaming the sql-mode author. It is probably obvious to him (and others) that you need to start the database before you start sql-mode. And I couldn’t help him improve his documentation beforehand either as I didn’t know what the problem was.

1. What is true is that I actually don’t read it particularly well.

2. Yes, I’m aware now that it only works in the opposite order.

Read Full Post »