Hello :)

Well if you want to master F# i would suggest starting with Ocaml, since as far as i know (ok, i dont know that much), F# is Ocaml plus some addicional features.

Indeed at this point having a version of Visual Studio for F# is pretty much essencial, but like i said, if you wanna learn F#, Ocaml is the way to go, and there some very good IDE's for Ocaml. I would personnaly recomend using Xemacs with the Tuareg plugin installed, so you can have the Top-Level (which can be very handy for functions evaluations.).

Visit [link:caml.inria.fr] for the best avaible information online about Ocaml.

You may also want to install this nice plug-in: [link:caml.inria.fr] :)

I don't recall exactly where i kept the Tuareg module for Ocaml in Xemacs, but if you really decide to go for Ocaml, let me know i will attach it for you. (Or you could just google it :)).

As your for your question, i think yes. Ocaml/F# can very your first programming language, as long as you read and understand about recursivity you will be fine. But eventually, you will have to learn other programming languages. :)

Regards.

By on 11/14/2007 7:01 AM ()

Well if you want to master F# i would suggest starting with Ocaml

The main problem with F# is the lack of ressources for beginners. If he buys a book, that should be ok.

since as far as i know (ok, i dont know that much), F# is Ocaml plus some addicional features.

Not exactly: advanced features of OCaml are not available or not compatible in F# (for example labels, optional arguments, OO, polymorphic variants, functors...). But you're right : going to F# from OCaml is quite easy.

I don't recall exactly where i kept the Tuareg module for Ocaml in Xemacs, but if you really decide to go for Ocaml, let me know i will attach it for you. (Or you could just google it :)).

As far as I remember, the caml-mode is included with the Caml installation.

Laurent.

By on 11/14/2007 12:27 PM ()

I'm very interested in on-ramps for hands-on learning about programming and computing concepts.

First, I agree with Robert that there is no perfect language for this. Wanting to choose a single language to start, and focus on it is a good idea, but that is to simplify all of the different things that are learned while you build a conceptual foundation. With a good foundation and some understanding of the concepts involved, you can learn additional languages. The rule of thumb used to be that around your third language, you would start to master a wide range of concepts and have a good way of understanding the differences in detail that matter.

So, don't be discouraged. There is no universal single tool in the programmer's toolbox, anymore than there is in other craft disciplines and even theory-based disciplines.

Now, about F#. I notice that I am shy about F#. I like the idea of it but I am hesitant to recommend it to raw beginners for a couple of reasons. First, the language and implementation haven't reached a solid stability point yet. I don't know if the changes coming will matter with regard to current books, but you will have to deal with that.

Also, without looking at any of the books, so I don't know how Robert has dealt with this, may books on programming languages are based on tacit knowledge of what programming languages and computing are about. There is especially tacit knowledge presumed about the operating system, how to organize and compile projects, how to find the output and to use it, etc. You may stumble on assumptions of knowledge that you haven't developed for yourself. You'll have to watch out for that with any language and tools that you choose.

Secondly, it is heavily connected with .NET concepts and libraries, and that is a big speed bump. This is the way of many contemporary languages, where the library is at least as important as the basic language itself. Java and C# (and all of the .NET languages) are this way. The problem with the .NET connection is that it is not documented or illustrated in F# but in the primary .NET languages, C# and Visual Basic.NET. Also, instructional materials and beginner information for .NET concentrate on those languages (which have free Express Editions).

Finally, F# does not have an Express Edition at this point. So to have IDE integration you either need to invest in a commercial Visual Studio version (or an academic version for personal use if you are a student) or you need to be willing to integrate with other tools or run command-line only. This will create dissonance with all of the work and examples that assume or even depend on Visual Studio features.

For a lower-cost approach, you can start with Scheme or use the languages of the One Laptop per Child initiative: Python and Squeek. Learning to develop for the OLPC machine, the XO, might be a great overall learning path too. It is perhaps the closest we can get you to the time when enthusiasts and today's seasoned developers teethed on microcomputer systems like the Apple IIe, Heathkits, and other early personal machines.

Ultimately, it depends on where you want to develop proficiency -- what kind of software would you like to build? -- and you need to choose a path that provides a foundation and experience that builds to that.

- Dennis

By on 11/12/2007 8:26 AM ()

So, I think its only fair to point out that "Foundations of F#" is not aimed at complete beginners to programming so there are some general computing subjects topics that are not covered in detail. However in does cover many basic topic in depth, such as "what is an identifier?" and "what is scope?". So I do believe I complete beginner would find it helpful, if not perfect. I believe strongly that what is covered in the book will not be changing, but at the end of the day only Don Syme can really decide that (maybe he will comment on this).

It's true the lack of free IDE is more of a problem for the beginner. I do believe things will get better on this front, we should soon have pretty decent SharpDevelop integration (Christmas is my current target) and there may also be a Express Edition of Visual Studio for F# when it is fully productized. I also cover compiling from the command-line in "Foundations of F#"

Cheers,
Rob

By on 11/12/2007 11:53 AM ()

As a first language, I think you should look into something that will make you enjoy coding. The kind of thing that makes you forget about lunch until your stomach starts to complain. :) If you had a lot of fun at your first language, then I'm pretty sure you won't have any trouble moving on and learning other languages.

However if I were in your shoes and I know what I know now, I'd probably go

(Iron)Ruby/(Iron)Python -- > C# -- > F#

( C# comes before F# purely for practical reasons - more jobs. You'd need to support yourself while you're off learning a better language F# )

.. but that's just me.

By on 11/13/2007 3:12 AM ()

Hello,

I'm affraid to say the perfect langauge has not been invented yet, which is why you often find programmers learning a number of different languages, they want to see what each different language has to offer. The truth is different programming langauges are good at different things.

I think F# is a good place to start, the language at least has some mathametical basis and the core syntax is relatively simply and straight forward to learn. Other good points are it has good support for libraries so its generally quite easy to get stuff done and the community is very friendly and supportive.

The only disadvange I see for F# as your first language is it is not _yet_ mainstream, so if your looking for a job your probably better off learning C# or java, but if you a hobbist learn F# its great!

Oh and "Foundations of F#" is my book so you should definitely buy it :)

Cheers,
Rob

By on 11/12/2007 7:54 AM ()
IntelliFactory Offices Copyright (c) 2011-2012 IntelliFactory. All rights reserved.
Home | Products | Consulting | Trainings | Blogs | Jobs | Contact Us | Terms of Use | Privacy Policy | Cookie Policy
Built with WebSharper