I've been playing for a second time with Ocaml for a time now and I've got some insights in what could make the language more popular.
First of all, it's potential target is severly limited by some facts that are maybe transparent for ocaml developers, but are cruicial for newcomers. It is really usable only under Linux. I.e. ocamldebug (which is basic programming tool) needs a big clumsy cygwin to work in Windows, and you can be sure that two thirds of programmers, had, have and will have configuration and maintanability problems with Cygwin.
More severe flaw is that OCaml's workable only under Emacs. Well, there is something like wowcamldebug for vim, but vim ain't that popular either[*]. That means that OCaml looses 90% of potential community due to immaterial problems. Immaterial from point of view of the language architecture, but not from point of view of it's health. But it's not a question of making IDE nur fur OCaml. It's rather about making hilighter, indent, helpfile and debugger into the most popular IDEs, with the most prominent of them VS.NET. Because of MSDNAA, young developers have decent tool for free and putting OCaml into Visual Studio, comforting to habbits of them, is the right thing to do. Because the most valuable and easy to obtain for the greater glory of OCaml community - are these MSDNAA-involved greenhorns.
Another stuff is that OCaml has this feeling of beeing a language of choice for pointy-headed geeks and thus simply too hard to grasp for an ordinary keyboard basher. The feeling can be changed (with a lot of advocacy and marketing), because you can write programs in "Java style", and it doesn't require a lot of learning. OCaml is fun and it's easy. And then it's new and it's powerful. That's anything marketing guys have to say (see http://www.cabochon.com/~stevey/blog-rants/bambi-meets-godzilla.html and other marketing-related rants).
We should also take closer look on the libraries. Diversity is good. But if two libraries are covering the same field, it's dreadful. They're fighting each other, the development is split between them and thus - in such a small community as OCaml's is - too small to maintain and develop, and at the end projects are abadoned. But this is not the main pain in the libraries' world. More grim is the fact that when programmer (not necessairly new to OCaml) wants some functionality spots two similar libraries, he has to make a choise. And it's a Bad Thing(TM), because he has to either pick randomly and hope for his good luck, or he's to spend some time with both, which is mainly wasted time. Moreover, it feels like struggling with the language. Mind C++ which after phase of decline, has been given boost library - huge one, but single library which status is something like "non-standarized standard library". Oh, and F# is not a good way to go. F# won't be identical to Ocaml, and all we know what Babel tower of Lisps feels like.
This together with initial configuration, beeing up-to-date - generally maintainng ones workspace - prevents a hot-headed newcomer from developing working code. Instead of forming ideas developer has in his mind, he's beeing made to bend his neck to "proper" set of tools in order to comfort to the language. While the grammar, standard library, fast object code and so on are in a deep shadow of all these workshop things.
The learning curve for OCaml, including setting up environment, should be as flat, as possible. The best in this matter is TCL, which has basicly one language vendor for Windows, it's already present in standard Linux distribution, and after a three hours from the beginning of installation, you can write non-trivial programs; and after a week with TCL you feel like fish swimming in the water. This is unreachable for OCaml of course, because TCL has the smallest grammar ever while OCaml's is quite complex, but nevertheless the installation part (including cygwin instalation and emacs learning) should be shortened, and some "OCaml subset for C++/Python/Java handbook" with subtitle "Creative fun" should be released at O'Reily.
[*] There's QT-based Camelia simplified IDE, I've got to give it a try.
On Aug 19, 2006, at 2:24 AM, Tomasz Jamroszczak wrote:
> Because of MSDNAA, young developers have decent tool for free and > putting OCaml into Visual Studio, comforting to habbits of them, is > the right thing to do. Because the most valuable and easy to > obtain for the greater glory of OCaml community - are these MSDNAA- > involved greenhorns.
On Sat, 2006-08-19 at 03:24 +0200, Tomasz Jamroszczak wrote: > I've been playing for a second time with Ocaml for a time now and I've > got some insights in what could make the language more popular.
IMHO: the lack of debugging support on Windows is an illusion. Ocaml code just works (TM), you don't need a debugger. A couple of debugging prints is usually enough to find problems.
I never use debuggers. Debuggers are for assembler geeks and would-be assembler geeks writing low level C code :)
I think this is a matter of education -- you're looking for a tool you don't need in the first place.
As to IDE support -- well it is much the same. I'm happy enough with a text editor and command line compilation with a script. It is only slightly more painful on Windows than on Unix.
However I think you're right that a Visual Studio plugin is the way to go. No one familiar with the VS editor would ever want to learn a horrendous monstrosity like Emacs .. let alone Vim's archaic terminal editing concepts (ducks for cover!)
In an industrial setting, having Ocaml as part of a VS project would be winner.
-- John Skaller <skaller at users dot sf dot net> Felix, successor to C++: http://felix.sf.net
i just wanted to comment on my experience with ocaml. i love it--it's changed and deepened my understanding of algorithms and how to think about programming.
why do you want ocaml to be mainstream though? i don't much care whether most programmers write beautiful, generic, reusable code.
but, i would like to see ocaml become more popular among researchers in math, biology, statistics, engineering, though. people who are likely to care about writing really good code, improving the language, and contributing good examples. and, even in this sector, i haven't even heard of a lisp programmer, let along ocaml.
i tried to get several of my office mates to switch. i work on a floor of bioinformatics researchers who mostly program in c++, java, perl, python, and mostly on linux. but i wasn't able to convince anyone of the power of ocaml.
i think what would be most helpful in boosting the popularity though would be two things:
1. an in-depth survey of how people use the various most popular languages and the programming paradigms they support. for instance, how many programmers (in any language, on any platform, and in any job) routinely use a language that has type inference? persistent data/referential transparency? functionals? modules? for a given language, how do the users use it? for instance, how many c++ programmers routinely write functions that take function pointers as arguments? or, make heavy use of templates?
2. a comparative recipes book, illustrating famous algorithms in pseudo-code, a few popular languages, and ocaml.
ultimately, it is the use of these big ideas that is most important, and getting the world of programmers to appreciate them and use them. whether that's in one language or another is not as important. of course, it's much easier to use these in ocaml than in c++.
anyway, does anyone know of a good survey or overview of programming paradigms and how popular they are? or, a comparative code base aimed at demonstrating the use of these paradigms on real, classic example algorithms?
thanks in advance,
henry
> Another stuff is that OCaml has this feeling of beeing a language of > choice for pointy-headed geeks and thus simply too hard to grasp for an > ordinary keyboard basher. The feeling can be changed (with a lot of > advocacy and marketing), because you can write programs in "Java style", > and it doesn't require a lot of learning. OCaml is fun and it's easy. > And then it's new and it's powerful. That's anything marketing guys have > to say (see > http://www.cabochon.com/~stevey/blog-rants/bambi-meets-godzilla.html and > other marketing-related rants).
i think what it really needs is a good book of recipes in ocaml, with comparisons to other more popular languages. for example, a comparison of a completely generic algorithm written in ocaml and then in c++.
Tomasz Jamroszczak wrote: > I've been playing for a second time with Ocaml for a time now and I've > got some insights in what could make the language more popular.
> First of all, it's potential target is severly limited by some facts > that are maybe transparent for ocaml developers, but are cruicial for > newcomers. It is really usable only under Linux. I.e. ocamldebug (which > is basic programming tool) needs a big clumsy cygwin to work in Windows, > and you can be sure that two thirds of programmers, had, have and will > have configuration and maintanability problems with Cygwin.
> More severe flaw is that OCaml's workable only under Emacs. Well, there > is something like wowcamldebug for vim, but vim ain't that popular > either[*]. That means that OCaml looses 90% of potential community due to > immaterial problems. Immaterial from point of view of the language > architecture, but not from point of view of it's health. But it's not a > question of making IDE nur fur OCaml. It's rather about making hilighter, > indent, helpfile and debugger into the most popular IDEs, with the most > prominent of them VS.NET. Because of MSDNAA, young developers have decent > tool for free and putting OCaml into Visual Studio, comforting to habbits > of them, is the right thing to do. Because the most valuable and easy to > obtain for the greater glory of OCaml community - are these > MSDNAA-involved greenhorns.
> Another stuff is that OCaml has this feeling of beeing a language of > choice for pointy-headed geeks and thus simply too hard to grasp for an > ordinary keyboard basher. The feeling can be changed (with a lot of > advocacy and marketing), because you can write programs in "Java style", > and it doesn't require a lot of learning. OCaml is fun and it's easy. > And then it's new and it's powerful. That's anything marketing guys have > to say (see > http://www.cabochon.com/~stevey/blog-rants/bambi-meets-godzilla.html and > other marketing-related rants).
> We should also take closer look on the libraries. Diversity is good. > But if two libraries are covering the same field, it's dreadful. They're > fighting each other, the development is split between them and thus - in > such a small community as OCaml's is - too small to maintain and develop, > and at the end projects are abadoned. But this is not the main pain in > the libraries' world. More grim is the fact that when programmer (not > necessairly new to OCaml) wants some functionality spots two similar > libraries, he has to make a choise. And it's a Bad Thing(TM), because he > has to either pick randomly and hope for his good luck, or he's to spend > some time with both, which is mainly wasted time. Moreover, it feels like > struggling with the language. Mind C++ which after phase of decline, has > been given boost library - huge one, but single library which status is > something like "non-standarized standard library". Oh, and F# is not a > good way to go. F# won't be identical to Ocaml, and all we know what > Babel tower of Lisps feels like.
> This together with initial configuration, beeing up-to-date - generally > maintainng ones workspace - prevents a hot-headed newcomer from developing > working code. Instead of forming ideas developer has in his mind, he's > beeing made to bend his neck to "proper" set of tools in order to comfort > to the language. While the grammar, standard library, fast object code > and so on are in a deep shadow of all these workshop things.
> The learning curve for OCaml, including setting up environment, should > be as flat, as possible. The best in this matter is TCL, which has > basicly one language vendor for Windows, it's already present in standard > Linux distribution, and after a three hours from the beginning of > installation, you can write non-trivial programs; and after a week with > TCL you feel like fish swimming in the water. This is unreachable for > OCaml of course, because TCL has the smallest grammar ever while OCaml's > is quite complex, but nevertheless the installation part (including cygwin > instalation and emacs learning) should be shortened, and some "OCaml > subset for C++/Python/Java handbook" with subtitle "Creative fun" should > be released at O'Reily.
> [*] There's QT-based Camelia simplified IDE, I've got to give it a try.
-- Richard Jones, CTO Merjis Ltd. Merjis - web marketing and technology - http://merjis.com Team Notepad - intranets and extranets for business - http://team-notepad.com
On 8/19/06, skaller <skal...@users.sourceforge.net> wrote:
> On Sat, 2006-08-19 at 03:24 +0200, Tomasz Jamroszczak wrote: > > I've been playing for a second time with Ocaml for a time now and > I've > > got some insights in what could make the language more popular.
> IMHO: the lack of debugging support on Windows is an illusion. > Ocaml code just works (TM), you don't need a debugger. A couple > of debugging prints is usually enough to find problems.
I agree with the major exception of there being no stack backtrace for exceptions in native code. Markus Mottl's patch for this has been sitting around for a while...please god, someone put this in the official distribution and release it on godi etc...please, please
> I agree with the major exception of there being no stack backtrace > for exceptions in native code. Markus Mottl's patch for this has been > sitting around for a while...please god, someone put this in the > official > distribution and release it on godi etc...please, please
Does this patch apply only to Windows or other platforms as well?
> It was actually developed and tested on Linux, but it should work fine > with all platforms targeted by the OCaml native code compiler, since > it patches the way functions are generated in the intermediate > language used for code generation.
Markus - this really should be a bug report (if it's not already). I'd like to add my support too.
Rich.
-- Richard Jones, CTO Merjis Ltd. Merjis - web marketing and technology - http://merjis.com Team Notepad - intranets and extranets for business - http://team-notepad.com
Works fine on OpenBSD/i386, but I haven't had a chance to try it on amd64/macppc/arm or some of the more exotic OpenBSD architectures we distribute OCaml on.