|
C++ all the way!
There is opportunity for newbies to do "interesting" things right away, by re-using object oriented libraries someone else wrote, and it allows low-level hardware access that is second only to assembler. After some digging, the astute coder can learn and understand the basic computational concepts and building blocks.
Personally, I started programming by learning QBASIC back in 1993. After some years out of the loop, I dabbled with java in high school info-technology. Then last year I decided to study C. After a few months, I thought it was time to move to C++.
Learning C and then C++ was a good way to get a great understanding in my opinion, since I had laid the foundation mentally for the more advanced and higher level dialect.
Now I mostly write C++, but I use perl for some file utility-like functions. I'm messing around with scala for something completely different, and I'll try out scheme and maybe prolog soon.
I've heard that to improve one's problem solving skills, it is a good idea to learn languages from each of the major genres: procedural, object-oriented, functional, logic, etc.
I agree that the best way to the teach the art is to start with something that allows the kids to experiment relatively safely and see cool effects.
|
|
|
|
|
I think C++ is much too difficult too learn for beginners. Of course, if you can program in C++, it is easy to learn any other language. But a beginner needs some quick success which he doesn't get with C++.
|
|
|
|
|
Do you want the developer to get the basic concepts the fastest?
C#/Java
or do you want a developer who truely understands what he/she is writing, and some of the more basic computer science principles
C/C++
I also believe a thorough understanding of some kind of assembly is important.
|
|
|
|
|
Some basic concepts can also be taught using C or C++. Even assembly (ok, this is harder)! But the true understanding of what happens under the hood CAN'T be taught using the C#/Java language (if some people say C/C++, why can't I say C#/Java?).
To those who understand, I extend my hand.
To the doubtful I demand: Take me as I am.
Not under your command, I know where I stand.
I won't change to fit yout plan. Take me as I am.
|
|
|
|
|
An absolutely invaluable portion of my experience was writing interrupt drivers for DOS (assembler), and writing multi-threaded programs on Unisys Mainframes (ALGOL). Both required a knowledge of the underlying hardware architecture and how it worked in conjunction with the program to get things done.
I think the traditional areas are VERY important (algorithms, data structures, etc.), but understanding the hardware and how it executes programs is invaluable to being effective in ALL languages, no matter what level.
|
|
|
|
|
Javascript is everywhere. Given any modern browser and a text editor, you can write and test your programs, hammer out the basic concepts, and have a lot of fun... all without getting distracted by compilers, OS issues, and complex runtime libraries.
FORTH is just a fascinating language. And has, in my opinion, the best introduction to programming ever written: Leo Brodie's classic Starting Forth[^].
Citizen 20.1.01 'The question is,' said Humpty Dumpty, 'which is to be master - that's all.'
|
|
|
|
|
Shog9 wrote: FORTH is just a fascinating language.
So is Prolog
|
|
|
|
|
Sadly, i've never actually seen Prolog outside of books.
Citizen 20.1.01 'The question is,' said Humpty Dumpty, 'which is to be master - that's all.'
|
|
|
|
|
Some sick genius thinks sex is a good starting language.
Now the author should own up and please answer these few questions:
1. Which higher language do you proceed to after learning and exhausting that?
2. I understand the 1s-and-0s analogy but is there a closer relationship with programming?
3. How do you compile? I use precompiled headers to make my compiles faster, but I imagine time-to-compile in this language should be as exaggeratedly long as possible?
4. Know of any compiler vendors?
5. Keywords: buy, mall, shop, tall, handsome, long, silicon...missed any?
Love is the illusion that one kiss is different from another. - e.m
|
|
|
|
|
I disagree with this... its been my experience that all that does is delay and distract you from getting any real programming done
|
|
|
|
|
Compilation takes nine months on average...
I've got one finished product written in this langauge, and a second one that should be done compiling in August...
The tech support for just one product is starting to take up all my time! But luckily the built-in knowledge base is growing rapidly, and the extensible architecture is fleshing out, so in about 18 years, it should be able to support itself. It's already got new features that I never even considered when originally developing the system!
Now that's what I call pair-programming!
-----
"Be liberal in what you accept, and conservative in what you send." - Jon Postel, First Law of Internet Communications
"It's 5:50 a.m., Do you know where your stack pointer is?"
"If at first you don't succeed, you must be a programmer."
http://vanguard-against-confusion.blogspot.com
|
|
|
|
|
illium wrote: I've got one finished product written in this langauge
Now to wait for the temporal bugs
|
|
|
|
|
on what you're trying to achieve.
If you want to understand how computers work, then a thorough understanding of assembler language is mandatory and machine code is a good endeavor.
If you want to hack out some code to make some buckos, then start with the Language of the Day. (Which is likely different than next month's LOD.)
Gary
|
|
|
|
|
If theres a good chance that you are going to write in C/C++ then please learn on a language that doesn't have garbage collection. Your future colleagues will be grateful.
It seems to me that learning on a weak typing language is not particularly harmful because moving to a strongly typed language will simply mean a little pain and a steep learning curve.
No language in itself is going to imbibe you with good programming skills IMO.
Murray
|
|
|
|
|
Without GC, 90% of the programmers would stop being programmers.
To those who understand, I extend my hand.
To the doubtful I demand: Take me as I am.
Not under your command, I know where I stand.
I won't change to fit yout plan. Take me as I am.
|
|
|
|
|
I think that's 1/2 the point of the guys message......
My first language: C
My regrets: None.
The worst thing about the darkness is the light at the end - DX-MON
|
|
|
|
|
To learn basic programming concepts like data structures and alorithms, I vote for something readable, clean and *not* object oriented: Python is probably a very good choice for a beginner, and some flavor of Pascal would be probably good too.
Later, some assembly language knowledge is very good to learn the basics and be able to do serious debugging and crash analysis.
For system programming, the next logical step is C, then C++.
For web programming: HTML, JavaScript and one of: Perl, PHP, Ruby, Java, C#
For "enterprise" programming: SQL and one of: C#, Java, COBOL, Visual Basic.
modified on Monday, April 7, 2008 9:50 AM
|
|
|
|
|
They're similar but different enough that they shouldn't be grouped together.
|
|
|
|
|
i too agree.
Peacon
|
|
|
|
|
Conceptually Java and C# is the same thing, give or take a few things.
|
|
|
|
|
If you're going to group Java and C# together, then you might as well group all the C-based languages together (C, C++, C#, Java).
|
|
|
|
|
C and C++ are very different from C# and Java - both in purpose and semantics.
|
|
|
|
|
The same could be said of C++ and C.
Len
|
|
|
|
|
LeonardReinhart wrote: The same could be said of C++ and C.
Not really - they are both system languages and C++ is designed to be a "better C" among other things.
C# and Java on the other hand are both geared towards enterprise application development, they run on virtual machines, have garbage collectors and similar object models.
|
|
|
|
|
C++ is object oriented. That is a completely new concept. I use C and C++ for very different things. Java, C# and VB.net I would use for similar things (conceptually) I prefer C# and VB.net.
Len
|
|
|
|