Thanks for your input.

A few years ago I looked into learning how to program on my own and leared the value of the Functional approach for getting a grasp of the Comp Sci fundementals, so almost dove into C+....but got distracted with Java for a bit, then did nothing till now.

My objectives these days are to learn to program so that I can create a few of my own programs/applications for my work (I'm a Property Manager). I also have a web-site, which I'd like to re-create from the ground up, using Expression Studio and Visual Studio and see if I can create my own CMS type of site rather than use Wordpress for my site. I find it interesting that so many Microsoft employees use Wordpress for their own sites, rather than create something from scratch....

That tells you a little more about me. Any more imput would be very much appreciated.

Kind regards,

Dab

By on 11/10/2008 5:21 PM ()

Well, it really depends on your goals. You sound like you have an interest in programming in general; not just "I want to build a CMS system". If you really are not THAT interested in programming and care more about getting a program done, the approach is different. So, here's the two ways:

1. Decide "hey, I want to write X program", then pick up whatever tools you find handy and "get it done". If that's your case, just get a book on "Learn Y in 24 hours" and hack stuff together until it works. There's nothing wrong with this, and it can be fun and rewarding.

2. If you find programming interesting, then you should probably start with something else entirely. "How to Design Programs" is a great primer to get you going with the whole ideas about, well, designing programs :).

[link:www.htdp.org]

It uses Scheme to introduce you to fundamentals, so you grasp programming. From there, getting into another language like C# or F# won't be too difficult. I'd say if you learned Scheme, then C#, you'd be a "better programmer" than the majority of "professional C# developers".

***
Re: far as C# versus F# -- F# is a vastly superior language. (I don't buy the whole "hey, different languages for different problems, man".) *However*, F#'s tool support is far behind C#'s. Namely, there are no designers for F#. So you can't graphically create a Web Form app and have Visual Studio do the code in F# for you. (In our production work, we end up using C# for the designer side, then manually hookup the code to F# on the back.)

Additionally, most of the frameworks are designed with C# in mind. Some, like ASP.NET MVC, make some really wierd design tradeoffs that depend on specific C# features. You can still use them in F#, it's just a bit awkward sometimes.

F# will probably catch up so that these issues won't matter as much.

Anyways, depends on what path you want to go down. And of course, they aren't mutually exclusive. You'd probably do great learning "How to Design Programs" and playing with C# and ASP.NET at the same time.

By on 11/13/2008 1:26 PM ()

If you've never programmed anything before, I would imagine that F#, or any functional language for that matter, would be a very strange world. While people who have been programming for many hears take for granted how "easy" it is to think in terms of a programming language, we often forget how difficult it was when we were first learning our first language. At least with a language like C# the flow of the program has a direct mapping into how you you think and break down problems naturally into a sequence of steps. As others have mentioned, you will probably feel more comfortable with the richer toolset for C# since F# is in its infancy. If you're still unsure, read 2 chapters of a C# book, then read 2 chapters of an F# book and see which one you like better. F# is definitely more interesting, but at the same time the concepts will be more foreign.

By on 11/16/2008 12:08 AM ()

If you've never programmed anything before, I would imagine that F#, or any functional language for that matter, would be a very strange world.

Actually, I think many people who have not gone through the process of learning procedural languages would find the functional language concepts more natural. Maybe not some of the advanced topics like monads, but the basics should be easy.

I was introduced to programming as I child, and I remember that "i = i+1" took a long time for me to grasp. I had no problem with "for i = 0 to 10; do something with i; next i", but the equivalent using a "while" remained off-limit for a long time.

I know people who are excellent programmers despite having no advanced training in software engineering. Instead, they first studied maths and then learned programming, often using functional languages.

Your advice to read two chapters in books about C# and F# is sound, but I would expect a complete beginner to prefer F# in almost all cases, because he/she would be put off by OOP. To a beginner, classes are an unnecessary complication that stands in the way of "doing things".

By on 11/16/2008 3:45 AM ()

Definitely use F# to learn programming. The modern approach to teaching CS is that FP is illuminating. I tought ML at UPenn in CS 101, and now at Dartmouth we teach Haskell to as a first course in CS for *all*.

You only need to start with simple things. I strongly recommend either or both of the following books:

Little MLer
Elements of ML Programming by Ullman

You'll have plenty of times to *have to* program in things like C#, C++ or Java; but if you start high, you'll always have the perspective.

In F#, MSR accomplished an amazing feat -- bringing functional programming to the masses, cutting through MS bloat like a knife through gobs of imperative Vista blubber. Jump at the chance -- I had to learn Fortran first! (Which is still better than C# as a first language.)

By on 11/17/2008 3:24 PM ()

Dab,

I get the feeling F# and functional programming have perked your interest. In that case, I would recommend that you follow your heart, and do what most appeals to you.

The learning curve is more than you need for your current requirements ("can create a few of my own programs/applications for my work"), but if you are enjoying yourself, then you are more likely to get something useful done.

On the other hand,if you do really only require a few simple programs, and don't have an interest beyond that, then I would recomend C#. You will be up and running much quicker. C# is a very, very good programming language, and is more than capable for anything you are likely to need in practice. 99.9% of the worlds real programs are written in languages like C#,C++, Java, etc.

<i>I also have a web-site, which I'd like to re-create from the ground up, using Expression Studio and Visual Studio and see if I can create my own CMS type of site rather than use Wordpress for my site. <i> That's a great tool set, and a great application to work on to develop your programming skills. You won't go wrong with either C# or F#. I personally love both C# and F#, and have a strong background in professional programming. I have spent many months of my spare time trying to master F#, because I expect that it will pay off in the long term. If I just wanted to get a web site up and running *now*, I would use C# and ASP.NET HTH, Javaman

By on 11/10/2008 10:50 PM ()

C# is the way to go for learning programming and the world of .net

F# is very cool, but it's not really released yet, there is not a lot of people using it, there is not a lot of guidance on how to use it for all kinds of tasks.

I'd suggest C# and ASP.NET MVC if you are interested in the web world.

( would be nice to see some F# mvc stuff as well )

The F# people generally know how to look at C# (or VB) code and apply it to F#.

If it was purely to learn comp sci principles, then F# on its own is really good.

By on 11/9/2008 4:22 PM ()

Hello,

If you want to program, then this is a very good language to start with as your first one. Some of the few things that will help you to really see the program without some uneeded artifacts is the type inference, comprehensions, patterns, unions. This is because you probably want to just do things and then learn why you should do it. The less you have to do, the more you can focus on why one particular snippet works.

This is not to say that such is impossible to get similarly from C#, but it feels more like an after thought and many examples will not be consistent to show it. F# was born this way and C# grew learning this habit, so you will be able to notice how more natural it is to work succinct in F#.

My counter would be that of the availability of C#. It has a longer history, so more books, examples, application use, tools to work with it. I don't know your background and so ymmv but for example the microsoft and mono runtimes seems to be catered to C# in testing and debugging and its stabilization across tools and platforms.

Tell us more about your situation (experience, expectation, time-frame, myths) for possibly more feedback from other people. Don't hesitate to learn before in any case. Good day.

Yemi Bedu

By on 11/9/2008 3:11 PM ()
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