Which language should i choose?

Started by
21 comments, last by Washu 11 years, 5 months ago

Have I missed something?

Not really, but the way you phrased your question almost suggests you don't highly value the importance of a language's platform and support libraries. If anything these things are often more important than some simple syntax and grammar rules of a language. A good programmer should be aware of lower-level details and have a good knowledge of data-structures and algorithms, but should also use support libraries where appropriate to improve the quality of their work and the speed at which they are able to produce it. This is the very same reason middle-ware solutions and engines have become so popular and common.

Likewise, not having to deal with memory management makes a huge difference in the difficulty a beginner experiences in their first steps into programming. They should ideally become aware of these subjects -- whether they have to use it or not -- eventually, but (although some will disagree with this) don't really need to deal with it immediately.


The recommendation of higher level languages is valuable because it allows a beginner to focus on many of the underlying concepts rather than the specifics of memory management or difficult language-syntax, and as evidenced by the many skilled programmers who started out with punch-cards, BASIC variants, and similar languages this does not prevent mastery of a lower-level language later on.

- Jason Astle-Adams

Advertisement

Java is bad language for learning programming? Hum... i don't see why it would less good than C# or Python to learn programming. I'm interested to hear your arguments about that.
Good first languages let the programmer concentrate on the data, and the algorithms and program logic used to process it. Flexibility, simple syntax, not having to remember library stuff or learn complicated tools is important. Java is rigid, verbose, relies on a giant library instead of the core language being expressive, is painful to use without learning an IDE, and forces the user to squeeze everything into objects whether that makes sense or not. A beginner needs to learn how to structure computations / functions. Before they have a handle on that, it's a totally wrong time to teach object orientation, and it will just get in the way of learning the things they could and should be learning at that stage. OO is just one way to structure programs, and frequently not the right one for a given problem.

I remember reading a paper from the "How to design programs" crew at MIT (you can probably google this up), where they report on using two different approaches to teach programming from the ground up. In the first way, they had a first course and a follow-up course that were both in Java. In the second way, they had the first course in Scheme and the follow-up in Java. What they found is that at the end of the second course, the people who had initially learned in Scheme (which, like Python, has better characteristics for a learning language) were better Java programmers than those who had twice as much Java experience. MIT now uses Python as their first teaching language.

It is not my fault that C for dummies isn't written correctly, perhaps we should write "C For Dummies which Moves to C++, The Book That Doesn't SUCK".

There is no such book that WOULDN'T suck. Its the nature of "for dummies" or any similar titles that try and condense a very complex subject down into a small book to be wrong. You just cannot cover all the necessary information in such a book.
The thing about C/C++ is basically similar to Perl. You can write things so many different ways that there is "no" best way. C# and the other languages propose coding standards beyond just a "language".[/quote]
Here you're speaking of language paradigms, and while I do agree that C++ has many different paradigms, C# ALSO has different paradigms available. You can write C# using functional paradigms as well, its not a strictly class based language. You could do it in a procedural manner too, although that's a bit of a hassle.
C# is every bit as complicated as C++ in most ways, as a language, only the support libraries and implied coding standard really make a difference[/quote]
No, the C# language is no where near as complex as the C++ language. Just as an example, you can implement a full C# parser that's an LL(k) or LARL parser. Good luck trying to do this with the C++ language. Furthermore, the C++ language has huge amounts of undefined behavior implicit in many of its most basic operations, C# is quite well defined in almost all areas. I could go on.
So, with C#, I'm not really sure how C/C++ is really that much more complicated? The things which usually throw nubes are duplicated in C# in terms of the basic language, What is different is availability of support libraries, standard naming conventions, and all sorts of other things you have to go find/link into a C++ program.[/quote]
The .Net framework is a significantly more complete framework than what you will get with any general C++ compiler. More importantly though, the libraries all make sense, being a unified API. Whereas with C++ you may have a dozen or more different APIs and libraries you interface with to do the same thing, each with their own unique style of naming syntax, scoping, macros, enumerations, etc.

In time the project grows, the ignorance of its devs it shows, with many a convoluted function, it plunges into deep compunction, the price of failure is high, Washu's mirth is nigh.

This topic is closed to new replies.

Advertisement