Ayende @ Rahien

Unnatural acts on source code

If it is not dynamic vs. static - what is it?

I am looking for a term to describe languages like C# or Java vs. languages like Boo and Ruby. At first I thought about using the usual static and dynamic descriptions, until I remembered that Boo is a static language.

I am thinking about rigid vs. flexible languages, in terms of syntax and expressiveness.

Any comments?

Comments

Tim Wilde
12/04/2007 01:44 AM by
Tim Wilde

Extensible? It seems to me that would work quite well for Ruby and Boo, where you can "simply extend the language".

I'm not sure what the antonym for C# and Java would be though, as "inextensible" feels a little harsh.

Keith Nicholas
12/04/2007 01:53 AM by
Keith Nicholas

Strong Typing rules or Loose Typing rules

John "Z-Bo" Zabroski
12/04/2007 01:54 AM by
John "Z-Bo" Zabroski

If I recall correctly, there is actually a rant about this in one of Benjamin Pierce's books on programming languages and types. One word is generally not enough.

I'm also not sure it is productive to find just one word that compares Boo vs. C#. If Boo is anything like Groovy is to Java, then only one word comes to mind: "Complementary". Of course, that masks the real reason I write scripts in Groovy: built-in support for basic design patterns like Builder via the BuilderSupport which can be used to create expression trees.

Marcus Griep
12/04/2007 02:26 AM by
Marcus Griep

How about noting the distinction between static and dynamic compilation versus static and dynamic dispatch.

C# is static compilation and dispatch

Boo is static compilation and optionally dynamic dispatch

Rython is dynamic compilation and dynamic dispatch

Ayende Rahien
12/04/2007 02:32 AM by
Ayende Rahien

Marcus, that isn't right.

The DSL that I posted earlier had zero dynamic dispatch.

Marcus Griep
12/04/2007 02:45 AM by
Marcus Griep

True. However, note that I said optionally dynamic dispatch for boo. That's where the difference of using duck-types comes in.

And excuse my earlier typo: Rython => Python

Jimmy Bogard
12/04/2007 02:55 AM by
Jimmy Bogard

I think you're going to come up short on this one, definitions have been abused and thinned over time.

Static/dymanic

Strong/weak typing

Early/late bound

You need matrices to categorize now.

Jeremy
12/04/2007 03:56 AM by
Jeremy

Languages that your company forces you to use and that pay the bills

vs.

The mistress langugages that you'd like to be using?

Arne Claassen
12/04/2007 04:21 AM by
Arne Claassen

Not being familiar with Boo, what does it have over C# in terms of typing now that we have var? Or are its difference at this point syntax flexibility rather than compile or type related?

Eric Hauser
12/04/2007 05:18 AM by
Eric Hauser

Damn, Jeremy beat me to it. I was going to go with paycheck vs. unemployment check.

Ken Egozi
12/04/2007 06:31 AM by
Ken Egozi

Yep - Jeremy has nailed this one ;)

doesn't sound too good though, nailing the mistress ...

anyway, my comment became too long so I've just upgraded it to a post, at

http://www.kenegozi.com/Blog/2007/12/04/cool-vs-uncool-in-programming-languages.aspx

Niki
12/04/2007 09:15 AM by
Niki

How about explicit typing vs. implicit typing vs. dynamic typing?

C# supports explicit typing and (a little) implicit typing.

Boo supports implicit typing, explicit typing (although rarely neccessary) and dynamic typing.

Ruby only supports dynamic typing.

I think any categorization that throws Ruby and Boo in the same category only because their superficial similarity ("I can't see any type declarations") misses the point.

Ayende Rahien
12/04/2007 09:40 AM by
Ayende Rahien

Niki,

I am talking about the syntax of those languages, not the type system

Luke Breuer
12/04/2007 01:54 PM by
Luke Breuer

Compile-time extensible? Syntax-extensible? Symbolic preprocessor? (The last probably isn't technically true, because you're interacting with the compiler and its AST (if I understand Boo correctly), but it might prompt "correct enough" images in people's heads, at least those familiar with the very textual C/C++ preprocessors.)

Jay R. Wren
12/04/2007 03:02 PM by
Jay R. Wren

dynamicly typed languages are not necessarily dynamic languages.

there are three similar word combinations which mean 3 very different things:

"Dynamic typing", "dynamic language", "dynamic programming". Wikipedia has all three defined very well as I recall from my computer science education.

I do call boo a staticly-typed dynamic language". Now, with 3.0 I call C# a staticly-typed dynamic language. I would just say that boo is more dynamic than C#.

John Radke
12/04/2007 03:46 PM by
John Radke

What about the syntax are you trying to categorize? The first thing I thought of was braces versus non-braces, or C-like versus non-C-like.

Ayende Rahien
12/04/2007 04:11 PM by
Ayende Rahien

Yes, absolutely, that is critical issue when talking about rigid vs. malleable languages

Nis Wilson Nissen
12/04/2007 07:04 PM by
Nis Wilson Nissen

Hi,

Perhaps you have already seen it, but there is a video devoted to this subject on channel9 with Bob Martin (Uncle Bob) and Chad Fowler:

http://channel9.msdn.com/Showpost.aspx?postid=350187

The video was recorded during this years JAOO conference.

Cheers,

Nis

Comments have been closed on this topic.