[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