[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: dual-language systems increase modularity

> Are you saying you didn't understand it? I'm happy to explain it if
> it wasn't clear.

No, I didn't say that.  I was just trying to parse your arguments and
did not have the time to express my questions in the concise and clear
language of Ken Shan, who already brought up some of the points that
occurred to me.  If you don't mind me sounding a little repetitious,
here's what I got out of your arguments.  (If I missed anything, then
the fault is partially mine and partially yours.)

1. Your broad claim seems to be that dynamically typed languages
   (DTLs) are _more_expressive_ than statically typed languages (STL).

2. By STL, you seem to mean the Java/C++ family of languages and
   precious little else.

3. One of the possible definitions of "more expressive" that can be
   inferred from your arguments is, "expressive" means "short and easy
   to understand".

4. In the English language, adjectives have three forms: the simple
   form like "short" (don't know the right name for this), comparative
   form like "shorter", and superlative like "shortest".  Deep in the
   guts of the Chomskian LAD hardwired in your brain, there is only
   one form: comparative.  When something is said to be "short", what
   it really means is, "shorter than something else".  By the process
   of "deletion", this deep structure is transformed into the surface
   structure "short".

   In order for me to understand you correctly, I have to reverse the
   transformation and reconstruct the deleted part.  In your argument,
   "short" seems to mean "shorter than an equivalent _Java_or_C++_
   implementation of the same idea".  Which may very well be true (for
   some measure of "true") but has no bearing on your initial broad
   claim (see #1 above).

5. "Easy to understand" really means "easier to understand than M or L
   given the prior knowledge of X, Y, and Z."  I get the impression
   that your presupposed X, Y, and Z include such things as "OOP" and
   "prototype inheritance" but not "polymorphic types" or
   "Hindley-Milner type inference", for example.

6. You could make the argument that Io is better than Java and C++ and
   is much easier to switch to than Haskell or Ocaml for the millions
   of Java/C++ programmers.  Since programming languages are a social
   phenomenon, this consideration must be factored in into the current

   That would kinda make sense to me, but I don't think that that's
   the argument you're trying to make, or is it?