From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (from majordomo@localhost) by pauillac.inria.fr (8.7.6/8.7.3) id IAA18103; Wed, 7 Nov 2001 08:20:54 +0100 (MET) X-Authentication-Warning: pauillac.inria.fr: majordomo set sender to owner-caml-list@pauillac.inria.fr using -f Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id IAA17764 for ; Wed, 7 Nov 2001 08:20:52 +0100 (MET) Received: from c0mailgw04.prontomail.com ([216.163.180.10]) by concorde.inria.fr (8.11.1/8.10.0) with ESMTP id fA77Kpf17965 for ; Wed, 7 Nov 2001 08:20:51 +0100 (MET) Received: from C6SERVICE10.prontomail.com (216.163.178.10) by c0mailgw04.prontomail.com (NPlex 5.5.029) id 3BD60CD10026BD9D for caml-list@pauillac.inria.fr; Tue, 6 Nov 2001 23:14:02 -0800 Received: from XENO (148.63.81.195) by C6SERVICE10.prontomail.com (NPlex 5.5.015) id 3BC2BEE0000A2258 for caml-list@pauillac.inria.fr; Tue, 6 Nov 2001 23:14:01 -0800 Message-ID: <001e01c1675c$a4b3e630$0401a8c0@XENO> Reply-To: "Eric Newhuis" From: "Eric Newhuis" To: Subject: [Caml-list] Jihad Date: Wed, 7 Nov 2001 01:20:09 -0600 MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_NextPart_000_001B_01C1672A.57825090" X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2600.0000 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2600.0000 Sender: owner-caml-list@pauillac.inria.fr Precedence: bulk This is a multi-part message in MIME format. ------=_NextPart_000_001B_01C1672A.57825090 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable I want to send this to my engineering staff but would like someone to = comment on what I claim here. I don't want to mis-represent the ocaml = language or the intentions of those who harbour it. I wrote this as if = I speak from authority. But in reality I am a novice. My true = intentions are to help spread the good news about what I think could = become a major paradigm shift. Sincerely, Eric Newhuis CTO FutureSource --begin-- This slide show is a must read because it discusses the ML language's = type system which is arguably the best in the world. I've been writing = trivial programs in Objective Caml, an ML dialect, and have been = surprised how much it helps one craft code. So I was really excited = when I came across this slide show that relates C, ML, and Perl. =20 http://perl.plover.com/yak/typing/ =20 So the next time you hear me praising "strongly typed languages" and = attacking Perl you'll know what I'm talking about. =20 Perl, SQL, Javascript, Python, and a hoard of other languages brush = problems under the rug. You can appear to have accomplished good work = only to discover later, long after the product has been deployed, that = something still stinks. =20 What aggravates me the most is the ignorance of the software development = community in the USA. One of the best features of modern software = development practices has simply been overlooked by our American tool = vendors (up until now? See below.). I suppose there is no demand for = what I'm going to describe here because most of us are ignorant of the = benefits. So maybe I can help build that demand by passing on this = cutting-edge information to this group. =20 =20 Strongly typed languages are your friend? =20 As programming languages have evolved, attempts at type systems = implemented in Pascal, C, and C++ made declarations more complex than = necessary. Perl mongers have been quick to point out that it is much = harder to type type-safe code. And I concur that C++'s template syntax = is one of the most disgusting uses of ASCII characters. But the = designers of C++ had little choice because of C++'s roots in earlier = mistakes--i.e. C. =20 Recently Java has decided to join the ranks of C++ template syntax = lemmings. But Java, to the best of my knowledge, is actually going to = make the problem worse than that in C++ because one will not be allowed = to provide aliases for complex type descriptions. =20 =20 Simple, and yet strong? =20 ML proves that type-safety can be simultaneously easier to code and yet = more powerful than dynamically typed languages and inferior = strongly-typed languages. Complexity arguments just don't hold up. =20 I've heard other arguments that languages like Perl, because they allow = slop engineering practices more closely map to the real world because = the real world is also full of a lot of slop. =20 This is bull. =20 Software, because it is so pliable, should represent our exact = engineering intentions and our tools should help us enforce those = intentions as much as is currently possible before we deploy our = systems. =20 The true professional will understand the merits of what I am demanding. = Languages like C and Perl will not stand the test of time. They will = fade into obscurity as more powerful engineering tools take center = stage. =20 We should stand up and demand better engineering tools from our tool = vendors. After all, our users have the right to intentionally-designed = products. We ought to be able to demonstrate that the code we create = will actually work without running it in every possible combination of = use cases. =20 =20 An Early Hope? =20 Microsoft's .NET platform may play the role of catalyst in this Jihad. = For finally we may see theoretically superior research-grade languages = make their way into the mainstream with a newfound ability to use a = common library platform (i.e. Microsoft's platform). Once developers = see the benefits of stronger type systems and higher-level polymorphism = they will avoid C and Perl like our predecessors learned to avoid = assembly language in favor of FORTRAN and Pascal. =20 Microsoft R&D has pumped some money into ObjectiveCaml research. They = did so in order to extend the reach of .NET's Common Language Runtime. =20 If you learn only one "alternative language" (as Dr. Dobbs magazine put = it) in your lifetime, then I urge you to study ML or Objective Caml. = Use of these languages will reduce time to market and eliminate most = failures of your code to, as one University of Illinois professor put it =20 "obey the principle of least astonishment". =20 =20 Be Fair to Perl? =20 To be fair I must admit that Perl has a lot of neat tricks. Being a = conglomeration of a diverse toolset enables the language to perform = mixed-paradigm feats that bland languages like C must delegate to = platform-specific libraries. So there is still a lot one can learn from = Perl. =20 So when you want to perform tricks and you feel like a magician, go = ahead and use Perl. And when you feel like an engineer, use = ObjectiveCaml or some other ML dialect. But remember that magicians are = only concerned with appearances. Engineers are after the loftier goal. =20 =20 Evidence that ObjectiveCaml Works? =20 Check out http://dada.perl.it/shootout/ for some excellent language = comparisons. If you give CPU time, lines of code per intention, and = memory footprint equal weights then ObjectiveCaml reigns supreme over = all other languages. If all you care about is CPU time then = ObjectiveCaml sits between C and C++. Amazing? No, just proof that = strongly-typed languages rule. =20 A number of successful commercial applications have been developed in = ObjectiveCaml. NBC uses it in a web site: http://shopping.nbci.com. = For a better list check out http://caml.inria.fr/users_programs-eng.html = and http://caml.inria.fr/hump.html. (Although cool, the ObjectiveCaml = port of the DOOM game engine doesn't count because DOOM has been ported = to everything.) =20 Some of the standard ObjectiveCaml library modules include = Perl-compatible regular expressions, shell interfaces, XML, XSLT, XPATH, = cryptography, web servers and clients, message queuing, = xml-to-unix-man-page (what!?!?!), a graphical CVS front end, an = Emacs-like editor, 3D graphics, signal processing, file system = synchronization, LaTeX stuff (who cares?), COM and CORBA, a web proxy, = mail client, parallel computing, lots of TCP/IP stuff, generative = techniques, gobs of complex data structures--not just the stupid simples = ones like linked lists and sets but Splay trees, Tries, and other exotic = things, Postgresql, ODBC, MySQL, Java & C++ interfaces, scientific and = numerical computing, "here" docs, ZIP/Jar/GZ libraries, etc. =20 =20 Lastly? =20 I didn't intend to convince you all to turn in your C++ compilers. Nor = do I want to bash Perl to a pulp. I do, however, want us to keep our = minds open and be ready to move if and when the paradigm shifts. I = wouldn't mention this stuff if I didn't think it would help us to = compete. I strongly believe that the ML family of languages can some = day help us cut our development costs at least in half. See? It really = is all about oil. ------=_NextPart_000_001B_01C1672A.57825090 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable

I want to send this to my engineering staff but = would like=20 someone to comment on what I claim here.  I don't want to = mis-represent the=20 ocaml language or the intentions of those who harbour it.  I wrote = this as=20 if I speak from authority.  But in reality I am a novice.  My = true=20 intentions are to help spread the good news about what I think could = become a=20 major paradigm shift.

 

Sincerely,

Eric Newhuis

CTO

FutureSource

 

 

--begin--

 

This slide show is a must read because it discusses = the ML=20 language's type system which is arguably the best in the world.  I've been writing trivial = programs in=20 Objective Caml, an ML dialect, and have been surprised how much it helps = one=20 craft code.  So I was = really excited=20 when I came across this slide show that relates C, ML, and = Perl.

 

http://perl.plover.com/yak/typing/

 

So the next time you hear me praising "strongly = typed=20 languages" and attacking Perl you'll know what I'm talking=20 about.

 

Perl, SQL, Javascript, Python, and a hoard of other = languages=20 brush problems under the rug.  = You=20 can appear to have accomplished good work only to discover later, long = after the=20 product has been deployed, that something still=20 stinks.

 

What aggravates me the most is the ignorance of the = software=20 development community in the USA. =20 One of the best features of modern software development practices = has=20 simply been overlooked by our American tool vendors (up until now?  See below.).  I suppose there is no demand = for what=20 I'm going to describe here because most of us are ignorant of the = benefits.  So maybe I can help build that = demand by=20 passing on this cutting-edge information to this=20 group.

 

 

Strongly typed languages are your=20 friend?

 

As programming languages have evolved, attempts at = type=20 systems implemented in Pascal, C, and C++ made declarations more complex = than=20 necessary.  Perl mongers = have been=20 quick to point out that it is much harder to type type-safe code.  And I concur that C++'s = template syntax=20 is one of the most disgusting uses of ASCII characters.  But the designers of C++ had = little=20 choice because of C++'s roots in earlier mistakes--i.e.=20 C.

 

Recently Java has decided to join the ranks of C++ = template=20 syntax lemmings.  But = Java, to the=20 best of my knowledge, is actually going to make the problem worse than = that in=20 C++ because one will not be allowed to provide aliases for complex type=20 descriptions.

 

 

Simple, and yet = strong?

 

ML proves that type-safety can be simultaneously = easier to=20 code and yet more powerful than dynamically typed languages and inferior = strongly-typed languages. =20 Complexity arguments just don't hold = up.

 

I've heard other arguments that languages like = Perl, because=20 they allow slop engineering practices more closely map to the real world = because=20 the real world is also full of a lot of = slop.

 

This is bull.

 

Software, because it is so pliable, should = represent our=20 exact engineering intentions and our tools should help us enforce those=20 intentions as much as is currently possible before we deploy our=20 systems.

 

The true professional will understand the merits of = what I am=20 demanding.  Languages like = C and=20 Perl will not stand the test of time. =20 They will fade into obscurity as more powerful engineering tools = take=20 center stage.

 

We should stand up and demand better engineering = tools from=20 our tool vendors.  After = all, our=20 users have the right to intentionally-designed products.  We ought to be able to = demonstrate that=20 the code we create will actually work without running it in every = possible=20 combination of use cases.

 

 

An Early Hope?

 

Microsoft's .NET platform may play the role of = catalyst in=20 this Jihad.  For finally = we may see=20 theoretically superior research-grade languages make their way into the=20 mainstream with a newfound ability to use a common library platform = (i.e.=20 Microsoft's platform).  = Once=20 developers see the benefits of stronger type systems and higher-level=20 polymorphism they will avoid C and Perl like our predecessors learned to = avoid=20 assembly language in favor of FORTRAN and = Pascal.

 

Microsoft R&D has pumped some money into = ObjectiveCaml=20 research.  They did so in = order to=20 extend the reach of .NET's Common Language = Runtime.

 

If you learn only one "alternative language" (as = Dr. Dobbs=20 magazine put it) in your lifetime, then I urge you to study ML or = Objective=20 Caml.  Use of these = languages will=20 reduce time to market and eliminate most failures of your code to, as = one=20 University of Illinois professor put it

 

     =20 "obey the principle of least = astonishment".

 

 

Be Fair to Perl?

 

To be fair I must admit that Perl has a lot of neat = tricks.  Being a = conglomeration of a=20 diverse toolset enables the language to perform mixed-paradigm feats = that bland=20 languages like C must delegate to platform-specific libraries.  So there is still a lot one = can learn=20 from Perl.

 

So when you want to perform tricks and you feel = like a=20 magician, go ahead and use Perl.  = And when you feel like an engineer, use ObjectiveCaml or some = other ML=20 dialect.  But remember = that=20 magicians are only concerned with appearances.  Engineers are after the = loftier=20 goal.

 

 

Evidence that ObjectiveCaml=20 Works?

 

Check out http://dada.perl.it/shootout/ for some = excellent=20 language comparisons.  If = you give=20 CPU time, lines of code per intention, and memory footprint equal = weights then=20 ObjectiveCaml reigns supreme over all other languages.  If all you care about is CPU = time then=20 ObjectiveCaml sits between C and C++. =20 Amazing?  No, just = proof that=20 strongly-typed languages rule.

 

A number of successful commercial applications have = been=20 developed in ObjectiveCaml.  = NBC=20 uses it in a web site: =20 http://shopping.nbci.com.  = For a better list check out = http://caml.inria.fr/users_programs-eng.html=20 and http://caml.inria.fr/hump.html. =20 (Although cool, the ObjectiveCaml port of the DOOM game engine = doesn't=20 count because DOOM has been ported to = everything.)

 

Some of the standard ObjectiveCaml library modules = include=20 Perl-compatible regular expressions, shell interfaces, XML, XSLT, XPATH, = cryptography, web servers and clients, message queuing, = xml-to-unix-man-page=20 (what!?!?!), a graphical CVS front end, an Emacs-like editor, 3D = graphics,=20 signal processing, file system synchronization, LaTeX stuff (who = cares?), COM=20 and CORBA, a web proxy, mail client, parallel computing, lots of TCP/IP = stuff,=20 generative techniques, gobs of complex data structures--not just the = stupid=20 simples ones like linked lists and sets but Splay trees, Tries, and = other exotic=20 things, Postgresql, ODBC, MySQL, Java & C++ interfaces, scientific = and=20 numerical computing, "here" docs, ZIP/Jar/GZ libraries,=20 etc.

 

 

Lastly?

 

I didn't intend to convince you all to turn in your = C++=20 compilers.  Nor do I want = to bash=20 Perl to a pulp.  I do, = however, want=20 us to keep our minds open and be ready to move if and when the paradigm=20 shifts.  I wouldn't = mention this=20 stuff if I didn't think it would help us to compete.  I strongly believe that the ML = family of=20 languages can some day help us cut our development costs at least in = half.  See?  It really is all about=20 oil.

------=_NextPart_000_001B_01C1672A.57825090-- ------------------- Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/ To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr