[Bassetlug mailing] Beginners Programming Language - my thoughts

mj.wells at ischus.plus.com mj.wells at ischus.plus.com
Fri Jul 15 20:19:32 UTC 2011


Hi All,

There are perfectly good free tools that cover the aspects of Visual 
studio. MS do some themselves that are suitable for non-commercial use, 
and can be downloaded off the internet.

You also probably do not need to use VS 2010. Previous versions are 
generally good enough unless you are a commercial user with experienced 
programmers and also have the need to use functions of later tools.

Of course SharpDevelop is a very good replacement for Visual Studio that 
many commercial users make use of. Many find it more friendly and usable.

It is always wise to learn without paying much money. When you have 
learnt a bit you get an idea of what you really need and then you can 
look for the tools at a price that you can afford.

Some of the advantages of learning with C# are:

1. It represents a common wide family of blocked languages. Once you 
know it you can move easily to one of the others. (algol, pascal, C, 
java, etc)

2. It has a large presence of support in tutorials and examples on the 
internet.

3. The support is from professionals and amateurs who tend not to be 
'geeks', but normal people who give straight easily explained answers. 
This is not true of some of the popular languages. Some languages are so 
minority that once learned you are in a very small group of users and 
are therefore 'breaking the path' the whole time.

4. It is directly useful as a skill in a large number of areas.

5. It is supported by the .NET framework. The framework is very easy to 
use, is extensive and has good documentation. This means that you can do 
some very complex tasks with only a few lines of code where most other 
languages would require thousands of lines (and a lot of complex 
understanding) to do the same thing.

6. You can very quickly build very large applications, concentrating on 
the product and not the programming problems.

7. There are a whole range of free, and easy to use, support tools such 
as documentation generators, syntax checkers, etc.

8. There are many third party open source libraries such as zlib, game 
engines, physics engines, graphic engines, sharpReports, etc that mean 
that you can get on with your application instead of re-inventing the wheel.

9. It integrates well with DirectX and can also use OpenGL. It is easier 
to learn graphic programming via DirectX than OpenGL, although it can be 
done either way. (I used OpenGL under Unix first, when I got to Direct3D 
I realised how much time I had wasted grappling with concepts that would 
have been obvious using D3D.)

10. It is multi platform. Using MonoDevelop and mono you can transfer 
program into and out of Linux (OK - not if you have used the wrong 
functions in Windows that don't exist in mono yet, but a beginner is not 
going to be presented with those rare functions.)

11. It is strongly typed. This means that a whole range of errors are 
dealt with by the compiler rather than throwing 'hard to find' exceptions.

13. It avoids the pointer headaches. As this is a major problem in any 
real language it is a boon for beginners not to be pushed headlong in to 
the mire of pointers.

14. It can be used for server-side web work, remote applications, or 
just on the desktop.

There are other languages that have some, or even most, of these points, 
but I think that C# is the only one that has them all.

Actually I generally start people off on Alice, Scratch or Squeak, 
depending on their age, ability and interest.

Alice for the very young.

Scratch for everyone else. It has the advantage of easily showing the 
way a program is constructed. Some people are happy staying with it for 
a long time, others may move on after a few hours having grasped the 
concepts.

Squeak for those that don't think Scratch is for them because it isn't 
what they expect in a programming language.

My personal favourite language is FORTH, but although it is very easy 
language to learn, it does not have many of the good points listed above.

Some people are best off learning an assembler as the first language as 
my belief is that a programmer does not really understand what they are 
doing unless they can at least show that they have an elementary 
knowledge of assembler programming. Someone applying to me for a job 
without at least a small amount of assembler experience would have quite 
a hard time proving competence for the sort of work we do.

Of course, we are discussing which language is the one to LEARN to 
program with. The premise that I am working on is that after getting the 
concepts of flow control, conditional statements, scope, type, simple 
OO, and so on; then the learner can more to a more difficult language of 
their choice with some degree of expertise to be able to choose. Maybe 
at this stage they would like to try FORTRAN, PHP, Ruby, python and so 
on. The point is that they are in a position to understand the issues 
involved in their choice compared withthe use they are going to put it.

I have programmed in about thirty languages in the forty years I have 
been programming for. That is only a small number of the many hundreds 
that there have been, and even of those that are still in use. However, 
my experience is that each has its advantages and disadvantages.

I am sure that Danny, Richard and others can give details of the things 
they like in the languages they use, and I would like to hear your thoughts.

Martin





More information about the Bassetlug mailing list