[Bassetlug mailing] Beginners Programming Language - my thoughts

Danny Roberts dannyroberts.personal at googlemail.com
Wed Jul 20 08:38:31 UTC 2011


I pretty much agree with Martin about C# it IS a great language, especially
as a 1st choice and with either Sharp Develop or Mono Develop you have some
great free IDE's at your disposal.

Currently my personal favourite language/framework combination is C++/Qt.
C++ although a little more complicated than C# as it expects you to do a lot
of things for yourself it is incredibly powerful and as long as you know
what you're doing you can make some incredibly efficient and powerful
applications. Plus it is continually developed as a standard
particularly by the Boost community many of whom members are on the C++
standards comitee. Also Qt is a great cross platform toolkit that not only
abstracts the GUI's (should you be making a GUI based app) it also abstracts
a number of data types, networking, security etc in a way that means once
written you can build on many platforms without any code changes (assuming
you haven't done anything OS specific such as use Windows' registry for
example).

I think when learning you don't need expensive tools despite what some will
tell you (usually people with a vested interest in you buying a product).
The open source tools for example are almost always all that you will ever
need, and the proliferation of documentation on the Internet almost negates
the need for buying expensive text books at all.

Also I think like Martin said after you have the basics down learning
something like Assembler and a a little CPU Architecture theory maybe for
your chosen architecture is incredibly useful. Because even in very high
level languages such as C#/Java where a lot of the lower level work is
abstracted away and hidden its still useful to have knowledge of the
functions etc you are using and how they actually execute on your platform.
Doing this enables you to write better, faster and ultimately a more
complete application. It's also invaluable when debugging faults with an
app, especially some of the more cryptic ones you might see. I for one am
starting to look at assembler (currently on x86_64 architecture) as I feel
this will be useful to me in the future, especially if I ever decide I want
to contribute or work in projects where lower level architecture knowledge
is a requirement (like a lot of kernel work would be).

Regards
Danny

On 15 July 2011 21:04, mj.wells at ischus.plus.com <mj.wells at ischus.plus.com>wrote:

> 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
>
>
>
> ______________________________**_________________
> Bassetlug mailing list
> Bassetlug at mailman.lug.org.uk
> https://mailman.lug.org.uk/**mailman/listinfo/bassetlug<https://mailman.lug.org.uk/mailman/listinfo/bassetlug>
>


More information about the Bassetlug mailing list