Which language should you learn first.

What is your sexuality

  • Straight

    Votes: 0 0.0%
  • Bi

    Votes: 0 0.0%
  • Gay

    Votes: 0 0.0%

  • Total voters
    0
Status
Not open for further replies.

fitzjj

Daemon Poster
Messages
544
A pretty common topic in this forum is "which language is best for a beginner?". Now having programmed in loads of different languages myself, and in the real world, i know the best language for a beginner is either C++ or Java. But what do others think?

You are free to your opinions, but remember unless they agree with mine they are wrong ;)

I'd be impressed if someone could convince me otherwise...
 
Well, the way I see it, there are really only 4 choices, being C, C++, C#, and Java.

I learned on Pascal but it is a dead language now, unfortunately.

VB is alright, but I think people who learn on VB tend to develop nasty habits and turn out inferior code to people who learned things the "old school" way, and moved up to that sort of environment.

As far as LISP and Prolog, I can't even see them making the list. I think functional programming has no place being taught to beginners since it is so abstract as to be almost incomprehensible to even veteran programmers. Human beings just do not have an easy time thinking recursively, in my opinion. As long as computers are essentially Von Neumman machines, I think programming should be taught in imperative languages, since they are the closest to the underlying assembly language instructions that actually get executed.

I am not familiar with Scheme.

As far as the C/C++ question, I consider it a wash, since most people use just a subset of C++ anyway, so you might as well learn "C" in a C++ compiler since thats probably how it'll be done later anyway. In my opinion, teaching procedural computing is still important, and so people should start with simple procedural (non-OO) programming and move up later to OO. I think to start with OO is to invite disaster. You wouldn't believe the number of people I ran into in CS classes at my university who are absolutely abysmal programmers because once you take away Java/C++/C#/VB and their precious object oriented nature, they can't think.

I say get down into the trenches and learn it the way people have been learning it since the 70s. Be it C, FORTRAN, etc, learn the basics, then move up. Once you master merge sorts, linked lists, binary trees, etc, move on up to classes and actual objects.

Doing it this way enables you to go back later and adapt more easily. Someone versed in C and by extension C++ concepts can pick up almost any language (except Lisp and Prolog, etc) usually in hours.

Not only that, but the syntax of them is so universal, that it is found nearly everywhere. PHP, shell scripts, perl, and even hardware descriptor languages follow C/C++ syntactical conventions. (For instance, for one class, I had to debug a MIPS R3000 processor synthesized completely in Verilog, which is a very C-like 'language').

I say why start with Java or C#? Not everything needs to be object oriented. In a world where more and more devices are being embedded, it is my feeling that there is going to be a deficit of people who are still experienced in the grunt work. Out of all people in my CS classes, I doubt 80% of them could read and understand basic MIPS, x86, or PowerPC assembly code, or for that matter even basic C libraries.

In designing a lot of embedded applications, every bit, every line of code, every transistor counts. Why not learn to do it the hard way and then spend a few minutes to adapt to it a new way (Java, C#, etc). At least this way you'll be able to do both. On one hand, you'll be able to use the powerful features of the OO languages, and and on the other hand, you'll still be a competent resource-conscious, efficiency-minded programmer that can optimize code with the best of them.

JMHO
 
I should also add that I feel that C/C++ has a relevance which goes beyond anything C# and Java can offer right now, which is that they both have a very long history, and are very very very widely used.

There are people out there still using FORTRAN, Kerninghan and Ritchie C (pre ANSI), COBOL, etc.

Sure, there are a lot of guys out there using C# and Java now, but there are a LOT more using the old-school stuff, and even more using the newer-old stuff, like ANSI C and C++.

If you consider that C has been around since about 1973. ANSI C dates to 1983. C++ dates to 1983 as well. These languages are tried and true, and IMHO, will never disappear, since they are simply too important.

Compared to these languages, C# and Java are just "fad languages", like so many other languages that were spawned from C/C++, and many died away.

While I think C# and Java have their merits, I think programmers are creatures of habit, and their longevity depends on how well they are adopted. They could eventually replace C++ (but never C), or they could go the way of ADA and so many other languages that spawn and die in a matter of a few years.
 
Come on don't be such a pussy Lisp is great for beginners, once they understand it they won't have any trouble at all picking up new languages. :)
 
gab00n said:
Come on don't be such a pussy Lisp is great for beginners, once they understand it they won't have any trouble at all picking up new languages. :)

Are you being facetious? I hope so, lol.

Anyway, I don't think functional programming is something that most beginners can pick up.

Besides, functional programming lends itself to data-flow hardware architecture (meaning a CPU with no program counter, basically) which is pretty nonexistent in general use.

Non-OO imperative languages help teach and reinforce the Von-Neumann (Fetch/Execute) type of architecture that most of us will ultimately work with. It is therefore easy to branch out into higher levels of complexity, like imperative-style OO languages, etc.
 
Most people who will learn programming in college will most likely end up learning C/C++ or Java first. For engineers i would recommend they definitely learn Fortran because there is a ton of code out there still being used and maintained.

For people really into programming i would suggest they take a look at Lisp and APL. You can code a program in APL and come back the next day, look at it and go WTF? You could also have a fully working airport simulator in a couple lines of code.

I started out with pascal, which isn't that bad to start out with so people could also take that route. I would recommend learning C before C++ and try get familiar with a new language every year or so.
 
gab00n said:
Most people who will learn programming in college will most likely end up learning C/C++ or Java first. For engineers i would recommend they definitely learn Fortran because there is a ton of code out there still being used and maintained.


I disagree.

If you are into engineering, I strongly suggest learning C++ and then go into VHDL. The many levels of abstraction make VHDL a great language for describing digital electronic systems. You can start at the highest level of abstraction and work your way down once you have a greater understanding of its components. Also, I think that designing is a whole lot easier using VHDL.
 
Status
Not open for further replies.
Back
Top Bottom