Thursday, March 9. 2006
Greg on (computer) languages and religion
Greg, who always has interesting stuff to say has written this well thought out post on Programming Languages and Religion. If you aren't a code geek, don't be scared off. Just think of it as an allegorical story.
Go read it right now. I'll wait.
This brings up a few questions, mostly on the introspective side: Does Scheme count as a Lisp in this big rant? I.e. would Greg rather hire a Schemer then a Java'er? (Javer? Javanese?). What is my favourite language out of the list of languages I know? Have I shut myself off learning a new language? (Answer: yes. I need to learn Ruby. Not Ruby on Rails, but straight up Ruby. I want to get into a language with continuations again. I don't want to get into more web programming.)
So thinking about what my favourite language is, I would have to come at you with two languages, for 2 very different reasons. But first off, a list of languages where I have some degree of fluency in, so that you can get a sense of context: C, PL/B, Haskell, PHP, Scheme, Java and Javascript. I can also refactor and work with existing Python and Visual Basic. So the two favourites? This should come as no surprise: PHP and Scheme... for 2 very different reasons.
I love Scheme because its pure and its expressiveness is outstanding. What takes 10 lines in other languages takes 1 line in scheme. Even how scheme handles identifiers is slick (predicates end in a question mark, functions that modify existing data end with an explanation mark. I.e. 'integer?' tests to see if a number is an integer, 'set-car!' modifies the head of the list to a particular value). It, as I have said before, is the waffle-suit of languages.
I love PHP on the other hand because it is usable. It makes a great choice to get a simple web app done, or even a shell script. There is a variety of libraries and functions available. More often then not, it just gets out of the way and stays out of the way. PHP also happens to be the current whipping-boy-du-jour. All the fucking painful hipsters are too busy being snooty with ruby on rails, and the "Real Programmers" still think Java is the second coming of Christ (let me fucking tell you, this is hilarious; in 97, Java programmers got that treatment. What goes around neh?)
Everyone has a language they love to hate, PHP, Java, Visual Basic are all big ones, but their hate is mostly tied up in the languages they love. (Consider the Java vs. VB or ASP vs. PHP debates). But they all do not hold a candle to PL/B. Seriously. People who say these languages suck really have no idea. Okay, Visual Basic is pretty bad, but you can make it workable. You can write good code in Visual Basic. PL/B however is a plague upon this earth that must be wiped clean. I have never before seen a language that encourages shitty code like that one. You think Visual Basic teaches bad habits? HAH! PL/B is the essence of bad habits. Global variables are encouraged and abstracting code is difficult. The primary unit for code abstraction is a routine, which is like a function or procedure, except it is in the global scope. The only thing that changes is that the instruction pointer changes, and a stack is kept for return addresses. One implementation of PL/B just got actual functions, with their own scope. They also have a very odd set of rules concerning what can and cannot be done inside of said function construct.
Most people do not know how much a language can suck.
Go read it right now. I'll wait.
This brings up a few questions, mostly on the introspective side: Does Scheme count as a Lisp in this big rant? I.e. would Greg rather hire a Schemer then a Java'er? (Javer? Javanese?). What is my favourite language out of the list of languages I know? Have I shut myself off learning a new language? (Answer: yes. I need to learn Ruby. Not Ruby on Rails, but straight up Ruby. I want to get into a language with continuations again. I don't want to get into more web programming.)
So thinking about what my favourite language is, I would have to come at you with two languages, for 2 very different reasons. But first off, a list of languages where I have some degree of fluency in, so that you can get a sense of context: C, PL/B, Haskell, PHP, Scheme, Java and Javascript. I can also refactor and work with existing Python and Visual Basic. So the two favourites? This should come as no surprise: PHP and Scheme... for 2 very different reasons.
I love Scheme because its pure and its expressiveness is outstanding. What takes 10 lines in other languages takes 1 line in scheme. Even how scheme handles identifiers is slick (predicates end in a question mark, functions that modify existing data end with an explanation mark. I.e. 'integer?' tests to see if a number is an integer, 'set-car!' modifies the head of the list to a particular value). It, as I have said before, is the waffle-suit of languages.
I love PHP on the other hand because it is usable. It makes a great choice to get a simple web app done, or even a shell script. There is a variety of libraries and functions available. More often then not, it just gets out of the way and stays out of the way. PHP also happens to be the current whipping-boy-du-jour. All the fucking painful hipsters are too busy being snooty with ruby on rails, and the "Real Programmers" still think Java is the second coming of Christ (let me fucking tell you, this is hilarious; in 97, Java programmers got that treatment. What goes around neh?)
Everyone has a language they love to hate, PHP, Java, Visual Basic are all big ones, but their hate is mostly tied up in the languages they love. (Consider the Java vs. VB or ASP vs. PHP debates). But they all do not hold a candle to PL/B. Seriously. People who say these languages suck really have no idea. Okay, Visual Basic is pretty bad, but you can make it workable. You can write good code in Visual Basic. PL/B however is a plague upon this earth that must be wiped clean. I have never before seen a language that encourages shitty code like that one. You think Visual Basic teaches bad habits? HAH! PL/B is the essence of bad habits. Global variables are encouraged and abstracting code is difficult. The primary unit for code abstraction is a routine, which is like a function or procedure, except it is in the global scope. The only thing that changes is that the instruction pointer changes, and a stack is kept for return addresses. One implementation of PL/B just got actual functions, with their own scope. They also have a very odd set of rules concerning what can and cannot be done inside of said function construct.
Most people do not know how much a language can suck.
Wednesday, November 23. 2005
(lambda (anger) (spew anger))
Real languages have fucking lambda mother fucking mother fucker.
((lambda (x) (x x)) (lambda (x) (x x))) and die.
I hate PLB.
((lambda (x) (x x)) (lambda (x) (x x))) and die.
I hate PLB.
Wednesday, August 18. 2004
The most torred language of them all.
At work, I program in PL/B. I liken it to the Gaelic of comptuer languages. That is, if Cobol is Latin, Fortran is Greek, then PL/B is Gaelic. It is obscure, no one uses it, and the only people that do are complete and total freakjobs. (case in point: me)
I found out today there is a comp.lang.plb newsgroup. Here, for your viewing pleasure, are some of its contents:
Not a one.
I found out today there is a comp.lang.plb newsgroup. Here, for your viewing pleasure, are some of its contents:
- Iraqi Terrorists torture Prisoners
- My lesbian girlfriends new piercing
- I Strangled My Dog Then Fucked it
- Bin Laden Captured - photos and video
- Princess Diana Nude, Unseed Photos from The Lost Archives
- Shower Incest video Scene
- Asian Teen Bondage
- Osama Found Hanged
- Arnold Schwarzenegger Commits Suicide
Not a one.
Wednesday, August 11. 2004
MetaCircular Life
In the SICP, I have started on chapter 5, which is about building a register machine, in scheme. This is ironic. Building a low level machine in a high level language like scheme. This is compleatly opposite from what I do at work, which is build high-level systems (telephone billing reconcilliation reports, birds-eye-view-code-visualizers, etc.) in a low level language.
My life is going to colide in the following code:
PLB:
SUB 1, foobar
IF foobar = 0
GOTO baz
...
Scheme:
(sub 1 foobar)
(test foobar 0)
(goto baz)
...
The compleately and totally ironic thing, is that the for-work code, I am working very hard to remove almost every instance of goto. The for-me scheme code will start to have them, as I play around with register machines. (and already does, if you count call/cc as a goto. Which it isn't. it is instead pure sex expressed in code.)
Whoah, I just saw myself go by, in the opposite direction...
My life is going to colide in the following code:
PLB:
SUB 1, foobar
IF foobar = 0
GOTO baz
...
Scheme:
(sub 1 foobar)
(test foobar 0)
(goto baz)
...
The compleately and totally ironic thing, is that the for-work code, I am working very hard to remove almost every instance of goto. The for-me scheme code will start to have them, as I play around with register machines. (and already does, if you count call/cc as a goto. Which it isn't. it is instead pure sex expressed in code.)
Whoah, I just saw myself go by, in the opposite direction...
(Page 1 of 1, totaling 4 entries)




