* Re: When functional languages can be accepted by industry? @ 2000-04-20 12:45 Gerd Stolpmann 2000-04-21 19:56 ` John Max Skaller 0 siblings, 1 reply; 67+ messages in thread From: Gerd Stolpmann @ 2000-04-20 12:45 UTC (permalink / raw) To: caml-list On Mon, 17 Apr 2000, John Prevost wrote: >Perl has it's problems, and the quality of modules varies >immensely--but when I find a module, I can install it and try it out >in about 20 seconds. That lets me get on to the more important >problems of writing code. I had the simplicity of installing a Perl module in mind when I designed findlib. But of course the approach is different, mostly because Perl's loader works completely dynamically, but for OCaml the order of linking/loading must be determined at compile/link time. >While this sort of thing might, by a number of arguments, not be the >sort of thing that should be considered part of the "core language", >I'd like to argue that such an official blessing would be enough to >get people to start using the tools consistantly, rather than >everybody doing things their own way. And it's only when everybody's >working in approximately the same way that this kind of simplicity of >working with third-party modules becomes possible. I agree, but it is hard to achieve. The first problem are the different "development" environments ( - an industrial term, better we say build environment); there is some lowest common denominator for Unix systems (make; file commands such as cp, mv, rm; text tools such as sed) but the Windows and Macintosh worlds are completely different, and most people running these systems do not have build environments. I would say: let's begin with realistic goals, and that would be presuming the Unix-like environment. Another problem is that the command-line interface of the OCaml compilers has a too low abstraction niveau. It is more or less what a C compiler provides; the difference is that reusing components was never a goal of the C language, so I think that the CLI should be improved to better support components. Findlib is my suggestion for this. You can simply link your program with add-on components by naming the components, i.e. you specify *what* you want and not *how* the compiler should proceed to get the result. For example, ocamlc -o program -package x,y -linkpkg program.ml compiles program.ml and links it with the components x and y. You need not to specify - where the components are installed - which files must be linked - which components must be additionally linked because x or y need them (directly or indirectly) - if there is a dependency between x and y, you need not to specify the linking order - additional system libraries Findlib finds it for you. On the first glance, this looks just like being some luxury that is not really necessary. I am currently working on an (industrial) project where an OCaml module is part of a bigger program. Typically, the sources are compiled with something like ocamlc -package markup,netstring,str,unix,dynlink,pcre ... which is much more descriptive than ocamlc -I /opt/ocaml-2.04/site-lib/markup -I /opt/ocaml-2.04/site-lib/netstring -I /opt/ocaml-2.04/site-lib/pcre markup.cma str.cma netstring.cma unix.cma dynlink.cma pcre.cma -cclib -lpcre -cclib -lunix -cclib -lstr ... and also more portable; you can simply compile without having to know where all the necessary packages are installed on a particular system. I think it is not luxury, it is a necessary abstraction that simplifies notation and hides the peculiarities of the system installation. I think, these points are important for industrial usage, too (note that Findlib resulted (partly) from personal experience in industrial development). Of course, the current Findlib implementation has some weaknesses. First, it is not integrated into the compilers. That is not a big problem, but you must in fact write ocamlfind ocamlc -o program -package x,y -linkpkg program.ml - the extra "ocamlfind" is the command that transforms the new options such as -package into traditional options. - There is another problem with missing integration, as Findlib tries to find out the configuration of an OCaml system when it is compiled itself. For example, Findlib must know if POSIX or bytecode-only threads are used, and it inspects the files in the stdlib directory for this purpose. This may not work with future OCaml versions. Second, Findlib depends a bit (but not much) on Unix. This is simple to fix (for the Findlib core). Third, Findlib cannot handle name clashes. If the same (toplevel) module M occurs in two components x and y, and component z refers to M, findlib normally knows which M is meant (because it knows the module on which z depends), but it has no chance to tell the linker its knowledge. If the linker knew the component dependencies the linker could almost always resolve name clashes in the right way. Furthermore, Findlib does not address at all: - Versioning components. You cannot refer to specific versions of components, because I have no idea how this could be semantically cleanly solved. Especially, this seems to be in contradiction with automatic dependency analysis. - The build process. You need a "make" tool, and Findlib does not support you in writing Makefiles. Especially, at least conventions about the latter would be necessary to get a standard installation procedure for OCaml components. >Mmm. I actually have one minor gripe about the I/O stuff--not being >able to turn a set of functions into an in_channel or out_channel has >bit me a number of times. It's not so bad, until you want to do >something like implement an encrypting network stream and then use >stuff from Printf to write to it. Interesting idea, and not very expensive, because the basic I/O operations are normally performed for bigger chunks. Perhaps in/out_channel should be defined as classes such that you can easily define a new implementation. The old functional style could be retained, i.e. let output chan buff ofs len = chan # output buff ofs len and so on for all basic functions. This means that you CAN take advantage from the new class-based channel definition, but you can also continue preferring the functional style. >I think that if you took something like, say, Findlib, and asked if >you could integrate it into O'Caml, you'd discover at least a few >people who would make time to go over things looking for issues and >warts to clean up. It's hard to be enthused if it's not going to be >"official". > >Even though I've been waiting for a good solution for consistent >handling of third party modules almost as long as I've been using >O'Caml, the fact that only a few people use findlib cuts down on its >usefulness to me. If Findlib were accepted into O'Caml, I would go >out of my way to send findlibifying patches to authors of various >packages, instead of just getting depressed. I have no objections to the integration of Findlib into the OCaml core. Perhaps it is possible to make it at least "semi-official". I can put the sources into the CVS tree, and the distribution tarball could be downloadable from the Caml FTP server. It would be still a separate distribution with separate responsibility, but it looks like the "preferred" way of handling components; comparable to camltk or camlp4. But this is only a suggestion. Perhaps people want a different tool? I do not know. I designed Findlib primarily for my own problem constellation; and although I think it is quite general, other people might have different priorities (for example, versioning might be more important than handling component dependencies). Gerd -- ---------------------------------------------------------------------------- Gerd Stolpmann Telefon: +49 6151 997705 (privat) Viktoriastr. 100 64293 Darmstadt EMail: Gerd.Stolpmann@darmstadt.netsurf.de (privat) Germany ---------------------------------------------------------------------------- ^ permalink raw reply [flat|nested] 67+ messages in thread
* Re: When functional languages can be accepted by industry? 2000-04-20 12:45 When functional languages can be accepted by industry? Gerd Stolpmann @ 2000-04-21 19:56 ` John Max Skaller 2000-04-22 18:30 ` Gerd Stolpmann 0 siblings, 1 reply; 67+ messages in thread From: John Max Skaller @ 2000-04-21 19:56 UTC (permalink / raw) To: Gerd.Stolpmann; +Cc: caml-list Gerd Stolpmann wrote: > But this is only a suggestion. Perhaps people want a different tool? I do not > know. My feeling is that Findlib is an excellent tool, but we really need something a lot more seamless. Perhaps the first, and simplest step, is to augment the notion of 'path' from a list of directories to search for a module A, to the notion that we can navigate the file system _tree_ looking for 'nested' module name such as D1.D2.B. What I envisage is that 'opening' a module which turns out to be a directory is some special file, plus the modules in that directory. These 'nested' modules are written 'as if nested in their parent'. In other words, this compilation model is a 'lexical convention' for writing (* module top *) (* .. code for top .. *) module submod1 = .. module submod2 = ... Just as there is a convention that a 'plain' *.ml file is a top level module, a directory represents a special module whose primary function is namespace control. This requires a change to the compiler I think. It is not a total package control mechanism, but it alleviates the namespace pollution problem, and makes the files of a package easier to install using a directory tree (perhaps using symbolic links ..). BTW: it isn't clear whether the directory's module file (called __init__.py in python) is a good idea. -- John (Max) Skaller, mailto:skaller@maxtal.com.au 10/1 Toxteth Rd Glebe NSW 2037 Australia voice: 61-2-9660-0850 checkout Vyper http://Vyper.sourceforge.net download Interscript http://Interscript.sourceforge.net ^ permalink raw reply [flat|nested] 67+ messages in thread
* Re: When functional languages can be accepted by industry? 2000-04-21 19:56 ` John Max Skaller @ 2000-04-22 18:30 ` Gerd Stolpmann 2000-04-23 3:20 ` John Max Skaller 0 siblings, 1 reply; 67+ messages in thread From: Gerd Stolpmann @ 2000-04-22 18:30 UTC (permalink / raw) To: John Max Skaller, caml-list On Fri, 21 Apr 2000, John Max Skaller wrote: >Perhaps the first, and simplest step, is to augment the notion >of 'path' from a list of directories to search for a module A, >to the notion that we can navigate the file system _tree_ looking >for 'nested' module name such as D1.D2.B. The problem is that the pseudo modules D1 and D1.D2 do not have signatures (or better: they do not have a fixed signature) because you can always put another module into the directory. Would you allow then something like module M = D1 ? What is the signature of M? - M can occur in another signature, making things complicated. >What I envisage is that 'opening' a module which turns out to >be a directory is some special file, plus the modules in >that directory. These 'nested' modules are written 'as if nested >in their parent'. > >In other words, this compilation model is a 'lexical convention' >for writing > > (* module top *) > (* .. code for top .. *) > module submod1 = .. > module submod2 = ... > >Just as there is a convention that a 'plain' *.ml file is a top >level module, a directory represents a special module whose primary >function is namespace control. > >This requires a change to the compiler I think. It is not a total >package control mechanism, but it alleviates the namespace >pollution problem, and makes the files of a package easier to install >using a directory tree (perhaps using symbolic links ..). See also the thread "Module hierarchy revisited" (December 1999): http://caml.inria.fr/caml-list/2071.html http://caml.inria.fr/caml-list/2082.html http://caml.inria.fr/caml-list/2091.html http://caml.inria.fr/caml-list/2093.html There was never a reply from the Caml team. -- ---------------------------------------------------------------------------- Gerd Stolpmann Telefon: +49 6151 997705 (privat) Viktoriastr. 100 64293 Darmstadt EMail: Gerd.Stolpmann@darmstadt.netsurf.de (privat) Germany ---------------------------------------------------------------------------- ^ permalink raw reply [flat|nested] 67+ messages in thread
* Re: When functional languages can be accepted by industry? 2000-04-22 18:30 ` Gerd Stolpmann @ 2000-04-23 3:20 ` John Max Skaller 0 siblings, 0 replies; 67+ messages in thread From: John Max Skaller @ 2000-04-23 3:20 UTC (permalink / raw) To: Gerd.Stolpmann; +Cc: caml-list Gerd Stolpmann wrote: > > On Fri, 21 Apr 2000, John Max Skaller wrote: > > >Perhaps the first, and simplest step, is to augment the notion > >of 'path' from a list of directories to search for a module A, > >to the notion that we can navigate the file system _tree_ looking > >for 'nested' module name such as D1.D2.B. > > The problem is that the pseudo modules D1 and D1.D2 do not have > signatures (or better: they do not have a fixed signature) > because you can always put another module into the directory. So give them signatures! More precisely: it may be necessary to _compile_ directories to get *.cmi files for them. This makes sense, it is analogous to compiling a text file. I am making a simple suggestion: allow a directory to work 'as if' it were a text file containing the contents of the directory as nested module declarations. You are right then, that the compilation model would require actually compiling the interface and module 'of' the directory. The main difference is how the programmer 'edits' this module: it is by placing files in the directory rather than with a 'text editor'. -- John (Max) Skaller, mailto:skaller@maxtal.com.au 10/1 Toxteth Rd Glebe NSW 2037 Australia voice: 61-2-9660-0850 checkout Vyper http://Vyper.sourceforge.net download Interscript http://Interscript.sourceforge.net ^ permalink raw reply [flat|nested] 67+ messages in thread
* Re: When functional languages can be accepted by industry? @ 2000-04-17 22:24 bdb-as-camluser 0 siblings, 0 replies; 67+ messages in thread From: bdb-as-camluser @ 2000-04-17 22:24 UTC (permalink / raw) To: Xavier.Leroy; +Cc: caml-list I think the issue between Java and O'CaML is not primarily a question of language. Both Java and O'CaML have their strengths and weaknesses. Actually, the Sun Java compiler is still buggy at this point. So what makes it so popular? The standard APIs and libraries. While O'CaML standard APIs and libraries are focused on data structures -- with very effective implementations --, java has put focus on other domains which seem to have more success. The java 2 APIs contain stuff to handle windows, overall GUI look-and-feel, drag-and-drop, en/decryption, databases, remote method invocation, complex 2D graphics, and finally data structures. If you want to do all that with O'CaML, you have to bolt everything on it yourself, find every library binding if they exist... One problem is that with O'CaML, it does take some time to get you started and find the right options to invoke to compile your code with custom libraries support. On the other hand, with java you state a few "imports" and it's over. Examples in the documentation are numerous, too. But also, there is a huge difference between standard libraries and library bindings. Standard APIs are written independently of existing libraries; library bindings often provide a mere translation of functions that has been initially written for C. Also, documentation is kept in separate files and compiling a working executable is much more difficult. I see a definite advantage that O'CaML could take in development of standard APIs (at least APIs!) covering the needs of the industry identified by Java's success. The later development of those libraries, starting from APIs, potentially using other graphic libraries, could more easily be implemented by O'CaML users... But certainly, the primary problem will be human resources then... Best regards, Benoît de Boursetty. ----- La messagerie itinérante sans abonnement NetCourrier ----- Web : www.netcourrier.com Minitel : 3615 et 3623 NETCOURRIER Tél : 08 36 69 00 21 ^ permalink raw reply [flat|nested] 67+ messages in thread
* RE: When functional languages can be accepted by industry?
@ 2000-04-17 12:57 FALCON Gilles FTRD/DTL/LAN
2000-04-17 15:35 ` Xavier Leroy
0 siblings, 1 reply; 67+ messages in thread
From: FALCON Gilles FTRD/DTL/LAN @ 2000-04-17 12:57 UTC (permalink / raw)
To: 'John Max Skaller'; +Cc: caml-redistribution
translation after:
Je suis aller suivre un cour Java la semaine dernière, je dois dire
que l'on sent tout de suite la taille de la communauté derrière ce langage.
La documentation est quelque chose qui existe, les librairies pour
faire de l'informatique de gestion aussi (SGBD, gestion de la machine,
IHM, ...)
Trouver un livre sur java autre que la documentation de référence,
c'est possible, un livre sur Ocaml, non.
La documentation de l'inria est bien mais insuffisante (elle n'offre
qu'un point de vu, chose qui ne gène pas quand on a eu des cours sur
le sujet, certes).
D'autres petits détails :
L'interface graphique: pour ceux qui aime camltk, c'est apprendre tcl
avec (pour les exemples) puis faire le tri entre ce que propose le
langage graphique, ce qui est implémenté avec caml et ce que l'on
envisage d'ajouter.(et toujours une documentation qui renvoie vers une
autre doc)
On veut generer un programme documenté,
avec java il y a tout ce qu'il faut déja configuré
avec ocaml, on peut faire du "literate programming",
mais il faut se faire une configuration (rien n'est proposé en standard)
On a besoin de quelques choses, avec java on cherche d'abord dans la
documentation, ou on regarde s'il n'y a pas quelque chose de fait et
on a de forte chance de trouver. Avec Ocaml, beaucoup moins
Globalement les gens qui développent en ocaml me donne le sentiment
qu'ils maîtrisent plutôt bien les concepts informatiques, théorie
des langages ainsi que les utilitaires à coté pour palier à ce
qui n'est pas fourni en standards; qu'en à ceux qui ne sont pas issu
de cette souche il semble avoir été sauvagement oublié.
J'aime bien Ocaml, le style fonctionnel est sympa, il est possible de
faire de l'impératif et de l'objet.
Une chose est certaine, s'il y avait un plus pour l'interface graphique
et les connections aux sgbd (dans un monde idyllique, le tout bien
documenté) il serait plus facile d'utiliser ocaml dans plus de projet.
Last week, i learn java and i feel the community behind this language,
The documentation is something real. You have library for SGBD acess,
the I/O, the graphics.
You can find a book easily on java, not on ocaml. Inria documentation
is fine, but with only one point of view.
Some other details:
The IHM : if you like camltk, you learn tcl too ( for the example)
after, you have to look between the graphics language possibility,
what you can access with caml and eventually what you would like to
add ( naturaly the documentation send you on an other documentation)
We want to have generated documentation
with java, no configuration to do: javadoc
with ocaml, you can do it, but nothing in the package.
You need something, with java you search in the documentation or you
look if someone done it, you fill more lucky than with ocaml
Generaly people who use ocaml, master well computer, langage theory.
The question is for the other who need a more generalist langage,
they are totally forgotten
I like ocaml, fonctional style, it is possible to do impérative or
object code. One thing is sure, if the IHM was better and with SGBD
connection (in the ideal world all with good documentation) it would
be easier to use ocaml on more project.
sincerely
> ----------
> De : John Max Skaller[SMTP:skaller@maxtal.com.au]
> Date : samedi 15 avril 2000 23:17
> A : caml-redistribution@pauillac.inria.fr
> Objet : Re: When functional languages can be accepted by industry?
>
> One barrier to acceptance of ocaml in industry:
> lack of programmers. This requires training.
> Who can help?
>
> --
> John (Max) Skaller, mailto:skaller@maxtal.com.au
> 10/1 Toxteth Rd Glebe NSW 2037 Australia voice: 61-2-9660-0850
> checkout Vyper http://Vyper.sourceforge.net
> download Interscript http://Interscript.sourceforge.net
>
^ permalink raw reply [flat|nested] 67+ messages in thread
* Re: When functional languages can be accepted by industry? 2000-04-17 12:57 FALCON Gilles FTRD/DTL/LAN @ 2000-04-17 15:35 ` Xavier Leroy 2000-04-18 5:54 ` Francois Pottier 0 siblings, 1 reply; 67+ messages in thread From: Xavier Leroy @ 2000-04-17 15:35 UTC (permalink / raw) To: FALCON Gilles FTRD/DTL/LAN; +Cc: caml-list > Last week, i learn java and i feel the community behind this language, You mis-spelled "Sun's deep pockets and hordes of programmers" :-) > The documentation is something real. You have library for SGBD acess, the > I/O, the graphics. In OCaml, you have excellent I/O (better than Java's in my opinion) in the standard library, TK and GTK bindings for GUIs, and a couple of bindings to existing database libraries (see the Caml hump at http://caml.inria.fr). I agree the database stuff needs more work and the GUI stuff needs more documentation, but it's a start. > You can find a book easily on java, not on ocaml. Inria > documentation is fine, but with only one point of view. There are several books out on Caml Light, which are largely relevant to OCaml. A quite comprehensive book on OCaml is in preparation (mostly written by non-INRIA personnel, so you'll get another "point of view") and should appear this summer (in French). > The IHM : if you like camltk, you learn tcl too ( for the example) > after, you have to look between the graphics language possibility, what > you can access with caml > and eventually what you would like to add ( naturaly the documentation > send you on an other documentation) Agreed, there is a lack of documentation for CamlTk. Any volunteers? > We want to have generated documentation > with java, no configuration to do: javadoc > with ocaml, you can do it, but nothing in the package. This is true, a "camldoc" tool would be nice. Some members of this list would advocate using off-the-shelf, language-independent literate programming tools, of which there are plenty. > You need something, with java you search in the documentation or > you look if someone done it, you fill more lucky than with ocaml Well, with OCaml, you search the documentation, then look (in the Hump for instance) if someone has done it. So what? > Generaly people who use ocaml, master well computer, langage theory. > The question is for the other who need a more generalist langage, they are > totally forgotten Symbolic processing (compilers, theorem provers, etc) were the first application of Caml and other members of the ML family, so of course we have more experience with that. However, if other users were "totally forgotten", we wouldn't have GUIs, the Unix and Str libraries, a COM binding, and all other stuff that symbolic processing doesn't need. We're definitely trying to extend OCaml beyond the compiler/prover niche, and have had already some success stories in this direction (see the list of signficant projects on the Web site). > I like ocaml, fonctional style, it is possible to do impérative or > object code . One thing is sure, if the IHM was better and with > SGBD connection (in the ideal world all with good documentation) it > would be easier to use ocaml on more project. I certainly can't disagree with you. The main problem here is human resources. But we are looking at ways for big industrial users to help fund that kind of developments. - Xavier Leroy ^ permalink raw reply [flat|nested] 67+ messages in thread
* Re: When functional languages can be accepted by industry? 2000-04-17 15:35 ` Xavier Leroy @ 2000-04-18 5:54 ` Francois Pottier 2000-04-19 14:53 ` Vitaly Lugovsky 0 siblings, 1 reply; 67+ messages in thread From: Francois Pottier @ 2000-04-18 5:54 UTC (permalink / raw) To: caml-list On Mon, Apr 17, 2000 at 05:35:47PM +0200, Xavier Leroy wrote: > This is true, a "camldoc" tool would be nice. May I advocate Jean-Christophe Filliâtre's excellent literate programming tool, ocamlweb? http://www.lri.fr/~filliatr/ocamlweb/ It nicely turns your O'Caml source code into a TeX document, including an identifier index. Comments are expected to contain TeX source. -- François Pottier Francois.Pottier@inria.fr http://pauillac.inria.fr/~fpottier/ ^ permalink raw reply [flat|nested] 67+ messages in thread
* Re: When functional languages can be accepted by industry? 2000-04-18 5:54 ` Francois Pottier @ 2000-04-19 14:53 ` Vitaly Lugovsky 2000-04-19 15:17 ` Claude Marche ` (3 more replies) 0 siblings, 4 replies; 67+ messages in thread From: Vitaly Lugovsky @ 2000-04-19 14:53 UTC (permalink / raw) To: Francois Pottier; +Cc: caml-list, Pierre.Weis, caml-redistribution On Tue, 18 Apr 2000, Francois Pottier wrote: > May I advocate Jean-Christophe FilliБtre's excellent literate > programming tool, ocamlweb? > > http://www.lri.fr/~filliatr/ocamlweb/ > > It nicely turns your O'Caml source code into a TeX document, > including an identifier index. Comments are expected to contain > TeX source. But stupid "industry" don't like TeX. :( They wants HTML or somthing like that. Is there any HTML output formatter for ocamlweb? Industry knows nothing about literate programming, as well as about many other progressive technologies. P.S. Maybe, all that we need, is a RAD tool for ocaml? It can look like a better module finder ("module name" -> "file name" is not a good idea. Paths in Java is much better), and a lot of reusable modules for common tasks (database, GUI)... -- V.S.Lugovsky aka Mauhuur (http://ontil.ihep.su/~vsl) (UIN=45482254) ^ permalink raw reply [flat|nested] 67+ messages in thread
* Re: When functional languages can be accepted by industry? 2000-04-19 14:53 ` Vitaly Lugovsky @ 2000-04-19 15:17 ` Claude Marche 2000-04-20 1:44 ` Max Skaller ` (2 subsequent siblings) 3 siblings, 0 replies; 67+ messages in thread From: Claude Marche @ 2000-04-19 15:17 UTC (permalink / raw) To: caml-list >>>>> "Vitaly" == Vitaly Lugovsky <vsl@ontil.ihep.su> writes: Vitaly> On Tue, 18 Apr 2000, Francois Pottier wrote: >> May I advocate Jean-Christophe Filliâtre's excellent literate >> programming tool, ocamlweb? >> >> http://www.lri.fr/~filliatr/ocamlweb/ >> >> It nicely turns your O'Caml source code into a TeX document, >> including an identifier index. Comments are expected to contain >> TeX source. Vitaly> But stupid "industry" don't like TeX. :( They wants HTML Vitaly> or somthing like that. Is there any HTML output formatter Vitaly> for ocamlweb? Industry knows nothing about literate Vitaly> programming, as well as about many other progressive Vitaly> technologies. So, if industry people use Javadoc, they're doing literate programming like Monsieur Jourdain :-) More seriously: the LaTeX output of ocamlweb is suitable for input to HeVeA, which produces HTML. Check them out ! http://www.lri.fr/~filliatr/ocamlweb/ http://para.inria.fr/~maranget/hevea/ - Claude PS: and please, nobody start a new thread "When LaTeX can be accepted by industry?", or at least somewhere else. -- | Claude Marché | mailto:Claude.Marche@lri.fr | | LRI - Bât. 490 | http://www.lri.fr/~marche/ | | Université de Paris-Sud | phoneto: +33 1 69 15 64 85 | | F-91405 ORSAY Cedex | faxto: +33 1 69 15 65 86 | ^ permalink raw reply [flat|nested] 67+ messages in thread
* Re: When functional languages can be accepted by industry? 2000-04-19 14:53 ` Vitaly Lugovsky 2000-04-19 15:17 ` Claude Marche @ 2000-04-20 1:44 ` Max Skaller 2000-04-20 3:01 ` Vitaly Lugovsky 2000-04-21 0:41 ` Jacques Garrigue 2000-04-20 1:52 ` Max Skaller 2000-04-20 17:17 ` Jean-Christophe Filliatre 3 siblings, 2 replies; 67+ messages in thread From: Max Skaller @ 2000-04-20 1:44 UTC (permalink / raw) To: Vitaly Lugovsky Cc: Francois Pottier, caml-list, Pierre.Weis, caml-redistribution Vitaly Lugovsky wrote: > > P.S. Maybe, all that we need, is a RAD tool for ocaml? It can > look like a better module finder ("module name" -> "file name" is not > a good idea. Paths in Java is much better), and a lot of reusable > modules for common tasks (database, GUI)... There already is one: the lablbrowser. It's quite good functionally -- but the interface sucks. -- John (Max) Skaller at OTT [Open Telecommications Ltd] mailto:maxs@in.ot.com.au -- at work mailto:skaller@maxtal.com.au -- at home ^ permalink raw reply [flat|nested] 67+ messages in thread
* Re: When functional languages can be accepted by industry? 2000-04-20 1:44 ` Max Skaller @ 2000-04-20 3:01 ` Vitaly Lugovsky 2000-04-21 0:41 ` Jacques Garrigue 1 sibling, 0 replies; 67+ messages in thread From: Vitaly Lugovsky @ 2000-04-20 3:01 UTC (permalink / raw) To: Max Skaller; +Cc: Francois Pottier, caml-list, Pierre.Weis, caml-redistribution On Thu, 20 Apr 2000, Max Skaller wrote: > Vitaly Lugovsky wrote: > > P.S. Maybe, all that we need, is a RAD tool for ocaml? It can > > look like a better module finder ("module name" -> "file name" is not > > a good idea. Paths in Java is much better), and a lot of reusable > > modules for common tasks (database, GUI)... > > There already is one: the lablbrowser. It's quite > good functionally -- but the interface sucks. But module naming system is left unchanged there... So, it's not a RAD tool. I talk about RAD as a "rapid application development tool", not as a "GUI IDE". I tried findlib, but it also not an ideal, it's too complex and is not well integrated with Ocaml system itself. :( -- V.S.Lugovsky aka Mauhuur (http://ontil.ihep.su/~vsl) (UIN=45482254) ^ permalink raw reply [flat|nested] 67+ messages in thread
* Re: When functional languages can be accepted by industry? 2000-04-20 1:44 ` Max Skaller 2000-04-20 3:01 ` Vitaly Lugovsky @ 2000-04-21 0:41 ` Jacques Garrigue 2000-04-21 19:35 ` John Max Skaller ` (2 more replies) 1 sibling, 3 replies; 67+ messages in thread From: Jacques Garrigue @ 2000-04-21 0:41 UTC (permalink / raw) To: maxs, vsl; +Cc: caml-list > Vitaly Lugovsky wrote: > > > > P.S. Maybe, all that we need, is a RAD tool for ocaml? It can > > look like a better module finder ("module name" -> "file name" is not > > a good idea. Paths in Java is much better), and a lot of reusable > > modules for common tasks (database, GUI)... There are two different problems with RADs * making one requires lots of work, and is not necessarily very rewarding for the author, who himself can probably work without. That's the reason you don't find many RADs in the open source community. You can find an embryo of such a thing in lablgtk for instance, but I have no idea whether it will become really a full fledge RAD some day. * it is not so clear how useful it would be for a language like ocaml. Code in ocaml is much more compact than in C++ or JAVA, so that code generation is not so useful in itself. I agree that this might be nice for beginners, but if it is nice for beginners only, then it's even harder to find the workforce. As for paths versus module=file name, well, there were discussions among developpers, and it is not so clear which is best, considering also that this has to be integrated transparently with the module/functor system. >From a language abstraction point of view, the idea of writing file paths inside programs doesn't sound so nice. A simpler solution would be to provide an easy way to indicate which package one wants to use from the ocamlc command line. Something like having "-I +package" automatically expanded to "-I /usr/local/lib/ocaml/package". From: Max Skaller <maxs@in.ot.com.au> > There already is one: the lablbrowser. It's quite > good functionally -- but the interface sucks. Name has changed, it is now ocamlbrowser. As Vitaly answered, this is not a RAD, but more a kind of IDE, more centered on library browsing than project building. As always I admire how constructive your comments are :-) The interface is that way because I like it that way: * the main functionality is in one small window that I can keep on my screen all the time. * there is one window by module, because I often want to browse several modules simultaneously. * editor functionality is reduced to a minimum, because real programmers use emacs anyway. If you don't like the interface you could explain why, and say what you think would be a nice interface, for instance. Jacques --------------------------------------------------------------------------- Jacques Garrigue Kyoto University garrigue at kurims.kyoto-u.ac.jp <A HREF=http://wwwfun.kurims.kyoto-u.ac.jp/~garrigue/>JG</A> ^ permalink raw reply [flat|nested] 67+ messages in thread
* Re: When functional languages can be accepted by industry? 2000-04-21 0:41 ` Jacques Garrigue @ 2000-04-21 19:35 ` John Max Skaller 2000-04-21 20:53 ` Michael Hohn 2000-04-25 10:50 ` Remi VANICAT 2 siblings, 0 replies; 67+ messages in thread From: John Max Skaller @ 2000-04-21 19:35 UTC (permalink / raw) To: Jacques Garrigue; +Cc: maxs, vsl, caml-list Jacques Garrigue wrote: > > * it is not so clear how useful it would be for a language like ocaml. > Code in ocaml is much more compact than in C++ or JAVA, so that code > generation is not so useful in itself. I agree that this might be > nice for beginners, but if it is nice for beginners only, then it's > even harder to find the workforce. There is one major exception: interfaces. There is often duplication, particularly with types. I'd almost rather see _inline_ interface specifications. (such as marking some symbols 'private', meaning not to put them in the generated interface). >From a language abstraction point of view, the idea of writing file > paths inside programs doesn't sound so nice. A simpler solution would > be to provide an easy way to indicate which package one wants to use > from the ocamlc command line. I don't like this. It means a successful build requires the client to know what to write on the command line. > Name has changed, it is now ocamlbrowser. > As Vitaly answered, this is not a RAD, but more a kind of IDE, more > centered on library browsing than project building. > > As always I admire how constructive your comments are :-) I found the interface unusable. The reason was simple: the windows never went to the correct size. It is non-trivial to get this right. For example, I hate scrolling: the window should adjust to avoid scroll bars within some sensible bounds. -- John (Max) Skaller, mailto:skaller@maxtal.com.au 10/1 Toxteth Rd Glebe NSW 2037 Australia voice: 61-2-9660-0850 checkout Vyper http://Vyper.sourceforge.net download Interscript http://Interscript.sourceforge.net ^ permalink raw reply [flat|nested] 67+ messages in thread
* Re: When functional languages can be accepted by industry? 2000-04-21 0:41 ` Jacques Garrigue 2000-04-21 19:35 ` John Max Skaller @ 2000-04-21 20:53 ` Michael Hohn 2000-04-25 10:50 ` Remi VANICAT 2 siblings, 0 replies; 67+ messages in thread From: Michael Hohn @ 2000-04-21 20:53 UTC (permalink / raw) To: garrigue; +Cc: caml-list >> ... >> > Vitaly Lugovsky wrote: >> > > >> > > P.S. Maybe, all that we need, is a RAD tool for ocaml? It can >> > > look like a better module finder ("module name" -> "file name" is not >> > > a good idea. Paths in Java is much better), and a lot of reusable >> > > modules for common tasks (database, GUI)... >> >> There are two different problems with RADs >> >> * making one requires lots of work, and is not necessarily very >> rewarding for the author, who himself can probably work >> without. That's the reason you don't find many RADs in the open >> source community. >> You can find an embryo of such a thing in lablgtk for instance, but >> I have no idea whether it will become really a full fledge RAD some >> day. >> >> * it is not so clear how useful it would be for a language like ocaml. >> Code in ocaml is much more compact than in C++ or JAVA, so that code >> generation is not so useful in itself. I agree that this might be >> nice for beginners, but if it is nice for beginners only, then it's >> even harder to find the workforce. >> ... There are some other problems: * RADs usually support just one language, maybe two. But when a project consists of combinations of sh, Python, Maple or Mathematica, ocaml, C/C++ and some Tcl/Tk code, Makefiles are the way to go. * RADs are not programmable. Makefiles can be generated. >> ... >> >> > There already is one: the lablbrowser. It's quite >> > good functionally -- but the interface sucks. >> >> Name has changed, it is now ocamlbrowser. >> As Vitaly answered, this is not a RAD, but more a kind of IDE, more >> centered on library browsing than project building. >> >> As always I admire how constructive your comments are :-) >> >> The interface is that way because I like it that way: >> * the main functionality is in one small window that I can keep on my >> screen all the time. >> * there is one window by module, because I often want to browse >> several modules simultaneously. >> * editor functionality is reduced to a minimum, because real >> programmers use emacs anyway. >> >> ... I agree. Using lablbrowser was quite pleasant, and there are no annoying frills to get in the way. Cheers, Michael ^ permalink raw reply [flat|nested] 67+ messages in thread
* Re: When functional languages can be accepted by industry? 2000-04-21 0:41 ` Jacques Garrigue 2000-04-21 19:35 ` John Max Skaller 2000-04-21 20:53 ` Michael Hohn @ 2000-04-25 10:50 ` Remi VANICAT 2 siblings, 0 replies; 67+ messages in thread From: Remi VANICAT @ 2000-04-25 10:50 UTC (permalink / raw) To: caml-list Jacques Garrigue <garrigue@kurims.kyoto-u.ac.jp> writes: > * editor functionality is reduced to a minimum, because real > programmers use emacs anyway. a nice amelioration of ocamlbrowser may be the use of an external editor, (and, as emacs offer, with emacsclient or gnudoit a way to be use by an external program, it would be very useful...) -- Rémi Vanicat vanicat@labri.u-bordeaux.fr http://dept-info.labri.u-bordeaux.fr/~vanicat ^ permalink raw reply [flat|nested] 67+ messages in thread
* Re: When functional languages can be accepted by industry? 2000-04-19 14:53 ` Vitaly Lugovsky 2000-04-19 15:17 ` Claude Marche 2000-04-20 1:44 ` Max Skaller @ 2000-04-20 1:52 ` Max Skaller 2000-04-20 3:08 ` Vitaly Lugovsky 2000-04-20 17:17 ` Jean-Christophe Filliatre 3 siblings, 1 reply; 67+ messages in thread From: Max Skaller @ 2000-04-20 1:52 UTC (permalink / raw) To: Vitaly Lugovsky Cc: Francois Pottier, caml-list, Pierre.Weis, caml-redistribution Vitaly Lugovsky wrote: > > On Tue, 18 Apr 2000, Francois Pottier wrote: > > > May I advocate Jean-Christophe Filliâtre's excellent literate > > programming tool, ocamlweb? > > > > http://www.lri.fr/~filliatr/ocamlweb/ > > > > It nicely turns your O'Caml source code into a TeX document, > > including an identifier index. Comments are expected to contain > > TeX source. > > But stupid "industry" don't like TeX. :( > They wants HTML or somthing like that. Is there any HTML output > formatter for ocamlweb? Industry knows nothing about literate > programming, as well as about many other progressive technologies. Industry is not stupid, it is simply governed by different motives. I'm using a) ocaml -- an advanced programming language b) interscript -- an advanced literate programming tool in my job. -- John (Max) Skaller at OTT [Open Telecommications Ltd] mailto:maxs@in.ot.com.au -- at work mailto:skaller@maxtal.com.au -- at home ^ permalink raw reply [flat|nested] 67+ messages in thread
* Re: When functional languages can be accepted by industry? 2000-04-20 1:52 ` Max Skaller @ 2000-04-20 3:08 ` Vitaly Lugovsky 2000-04-20 2:51 ` Max Skaller 0 siblings, 1 reply; 67+ messages in thread From: Vitaly Lugovsky @ 2000-04-20 3:08 UTC (permalink / raw) To: Max Skaller; +Cc: Francois Pottier, caml-list, Pierre.Weis, caml-redistribution On Thu, 20 Apr 2000, Max Skaller wrote: > > But stupid "industry" don't like TeX. :( > > They wants HTML or somthing like that. Is there any HTML output > > formatter for ocamlweb? Industry knows nothing about literate > > programming, as well as about many other progressive technologies. > > Industry is not stupid, it is simply governed by different motives. And all that motives are very far from pure science. That's why I call'em stupid. Market will never create an ideal technology, 'cause there is no advanced evolution criteria - only crowd requests. > I'm using > > a) ocaml -- an advanced programming language > b) interscript -- an advanced literate programming tool Hm... Where can I take a look at 'interscript'? I'm using ocamlweb for now, it looks better then generic, language independent literate tools like noweb, but I did not heared about interscript. Any URL? -- V.S.Lugovsky aka Mauhuur (http://ontil.ihep.su/~vsl) (UIN=45482254) ^ permalink raw reply [flat|nested] 67+ messages in thread
* Re: When functional languages can be accepted by industry? 2000-04-20 3:08 ` Vitaly Lugovsky @ 2000-04-20 2:51 ` Max Skaller 0 siblings, 0 replies; 67+ messages in thread From: Max Skaller @ 2000-04-20 2:51 UTC (permalink / raw) To: Vitaly Lugovsky Cc: Francois Pottier, caml-list, Pierre.Weis, caml-redistribution Vitaly Lugovsky wrote: > > Hm... Where can I take a look at 'interscript'? I'm using > ocamlweb for now, it looks better then generic, language independent > literate tools like noweb, but I did not heared about interscript. > Any URL? http://interscript.sourceforge.net -- John (Max) Skaller at OTT [Open Telecommications Ltd] mailto:maxs@in.ot.com.au -- at work mailto:skaller@maxtal.com.au -- at home ^ permalink raw reply [flat|nested] 67+ messages in thread
* Re: When functional languages can be accepted by industry? 2000-04-19 14:53 ` Vitaly Lugovsky ` (2 preceding siblings ...) 2000-04-20 1:52 ` Max Skaller @ 2000-04-20 17:17 ` Jean-Christophe Filliatre 3 siblings, 0 replies; 67+ messages in thread From: Jean-Christophe Filliatre @ 2000-04-20 17:17 UTC (permalink / raw) To: Vitaly Lugovsky Cc: Francois Pottier, caml-list, Pierre.Weis, caml-redistribution In his message of Wed April 19, 2000, Vitaly Lugovsky writes: > > > May I advocate Jean-Christophe Filliâtre's excellent literate > > programming tool, ocamlweb? > > But stupid "industry" don't like TeX. :( > They wants HTML or somthing like that. Is there any HTML output > formatter for ocamlweb? Yes, nice HTML output is obtained with Hevea (ocamlweb is Hevea friendly; see the documentation for details). Here is an example: http://www.lri.fr/~filliatr/ftp/ocamlweb/ocamlweb.html > Industry knows nothing about literate programming, as well as about > many other progressive technologies. That's true in general, and too bad. But I know several programmers in industry who use literate programming tools. -- Jean-Christophe Filliatre Computer Science Laboratory Phone (650) 859-5173 SRI International FAX (650) 859-2844 333 Ravenswood Ave. email filliatr@csl.sri.com Menlo Park, CA 94025, USA web http://www.csl.sri.com/~filliatr ^ permalink raw reply [flat|nested] 67+ messages in thread
* When functional languages can be accepted by industry? @ 2000-04-03 1:27 Dennis (Gang) Chen 2000-04-06 16:51 ` Jean-Christophe Filliatre 2000-04-07 15:44 ` John Max Skaller 0 siblings, 2 replies; 67+ messages in thread From: Dennis (Gang) Chen @ 2000-04-03 1:27 UTC (permalink / raw) To: caml-list Hi, Functional languages have not been very successful in industry. Why? When writing database applications, we use Access, Oracle and languages which support interfeaces to these database systems. When writing an application which needs user friendly interface, one can use Delphi, or Java, Visual Basic, Visual C++, C++ Builder etc. When writing text manipulation programs, perl is a good choice. For internet application, one use Java, perl, Deplhi, Visual C++ etc. When higher order functions are required, we can use any OO language, because an object with one method can be viewed as a function, so if a function can accept objects as inputs and output an object, then this function is a higher order function. To write polymorphic functions, one can use templates in C++. For data structures which require dynamic memory allocation, one can consider Standard Template Library (STL) in C++. From STL, you can choose list, set, map, tree templates, which are sufficient for most purposes. The templates in STL are more efficient than list in functinal languages. For example, if you use list to implement set, then a deletion of an element from a set will require reconstruction of a part of the list, which has significant memory cost. In STL templates, this is a simple pointer operation. To write a parser, I prefer to use ocaml as I'm aware of its adavantage in this aspect. But I've learnt that there are other compiler tools available. Functional languages in ML family are equiped with a much better type system than C++, this reduce errors in programs, but industry has its own procedure to ensure the reliability of program. So the weakness in C++ does not bother too much. Module in ocaml is an attractive feature. Large applications are built in a refinement way, and different implementations for a given interface will be experimented. Module should be good for this, and it is not available in C++. The size of functional language program is usually small, this feature probably would give a chance for functinal language to enter industry. A program stored in a smart card or in a mobile phone can not be a big one. Are there other features of functional language which will attract industry? -- Dennis Gang CHEN Senior Software Engineer Motorola Australia Software Centre, Electronic Design Automation 2 Second Avenue, Mawson Lakes, SA 5095, Australia phone: +61 8 8203 3560, mailto: Dennis.G.Chen@motorola.com ^ permalink raw reply [flat|nested] 67+ messages in thread
* Re: When functional languages can be accepted by industry? 2000-04-03 1:27 Dennis (Gang) Chen @ 2000-04-06 16:51 ` Jean-Christophe Filliatre 2000-04-07 5:27 ` Dennis (Gang) Chen 2000-04-07 15:44 ` John Max Skaller 1 sibling, 1 reply; 67+ messages in thread From: Jean-Christophe Filliatre @ 2000-04-06 16:51 UTC (permalink / raw) To: Dennis (Gang) Chen; +Cc: caml-list In his message of Mon April 3, 2000, Dennis (Gang) Chen writes: > Are there other features of functional language which will attract industry? - Garbage Collection. (how many memory leaks in C++ programs? how many bugs related to memory unsafely de-allocated?) And ocaml's GC is a very good one. - Strong Typing. (how many bugs are related to unsafe type assumptions about pointers in other languages?) Above all, strong typing allows you to develop and experiment with your code very quickly. Let me explain that point. When you add a constructor to a type, or when you change the definition of a type, or the type of a function, you just have to recompile and the compiler will find all the places which are now ill-typed, or where a pattern-matching is non-exhaustive, etc. and this is possible because of strong-typing. In practice, it appears to be one of the most important property of ocaml's compiler. I use it hundreds of times every day. Whatever the size and the complexity of your code are, the compiler will find the needed changes. With other languages, you have to think hard to remember the places where changes are now needed, and that's a reason for code inertia (and for bugs, too). - Recursive data-types. I didn't follow your arguments about C++ STL versus lists in functional programming. Of course, lists are almost always bad data-structures. But a good functional programmer does not use lists as data-structures (a Lisp programmer, may be :-) but rather balanced trees, Patricia trees, binomial heaps, hash-tables, etc. Moreover, most of these datatypes are persistent, an essential property is several applications (whether in-place destructive datastructures require explicit copies, which are time and space consuming). You should read Chris Okasaki's book "Purely Functional Data Structures". Strong typing, recursive data-types and a good GC are essential tools for the programmer: you develop quicker, your code is safer (does not crash on a seg fault) and is easier to maintain and to modify. Do you still need other arguments? -- Jean-Christophe Filliatre Computer Science Laboratory Phone (650) 859-5173 SRI International FAX (650) 859-2844 333 Ravenswood Ave. email filliatr@csl.sri.com Menlo Park, CA 94025, USA web http://www.csl.sri.com/~filliatr ^ permalink raw reply [flat|nested] 67+ messages in thread
* Re: When functional languages can be accepted by industry? 2000-04-06 16:51 ` Jean-Christophe Filliatre @ 2000-04-07 5:27 ` Dennis (Gang) Chen [not found] ` <14574.1721.508470.790475@cylinder.csl.sri.com> 0 siblings, 1 reply; 67+ messages in thread From: Dennis (Gang) Chen @ 2000-04-07 5:27 UTC (permalink / raw) To: Jean-Christophe Filliatre; +Cc: caml-list Jean-Christophe Filliatre wrote: > - Recursive data-types. I didn't follow your arguments about C++ STL > versus lists in functional programming. Of course, lists are almost > always bad data-structures. But a good functional programmer does > not use lists as data-structures (a Lisp programmer, may be :-) but > rather balanced trees, Patricia trees, binomial heaps, hash-tables, > etc. Moreover, most of these datatypes are persistent, an essential > property is several applications (whether in-place destructive > datastructures require explicit copies, which are time and space > consuming). You should read Chris Okasaki's book "Purely Functional > Data Structures". I have not found a method to implement a set with an efficient element removal operation. To my knowledge, the implementation of set based on balanced tree is efficient for union, difference etc, but does not seem to be reasonably efficient for deleting an element. Besides, the tree-based implementation of set requires that the elements have an ordered type, it is not clear to me how to extend these techniques to build a set of unordered elements, say, set of sets. -- Dennis Gang CHEN Senior Software Engineer Motorola Australia Software Centre, Electronic Design Automation 2 Second Avenue, Mawson Lakes, SA 5095, Australia phone: +61 8 8203 3560, mailto: Dennis.G.Chen@motorola.com ^ permalink raw reply [flat|nested] 67+ messages in thread
[parent not found: <14574.1721.508470.790475@cylinder.csl.sri.com>]
* Re: When functional languages can be accepted by industry? [not found] ` <14574.1721.508470.790475@cylinder.csl.sri.com> @ 2000-04-11 0:24 ` Dennis (Gang) Chen 2000-04-11 17:58 ` Pierre Weis 0 siblings, 1 reply; 67+ messages in thread From: Dennis (Gang) Chen @ 2000-04-11 0:24 UTC (permalink / raw) To: Jean-Christophe Filliatre; +Cc: caml-list Jean-Christophe Filliatre wrote: > > I have not found a method to implement a set with an efficient > > element removal operation. To my knowledge, the implementation of > > set based on balanced tree is efficient for union, difference etc, > > but does not seem to be reasonably efficient for deleting an > > element. Besides, the tree-based implementation of set requires that > > the elements have an ordered type, it is not clear to me how to > > extend these techniques to build a set of unordered elements, say, > > set of sets. > > Ocaml sets come with a comparison function, so that you can build sets > of sets. See http://caml.inria.fr/ocaml/htmlman/manual053.html. > > If you can manage with sets of integers, you could consider Patricia > trees instead of balanced trees, as suggested in that article > http://www.cs.columbia.edu/~cdo/papers.html#ml98maps > > As I already wrote, Okasaki's book is marvelous, and gives many > different implementations of efficient datastructures, together with > tools to analyze theire complexity. Thanks for the suggestion, it sounds to be interesting to consider the ocaml comparison function on sets to build sets of sets. For the deletion operation, I've contacted Okasaki, who has also proposed balanced tree and Patricia tree, as well as the above paper and the following one: http://www-swiss.ai.mit.edu/~adams/BB/index.html The deletion operation described in these papers will rebuild a tree. Therefore, it does not seem to be comparably efficient with those implementations in imperative languages. Best regards. Gang Chen ^ permalink raw reply [flat|nested] 67+ messages in thread
* Re: When functional languages can be accepted by industry? 2000-04-11 0:24 ` Dennis (Gang) Chen @ 2000-04-11 17:58 ` Pierre Weis 2000-04-12 1:45 ` Dennis (Gang) Chen 0 siblings, 1 reply; 67+ messages in thread From: Pierre Weis @ 2000-04-11 17:58 UTC (permalink / raw) To: Dennis (Gang) Chen; +Cc: caml-list > The deletion operation described in these papers will rebuild a tree. Therefore, > it does not seem to be comparably efficient with those implementations in > imperative languages. Don't forget that there is (almost) no restriction on side-effects in Caml: if this is crucial for your program, you can implement lists as an imperative data type of your own, and then use destructive update to perform the deletion operation in the required complexity. Just be aware that list sharing will be difficult as for any other imperative implementation of lists. Best regards, -- Pierre Weis INRIA, Projet Cristal, http://pauillac.inria.fr/~weis ^ permalink raw reply [flat|nested] 67+ messages in thread
* Re: When functional languages can be accepted by industry? 2000-04-11 17:58 ` Pierre Weis @ 2000-04-12 1:45 ` Dennis (Gang) Chen 2000-04-12 17:27 ` Daniel de Rauglaudre ` (3 more replies) 0 siblings, 4 replies; 67+ messages in thread From: Dennis (Gang) Chen @ 2000-04-12 1:45 UTC (permalink / raw) To: Pierre Weis; +Cc: caml-list > Don't forget that there is (almost) no restriction on side-effects in > Caml: if this is crucial for your program, you can implement lists as > an imperative data type of your own, and then use destructive update > to perform the deletion operation in the required complexity. Just be > aware that list sharing will be difficult as for any other imperative > implementation of lists. This is true. But such an approach does not make ocaml more attractive than C++. In ocaml, there are arrays, structures and objects etc, but no such things like pointers in C. For a company or an ordinary programmer, a simple and safe solution could be just to pick up the set template from C++ STL. The purpose of my original message: "When functional languages can be accepted by industry?" is not to ignore the advantages of functional languages. I only want to point out the current challenges to FL. These challenges can be classified in three groups: 1. Current functional languages do not have enough library support: so it is not convenient to use FL for database management, programming friendly user interface etc. Without industry support, these libraries would take a long time to implement 2. Functional languages do not well support the use of dynamic data structures which requires mutable operations for achieving the efficiency; 3. Morden imperative languages are equiped with certain functional features, e.g. higher order functions can be simulated by objects, a certain level of polymorphism can be achieved by using templates, common dynamic data structures have been built in STL etc. What are the implications of these challenges? Neither functional languages nor imperative languages are perfect. A language designer can choose to add imperative features into a functional language, and to develop smart algorithms to improve the efficiency; Alternatively, he can choose to add functional features into an imperative language, and to develop a better type checker for all or a subset of of the imperative language, or he can, as described by John Max, put a functional language on top of, say C++, and permitting the user to use C++ when necessary. It is no doubt that functional languages will continue to succeed in eduacation, research, high level specification, formal program verification, fast prototyping, etc. But, it appears to me that, in industry, the second approach might succeed in most cases. Best regards. -- Dennis Gang CHEN Senior Software Engineer Motorola Australia Software Centre, Electronic Design Automation 2 Second Avenue, Mawson Lakes, SA 5095, Australia phone: +61 8 8203 3560, mailto: Dennis.G.Chen@motorola.com ^ permalink raw reply [flat|nested] 67+ messages in thread
* Re: When functional languages can be accepted by industry? 2000-04-12 1:45 ` Dennis (Gang) Chen @ 2000-04-12 17:27 ` Daniel de Rauglaudre 2000-04-13 15:40 ` John Max Skaller 2000-04-12 18:06 ` David Brown ` (2 subsequent siblings) 3 siblings, 1 reply; 67+ messages in thread From: Daniel de Rauglaudre @ 2000-04-12 17:27 UTC (permalink / raw) To: Dennis (Gang) Chen; +Cc: caml-list > 1. Current functional languages do not have enough library support: > so it is not convenient to use FL for database management, programming > friendly user interface etc. Without industry support, these libraries > would take a long time to implement let rec industry_support () = library_support () and library_support () = industry_support ();; -- Daniel de RAUGLAUDRE daniel.de_rauglaudre@inria.fr http://cristal.inria.fr/~ddr/ ^ permalink raw reply [flat|nested] 67+ messages in thread
* Re: When functional languages can be accepted by industry? 2000-04-12 17:27 ` Daniel de Rauglaudre @ 2000-04-13 15:40 ` John Max Skaller 2000-04-14 19:16 ` John Max Skaller 0 siblings, 1 reply; 67+ messages in thread From: John Max Skaller @ 2000-04-13 15:40 UTC (permalink / raw) To: Daniel de Rauglaudre; +Cc: Dennis (Gang) Chen, caml-list Daniel de Rauglaudre wrote: > > > 1. Current functional languages do not have enough library support: > > so it is not convenient to use FL for database management, programming > > friendly user interface etc. Without industry support, these libraries > > would take a long time to implement > > let rec industry_support () = library_support () > and library_support () = industry_support ();; You have left out the important ingredient: politics. -- John (Max) Skaller, mailto:skaller@maxtal.com.au 10/1 Toxteth Rd Glebe NSW 2037 Australia voice: 61-2-9660-0850 checkout Vyper http://Vyper.sourceforge.net download Interscript http://Interscript.sourceforge.net ^ permalink raw reply [flat|nested] 67+ messages in thread
* Re: When functional languages can be accepted by industry? 2000-04-13 15:40 ` John Max Skaller @ 2000-04-14 19:16 ` John Max Skaller 0 siblings, 0 replies; 67+ messages in thread From: John Max Skaller @ 2000-04-14 19:16 UTC (permalink / raw) To: caml-list One barrier to acceptance of ocaml in industry: lack of programmers. This requires training. Who can help? -- John (Max) Skaller, mailto:skaller@maxtal.com.au 10/1 Toxteth Rd Glebe NSW 2037 Australia voice: 61-2-9660-0850 checkout Vyper http://Vyper.sourceforge.net download Interscript http://Interscript.sourceforge.net ^ permalink raw reply [flat|nested] 67+ messages in thread
* Re: When functional languages can be accepted by industry? 2000-04-12 1:45 ` Dennis (Gang) Chen 2000-04-12 17:27 ` Daniel de Rauglaudre @ 2000-04-12 18:06 ` David Brown 2000-04-13 1:23 ` Dennis (Gang) Chen 2000-04-13 6:53 ` Jean-Christophe Filliatre 2000-04-13 7:05 ` Pierre Weis 3 siblings, 1 reply; 67+ messages in thread From: David Brown @ 2000-04-12 18:06 UTC (permalink / raw) To: Dennis (Gang) Chen; +Cc: Pierre Weis, caml-list On Wed, Apr 12, 2000 at 11:15:04AM +0930, Dennis (Gang) Chen wrote: > > Don't forget that there is (almost) no restriction on side-effects in > > Caml: if this is crucial for your program, you can implement lists as > > an imperative data type of your own, and then use destructive update > > to perform the deletion operation in the required complexity. Just be > > aware that list sharing will be difficult as for any other imperative > > implementation of lists. > > This is true. But such an approach does not make ocaml > more attractive than C++. In ocaml, there are arrays, structures > and objects etc, but no such things like pointers in C. I'm not sure I understand what features of pointers in C you want. Yes, arbitrary pointer arithmetic is not available. But, when you work with mutable data structures in ocaml, the things you assign behave a lot like pointers in C or C++. Dave Brown ^ permalink raw reply [flat|nested] 67+ messages in thread
* Re: When functional languages can be accepted by industry? 2000-04-12 18:06 ` David Brown @ 2000-04-13 1:23 ` Dennis (Gang) Chen 2000-04-13 14:36 ` Pierre Weis 0 siblings, 1 reply; 67+ messages in thread From: Dennis (Gang) Chen @ 2000-04-13 1:23 UTC (permalink / raw) To: David Brown; +Cc: Pierre Weis, caml-list > I'm not sure I understand what features of pointers in C you want. Yes, > arbitrary pointer arithmetic is not available. But, when you work with > mutable data structures in ocaml, the things you assign behave a lot like > pointers in C or C++. Thank you very much. Now I find that a mutable linked list can indeed be elegantly implemented in ocaml, e.g.: type 'a mlist = Empty | Node of 'a mlist ref * 'a ref;; This is what I didn't realized before. Cheers. -- Dennis Gang CHEN Senior Software Engineer Motorola Australia Software Centre, Electronic Design Automation 2 Second Avenue, Mawson Lakes, SA 5095, Australia phone: +61 8 8203 3560, mailto: Dennis.G.Chen@motorola.com ^ permalink raw reply [flat|nested] 67+ messages in thread
* Re: When functional languages can be accepted by industry? 2000-04-13 1:23 ` Dennis (Gang) Chen @ 2000-04-13 14:36 ` Pierre Weis 0 siblings, 0 replies; 67+ messages in thread From: Pierre Weis @ 2000-04-13 14:36 UTC (permalink / raw) To: Dennis (Gang) Chen; +Cc: caml-list > Thank you very much. Now I find that a mutable linked list can > indeed be elegantly implemented in ocaml, e.g.: > > type 'a mlist = Empty | Node of 'a mlist ref * 'a ref;; If efficiency is really crucial, you could also write type 'a mlist = Empty | Node of 'a mcell and 'a mcell = {mutable hd : 'a; mutable tl : 'a mlist} You may have a look at the Caml FAQ, where the existence and manipulation of pointers in Caml is discussed: http://pauillac.inria.fr/caml/FAQ/pointers-eng.html (Fresh english translation written for the occasion). Best regards, -- Pierre Weis INRIA, Projet Cristal, http://pauillac.inria.fr/~weis ^ permalink raw reply [flat|nested] 67+ messages in thread
* Re: When functional languages can be accepted by industry? 2000-04-12 1:45 ` Dennis (Gang) Chen 2000-04-12 17:27 ` Daniel de Rauglaudre 2000-04-12 18:06 ` David Brown @ 2000-04-13 6:53 ` Jean-Christophe Filliatre 2000-04-13 12:20 ` Frank Atanassow ` (4 more replies) 2000-04-13 7:05 ` Pierre Weis 3 siblings, 5 replies; 67+ messages in thread From: Jean-Christophe Filliatre @ 2000-04-13 6:53 UTC (permalink / raw) To: Dennis (Gang) Chen; +Cc: Pierre Weis, caml-list > more attractive than C++. In ocaml, there are arrays, structures > and objects etc, but no such things like pointers in C. Wrong. You have references, which are quite better than pointers (they are typed, and necessarily initialized) > 1. Current functional languages do not have enough library support: Please. ocaml has the most wonderful standard library that any other language has ever had. Have a look in the reference manual before stating such non-sense. > 2. Functional languages do not well support the use of dynamic > data structures which requires mutable operations for achieving the > efficiency; Wrong. And you should stop thinking that efficiency means mutable data structures. Once again, read Okasaki's book. > It is no doubt that functional languages will continue to succeed in > eduacation, research, high level specification, formal program > verification, fast prototyping, etc. But, it appears to me that, in > industry, the second approach might succeed in most cases. Your arguments are not the good ones. People in industry do not use functional programming for other reasons: because this is not in their culture, because they don't know, because they have not been taught functional programming. Some of them, like you, think that functional programming languages are inefficient, but they are wrong. -- Jean-Christophe FILLIATRE mailto:Jean-Christophe.Filliatre@lri.fr http://www.lri.fr/~filliatr ^ permalink raw reply [flat|nested] 67+ messages in thread
* Re: When functional languages can be accepted by industry? 2000-04-13 6:53 ` Jean-Christophe Filliatre @ 2000-04-13 12:20 ` Frank Atanassow 2000-04-13 17:28 ` John Max Skaller 2000-04-13 12:28 ` Steve Stevenson ` (3 subsequent siblings) 4 siblings, 1 reply; 67+ messages in thread From: Frank Atanassow @ 2000-04-13 12:20 UTC (permalink / raw) To: caml-list If you really care about this subject, please read the article by Phil Wadler, "Why no one uses functional languages", http://cm.bell-labs.com/cm/cs/who/wadler/papers/sigplan-why/sigplan-why.ps.gz and then take your discussion to comp.lang.functional, which is a better forum for religious wars, with plenty of people who love to waste their time on this stuff. -- Frank Atanassow, Dept. of Computer Science, Utrecht University Padualaan 14, PO Box 80.089, 3508 TB Utrecht, Netherlands Tel +31 (030) 253-1012, Fax +31 (030) 251-3791 ^ permalink raw reply [flat|nested] 67+ messages in thread
* Re: When functional languages can be accepted by industry? 2000-04-13 12:20 ` Frank Atanassow @ 2000-04-13 17:28 ` John Max Skaller 0 siblings, 0 replies; 67+ messages in thread From: John Max Skaller @ 2000-04-13 17:28 UTC (permalink / raw) To: Frank Atanassow; +Cc: caml-list Frank Atanassow wrote: > > If you really care about this subject, please read the article by Phil Wadler, > "Why no one uses functional languages", > > http://cm.bell-labs.com/cm/cs/who/wadler/papers/sigplan-why/sigplan-why.ps.gz > > and then take your discussion to comp.lang.functional, which is a better forum > for religious wars, with plenty of people who love to waste their time on this > stuff. I do not think this is a waste of time. I think it is important for people who are in industry to tell the ocaml team what they think. This is no religous war: the readers of this list all like ocaml :-) Furthermore, because it supports object orientation and imperative style -- as well as throwing in ( .. he ducks quickly .. ) functional stuff, one cannot throw the 'functional language are XXXX' argument at ocaml. It ISN'T a functional language. -- John (Max) Skaller, mailto:skaller@maxtal.com.au 10/1 Toxteth Rd Glebe NSW 2037 Australia voice: 61-2-9660-0850 checkout Vyper http://Vyper.sourceforge.net download Interscript http://Interscript.sourceforge.net ^ permalink raw reply [flat|nested] 67+ messages in thread
* Re: When functional languages can be accepted by industry? 2000-04-13 6:53 ` Jean-Christophe Filliatre 2000-04-13 12:20 ` Frank Atanassow @ 2000-04-13 12:28 ` Steve Stevenson 2000-04-13 13:38 ` jean-marc alliot ` (2 subsequent siblings) 4 siblings, 0 replies; 67+ messages in thread From: Steve Stevenson @ 2000-04-13 12:28 UTC (permalink / raw) To: Jean-Christophe Filliatre; +Cc: Dennis (Gang) Chen, Pierre Weis, caml-list I may have missed some of the below ideas in the discussion. Let me pass along the notes from a discussion that I had with Jim McGraw who was one of the true guiding lights of the Sisal effort. You can huff and puff at this, but in my experience (11 years at the old Bell Labs), these ideas ring true. FYI, ASCI is the Accelerated Strategic Computing Intitiative (simulation support for the US nuclear weapons program.) Best regards, steve ----- Steve (really "D. E.") Stevenson Assoc Prof Department of Computer Science, Clemson, (864)656-5880.mabell Support V&V mailing list: ivandv@cs.clemson.edu ============================================================ The following information is drawn from an exchange with Jim McGraw of LLNL on the whys and wherefores of the failure of SISAL to win the hearts and minds of the programmerate. This is a LaTeX file. The paragraphs in \em are my comments --- steve \begin{outline} \item No Commerical Support*\footnote{ Items marked with an asterisk (*) identified by Jim as key issues. Italicized text is my response to his comments. }% Code developers want assurance that their codes can be moved to different platforms and the language will be supported there. This requires vendor concurance and support that Sisal never achieved. This is the standard chicken and egg problem, because vendors want to see apps users demanding a product before they support it. This is a very real and very difficult hurdle for anyone -- nothing specific to Sisal or functional languages. {\em Agreed. You might add academic support. In fact, I'm not sure that isn't first sometimes. The grads coming out are not going to change languages and systems unless they have to.} \item We want Fortran*: Until the ASCI demands came along, there was a clear preferance to evolving current codes, which were all written in Fortran. The argument was that we had too much invested to rewrite codes and to really get the benefit of Sisal, you need to rewrite and rethink your code design. Interestingly, the new breed of programmers and the ASCI demands have overcome this argument. Programmers are using many variants of Fortran and C. C++ is coming into vogue and also many different front-end control languages, like Eiffel and JAVA. Moreover, many first wanted MPI as the model for parallelism, but now they are being forced to use threads and OpenMP, to get concurrency within these nodes. They chose MPI, not because it was good, but because it was perceived as the ONLY option that would give them long term portability (even though to this day, the performance cost of such portability is still in serious doubt). So what they really want is minimal change. {\em This last sentence would seem to capture it all. We see it when we try to get the students to add a new language.} \item Unstable compilers for Sisal*: This is a very legitimate argument. \item The programming model did have some serious weaknesses. Foremost was I/O. The whole concept of streams was included to have some way of doing I/O, but it was an awkward hack at best. {\em I must admit, I find the current spate of implementations of streams unintuitive. However, CAML and OCAML seem a bit easier to use. Much of this is experience, though, isn't it? Streams are really natural for some problems.} We ended up making more progress by permitting calls from Sisal to C, where we did I/O. But that approach has some severe technical difficulties that programmers must use with great care. Another example of model weaknesses is parallel operations like bucket-sort that we could not easily express with their natural concurrency. There were a whole set of issues about what we should or should not allow in the language, relative to things that were determinant. {\em It seems to me that this problem of how to write parallelism is ubiquitous and I'm not sure I understand what the real problem is from either a cognitive or conceptual viewpoint. I did a lot of discrete event simulation work at BTL and I find that experience the key to understanding parallelism but I don't see the linguistic solution either. } \item *Programmers did not want to turn control of key things over to a compiler, because they did not trust the compiler to do the right thing. One good example is data layout. For parallel machines with distributed memories, we did not have a good solution, although our most likely idea was to use some form of pragma from users. They did not like The idea that the compiler would decide where in memory things would go or when various thing would be scheduled for execution. Interestingly, they are now discovering that for these complex cache-based machines, they must have the compiler do more, or the performance of the codes drops through the floor even on single processors. The best performance is achieved by setting up data layout on a node based on the exact variable reference patterns across different (unnested) loops. {\em I wrote a preprocessor for a biophysics group. It took chemical stoichiometry notation and developed the functions. I realized later that they were using it to generate the code and then handchecking the Fortran. Is the problem that we're too opaque to the scientists? A more collaborative effort?} \item I think there is no doubt that the functional programming style caused concern among possible programmers. They are accustomed to thinking sequentially and this change was awkward. Even now, many folks still want to stick to SPMD mode, where everything has a vector view. for some kinds of code, this works great. However, when we get to codes that need more concurrency and require effective load-balancing, the solutions will be very hard. Right now, programmers want to manage their concurency in understandable ways. Sisal did not permit much of this type of control. {\em My academic colleagues don't seem to be able to make the switch to functional, either.} \item Determinant behavior. The language definition for Sisal required determinacy. However, to insure this property, we had to make sure we had the exact replicatable order of execution followed. This was a VERY high cost in terms of performance. Morever, when we went to compare performance with other codes that did not guarantee determinacy, we would lose badly. So our implementations had an option to ignore the determinacy constraint. When we did that, we got better performance than our competition, but we had lost a key feature, because now we could get race conditions. {\em How much of this should be fodder for academic research. Good old computability theory?} \item *And the ever present: Politics. <Understand the points> \item I am not sure this is all of the reasons for our problems, but it is certainly the overwhelming majority of them. It's impossible for me to rank their importance, because no one else ever tried. \item The totality of the issues just weighed us down too much to change things. The key point to me is that many of these issues are not unique to Sisal. ASCI and even the President's PITAC report say that "software" is the issue and that we still need to consider new programming models and styles. \item The roots of MPI have been around for a lot longer than that. This is any area that moves at a snail's pace and yet users demand robust and reliable tools and upward compatibility from their current codes. I am not sure there is any technically good solution possible. \item {\em You may be exactly correct. The problem is not a technical one. The desire to change languages seems worse now than ever before. Maybe that's how one get ones project out of trouble: "We're in the wrong language, let's rewrite."} \end{outline} \end{document} -- Best regards, steve ----- Steve (really "D. E.") Stevenson Assoc Prof Department of Computer Science, Clemson, (864)656-5880.mabell Support V&V mailing list: ivandv@cs.clemson.edu ^ permalink raw reply [flat|nested] 67+ messages in thread
* Re: When functional languages can be accepted by industry? 2000-04-13 6:53 ` Jean-Christophe Filliatre 2000-04-13 12:20 ` Frank Atanassow 2000-04-13 12:28 ` Steve Stevenson @ 2000-04-13 13:38 ` jean-marc alliot 2000-04-13 16:00 ` William Chesters 2000-04-13 14:29 ` T. Kurt Bond 2000-04-13 16:59 ` John Max Skaller 4 siblings, 1 reply; 67+ messages in thread From: jean-marc alliot @ 2000-04-13 13:38 UTC (permalink / raw) To: caml-list I don't want to be caught in a religion war, but I think that our own experience can be interesting. We are a small laboratory working inside a much larger structure (the Centre d'Etudes de la Navigation Aérienne, or CENA), which belongs itself to a much larger structure (the Direction Générale de l'Aviation Civile, or DGAC). For people who do not know the french system, you can consider the CENA somewhat like a small MITRE Corporation in the USA, and the DGAC is the french equivalent of the Federal Aviation Administration. Software development is a vital concern for our administration. Air Trafic Control systems are highly dependant on computers and computer programs. Very large amount of money are spent for software development and software support (I don't have the exact figures, but it should be around 50 M$ (million dollars). I can be wrong but the magnitude is correct). Currently, CAML is not used in what we call industrial development. On the opposite it is used for R&D. Inside our lab we all develop in CAML and some of the softwares we have developped are now used in other R&D ATC centers, but also used for some more operational applications, like the evaluation of airspace sectoring. Here is an extremely (IMHO) interesting example, which was out first real experience in CAML. We had an arithmetic traffic simulator written in C a few years ago (a traffic simulator is something which reads raw flight plans, makes aircraft fly, and writes lot of interesting statistics about air traffic sector overloading, air traffic conflicts and can even solve conflicts). This software had become difficult to maintain over the years. It was quite large, with lot of features. We decided to rewrite it completely in CAML. The results were better than anything we might have expected. The size of the code was reduced by a factor of 4, lot of bugs were solved and it became only slightly slower (10%). I don't think that CAML needs anything more to be accepted by industry, from a technical point of view. I have developped applications in many different languages(ADA, C, C++,...), and I began to use CAML much later. Even if I would not be as harsh as Jean-Christophe Filliatre, I agree with him very much. CAML is fast, easy to use, reliable, its standard library is powerful, strong typing corrects lot of bugs, dynamic typing is a real comfort compared to ADA. Moreover, the CAML team is certainly one of the most brilliant and efficient development team I have dealt with. The language has always evolved smoothly and (according to me) in the right direction. Questions are always answered quickly and with a real kindness. You can't ask for more. I think that what CAML needs is time. When some of my (and others) young students will become software project managers, it will be easier for CAML to become an industry standard. Let's go teaching CAML ! ^ permalink raw reply [flat|nested] 67+ messages in thread
* Re: When functional languages can be accepted by industry? 2000-04-13 13:38 ` jean-marc alliot @ 2000-04-13 16:00 ` William Chesters 0 siblings, 0 replies; 67+ messages in thread From: William Chesters @ 2000-04-13 16:00 UTC (permalink / raw) To: caml-list jean-marc alliot writes: > I don't think that CAML needs anything more to be accepted by industry, > from a technical point of view. > Moreover, the CAML team is certainly one of the most brilliant and > efficient development team I have dealt with. Steve Stevenson writes: > \item Unstable compilers for Sisal*: This is a very legitimate > argument. > > \item The programming model did have some serious weaknesses. > Foremost was I/O. The whole concept of streams was included to > have some way of doing I/O, but it was an awkward hack at best. I don't think it can be emphasised too often that some functional languages (ocaml perhaps chief among them) are of *extremely* high quality when it comes to the bread and butter usability issues which concern real-world developers. ocaml's compiler/runtime are 99% solid, as reliable as any commercial system I've worked with. The I/O and other libraries are splendidly down-to-earth and effective. The documentation is helpful and mercifully concise. Criticism of the "functional" idiom per se simply misses the point, since ocaml supports imperative data structures very well (the only possible niggle being the "write" overhead associated with the generational GC, but that's only an issue for certain kinds of inner loop, and only in comparison with C/C++). (All this is a consequence of the skill and hard work of the ocaml team---and the rightness of their vision of how the pretty ideas floating around functional languages could best be exploited in a practical system.) So there is no need to look inwards at ocaml, and the handful of other good and well-implemented minority languages out there, for an answer to the question of why industry hasn't accepted them on a wide scale. Just look outwards to industry itself. To get Java accepted required an extremely singular event, namely the rise of the 'net and Sun's agreement with Netscape; without that kind of earthquake, you are in a chicken and egg situation. E.g. I love ocaml and appreciate its advantages vis-a-vis Java and C++ very well, but I can't foist it on my colleagues for lots of good reasons to do with its current (relatively) narrow user base: customer credibility, second-sourcing for maintenance, learning curve, ... But look, the industry is very big, and there is room for minority languages to live quite nicely at the "margins" where chicken/egg isn't such a big problem---and maybe one day emerge and achieve world domination ;). ^ permalink raw reply [flat|nested] 67+ messages in thread
* Re: When functional languages can be accepted by industry? 2000-04-13 6:53 ` Jean-Christophe Filliatre ` (2 preceding siblings ...) 2000-04-13 13:38 ` jean-marc alliot @ 2000-04-13 14:29 ` T. Kurt Bond 2000-04-13 17:23 ` Julian Assange 2000-04-13 16:59 ` John Max Skaller 4 siblings, 1 reply; 67+ messages in thread From: T. Kurt Bond @ 2000-04-13 14:29 UTC (permalink / raw) To: caml-list Note that what I am about to say is *not* intended as a criticism of OCaml; I use OCaml every day, and enjoy using it. Jean-Christophe Filliatre writes: > > 1. Current functional languages do not have enough library support: > > Please. ocaml has the most wonderful standard library that any other > language has ever had. Have a look in the reference manual before > stating such non-sense. As much as I enjoy using OCaml, I think that this may be overstating the case. OCaml has a very good standard library that is very well documented; however, it does not have everything. Just a few examples of things that are missing from the standard library: * Parsing and manipulating RFC 822 mail headers * Parsing and manipulating MIME documents * Parsing and downloading URLs * A FTP client * An HTTP Server * An HTTP Client * An IMAP Client * An SMTP Client * A POP Client * A NNTP Client * A Telnet Client * Parsing, manipulating, and generating HTML * Parsing, manipulating, and generating SGML * Audio data creation and manipulation * Image data creation and manipulation * High-level file operations (copy file, copy directory tree, delete directory tree) Now, one could justifiably argue that such things don't belong in the standard library, but current a lot of programmers expect things like this to be in the standard library; this list, for instance, was generated by quickly scanning the Python documentation, and the Perl and Java libraries include similar functionality. It is true that many of these things can be obtained by downloading contributed packages for OCaml, but that's an extra step that programmers accustomed to other languages may not bother with when evaluating OCaml. They want a quick solution to their specific problems, and if they don't have to program large chunks of that solution because some other language includes that functionality in their standard library, they'll happily use *that* language. I personally will happily continue to use OCaml for very practical reasons, and I will continue to recommend to other programmers, but I will not fool myself into thinking it is perfect and that no-one will need things that it doesn't currently provide out-of-the-box. [As a side note, I must commend the OCaml team on their documentation of the language and standard libraries; every time I have to referee to the documentation I am impressed again by how succinctly yet clearly the documentation is written, and by how well organized it is.] -- T. Kurt Bond, tkb@tkb.mpl.com ^ permalink raw reply [flat|nested] 67+ messages in thread
* Re: When functional languages can be accepted by industry? 2000-04-13 14:29 ` T. Kurt Bond @ 2000-04-13 17:23 ` Julian Assange 2000-04-16 16:33 ` John Max Skaller 2000-04-17 15:06 ` Markus Mottl 0 siblings, 2 replies; 67+ messages in thread From: Julian Assange @ 2000-04-13 17:23 UTC (permalink / raw) To: T. Kurt Bond; +Cc: caml-list, proff "T. Kurt Bond" <tkb@tkb.mpl.com> writes: > Note that what I am about to say is *not* intended as a criticism of > OCaml; I use OCaml every day, and enjoy using it. > > Jean-Christophe Filliatre writes: > > > 1. Current functional languages do not have enough library support: > > > > Please. ocaml has the most wonderful standard library that any other > > language has ever had. Have a look in the reference manual before > > stating such non-sense. > > As much as I enjoy using OCaml, I think that this may be overstating > the case. OCaml has a very good standard library that is very well > documented; however, it does not have everything. Just a few examples > of things that are missing from the standard library: > > * Parsing and manipulating RFC 822 mail headers > * Parsing and manipulating MIME documents > * Parsing and downloading URLs > * A FTP client > * An HTTP Server > * An HTTP Client > * An IMAP Client > * An SMTP Client > * A POP Client > * A NNTP Client > * A Telnet Client > * Parsing, manipulating, and generating HTML > * Parsing, manipulating, and generating SGML > * Audio data creation and manipulation > * Image data creation and manipulation > * High-level file operations (copy file, copy directory tree, > delete directory tree) If these things ever end up in the standard library, I will pack my bags and go home. If you read the links of The Hump, you will see that there are indeed libraries to do most of these things in ocaml. The problem is that The Hump is poorly organised, and the 3rd party library code is often poorly documented. A lot could be done to mitigate this situation, by making the 3rd party libraries look much closer to caml.inria.fr, than the brief reference we see on The Hump. python.org's indexing of 3rd party libraries is an excellent example of this. That said, one excellent catalytic change, would be to bring in seperate compilation library version dependency analysis (i.e an ocaml 3rd party package manager) into the main ocaml distribution. I believe there is an ocaml package to do this already, although I'm not sure how sound it is. As the number of inter-dependent ocaml packages increases, I'm increasingly hit by version conflicts. A library calculus system which was URL name space aware would be particularly interesting. NetBSD and FreeBSD take this approach in their own package source dependency system for instance. Compiling one package recursively pulls in, uncompresses, patches, compilies and installs the dependencies. Such technology strongly fosters co-operative community. ^ permalink raw reply [flat|nested] 67+ messages in thread
* Re: When functional languages can be accepted by industry? 2000-04-13 17:23 ` Julian Assange @ 2000-04-16 16:33 ` John Max Skaller 2000-04-17 15:06 ` Markus Mottl 1 sibling, 0 replies; 67+ messages in thread From: John Max Skaller @ 2000-04-16 16:33 UTC (permalink / raw) To: Julian Assange; +Cc: T. Kurt Bond, caml-list Julian Assange wrote: > > * Parsing and manipulating RFC 822 mail headers > > * Parsing and manipulating MIME documents > > * Parsing and downloading URLs > > * A FTP client > > * An HTTP Server > > * An HTTP Client > > * An IMAP Client > > * An SMTP Client > > * A POP Client > > * A NNTP Client > > * A Telnet Client > > * Parsing, manipulating, and generating HTML > > * Parsing, manipulating, and generating SGML > > * Audio data creation and manipulation > > * Image data creation and manipulation > > * High-level file operations (copy file, copy directory tree, > > delete directory tree) > > If these things ever end up in the standard library, I will pack my bags and > go home. [...] > As the number of inter-dependent ocaml packages increases, I'm > increasingly hit by version conflicts. > > A library calculus system which was URL name space aware would be > particularly interesting. NetBSD and FreeBSD take this approach in > their own package source dependency system for instance. Compiling one > package recursively pulls in, uncompresses, patches, compilies and > installs the dependencies. > > Such technology strongly fosters co-operative community. Yeah, but failing to recognize that the technology for inter-networking such shared library modules is required before it can be implemented: namely the components you said will send you packing your bags were they fundamental. :-) There's a difference between 'standard library' and 'standard distribution' too: the "Unix" module, for example, is part of the latter but not the former. -- John (Max) Skaller, mailto:skaller@maxtal.com.au 10/1 Toxteth Rd Glebe NSW 2037 Australia voice: 61-2-9660-0850 checkout Vyper http://Vyper.sourceforge.net download Interscript http://Interscript.sourceforge.net ^ permalink raw reply [flat|nested] 67+ messages in thread
* Re: When functional languages can be accepted by industry? 2000-04-13 17:23 ` Julian Assange 2000-04-16 16:33 ` John Max Skaller @ 2000-04-17 15:06 ` Markus Mottl 2000-04-17 19:55 ` John Prevost 1 sibling, 1 reply; 67+ messages in thread From: Markus Mottl @ 2000-04-17 15:06 UTC (permalink / raw) To: Julian Assange; +Cc: OCAML > That said, one excellent catalytic change, would be to bring in > seperate compilation library version dependency analysis (i.e an ocaml > 3rd party package manager) into the main ocaml distribution. I believe > there is an ocaml package to do this already, although I'm not sure > how sound it is. There are certainly a few "social" technologies that could significantly boost the usability of OCaml in real-world projects, a good version management tool for third party sources probably ranking among the "most missing" ones. I am highly convinced that the success of some "modern" (?) languages (Perl, Python, Java) was strongly supported by a (more or less) standard way of incorporating third-party libraries. The current state of OCaml is definitely advanced enough to pay more attention to some "not-so-academic" goals like providing for tools aimed at extending the user base. I believe this would benefit the whole process a lot in the future. > A library calculus system which was URL name space aware would be > particularly interesting. NetBSD and FreeBSD take this approach in > their own package source dependency system for instance. Compiling one > package recursively pulls in, uncompresses, patches, compilies and > installs the dependencies. It need not be an "overkill" version right from the beginning - a nice, clean and (important!) standard way to safely add, update and remove libraries would surely be a good start. > Such technology strongly fosters co-operative community. Taking a look at the Hump and Gerd's link database, I have the impression that there is already enough "critical mass" of contributors, but most of the contributions are "one-man-efforts", i.e. nice, but they don't have enough "punch". Maybe we should really think more about ways to "unleash the forces of cooperative development". As it seems: easily said, difficult to do... Best regards, Markus Mottl -- Markus Mottl, mottl@miss.wu-wien.ac.at, http://miss.wu-wien.ac.at/~mottl ^ permalink raw reply [flat|nested] 67+ messages in thread
* Re: When functional languages can be accepted by industry? 2000-04-17 15:06 ` Markus Mottl @ 2000-04-17 19:55 ` John Prevost 2000-04-24 2:36 ` Chris Tilt 0 siblings, 1 reply; 67+ messages in thread From: John Prevost @ 2000-04-17 19:55 UTC (permalink / raw) To: Markus Mottl; +Cc: Julian Assange, OCAML, Xavier Leroy >>>>> "mm" == Markus Mottl <mottl@miss.wu-wien.ac.at> writes: mm> There are certainly a few "social" technologies that could mm> significantly boost the usability of OCaml in real-world mm> projects, a good version management tool for third party mm> sources probably ranking among the "most missing" ones. {...} mm> Taking a look at the Hump and Gerd's link database, I have the mm> impression that there is already enough "critical mass" of mm> contributors, but most of the contributions are mm> "one-man-efforts", i.e. nice, but they don't have enough mm> "punch". Maybe we should really think more about ways to mm> "unleash the forces of cooperative development". As it seems: mm> easily said, difficult to do... I agree that this is the most significant "hump" in the way of O'Caml at the moment. Whenever I become enthused about working on a major interesting project in O'Caml, I first start looking at what other people have done. I go to the hump, and the link database. There, I discover that I could perhaps reuse code from three other people. But what's this?--one of them uses findlib, one of them has a Makefile they rolled by hand (which is broken), and one of them just gives you source code, no library at all. So I sort of sit there and stare at these three useful libraries, thinking about how I can build my system/library in such a way that it'll work with all three, and... it's just a mess. I eventually sort of roll over and take a big sigh, then leave to do something else. Needless to say, I don't get much code written. Perl has it's problems, and the quality of modules varies immensely--but when I find a module, I can install it and try it out in about 20 seconds. That lets me get on to the more important problems of writing code. While this sort of thing might, by a number of arguments, not be the sort of thing that should be considered part of the "core language", I'd like to argue that such an official blessing would be enough to get people to start using the tools consistantly, rather than everybody doing things their own way. And it's only when everybody's working in approximately the same way that this kind of simplicity of working with third-party modules becomes possible. >>>>> "xl" == Xavier Leroy <Xavier.Leroy@inria.fr> writes: xl> In OCaml, you have excellent I/O (better than Java's in my xl> opinion) in the standard library, TK and GTK bindings for xl> GUIs, and a couple of bindings to existing database libraries xl> (see the Caml hump at http://caml.inria.fr). I agree the xl> database stuff needs more work and the GUI stuff needs more xl> documentation, but it's a start. Mmm. I actually have one minor gripe about the I/O stuff--not being able to turn a set of functions into an in_channel or out_channel has bit me a number of times. It's not so bad, until you want to do something like implement an encrypting network stream and then use stuff from Printf to write to it. (This could also simplify the code somewhat, since things like bprintf and sprintf could be written in terms of such a primitive. This would probably lose some speed, though.) xl> I certainly can't disagree with you. The main problem here is xl> human resources. But we are looking at ways for big xl> industrial users to help fund that kind of developments. I think that if you took something like, say, Findlib, and asked if you could integrate it into O'Caml, you'd discover at least a few people who would make time to go over things looking for issues and warts to clean up. It's hard to be enthused if it's not going to be "official". Even though I've been waiting for a good solution for consistent handling of third party modules almost as long as I've been using O'Caml, the fact that only a few people use findlib cuts down on its usefulness to me. If Findlib were accepted into O'Caml, I would go out of my way to send findlibifying patches to authors of various packages, instead of just getting depressed. John. ^ permalink raw reply [flat|nested] 67+ messages in thread
* Re: When functional languages can be accepted by industry? 2000-04-17 19:55 ` John Prevost @ 2000-04-24 2:36 ` Chris Tilt 0 siblings, 0 replies; 67+ messages in thread From: Chris Tilt @ 2000-04-24 2:36 UTC (permalink / raw) To: John Prevost; +Cc: Markus Mottl, Julian Assange, OCAML, Xavier Leroy Ok, if I may please add my rambling thoughts. XL posted a reponse from myself regarding our industrial success with CAML. In fact, I am thrilled with the core language and user/supplier community. With respect, my wish list is as such: 1. consistent expressiveness in .mli files as .ml files for functors 2. agreed upon/blessed modules (library?) format 3. work bench (IDE) tool On 1, I was stumped until MM showed me a trick for using .ml files as interface files with functors. However, it is tricky and difficult to document. I understand that there are problems with functors over interfaces, but I emplore the authors to find a compromise. This would facilitate larger projects and code reuse. On 2, the included note describes this problem very well. I will please request that we adopt some standard; I will happily code to it and share my miserable functorized graph theory module. On 3, I have always used emacs. It is great for one developer. However, we are also spoiled by Visual Age for Java (from IBM), which uses the old Envy database from SmallTalkV and is brilliant. We love this IDE because it supports excellent team programming. I can not (sadly) convince others in my office to use emacs on their WinNT/Win2000 computers. I understand their position. Also, I know it is very difficult to produce an IDE for a language as a research work. It is not so interesting, but a lot of work. However, perhaps someone could develop a model of team development for ML as a research project. VA for Java has a clear model that I think is far superior to other Java tools. It is the OO development paradigm and Envy that make it so powerful. There is probably such a model for our functional languages (sorry if it's obvious and I just don't see it). I will do whatever I can to support such development. Has there already been a thread of discussion on the topic of development model that I can study? Thank you all very much for this excellent language and discussion group. Best regards, Chris Tilt John Prevost wrote: > > >>>>> "mm" == Markus Mottl <mottl@miss.wu-wien.ac.at> writes: > > mm> There are certainly a few "social" technologies that could > mm> significantly boost the usability of OCaml in real-world > mm> projects, a good version management tool for third party > mm> sources probably ranking among the "most missing" ones. > {...} > mm> Taking a look at the Hump and Gerd's link database, I have the > mm> impression that there is already enough "critical mass" of > mm> contributors, but most of the contributions are > mm> "one-man-efforts", i.e. nice, but they don't have enough > mm> "punch". Maybe we should really think more about ways to > mm> "unleash the forces of cooperative development". As it seems: > mm> easily said, difficult to do... > > I agree that this is the most significant "hump" in the way of O'Caml > at the moment. Whenever I become enthused about working on a major > interesting project in O'Caml, I first start looking at what other > people have done. I go to the hump, and the link database. There, I > discover that I could perhaps reuse code from three other people. > > But what's this?--one of them uses findlib, one of them has a Makefile > they rolled by hand (which is broken), and one of them just gives you > source code, no library at all. > > So I sort of sit there and stare at these three useful libraries, > thinking about how I can build my system/library in such a way that > it'll work with all three, and... it's just a mess. I eventually > sort of roll over and take a big sigh, then leave to do something > else. > > Needless to say, I don't get much code written. > > Perl has it's problems, and the quality of modules varies > immensely--but when I find a module, I can install it and try it out > in about 20 seconds. That lets me get on to the more important > problems of writing code. > > While this sort of thing might, by a number of arguments, not be the > sort of thing that should be considered part of the "core language", > I'd like to argue that such an official blessing would be enough to > get people to start using the tools consistantly, rather than > everybody doing things their own way. And it's only when everybody's > working in approximately the same way that this kind of simplicity of > working with third-party modules becomes possible. > > >>>>> "xl" == Xavier Leroy <Xavier.Leroy@inria.fr> writes: > > xl> In OCaml, you have excellent I/O (better than Java's in my > xl> opinion) in the standard library, TK and GTK bindings for > xl> GUIs, and a couple of bindings to existing database libraries > xl> (see the Caml hump at http://caml.inria.fr). I agree the > xl> database stuff needs more work and the GUI stuff needs more > xl> documentation, but it's a start. > > Mmm. I actually have one minor gripe about the I/O stuff--not being > able to turn a set of functions into an in_channel or out_channel has > bit me a number of times. It's not so bad, until you want to do > something like implement an encrypting network stream and then use > stuff from Printf to write to it. > > (This could also simplify the code somewhat, since things like bprintf > and sprintf could be written in terms of such a primitive. This would > probably lose some speed, though.) > > xl> I certainly can't disagree with you. The main problem here is > xl> human resources. But we are looking at ways for big > xl> industrial users to help fund that kind of developments. > > I think that if you took something like, say, Findlib, and asked if > you could integrate it into O'Caml, you'd discover at least a few > people who would make time to go over things looking for issues and > warts to clean up. It's hard to be enthused if it's not going to be > "official". > > Even though I've been waiting for a good solution for consistent > handling of third party modules almost as long as I've been using > O'Caml, the fact that only a few people use findlib cuts down on its > usefulness to me. If Findlib were accepted into O'Caml, I would go > out of my way to send findlibifying patches to authors of various > packages, instead of just getting depressed. > > John. ^ permalink raw reply [flat|nested] 67+ messages in thread
* Re: When functional languages can be accepted by industry? 2000-04-13 6:53 ` Jean-Christophe Filliatre ` (3 preceding siblings ...) 2000-04-13 14:29 ` T. Kurt Bond @ 2000-04-13 16:59 ` John Max Skaller 2000-04-15 22:29 ` William Chesters ` (2 more replies) 4 siblings, 3 replies; 67+ messages in thread From: John Max Skaller @ 2000-04-13 16:59 UTC (permalink / raw) To: Jean-Christophe Filliatre; +Cc: Dennis (Gang) Chen, Pierre Weis, caml-list Jean-Christophe Filliatre wrote: > > > more attractive than C++. In ocaml, there are arrays, structures > > and objects etc, but no such things like pointers in C. > > Wrong. You have references, which are quite better than pointers (they > are typed, So are C/C++ ones .. > and necessarily initialized) .. which is a serious problem. And C++ also has 'necessarily initialised' references :-) > > 1. Current functional languages do not have enough library support: > > Please. ocaml has the most wonderful standard library that any other > language has ever had. Have a look in the reference manual before > stating such non-sense. Oh come on. Have a look at a real library before making such non-sense claims. Considerable functionality is missing, the library is inconsistent, the documentation is incomplete, and it is less generic than C++ STL, which is also probably more efficient on almost every operation. Many of us who know STL wonder how to fit it into the ocaml type system! > > 2. Functional languages do not well support the use of dynamic > > data structures which requires mutable operations for achieving the > > efficiency; > > Wrong. And you should stop thinking that efficiency means mutable data > structures. Once again, read Okasaki's book. The statement said 'functional languages do not well support use of dynamic data structures which _require mutable operations for efficiency_'. you cannot say the conditional is wrong, only the claim that functional languages do not provide good support for mutable data structures. You could argue that the argument is void, since the assumptions are vacuous 'there are no such data structures', but reality would prove you wrong very quickly. The vast majority of data structures are collections of interrelated objects reflecting or controlling state, and where changes are propagated throughout the data structures in such a way that efficient functional modelling would be worthless -- since the application domain is clearly one in which state transformation is the whole point. > Your arguments are not the good ones. People in industry do not use > functional programming for other reasons: because this is not in their > culture, because they don't know, because they have not been taught > functional programming. Some of them, like you, think that functional > programming languages are inefficient, but they are wrong. Show me a functional programming language that is as fast as C++ and I will give up C++. :-) Until then, I will use ocaml where speed is not essential, but power is important, and confidence in the result crucial (such as a compiler). -- John (Max) Skaller, mailto:skaller@maxtal.com.au 10/1 Toxteth Rd Glebe NSW 2037 Australia voice: 61-2-9660-0850 checkout Vyper http://Vyper.sourceforge.net download Interscript http://Interscript.sourceforge.net ^ permalink raw reply [flat|nested] 67+ messages in thread
* Re: When functional languages can be accepted by industry? 2000-04-13 16:59 ` John Max Skaller @ 2000-04-15 22:29 ` William Chesters 2000-04-16 22:24 ` Nickolay Semyonov 2000-04-17 12:51 ` jean-marc alliot 2 siblings, 0 replies; 67+ messages in thread From: William Chesters @ 2000-04-15 22:29 UTC (permalink / raw) To: caml-list John Max Skaller writes: > > Wrong. You have references, which are quite better than pointers > > (they are typed, and necessarily initialized) > > .. which is a serious problem. We've talked about this before ... Yes, initialising a value sometimes means a certain number of clock cycles "wasted", but it seems to me that any program in which those cycles are non-negligible compared with the cycles you are going to spend on actually using the value in question is probably a poorly written program. It's only if you construct a huge array of zeroes and then discard it that initialisation can have a serious impact (?). > Oh come on. Have a look at a real library before making > such non-sense claims. Considerable functionality is missing, > the library is inconsistent, the documentation is incomplete, > and it is less generic than C++ STL, which is also probably > more efficient on almost every operation. STL-completeness is not the touchstone of a library's value. I think most people who used Java for real work found that we hardly ever missed it (pre-1.2, Java's libraries were very unpretentious), and enjoyed not having to spend time explaining it to co-workers ... The STL is yet another manifestation of the terribly 80s more-is-better (and cleverer-is-better) philosophy which permeates the world of C++. To put it succinctly: have a look at what is really used (and useful) before making such claims. Having said that I agree the ocaml library could usefully be grown a bit. > Show me a functional programming language that is as fast > as C++ and I will give up C++. :-) It's perfectly true that C++ is the only language in which there is often a way to code your solution in such a way that (a) the source is written in concise high-level terms, and (b) the object code is as fast as it can possibly be. Leaving aside the fact that there are also dozens of much slower ways to code your solution---onto which all but the most expert C++ programmers are bound by Sod's law to light---that's wonderful and impressive. I agree, sometimes C++ is the only way. But how much of the code that gets written fails to meet the following conditions: -- it can run 50% (or 3 times, whatever) slower than C and it just doesn't matter (think Java, Perl, VB, ...); or -- it can be written as easily, with less palaver, in plain old C; or -- if it's written in C++, it's done quickly and defensively, so there's little danger of it ending up unmaintainably clever or unstable, but also little danger of it running fast. I honestly don't think it's raw speed relative to C++ that's standing in the way of the acceptance of functional languages in industry. However, ... > One barrier to acceptance of ocaml in industry: lack of > programmers. ... is surely spot on. ^ permalink raw reply [flat|nested] 67+ messages in thread
* Re: When functional languages can be accepted by industry? 2000-04-13 16:59 ` John Max Skaller 2000-04-15 22:29 ` William Chesters @ 2000-04-16 22:24 ` Nickolay Semyonov 2000-04-18 6:52 ` Max Skaller 2000-04-17 12:51 ` jean-marc alliot 2 siblings, 1 reply; 67+ messages in thread From: Nickolay Semyonov @ 2000-04-16 22:24 UTC (permalink / raw) To: caml-list John Max Skaller wrote: > Show me a functional programming language that is as fast > as C++ and I will give up C++. :-) > On what type of applications? Nickolay ^ permalink raw reply [flat|nested] 67+ messages in thread
* Re: When functional languages can be accepted by industry? 2000-04-16 22:24 ` Nickolay Semyonov @ 2000-04-18 6:52 ` Max Skaller 0 siblings, 0 replies; 67+ messages in thread From: Max Skaller @ 2000-04-18 6:52 UTC (permalink / raw) To: Nickolay Semyonov; +Cc: caml-list Nickolay Semyonov wrote: > > John Max Skaller wrote: > > Show me a functional programming language that is as fast > > as C++ and I will give up C++. :-) > > > > On what type of applications? Thank you. This is the right answer. And I use both languages. Although I much prefer ocaml :-) -- John (Max) Skaller at OTT [Open Telecommications Ltd] mailto:maxs@in.ot.com.au -- at work mailto:skaller@maxtal.com.au -- at home ^ permalink raw reply [flat|nested] 67+ messages in thread
* Re: When functional languages can be accepted by industry? 2000-04-13 16:59 ` John Max Skaller 2000-04-15 22:29 ` William Chesters 2000-04-16 22:24 ` Nickolay Semyonov @ 2000-04-17 12:51 ` jean-marc alliot 2000-04-17 17:49 ` John Max Skaller 2 siblings, 1 reply; 67+ messages in thread From: jean-marc alliot @ 2000-04-17 12:51 UTC (permalink / raw) To: John Max Skaller, caml-list John Max Skaller wrote: > > > > 1. Current functional languages do not have enough library support: > > > > Please. ocaml has the most wonderful standard library that any other > > language has ever had. Have a look in the reference manual before > > stating such non-sense. > > Oh come on. Have a look at a real library before making > such non-sense claims. Considerable functionality is missing, > the library is inconsistent, the documentation is incomplete, > and it is less generic than C++ I don't think there are lot of things missing in the STANDARD library. I don't see why it is inconsistent. I don't see why documentation is incomplete. Things might be missing in the general library, yes. > > > Show me a functional programming language that is as fast > as C++ and I will give up C++. :-) > CAML. Just try programming the fibonacci function in both languages... -:) CAML becomes slow when you use some of the nice functional features of the language. But if you write CAML as you write C code you won't lose much speed. Over the years, students and development programmers have developped thousand of lines of code in many different languages in my team and writing or rewriting in CAML had a limited impact on the speed of the program. Again, I don't like religious opinions, but I am anyway going to explain a few things. I am sorry to use personal examples, but I know them very well -:) I understand that for highly time critical fragment of codes that are extremely closed to machine architecture, C is a reasonable choice. I am an old game programmer, and once had a program (otage) based on pattern recognition, who had its 15 minutes of glory on the Internet Othelo Server and entered the top 5 list. It is written in C and assembly language, it is using each and every bit of every byte of memory; it is fast indeed, and C is efficient. But I stopped maintaining it, because it has become a real pain. Even when the code is documented, the program is extremely complex, and when I stop working on it for a few months, it is almost impossible to re-enter the code. I am too old and too busy now to work on it anymore. And I don't like programs core dumping anymore either. C should be only used by experienced programmers, who are extremely careful of everything they write, with unitary tests for each and every function, and only for time critical functions. On the opposite, I wrote a chinese checkers program in CAML this year in a few days (it was a challenge with some friends). It is in no way ridiculous, and is extremely easy to maintain. I understand also people using ADA for programs that need to be highly portable, easy to maintain and whose life span will be long. The ADA code I wrote with ALSYS and VERDIX compiler for my PhD thesis 15 years ago (an extension of PROLOG to modal logic) is still compiling without any modification on the gnat compiler today. ADA includes representation clause that makes it almost independant to anything including machine architecture. ADA is not as fast as C or as easy to use as CAML, but it is definitely a decent compromise for many industrial applications. It suffered from a very bad integration with UNIX (always worked well with VMS) at the beginning, especially when I/O and multi-tasking were both involved. This is quite solved now (thanks to clone()...) I am extremely sorry to say that I don't understand people using C++when they have a choice. This language is, according to me, a collection of every little thing that should never be done. Templates are, from a theoritical point of view, a matter of laugh, and generally not compatible between different compilers (I have examples every year with students coming back from training periods with programs written in C++, and who speend hours to make them compile with the University compilers and machines). For people knowing object theory and its EIFFEL implementation, the C++ object system looks at least shaky. Operators overloading has been pushed to its ugliest limit (it does exist in ADA, but WITH and USE clauses give at least meaningfull informations) : I saw once an experienced programmer who was using a library developped by someone who had left the development team spending two days to find a "core dumping" bug in the C++ library left by this former developper. The fragment of code looked like this: void f(foobar *ival) { foobar *l; for (l=ival; l<>NULL;l++) {...} } Unfortunately, the ++ operator had been overloaded for type foobar somewhere else and was no more a pointer incrementation, but was in fact: l = l->next where next was a field of the foobar structure : the problem was an incorrectly initialized field and not an "incorrectly" terminated pointer array. I could write endlessly about C++ problems ; I had to use it for a few years for development purpose, and, if I first began to like it, I soon learned to hate it. JAVA has corrected many problems, such as memory allocation or the infamous core dumping behaviour. But it is not that fast... I love programming. I began when i was 15 (almost 25 years ago) on small machines, I learned assembly language, BASIC, FORTRAN and C before learning anything about computer science theory. To summarize, I did mathematics at the University and hacking at home ; I went back to University to learn computer science when I was 26, and I had then lot of bad programming habits. It took me a long time to understand that there were more proper ways to write programs. I also had to realize that speed is far from being the only concern, and that fast but buggy/unmaintanaible programs are useless in team development. Functional programming is painful to learn (and it was painful for me) when you are used to imperative programming. You have to learn to think differently before you can really master the language. But it is worth the effort. JMA ^ permalink raw reply [flat|nested] 67+ messages in thread
* Re: When functional languages can be accepted by industry? 2000-04-17 12:51 ` jean-marc alliot @ 2000-04-17 17:49 ` John Max Skaller 2000-04-17 22:34 ` Brian Rogoff 2000-04-18 10:53 ` Sven LUTHER 0 siblings, 2 replies; 67+ messages in thread From: John Max Skaller @ 2000-04-17 17:49 UTC (permalink / raw) To: jean-marc alliot; +Cc: caml-list jean-marc alliot wrote: > > John Max Skaller wrote: > > > > > > > 1. Current functional languages do not have enough library support: > > > > > > Please. ocaml has the most wonderful standard library that any other > > > language has ever had. Have a look in the reference manual before > > > stating such non-sense. > > > > Oh come on. Have a look at a real library before making > > such non-sense claims. Considerable functionality is missing, > > the library is inconsistent, the documentation is incomplete, > > and it is less generic than C++ > > I don't think there are lot of things missing in the STANDARD library. I > don't see why it is inconsistent. I don't see why documentation is > incomplete. Things might be missing in the general library, yes. The order of arguments is perverse. Obvious functions are missing, such as finding the number of elements in a map. The documentation fails to tell how fast the functions are, and the specifications are sometimes imprecise. > > Show me a functional programming language that is as fast > > as C++ and I will give up C++. :-) > > > CAML. Just try programming the fibonacci function in both languages... -:) :-) > CAML becomes slow when you use some of the nice functional features of the > language. It's one heck of a lot slower using the imperative features, and even slower using object oriented ones. My not very carefully coded Python interpreter (which uses a combination of all these features) is at least 10 times slower than CPython. Mind you -- it implements a much better language. :-) > But if you write CAML as you write C code you won't lose much > speed. Sorry. You lose HEAPS. Even 10% is significant, CAML can be over a decimal order of magnitude slower. C++ generics are generally much faster (being automatically specialised -- which also causes code bloat :-( > Over the years, students and development programmers have developped > thousand of lines of code in many different languages in my team and > writing or rewriting in CAML had a limited impact on the speed of the > program. No doubt the compiler I'm writing in Ocaml will be fast enough. But there is no way CAML will compete with the C++ code the compiler generates. [At least not the way the CAML bytecode interpreter is written] > Again, I don't like religious opinions, but I am anyway going to explain a > few things. I am sorry to use personal examples, but I know them very well > -:) > I understand that for highly time critical fragment of codes that are > extremely closed to machine architecture, C is a reasonable choice. > Even when > the code is documented, the program is extremely complex, and when I stop > working on it for a few months, it is almost impossible to re-enter the > code. I am too old and too busy now to work on it anymore. And I don't like > programs core dumping anymore either. No dispute. [I'm an 'old' game programmer too]. I'd write the main game play engine of a strategy game in ocaml in preference to C/C++, but there's no doubt I do the graphics in C/C++. There, every ounce of performance is absolutely critical. > C should be only used by experienced programmers, who are extremely careful > of everything they write, with unitary tests for each and every function, > and only for time critical functions. Sure. And that is what the company I work for does. Almost all the code being written is time critical: when you're talking huge volumes, every percentage point of extra performance is a many percentage points of lower CPU costs. > I am extremely sorry to say that I don't understand people using C++when > they have a choice. > This language is, according to me, a collection of every little thing that > should never be done. Sure: it is mainly a consequence of the abysmal base language, C. >Templates are, from a theoritical point of view, a > matter of laugh, No. They're not perfect. They generate very fast code. On the contrary, it is the boxed values of functional languages which are the laugh: they kill performance. > and generally not compatible between different compilers > (I have examples every year with students coming back from training periods > with programs written in C++, and who speend hours to make them compile > with the University compilers and machines). For people knowing object > theory and its EIFFEL implementation, the C++ object system looks at least > shaky. What object theory? There isn't one. Object orientation is a mess. Eiffel is every bit as bad as C++ here: the fact is that C++ trades off beauty and correctness for speed and compatibility. It is faster than C though, and much easier to use. > I could write endlessly about C++ problems ; I had to use it for a few > years for development purpose, and, if I first began to like it, I soon > learned to hate it. So could I, I worked on the design of it :-) > JAVA has corrected many problems, such as memory allocation or the infamous > core dumping behaviour. But it is not that fast... Java is rubbish. It is a compromise: bad type system, poor performance. C++ is not a compromise: no features was added that compromised performance. > I went back to University to learn > computer science when I was 26, and I had then lot of bad programming > habits. Sigh. I never wasted my time with so-called computer science. I learned a lot more doing mathematics than any silly CS course. :-) [This is more a reflection of the local academic institutions than anything else :-( > It took me a long time to understand that there were more proper ways to > write programs. Sure. And hopefully, that no one has the faintest idea what these ways are. But at least now, theorists finally have a tool to begin a serious study (category theory). So I can put to you that Ocaml is a mish-mash and grab bag of functional, imperative, and OO features, just like C++: C++ is faster, whereas Ocaml provides better -- but by no means perfect -- structure. Remember -- I _like_ Ocaml. I do _not_ like C++. I did my best to make it better, with little result. But the fact remains, it is the language of choice for most applications simply because it provides reasonable power, reasonable safety, and there is an assurance that it can be as fast as you can bother to take care to make it. C++ breaks down with higher order problems, where Ocaml excels. But it stands up to large scale programming of complex tasks, which Ocaml does not. Most of the problems I encounter are annoying implementation details such as the requirement to link things in order, with lousy diagnostics when the order is wrong (why doesn't the diagnostic tell me which module requires the one with the 'missing' implementation?) So, in my view, Ocaml is reasonable for the purpose I've been writing it -- compiler development. But it isn't so hot at numerical programming, operating system interaction, or high speed communications. It would be nice to have some real genericity, of the kind that FISh promises, or some real integration of stateless (functional) and stately (object oriented), programming, of the kind Charity promises. -- John (Max) Skaller, mailto:skaller@maxtal.com.au 10/1 Toxteth Rd Glebe NSW 2037 Australia voice: 61-2-9660-0850 checkout Vyper http://Vyper.sourceforge.net download Interscript http://Interscript.sourceforge.net ^ permalink raw reply [flat|nested] 67+ messages in thread
* Re: When functional languages can be accepted by industry? 2000-04-17 17:49 ` John Max Skaller @ 2000-04-17 22:34 ` Brian Rogoff 2000-04-19 15:31 ` John Max Skaller ` (2 more replies) 2000-04-18 10:53 ` Sven LUTHER 1 sibling, 3 replies; 67+ messages in thread From: Brian Rogoff @ 2000-04-17 22:34 UTC (permalink / raw) To: John Max Skaller; +Cc: jean-marc alliot, caml-list On Tue, 18 Apr 2000, John Max Skaller wrote: > jean-marc alliot wrote: > > I don't think there are lot of things missing in the STANDARD library. I > > don't see why it is inconsistent. I don't see why documentation is > > incomplete. Things might be missing in the general library, yes. > > The order of arguments is perverse. Obvious functions are missing, > such as finding the number of elements in a map. The documentation > fails to tell how fast the functions are, and the specifications are > sometimes imprecise. The standard library is improving though, and additional libraries could certainly be written by users. My main concern here is that the best libraries make it into the standard distribution. In particular I prefer Pcre to the Str library, and would like to see it become the standard distribution. Note that I'm not using *distribution* and *library* interchangeably. In order to get an STL-like library in OCaml, I think we'd need some form of overloading. This comes up on this list every now and again, and it is clear that the Caml team is working on it, so we'll see. I particularly liked the last discussion here on type classes where Pierre Weis mentioned that he was interested in an overloading scheme which could unify the notations for array and string access; I'd be overjoyed if he is successful! Until some form of overloading is in OCaml though, I wouldn't look to the STL as a library to emulate, though I suppose its most important idea, the expression of algorithms in terms of iterators rather than specific data structures, doesn't depend on overloading. > > > Show me a functional programming language that is as fast > > > as C++ and I will give up C++. :-) > > > > > > CAML. Just try programming the fibonacci function in both languages... -:) > > :-) I believe that the Stalin compiler for Scheme, which is a whole program compiler (you give up separate compilation) has done better than C on some much more significant programs than fibonacci. I suspect that any compiler which abandons separate compilation and does aggressive whole program analysis may have problems with extremely large programs, but I don't have evidence to back this up. I presume that a similar compiler for an ML variant could be written. Given that the Caml team has limited resources, I'd rather they spend them elsewhere, as I am satisfied with the performance of OCaml for the problems I apply it to. I realize that others have different priorities. Another potential area for performance improvement would be the elimination of GC using the region system or something like it. There are probably other places in the implementation where choosing a different strategy could close the gap with C++ in speed, at the cost of code bloat. Also, the claim is made that C++ with templates generates code with run time performance comparable to hand coded C. Several studies that I've read call that into question; Richard O'Keefe's usenet comparison of a few years ago, the book by Kernighan and Pike "The Practice of Programming" and Anh Vo's papers on the Cdt library which compare it with the STL. > > CAML becomes slow when you use some of the nice functional features of the > > language. > > It's one heck of a lot slower using the imperative features, > and even slower using object oriented ones. Once again, if you're willing to subject your entire program to analysis then I bet the OO parts of OCaml could be made to run much faster. SmallEiffel seems to be running pretty fast these days. Don't get me wrong; I think separate compilation is important, and would prefer that the default compiler operate as it does now. I just think that some of the performance hits you see could be eliminated without changing the language but by changing the compiler. > > But if you write CAML as you write C code you won't lose much > > speed. Huh? What if you write crypto code, or a BDD library, or numerics, or a regex library, or ... > Sorry. You lose HEAPS. Even 10% is significant, CAML can > be over a decimal order of magnitude slower. C++ generics are > generally much faster (being automatically specialised -- which > also causes code bloat :-( I don't think you see an order of magnitude for the most part though... > No dispute. [I'm an 'old' game programmer too]. I'd write > the main game play engine of a strategy game in ocaml in preference > to C/C++, but there's no doubt I do the graphics in C/C++. > There, every ounce of performance is absolutely critical. If every ounce of performance is truly "absolutely critical", then go to assembler. Even C won't compete :-) Also, for numerics, Fortran compilers are still probably better than C, though I don't know how much longer that will hold true. > >Templates are, from a theoritical point of view, a > > matter of laugh, > > No. They're not perfect. They generate very fast code. > On the contrary, it is the boxed values of functional languages > which are the laugh: they kill performance. See above on templates. I agree that boxed values suck for high performance code. > What object theory? There isn't one. Object orientation > is a mess. Eiffel is every bit as bad as C++ here: the fact is that > C++ trades off beauty and correctness for speed and compatibility. > > It is faster than C though, and much easier to use. Faster than C? I doubt that. Where is your evidence? > Remember -- I _like_ Ocaml. I do _not_ like C++. > I did my best to make it better, with little result. > But the fact remains, it is the language of choice for most applications > simply because it provides reasonable power, reasonable safety, > and there is an assurance that it can be as fast as you can bother > to take care to make it. I'd say simply because it is perceived as a better C, and C was already the language of choice for most applications. OCaml is not riding anyone's coattails, so it really has to be better at something, or, more likely, we have to create a niche in which OCaml is the best language (read "The 22 Immutable Laws of Marketing ;-). I think that writing compilers and associated tools is one such niche, since it plays off of MLs strengths. -- Brian ^ permalink raw reply [flat|nested] 67+ messages in thread
* Re: When functional languages can be accepted by industry? 2000-04-17 22:34 ` Brian Rogoff @ 2000-04-19 15:31 ` John Max Skaller 2000-04-19 18:30 ` Michael Hicks 2000-04-20 16:40 ` Markus Mottl 2 siblings, 0 replies; 67+ messages in thread From: John Max Skaller @ 2000-04-19 15:31 UTC (permalink / raw) To: Brian Rogoff; +Cc: jean-marc alliot, caml-list Brian Rogoff wrote: > > It is faster than C though, and much easier to use. > > Faster than C? I doubt that. Where is your evidence? C++ supports several optimisations not possible in C89: inline functions, and object orientation important amoung them. Inline has been added to C9X. This was not gratuitously, but for a reason :-) .. there's no doubt C++ is faster than C89. How much depends on the compiler of course, but what the compiler is able to do also depends on the language being implemented :-)) [Why C++ is popular] > I'd say simply because it is perceived as a better C, and C was already > the language of choice for most applications. Yes. This is a large part of the appeal. And a valid one. The C++ committee worked hard to minimise any loss of compatibility or performance. C++ is a compromise. It is a compromise involving theory, industry, and politics. A large part of it's success must be attributed to an unashamed requirement to appeal to the market. > OCaml is not riding anyone's coattails, so it really has to be better at > something, Oh: it is. No doubt of it. It is unequivocably better at symbol manipulation, compiler development, and managing abstraction. Let's put it this way: my Python interpreter Vyper, written in ocaml, is _currently_ 10 times slower than CPython. But I am working (slowly) on improving the technology, and I can do that much better in ocaml than C. I guess it is possible to make it _faster_ than CPython eventually. Quite apart from being a better language (supporting functional style nested scopes, an algebraic matching construction, and a few other interesting things). This stuff is likely to outperform the equivalent Python if used for suitable problems. What it lacks most isn't performance, but a way of separately compiling and linking native library modules (to be loaded dynamically). CPython can do this. It is an important strength. > or, more likely, we have to create a niche in which OCaml is > the best language (read "The 22 Immutable Laws of Marketing ;-). I think > that writing compilers and associated tools is one such niche, since it > plays off of MLs strengths. Yes. And it would gain many more users if some of the industrial weaknesses were addressed. Such as being able to generate dynamically linkable shared libraries, have the compiler find an order for linking modules from a given set ... Note I'm not complaining here: these things require resources .. typically lacking from the environment in which the ocaml developers work :-( -- John (Max) Skaller, mailto:skaller@maxtal.com.au 10/1 Toxteth Rd Glebe NSW 2037 Australia voice: 61-2-9660-0850 checkout Vyper http://Vyper.sourceforge.net download Interscript http://Interscript.sourceforge.net ^ permalink raw reply [flat|nested] 67+ messages in thread
* Re: When functional languages can be accepted by industry? 2000-04-17 22:34 ` Brian Rogoff 2000-04-19 15:31 ` John Max Skaller @ 2000-04-19 18:30 ` Michael Hicks 2000-04-20 16:40 ` Markus Mottl 2 siblings, 0 replies; 67+ messages in thread From: Michael Hicks @ 2000-04-19 18:30 UTC (permalink / raw) To: Brian Rogoff; +Cc: skaller, alliot, caml-list > I believe that the Stalin compiler for Scheme, which is a whole program > compiler (you give up separate compilation) has done better than C on some > much more significant programs than fibonacci. I suspect that any compiler > which abandons separate compilation and does aggressive whole program > analysis may have problems with extremely large programs, but I don't have > evidence to back this up. > > I presume that a similar compiler for an ML variant could be written. Given > that the Caml team has limited resources, I'd rather they spend them > elsewhere, as I am satisfied with the performance of OCaml for the problems > I apply it to. I realize that others have different priorities. In fact, researchers at NECI have developed a whole-program Standard ML compiler, called MLton. You can read about it at http://external.nj.nec.com/PLS/MLton/ In general, its programs run 2-3x faster than SML/NJ, but occasionally they are a bit slower. Mike -- Michael Hicks Ph.D. Candidate, the University of Pennsylvania http://www.cis.upenn.edu/~mwh mailto://mwh@dsl.cis.upenn.edu "Every time someone asks me to do something, I ask if they want French fries with that." -- testimonial of a former McDonald's employee ^ permalink raw reply [flat|nested] 67+ messages in thread
* Re: When functional languages can be accepted by industry? 2000-04-17 22:34 ` Brian Rogoff 2000-04-19 15:31 ` John Max Skaller 2000-04-19 18:30 ` Michael Hicks @ 2000-04-20 16:40 ` Markus Mottl 2000-04-20 17:58 ` Brian Rogoff ` (2 more replies) 2 siblings, 3 replies; 67+ messages in thread From: Markus Mottl @ 2000-04-20 16:40 UTC (permalink / raw) To: Brian Rogoff; +Cc: OCAML > In order to get an STL-like library in OCaml, I think we'd need some form > of overloading. This comes up on this list every now and again, and it is > clear that the Caml team is working on it, so we'll see. I particularly > liked the last discussion here on type classes where Pierre Weis mentioned > that he was interested in an overloading scheme which could unify the > notations for array and string access; I'd be overjoyed if he is > successful! Over the time I have adapted to the "lack" of overloading and do not find it so missing for arithmetic operations. However, there is one application domain where I really feel "bitten" by not being allowed to overload operators: monads. I would like to use them more often for structuring code and trying out some new styles of functional programming, but it's a pain using different kinds of monads at the same time: you'd always have to specify module names for "bind"-operators, which puts the otherwise very convenient infix operators quite out of the question. But I wonder whether this specific application justifies a complication of the type system... > I presume that a similar compiler for an ML variant could be written. Given > that the Caml team has limited resources, I'd rather they spend them > elsewhere, as I am satisfied with the performance of OCaml for the problems > I apply it to. I realize that others have different priorities. What concerns me, I also consider the performance of OCaml programs fair enough for nearly all purposes. Since interfacing to C-code is so easy, one can always eliminate bottlenecks on a lower level. > There are probably other places in the implementation where choosing a > different strategy could close the gap with C++ in speed, at the cost of > code bloat. I do not think that C++ is competing with OCaml in the same niche so there is probably no point in addressing differences here. In fact, although it was surely not designed for this purpose, I believe that OCaml could be a serious threat to some scripting languages: partly due to its high performance, partly, because it is much saner = easier to maintain, and highly portable! The Unix-library is very complete and would also play an important role here. > Also, the claim is made that C++ with templates generates code with run > time performance comparable to hand coded C. Several studies that I've > read call that into question; Richard O'Keefe's usenet comparison of a few > years ago, the book by Kernighan and Pike "The Practice of Programming" and > Anh Vo's papers on the Cdt library which compare it with the STL. Programs on modern architectures depend so heavily on cache behaviour that performance claims for code-bloating techniques seem to be rather suspicious. I'd also like to see substantial benchmarks that prove the merits... > > Sorry. You lose HEAPS. Even 10% is significant, CAML can > > be over a decimal order of magnitude slower. C++ generics are > > generally much faster (being automatically specialised -- which > > also causes code bloat :-( > > I don't think you see an order of magnitude for the most part though... Considering the improvements on the hardware side in terms of processor performance, 10% seems very insignificant to me (a few months of hardware development at most), especially if you take into account that for many non-numeric applications the limiting factor is most often I/O-bandwidth. Correctness, maintainability and portability are (well, should be) the primary concerns in a world that changes fast - not "fast" programs... If your employer says that you should switch to lower-level, unsafe programming languages to get 10% more performance, tell him that he should rather buy new hardware (if you dare to! ;-) If he doesn't want, present him an estimate of the costs of more errors... Best regards, Markus Mottl -- Markus Mottl, mottl@miss.wu-wien.ac.at, http://miss.wu-wien.ac.at/~mottl ^ permalink raw reply [flat|nested] 67+ messages in thread
* Re: When functional languages can be accepted by industry? 2000-04-20 16:40 ` Markus Mottl @ 2000-04-20 17:58 ` Brian Rogoff 2000-04-20 18:52 ` Markus Mottl 2000-04-21 19:22 ` John Max Skaller 2000-04-21 19:09 ` John Max Skaller 2000-04-21 19:18 ` John Max Skaller 2 siblings, 2 replies; 67+ messages in thread From: Brian Rogoff @ 2000-04-20 17:58 UTC (permalink / raw) To: Markus Mottl; +Cc: caml-list On Thu, 20 Apr 2000, Markus Mottl wrote: > > In order to get an STL-like library in OCaml, I think we'd need some form > > of overloading. This comes up on this list every now and again, and it is > > clear that the Caml team is working on it, so we'll see. I particularly > > liked the last discussion here on type classes where Pierre Weis mentioned > > that he was interested in an overloading scheme which could unify the > > notations for array and string access; I'd be overjoyed if he is > > successful! > > Over the time I have adapted to the "lack" of overloading and do not find > it so missing for arithmetic operations. In another life I wrote lots of numerical linear algebra programs, and I find that a little overloading would make the code a lot nicer. It's also the case that lots of prefix functions, like "print", are perfectly fine to overload, and I hate having to explicitly tag these names with their type, probably the way fans of type inference hate writing explicit types. Can't we have the best of both worlds? Also, I suspect that many people who are negative about overloading are coming from C++, where the combination of overloading and implicit coercion is nightmarish. Coming from Ada, I haven't had any such problems, so I still miss overloading. > However, there is one application domain where I really feel > "bitten" by not being allowed to overload operators: monads. Funny that you should say that, I've been spending a bit more of my spare time hacking Haskell for the same reasons you describe below. I translated almost all of the monads in Wadler's "Essence of FP" paper to OCaml but ended up using regular prefix syntax. Yes, if you use different monads simultaneously you have to use qualified names. Bummer. No, I haven't got to Hughes "arrows" yet; its taking enough effort to get comfortable with monads ;-) > I would like to use them more often for structuring code and trying out > some new styles of functional programming, but it's a pain using different > kinds of monads at the same time: you'd always have to specify module names > for "bind"-operators, which puts the otherwise very convenient infix > operators quite out of the question. But I wonder whether this specific > application justifies a complication of the type system... ... snip ... > I do not think that C++ is competing with OCaml in the same niche so there > is probably no point in addressing differences here. In fact, although it > was surely not designed for this purpose, I believe that OCaml could be a > serious threat to some scripting languages: partly due to its high > performance, partly, because it is much saner = easier to maintain, and > highly portable! The Unix-library is very complete and would also play an > important role here. Absolutely! This is a point I have been making for a while, that the point of comparison should be Perl, Python, and even Java. OCaml performance is excellent when compared to these languages. The main problems here are (1) The enormous number of existing libraries (and tools for managing them) for these other languages (2) The extensive documentation they have (3) The OCaml error messaging, which makes worse the problem most people already have with the unfamiliar type system > > > Sorry. You lose HEAPS. Even 10% is significant, CAML can > > > be over a decimal order of magnitude slower. C++ generics are > > > generally much faster (being automatically specialised -- which > > > also causes code bloat :-( > > > > I don't think you see an order of magnitude for the most part though... > > Considering the improvements on the hardware side in terms of processor > performance, 10% seems very insignificant to me (a few months of hardware > development at most), especially if you take into account that for many > non-numeric applications the limiting factor is most often I/O-bandwidth. > Correctness, maintainability and portability are (well, should be) the > primary concerns in a world that changes fast - not "fast" programs... > > If your employer says that you should switch to lower-level, unsafe > programming languages to get 10% more performance, tell him that he > should rather buy new hardware (if you dare to! ;-) > If he doesn't want, present him an estimate of the costs of more errors... Fortunately for me, my employer really likes OCaml :-) -- Brian ^ permalink raw reply [flat|nested] 67+ messages in thread
* Re: When functional languages can be accepted by industry? 2000-04-20 17:58 ` Brian Rogoff @ 2000-04-20 18:52 ` Markus Mottl 2000-04-21 20:44 ` Michael Hohn 2000-04-21 19:22 ` John Max Skaller 1 sibling, 1 reply; 67+ messages in thread From: Markus Mottl @ 2000-04-20 18:52 UTC (permalink / raw) To: Brian Rogoff; +Cc: OCAML > In another life I wrote lots of numerical linear algebra programs, and I > find that a little overloading would make the code a lot nicer. I admit: I don't write this much numerical code so I don't have many opportunities to complain about missing operator overloading there... > Funny that you should say that, I've been spending a bit more of my spare > time hacking Haskell for the same reasons you describe below. I translated > almost all of the monads in Wadler's "Essence of FP" paper to OCaml but > ended up using regular prefix syntax. Yes, if you use different monads > simultaneously you have to use qualified names. Bummer. It is of course possible to use "regular" (?) prefix syntax, but there are other problems, too: e.g. if you want to "move" from a state transformer to a state reader, you might be forced to update some module names, whereas resolution of operator overloading might change meaning (= the "right" monad to use) automatically as required. > The main problems here are > > (1) The enormous number of existing libraries (and tools for managing them) > for these other languages > > (2) The extensive documentation they have Well, there is not much one can do against this unless you can pay a very big development team that just focuses on these things... On the other hand, a "slowly" growing library is more likely to be well-designed. > (3) The OCaml error messaging, which makes worse the problem most people > already have with the unfamiliar type system Except in the cases when OCaml prints out some kilometers of conflicting module signatures, I am quite content with the error messages. > Fortunately for me, my employer really likes OCaml :-) Lucky you! ;-) Best regards, Markus Mottl -- Markus Mottl, mottl@miss.wu-wien.ac.at, http://miss.wu-wien.ac.at/~mottl ^ permalink raw reply [flat|nested] 67+ messages in thread
* Re: When functional languages can be accepted by industry? 2000-04-20 18:52 ` Markus Mottl @ 2000-04-21 20:44 ` Michael Hohn 0 siblings, 0 replies; 67+ messages in thread From: Michael Hohn @ 2000-04-21 20:44 UTC (permalink / raw) To: caml-list >> ... >> From: Markus Mottl <mottl@miss.wu-wien.ac.at> >> Date: Thu, 20 Apr 2000 20:52:34 +0200 (MET DST) >> Cc: caml-list@inria.fr (OCAML) >> Content-Type: text/plain; charset=us-ascii >> Sender: Pierre.Weis@inria.fr >> >> > In another life I wrote lots of numerical linear algebra programs, and I >> > find that a little overloading would make the code a lot nicer. >> >> I admit: I don't write this much numerical code so I don't have many >> opportunities to complain about missing operator overloading there... >> ... Overloading is not needed in caml: remember that you can define your own infix operators. I have done this for a minimalistic complex number type, using +: -: /: and *: Since the first (or first 2) characters determine both precedence and associativity, this works well. This also avoids the mixed-arithmetic errors, such as x = 1/2 * y which in e.g. Python will always return 0, but give type errors in caml (when x and y are not integers) Cheers, Michael ^ permalink raw reply [flat|nested] 67+ messages in thread
* Re: When functional languages can be accepted by industry? 2000-04-20 17:58 ` Brian Rogoff 2000-04-20 18:52 ` Markus Mottl @ 2000-04-21 19:22 ` John Max Skaller 1 sibling, 0 replies; 67+ messages in thread From: John Max Skaller @ 2000-04-21 19:22 UTC (permalink / raw) To: Brian Rogoff; +Cc: Markus Mottl, caml-list Brian Rogoff wrote: > Absolutely! This is a point I have been making for a while, that the point > of comparison should be Perl, Python, and even Java. OCaml performance is > excellent when compared to these languages. I don't agree with this. The reason is: ocaml has a much nicer type system than C++. I would rather write code in it, than C++. So I'd like it to be faster than C++ as well as nicer :-) > (3) The OCaml error messaging, which makes worse the problem most people > already have with the unfamiliar type system This can be improved with time I imagine. [Error handling is a lot of work] -- John (Max) Skaller, mailto:skaller@maxtal.com.au 10/1 Toxteth Rd Glebe NSW 2037 Australia voice: 61-2-9660-0850 checkout Vyper http://Vyper.sourceforge.net download Interscript http://Interscript.sourceforge.net ^ permalink raw reply [flat|nested] 67+ messages in thread
* Re: When functional languages can be accepted by industry? 2000-04-20 16:40 ` Markus Mottl 2000-04-20 17:58 ` Brian Rogoff @ 2000-04-21 19:09 ` John Max Skaller 2000-04-21 19:45 ` Markus Mottl 2000-04-21 19:56 ` Brian Rogoff 2000-04-21 19:18 ` John Max Skaller 2 siblings, 2 replies; 67+ messages in thread From: John Max Skaller @ 2000-04-21 19:09 UTC (permalink / raw) To: Markus Mottl; +Cc: Brian Rogoff, OCAML Markus Mottl wrote: >I believe that OCaml could be a > serious threat to some scripting languages: partly due to its high > performance, partly, because it is much saner = easier to maintain, and > highly portable! The Unix-library is very complete and would also play an > important role here. For me, it has deficiency as a scripting language: interactive (command prompt) use is clumbsy because gnu-readline isn't integrated: no history or editing. [This should be easy to fix: there's some code in the Vyper.sourceforge.net repository which might be adapted.] -- John (Max) Skaller, mailto:skaller@maxtal.com.au 10/1 Toxteth Rd Glebe NSW 2037 Australia voice: 61-2-9660-0850 checkout Vyper http://Vyper.sourceforge.net download Interscript http://Interscript.sourceforge.net ^ permalink raw reply [flat|nested] 67+ messages in thread
* Re: When functional languages can be accepted by industry? 2000-04-21 19:09 ` John Max Skaller @ 2000-04-21 19:45 ` Markus Mottl 2000-04-21 19:56 ` Brian Rogoff 1 sibling, 0 replies; 67+ messages in thread From: Markus Mottl @ 2000-04-21 19:45 UTC (permalink / raw) To: John Max Skaller; +Cc: OCAML > For me, it has deficiency as a scripting language: interactive > (command prompt) use is clumbsy because gnu-readline isn't integrated: > no history or editing. [This should be easy to fix: there's some code > in the Vyper.sourceforge.net repository which might be adapted.] I have already nearly forgotten about this problem: I use the "ile"-tool (input line editor - some age old piece of software) as "wrapper" around the OCaml-toplevel, which gives me all these nice features back. Works with just about any terminal program! For those of you who don't have it yet, I have put a link to the source-tarball into Gerd Stolpmann's link database (name: ILE): http://www.npc.de/ocaml/linkdb After compilation, just start it with "ile ocaml" (even better: assign an alias!) Especially useful for teaching/demonstration purposes... Best regards, Markus Mottl -- Markus Mottl, mottl@miss.wu-wien.ac.at, http://miss.wu-wien.ac.at/~mottl ^ permalink raw reply [flat|nested] 67+ messages in thread
* Re: When functional languages can be accepted by industry? 2000-04-21 19:09 ` John Max Skaller 2000-04-21 19:45 ` Markus Mottl @ 2000-04-21 19:56 ` Brian Rogoff 1 sibling, 0 replies; 67+ messages in thread From: Brian Rogoff @ 2000-04-21 19:56 UTC (permalink / raw) To: John Max Skaller; +Cc: Markus Mottl, Brian Rogoff, OCAML On Sat, 22 Apr 2000, John Max Skaller wrote: > Markus Mottl wrote: > >I believe that OCaml could be a > > serious threat to some scripting languages: partly due to its high > > performance, partly, because it is much saner = easier to maintain, and > > highly portable! The Unix-library is very complete and would also play an > > important role here. > > For me, it has deficiency as a scripting language: interactive > (command prompt) use is clumbsy because gnu-readline isn't integrated: > no history or editing. [This should be easy to fix: there's some code > in the Vyper.sourceforge.net repository which might be adapted.] I use ile on Solaris and that fixes that. There is an OCaml line editor "ledit" which has this functionality too, but seeing as there is now version skew between CamlP4 and OCaml that may not work for you, as it uses the Righteous syntax. BTW, I'd also like OCaml to be faster in general than C++ (and Fortran and hand coded assembler :-) but I don't buy the claim that 10% is significant for most applications. In general, OCaml is far faster than C++: to write and debug. Thats the reason I use a high level language. Debugging C++ is no fun, especially those crazy error messages that heavy template usage seems to bring. -- Brian ^ permalink raw reply [flat|nested] 67+ messages in thread
* Re: When functional languages can be accepted by industry? 2000-04-20 16:40 ` Markus Mottl 2000-04-20 17:58 ` Brian Rogoff 2000-04-21 19:09 ` John Max Skaller @ 2000-04-21 19:18 ` John Max Skaller 2 siblings, 0 replies; 67+ messages in thread From: John Max Skaller @ 2000-04-21 19:18 UTC (permalink / raw) To: Markus Mottl; +Cc: Brian Rogoff, OCAML Markus Mottl wrote: > Programs on modern architectures depend so heavily on cache behaviour that > performance claims for code-bloating techniques seem to be rather > suspicious. I'd also like to see substantial benchmarks that prove the > merits... Code bloat can be expensive, however so can boxed values. > Considering the improvements on the hardware side in terms of processor > performance, 10% seems very insignificant to me Sure it does. But you are not thinking rationally. You're thinking emotionally. So try this: in doing your job, you find a 10% productivity improvement. Not much eh? Try _over_ an extra months holiday! Are you kidding 10% isn't significant? > Correctness, maintainability and portability are (well, should be) the > primary concerns in a world that changes fast - not "fast" programs... It is for those who commission and pay for the code to determine what their strategic goals are. We have code written in _assembler_. > If your employer says that you should switch to lower-level, unsafe > programming languages to get 10% more performance, tell him that he > should rather buy new hardware (if you dare to! ;-) My employer isn't the user of the software but the puveryor of it. > If he doesn't want, present him an estimate of the costs of more errors... At present, the cost of C++ errors is much lower. That is because the company employs a lot of expert C++ programmers. And only one, nonexpert, ocaml programmer. -- John (Max) Skaller, mailto:skaller@maxtal.com.au 10/1 Toxteth Rd Glebe NSW 2037 Australia voice: 61-2-9660-0850 checkout Vyper http://Vyper.sourceforge.net download Interscript http://Interscript.sourceforge.net ^ permalink raw reply [flat|nested] 67+ messages in thread
* Re: When functional languages can be accepted by industry? 2000-04-17 17:49 ` John Max Skaller 2000-04-17 22:34 ` Brian Rogoff @ 2000-04-18 10:53 ` Sven LUTHER 2000-04-19 15:57 ` John Max Skaller 1 sibling, 1 reply; 67+ messages in thread From: Sven LUTHER @ 2000-04-18 10:53 UTC (permalink / raw) To: John Max Skaller; +Cc: jean-marc alliot, caml-list On Tue, Apr 18, 2000 at 03:49:23AM +1000, John Max Skaller wrote: > No doubt the compiler I'm writing in Ocaml will be fast enough. > But there is no way CAML will compete with the C++ code the compiler > generates. > [At least not the way the CAML bytecode interpreter is written] Bytecode, ... what about the native code compiler ? If you are comparing Ocaml to C++, at least use similar stuff. Or else you should compare to bytecode java, or interpreted C++ (if such a thing exists). Friendly, Svne LUTHER ^ permalink raw reply [flat|nested] 67+ messages in thread
* Re: When functional languages can be accepted by industry? 2000-04-18 10:53 ` Sven LUTHER @ 2000-04-19 15:57 ` John Max Skaller 0 siblings, 0 replies; 67+ messages in thread From: John Max Skaller @ 2000-04-19 15:57 UTC (permalink / raw) To: luther; +Cc: jean-marc alliot, caml-list Sven LUTHER wrote: > > On Tue, Apr 18, 2000 at 03:49:23AM +1000, John Max Skaller wrote: > > No doubt the compiler I'm writing in Ocaml will be fast enough. > > But there is no way CAML will compete with the C++ code the compiler > > generates. > > [At least not the way the CAML bytecode interpreter is written] > > Bytecode, ... > > what about the native code compiler ? Too hard I guess. The bytecode compiler can probably be modified to be stackless, and thus support a huge number of concurrent threads via continuations. It is not so easy to generate native code with these properties. > If you are comparing Ocaml to C++, at least use similar stuff. Or else you > should compare to bytecode java, or interpreted C++ (if such a thing exists). I am. I am generating C++ code which could well be the same performance as a bytecode interpreter, if it didn't use the 'C' stack, since that is the reason I'm generating C++ code rather than using the bytecode interpreter. :-) -- John (Max) Skaller, mailto:skaller@maxtal.com.au 10/1 Toxteth Rd Glebe NSW 2037 Australia voice: 61-2-9660-0850 checkout Vyper http://Vyper.sourceforge.net download Interscript http://Interscript.sourceforge.net ^ permalink raw reply [flat|nested] 67+ messages in thread
* Re: When functional languages can be accepted by industry? 2000-04-12 1:45 ` Dennis (Gang) Chen ` (2 preceding siblings ...) 2000-04-13 6:53 ` Jean-Christophe Filliatre @ 2000-04-13 7:05 ` Pierre Weis 2000-04-13 17:04 ` Julian Assange 3 siblings, 1 reply; 67+ messages in thread From: Pierre Weis @ 2000-04-13 7:05 UTC (permalink / raw) To: Dennis (Gang) Chen; +Cc: caml-list I cannot resist to answer to your message: > The purpose of my original message: > > "When functional languages can be accepted by industry?" [...] > It is no doubt that functional languages will continue to succeed in > eduacation, research, high level specification, formal program verification, > fast prototyping, etc. But, it appears to me that, in industry, the > second approach might succeed in most cases. by a mere copy of another message I received just at the same time, from Chris Tilt: ------------------------------------------------------------- From: Chris Tilt <cet@webcriteria.com> To: Pierre Weis <Pierre.Weis@inria.fr> Subject: Industrial use of Caml Dear sir, [...] I would just like to let you and your team know that we use the CAML dialect (v2.4) in the development of some of our production software here at WebCriteria. We are an Internet startup of about 30 people (6 programmers) and provide a service for the automatic reviewing of the User Experience on Websites. We use CAML to program the core modeling and analysis module within our data center. CAML has proven to be a very effective and efficient programming language for the construction of this part of the product. We have constructed a Model Human Browser based on the GOMS modeling system in combination with graph theoretic analysis. My use of CAML was inspired by Andrew Tolmach, a professor at PSU and OGI in Portland, Oregon, USA. Please express my deepest appreciation to your team for the development of a language that can support an industrial application. We benefitted from it's ability to quickly and concisely express a solution to a difficult problem. Although we base most of our command and control software in Java, ML is still the choice for modeling and graph theory. Best regards, Chris [...] -- Chris Tilt mailto:cet@webcriteria.com CTO, WebCriteria, Inc. http://www.webcriteria.com ------------------------------------------------------------- I also express my personal ``deepest appreciation to the Caml team'' for our great language that can support hairy academic programming as well as industrial developments. Best regards, -- Pierre Weis INRIA, Projet Cristal, http://pauillac.inria.fr/~weis ^ permalink raw reply [flat|nested] 67+ messages in thread
* Re: When functional languages can be accepted by industry? 2000-04-13 7:05 ` Pierre Weis @ 2000-04-13 17:04 ` Julian Assange 0 siblings, 0 replies; 67+ messages in thread From: Julian Assange @ 2000-04-13 17:04 UTC (permalink / raw) To: Pierre Weis; +Cc: Dennis (Gang) Chen, caml-list, proff Pierre Weis <Pierre.Weis@inria.fr> writes: > concisely express a solution to a difficult problem. Although > we base most of our command and control software in Java, ML > is still the choice for modeling and graph theory. Speaking of graph theory, does anyone know of a collection of *caml code to deal with least path, clustering, etc? -- Stefan Kahrs in [Kah96] discusses the notion of completeness--programs which never go wrong can be type-checked--which complements Milner's notion of soundness--type-checked programs never go wrong [Mil78]. ^ permalink raw reply [flat|nested] 67+ messages in thread
* Re: When functional languages can be accepted by industry? 2000-04-03 1:27 Dennis (Gang) Chen 2000-04-06 16:51 ` Jean-Christophe Filliatre @ 2000-04-07 15:44 ` John Max Skaller 1 sibling, 0 replies; 67+ messages in thread From: John Max Skaller @ 2000-04-07 15:44 UTC (permalink / raw) To: Dennis (Gang) Chen; +Cc: caml-list "Dennis (Gang) Chen" wrote: > Functional languages have not been very successful in industry. Why? > > When writing database applications, we use Access, Oracle and languages > which support interfeaces to these database systems. > > When writing an application which needs user friendly interface, one can use Delphi, > or Java, Visual Basic, Visual C++, C++ Builder etc. > > When writing text manipulation programs, perl is a good choice. > > For internet application, one use Java, perl, Deplhi, Visual C++ etc. > > When higher order functions are required, we can use any OO language, because > an object with one method can be viewed as a function, so if a function can accept > objects as inputs and output an object, then this function is a higher order function. This is not really the case, in my opinion. We can do polymorphism with higher order functions in C. By following a protocol. But it is truly laborious. :-) > To write polymorphic functions, one can use templates in C++. C++ templates provides superior performance, but less functionality. More precisely, they don't scale well. > For data structures which require dynamic memory allocation, one can consider > Standard Template Library (STL) in C++. From STL, you can choose list, set, > map, tree templates, which are sufficient for most purposes. > > The templates in STL are more efficient than list in functinal languages. No. For list operations -- as understood in functional languages, functional lists are MUCH faster than C++ STL. In particular, 'applicative' data structures such as lists provides superb performance in functional languages. The problem comes when one wants mutable structures: then STL provides superb performance. >For example, > if you use list to implement set, then a deletion of an element from a set will require > reconstruction of a part of the list, which has significant memory cost. In STL > templates, this is a simple pointer operation. Of course, and the same is true if you are silly enough to use an STL vector to implement a set. Have a look at ocaml's Set module: it provides efficient applicative sets. Hashtables provide reasonable mutable sets. > To write a parser, I prefer to use ocaml as I'm aware of its adavantage > in this aspect. But I've learnt that there are other compiler tools available. > > Functional languages in ML family are equiped with a much better type system > than C++, this reduce errors in programs, but industry has its own procedure to > ensure the reliability of program. So the weakness in C++ does not bother too > much. The weaknesses in C++ worry the smart people in industry I know a lot. My current job is to design a language which allows safer, more convenient writing of a certain class of programs which requires ultra lightweight threading. I would not have been asked to do this in a C++ shop if C++ were thought to be adequate (at least, the hand coding of it). > Module in ocaml is an attractive feature. Large applications are built in a refinement > way, > and different implementations for a given interface will be experimented. Module > should be good for this, and it is not available in C++. As usual in C++, one can obtain just about any effect you want, with the right combination of tools. The problem, as I see it, is that 1) you must design some kind of architecture supported by a certain protocol of usage (not enforced by the type system) 2) You must write code accoring to this protocol (which is difficult without tools to check protocol adherence). For example, an ordinary module is easily emulated by a C++ namespace -- but while with care you can define 'modules' this way, you cannot force clients to use them correctly. This is like memory management in C++: it is possible to design protocols (and supporting tools) which if used correctly assure correct memory management -- but not so easy to enforce correct usage. [This is easy in ocaml .. just don't use Obj or any C, and GC will do the job automatically] > Are there other features of functional language which will attract industry? In many cases, it is NOT the language itself which is the obstacle. It is often 'meta-lingual' problems: compilation model, performance, ability to interface to other systems, library, etc. Ocaml scores fairly well on these counts, but despite the nasty problems with the C++ compilation model, ocaml's is still more limited. Note that ocaml ISN'T a functional language, but an 'simula like' language just like C++ is: a mix of functional, procedural, and object oriented features. --------------------------------------------------------------------------- I'll be generating C++ using a tool written in ocaml. This has some advantages -- many of the advantages of C++ are retained, whereas one of the applications that ocaml shines at: developing language translators -- will be put to good use. I have no interested in 'promoting' functional languages as a better alternative than, say, C++: rather of finding ways to use tools together, to be able to build better software. -- John (Max) Skaller, mailto:skaller@maxtal.com.au 10/1 Toxteth Rd Glebe NSW 2037 Australia voice: 61-2-9660-0850 checkout Vyper http://Vyper.sourceforge.net download Interscript http://Interscript.sourceforge.net ^ permalink raw reply [flat|nested] 67+ messages in thread
end of thread, other threads:[~2000-04-28 9:43 UTC | newest] Thread overview: 67+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2000-04-20 12:45 When functional languages can be accepted by industry? Gerd Stolpmann 2000-04-21 19:56 ` John Max Skaller 2000-04-22 18:30 ` Gerd Stolpmann 2000-04-23 3:20 ` John Max Skaller -- strict thread matches above, loose matches on Subject: below -- 2000-04-17 22:24 bdb-as-camluser 2000-04-17 12:57 FALCON Gilles FTRD/DTL/LAN 2000-04-17 15:35 ` Xavier Leroy 2000-04-18 5:54 ` Francois Pottier 2000-04-19 14:53 ` Vitaly Lugovsky 2000-04-19 15:17 ` Claude Marche 2000-04-20 1:44 ` Max Skaller 2000-04-20 3:01 ` Vitaly Lugovsky 2000-04-21 0:41 ` Jacques Garrigue 2000-04-21 19:35 ` John Max Skaller 2000-04-21 20:53 ` Michael Hohn 2000-04-25 10:50 ` Remi VANICAT 2000-04-20 1:52 ` Max Skaller 2000-04-20 3:08 ` Vitaly Lugovsky 2000-04-20 2:51 ` Max Skaller 2000-04-20 17:17 ` Jean-Christophe Filliatre 2000-04-03 1:27 Dennis (Gang) Chen 2000-04-06 16:51 ` Jean-Christophe Filliatre 2000-04-07 5:27 ` Dennis (Gang) Chen [not found] ` <14574.1721.508470.790475@cylinder.csl.sri.com> 2000-04-11 0:24 ` Dennis (Gang) Chen 2000-04-11 17:58 ` Pierre Weis 2000-04-12 1:45 ` Dennis (Gang) Chen 2000-04-12 17:27 ` Daniel de Rauglaudre 2000-04-13 15:40 ` John Max Skaller 2000-04-14 19:16 ` John Max Skaller 2000-04-12 18:06 ` David Brown 2000-04-13 1:23 ` Dennis (Gang) Chen 2000-04-13 14:36 ` Pierre Weis 2000-04-13 6:53 ` Jean-Christophe Filliatre 2000-04-13 12:20 ` Frank Atanassow 2000-04-13 17:28 ` John Max Skaller 2000-04-13 12:28 ` Steve Stevenson 2000-04-13 13:38 ` jean-marc alliot 2000-04-13 16:00 ` William Chesters 2000-04-13 14:29 ` T. Kurt Bond 2000-04-13 17:23 ` Julian Assange 2000-04-16 16:33 ` John Max Skaller 2000-04-17 15:06 ` Markus Mottl 2000-04-17 19:55 ` John Prevost 2000-04-24 2:36 ` Chris Tilt 2000-04-13 16:59 ` John Max Skaller 2000-04-15 22:29 ` William Chesters 2000-04-16 22:24 ` Nickolay Semyonov 2000-04-18 6:52 ` Max Skaller 2000-04-17 12:51 ` jean-marc alliot 2000-04-17 17:49 ` John Max Skaller 2000-04-17 22:34 ` Brian Rogoff 2000-04-19 15:31 ` John Max Skaller 2000-04-19 18:30 ` Michael Hicks 2000-04-20 16:40 ` Markus Mottl 2000-04-20 17:58 ` Brian Rogoff 2000-04-20 18:52 ` Markus Mottl 2000-04-21 20:44 ` Michael Hohn 2000-04-21 19:22 ` John Max Skaller 2000-04-21 19:09 ` John Max Skaller 2000-04-21 19:45 ` Markus Mottl 2000-04-21 19:56 ` Brian Rogoff 2000-04-21 19:18 ` John Max Skaller 2000-04-18 10:53 ` Sven LUTHER 2000-04-19 15:57 ` John Max Skaller 2000-04-13 7:05 ` Pierre Weis 2000-04-13 17:04 ` Julian Assange 2000-04-07 15:44 ` John Max Skaller
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).