topbanner_forum
  *

avatar image

Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length
  • Monday March 18, 2024, 10:23 pm
  • Proudly celebrating 15+ years online.
  • Donate now to become a lifetime supporting member of the site and get a non-expiring license key for all of our programs.
  • donate

Last post Author Topic: The Best Introductory Language  (Read 25128 times)

KenR

  • Super
  • Blogger
  • Joined in 2006
  • ***
  • Posts: 826
    • View Profile
    • Donate to Member
The Best Introductory Language
« on: April 13, 2007, 12:20 PM »
Now I'll just bet the best way to start programming is NOT to jump into C/C++, which was what I did.

...This paper examines several approaches to which programming language is the best, and afterwards gives several useful relations for which languages should come first. Finally it gives a final verdict, defends it and then gives some other good food for thought...



from http://www.osnews.com/index.php
Kenneth P. Reeder, Ph.D.
Clinical Psychologist
Jacksonville, North Carolina  28546

TucknDar

  • Charter Member
  • Joined in 2005
  • ***
  • Posts: 1,133
    • View Profile
    • Donate to Member
Re: The Best Introductory Language
« Reply #1 on: April 13, 2007, 03:11 PM »
Great find, KenR! :up:

vivy

  • Participant
  • Joined in 2006
  • *
  • default avatar
  • Posts: 8
    • View Profile
    • Donate to Member
Re: The Best Introductory Language
« Reply #2 on: April 16, 2007, 05:30 AM »
Why do you think C++ is not a good beginnig for beginners? Could you tell your own ideas or experiences? I read Horton's books and it seems C++ could be a language for beginning and you can be an expert after 10 years. That is what i want, i dont want to spend time to learn unnecessary languages that i would not use after learning C++.

f0dder

  • Charter Honorary Member
  • Joined in 2005
  • ***
  • Posts: 9,153
  • [Well, THAT escalated quickly!]
    • View Profile
    • f0dder's place
    • Read more about this member.
    • Donate to Member
Re: The Best Introductory Language
« Reply #3 on: April 16, 2007, 06:15 AM »
C is a bad place to jump in, but C++ might actually not be too bad - you could start doing procedural programming and move on from there, but still utilize the safer-and-easier parts of C++ (string, vector, iostreams). I still have a feeling there might be a better place to start, though.

As for i dont want to spend time to learn unnecessary languages that i would not use after learning C++., there's plenty of languages besides C++ that's worth to learn and use in the future... perl, python, lua, anyone?
- carpe noctem

mouser

  • First Author
  • Administrator
  • Joined in 2005
  • *****
  • Posts: 40,896
    • View Profile
    • Mouser's Software Zone on DonationCoder.com
    • Read more about this member.
    • Donate to Member
Re: The Best Introductory Language
« Reply #4 on: April 16, 2007, 10:07 AM »
I am a long time C++ programmer and consider it more my native language than english.  But I would not start with c++ as a beginner, for a few reasons:

1) A major design goal of C++ was to be backward compatible with C.  Because of this, and because it was one of the pioneering object oriented languages, it carries around with it a lot of baggage in terms of idiosyncrasies and ugly illogical design aspects.  These are things that as a coder your learn to ignore and look past, but as a new learner it makes things harder.  It's like learning to congugate irregular verbs in a spoken language.  yuck.

2) C++ was designed with a lot of emphasis on speed and minimal memory use.  While this can be very advantageous in some cases, it means that some things are a little more raw and low-level than a more modern language; again useful for a hardcore coder but perhaps overkill to handle when just learning.  This shows up in things like lack of array boundary checking, which can be deadly to new programmers, who are rightly angry when the computer starts acting weird instead of flagging an error.

3) C++ has no standard user interface library and it's not fun to find and use one -- this can be a killer issue for new coders who want to jump right into GUI programming.  Languages like java and C# are similar to C++ but provide such libraries and can make it easier to transition to gui stuff.

There are more reasons as well, but as a long time programmer, my view can basically be summed up as follows: 95% of learning how to program has nothing to do with what language you use/learn.  The more you learn, the easier it will be to switch to a new language.  Better to pick whatever path gets you into the game and productive.  C++ has some great things going for it, and mastering c++ will serve you well eventually, if only because you'll have an easier time figuring out whats going wrong when something truly goes wrong with your code.

vivy

  • Participant
  • Joined in 2006
  • *
  • default avatar
  • Posts: 8
    • View Profile
    • Donate to Member
Re: The Best Introductory Language
« Reply #5 on: April 16, 2007, 10:35 AM »
 i am going to get this C++ language sooner or later but if you say this would be a hard way to directly jump on C++, also you should show alternative paths for leading to C++.

Can you give an object - oriented programming language which will be suitable in general meaning for a beginner?

mouser

  • First Author
  • Administrator
  • Joined in 2005
  • *****
  • Posts: 40,896
    • View Profile
    • Mouser's Software Zone on DonationCoder.com
    • Read more about this member.
    • Donate to Member
Re: The Best Introductory Language
« Reply #6 on: April 16, 2007, 10:39 AM »
C# is a good choice if you are on windows.

but don't get me wrong, if you can get excited about learning c++ then go for it.  my advice to all new programmers is simply to find something that motivates you, usually a particular book or something.  whatever language you choose will be fine as long as you can stay motivated enough to keep programming and practicing.

ps. whatever language you choose, check out our Programming School section to help motivate you with some challenges: https://www.donation...index.php?board=77.0

mrainey

  • Charter Member
  • Joined in 2005
  • ***
  • Posts: 439
    • View Profile
    • Website
    • Donate to Member
Re: The Best Introductory Language
« Reply #7 on: April 16, 2007, 11:11 AM »
Can you give an object - oriented programming language which will be suitable in general meaning for a beginner?

Check out Aurora.

http://www.ionicwind.com
Software For Metalworking
http://closetolerancesoftware.com

vivy

  • Participant
  • Joined in 2006
  • *
  • default avatar
  • Posts: 8
    • View Profile
    • Donate to Member
Re: The Best Introductory Language
« Reply #8 on: April 16, 2007, 11:24 AM »
Can i adapt C++ into web as a scripting language like PHP? I thought there should be C++.net!

Afaik C# is derived from C++, so it would be easy to jump on C++ after C# right?

ps. whatever language you choose, check out our Programming School section to help motivate you with some challenges: http://www.donationcoder....s/bb/index.php?board=77.0

I have alrready posted something on there. :) And i think you prepared a good source for beginners also advanved programmers. Thank you!

Check out Aurora.

http://www.ionicwind.com

would it be a good start? I dont know anything about it. It should be  better to make some search but i think i will stick with C++ or C# :)

mrainey

  • Charter Member
  • Joined in 2005
  • ***
  • Posts: 439
    • View Profile
    • Website
    • Donate to Member
Re: The Best Introductory Language
« Reply #9 on: April 16, 2007, 12:03 PM »
would it be a good start? I dont know anything about it.

It could be.  Aurora is a language that can be programmed using procedural or object-oriented techniques, that's up to you.  The syntax isn't too different from C/C++.  The developer and a number of other smart folks are available on the forum to help with your questions.   It's relatively easy to learn and is capable of creating standalone executables that run without problems in all flavors of Windows, 95 through Vista.

Anyway, you can download the demo, look over the User Guide, check out the forum, and decide for yourself.  Or not.  :)
Software For Metalworking
http://closetolerancesoftware.com

jgpaiva

  • Global Moderator
  • Joined in 2006
  • *****
  • Posts: 4,727
    • View Profile
    • Donate to Member
Re: The Best Introductory Language
« Reply #10 on: April 16, 2007, 05:10 PM »
The introductory language at my university is scheme.
Pretty bad, i think. But it's only used for learning the basics of programming. Then comes C, Java, Lisp and C++ (in that order).

IMO, the best introductory language may very well be Java. It's not that easy, but the compiler is great and i find it quite a fun language. A good advantage is not having C's 'Segmentation Faults', which are traumatizing in the first times for most people. I could go on and on about Java, but probably i'd be flamed in no time :P


Notice that, although i do like programming in Java, i think it's a pretty useless language if you're not talking about corporate software and such (which is what i'm working on now) and C++ is way more useful.

If you're working under windows, a fun, useful and fast learning "language" is autohotkey. I like this one because it's so damn easy to make stuff that you can actually use.

f0dder

  • Charter Honorary Member
  • Joined in 2005
  • ***
  • Posts: 9,153
  • [Well, THAT escalated quickly!]
    • View Profile
    • f0dder's place
    • Read more about this member.
    • Donate to Member
Re: The Best Introductory Language
« Reply #11 on: April 16, 2007, 05:14 PM »
A good advantage is not having C's 'Segmentation Faults', which are traumatizing in the first times for most people.
-jgpaiva
If you teach people a mix of C/C++, as I mentioned above, you highly reduce the risk of segfaults and the like... but of course you're still without a highly standardized GUI toolkit.
- carpe noctem

NigelH

  • Charter Member
  • Joined in 2005
  • ***
  • Posts: 210
    • View Profile
    • Donate to Member
Re: The Best Introductory Language
« Reply #12 on: April 16, 2007, 08:59 PM »
For getting to grips with objects, check out BlueJ
http://www.bluej.org/index.html

BlueJ is an integrated Java environment specifically designed for introductory teaching.

The BlueJ environment was developed as part of a university research project about teaching object-orientation to beginners. The system is being developed and maintained by a joint research group at Deakin University, Melbourne, Australia, and the University of Kent in Canterbury, UK. The project is supported by Sun Microsystems.

BlueJ supports:
fully integrated environment
graphical class structure display
graphical and textual editing
built-in editor, compiler, virtual machine, debugger, etc.
easy-to-use interface, ideal for beginners
interactive object creation
interactive object calls
interactive testing
incremental application development

vivy

  • Participant
  • Joined in 2006
  • *
  • default avatar
  • Posts: 8
    • View Profile
    • Donate to Member
Re: The Best Introductory Language
« Reply #13 on: April 17, 2007, 12:57 AM »
If you're working under windows, a fun, useful and fast learning "language" is autohotkey. I like this one because it's so damn easy to make stuff that you can actually use.

Honestly i didnt know that autohotkey is a language, i just thought it's just an application for fast access for anything on OS. what a shame.


Lashiec

  • Member
  • Joined in 2006
  • **
  • Posts: 2,374
    • View Profile
    • Donate to Member
Re: The Best Introductory Language
« Reply #14 on: April 18, 2007, 05:42 AM »
Some things to consider:

1) There's no BEST introductory language. You could say this is a fallacy. As for the opinions of you guys, and the article it's clear that everyone has his/her favourite option, which is quite logical.

2) Since I'm still in university, and learning as well, I could give my opinion on this. When I started we used pseudocode and diagrams to create and design the programs that later we implemented with Pascal. During the second four month period (that'll be a semester for you, I think) we learned Java (simple, almost without classes) and assembly (a virtual machine with only 4 instructions and then 8085 assembly). This is my third year, and since then we've learned C++ and a bit of C for an optional subject. Oh, yeah, I forgot, add Unix shell and VI control 'codes' >:(

It's my opinion that Pascal is a good option for starters. You could also throw Delphi in the mix to help people understand classes and all the mess in a familiar language. Also, I feel that C++ should come before Java, but that's a personal opinion. I feel that classes and objects are easier to understand in C++ than in Java, and even then, I still have some problems (solved with some more time reading the theory and writing code)

3) Some simple languages (AutoHotkey, AutoIt, foobar's 'Tagz') are good options to immerse yourself into the programming world, but 'true' language are also needed.

4) The article is quite biased, and contradictory to boot. The guy uses Perl as its main language, and he also recommends it. Oh yeah, what an objective point of view. Then he says that universities like to use the hottest language available to teach people how to program, which is false (in my own experiences), and the he recommend Perl, Ruby and Python, which, incidentally, are the hottest languages around (Ubuntu is implemented in Python, even the kernel, the Internet runs on Rails, and Perl, well, it's Perl ;D)

I feel, that, just as it happens with real languages (English and such, ya know :)), the more you know, the better. Oh, and I really don't recommend Visual Basic for learning anything. It's a really bad option ;)
« Last Edit: April 18, 2007, 05:46 AM by Lashiec »

kyrathaba

  • N.A.N.Y. Organizer
  • Honorary Member
  • Joined in 2006
  • **
  • Posts: 3,200
    • View Profile
    • Donate to Member
Re: The Best Introductory Language
« Reply #15 on: April 20, 2007, 09:36 PM »
If you're set on jumping right into C++, and don't have a strong C background, check www.mindview.net for Bruce Eckel's excellent (downloadable) "Thinking in C".

I don't claim to be unbiased, but I have dipped my feet in several languages over the last few years (QBasic, C, Vb6, Vb.NET, Java, Pascal, and now C#), and C# has given me what I'm looking for.  C# was built from the ground up to take some of the best features from both C++ and Java, incorporating  them into one language.  And, C# was also planned, from the drawing board, to leverage the .NET Framework, which means a whole LOT of your coding has already been done for you.  I find C# more concise than Visual Basic, yet not as complicated as C++.  It shares a lot of similarities with C/C++, and you can get a free, very good programming IDE from Microsoft, and access to a tremendous amount of language feature documentation on MSDN. 

I agree with Lashiec that Pascal is a good starter language.  It contains pretty much all the programming structures you'll run into in other languages and has a clear syntax.  When I was in college, it was the language used in Introduction to Programming.  I also somewhat agree with Lashiec's thumbs-down to Visual Basic.  In particular, Visual Basic.NET is inelegant in comparison with C#.  It has some awkward stuff in it supposedly to make it backward compatible with VB6. 

Just my 2 cents.
« Last Edit: April 20, 2007, 09:41 PM by kyrathaba »

tinjaw

  • Supporting Member
  • Joined in 2006
  • **
  • Posts: 1,927
    • View Profile
    • Donate to Member
Re: The Best Introductory Language
« Reply #16 on: April 21, 2007, 05:10 AM »
Just in case some of you weren't aware of it, a little bit of trivia: The Pascal programming language was written with the intention that it would be used as an introductory language to programming.

Crush

  • Member
  • Joined in 2006
  • **
  • Posts: 402
  • Hello dude!
    • View Profile
    • Read more about this member.
    • Donate to Member
Re: The Best Introductory Language
« Reply #17 on: April 21, 2007, 09:32 AM »
I think the best for beginners is Assembler to understand the basics of the machine and help underständing how later developed languages are working inside. So you´ll be able to create more efficent code. Learning too much languages is only disturbing and confuses. It´s better to stay on a few and study them more intensive.

f0dder

  • Charter Honorary Member
  • Joined in 2005
  • ***
  • Posts: 9,153
  • [Well, THAT escalated quickly!]
    • View Profile
    • f0dder's place
    • Read more about this member.
    • Donate to Member
Re: The Best Introductory Language
« Reply #18 on: April 21, 2007, 09:58 AM »
Assembly is not a good choice for the first language. You get completely lost in details, and a lot of people get pretty frustrated that they spend a lot of effort for almost no return. You need to learn programming first, then you can continue with Machine Architecture. And if people are introduced to assembly too early, they tend to become brain-damaged and obsess over each and every tiny little irrelevant detail.

I'd even argue that assembly is pretty irrelevant these days, unless you want to get into the embedded field, or audio/video codecs.

All that said, I do think some exposure to assembly (or rather, machine architecture as a whole) later on is a good idea if you want to be a full-fledged programmer, and not "just" a dotNET/delphi/bcb/vb/etc program interface designer.
- carpe noctem

dhuser

  • Honorary Member
  • Joined in 2006
  • **
  • Posts: 96
  • King Dogbert
    • View Profile
    • StumbleUpon Profile
    • Read more about this member.
    • Donate to Member
Re: The Best Introductory Language
« Reply #19 on: April 23, 2007, 08:50 AM »
I personally started with (and recommend) Visual Basic (or VB.NET) to beginner programmers. If any beginners want to start learning...
* Visual Basic Express Edition (FREE)- http://msdn.microsof.../vstudio/express/vb/
* Learn VB Express Edition- http://msdn.microsof...inner/windows/tier1/
* Create your First Program- http://msdn.microsof...windows/tier1/first/
It is visual and object-oriented.

Note that a LiveID/.NET Passport ID is required to register/activate.
dhuser
My StumbleUpon Profile
Imagine.Explore.Create!
« Last Edit: April 23, 2007, 08:54 AM by dhuser »

ivanv

  • Participant
  • Joined in 2006
  • *
  • default avatar
  • Posts: 27
    • View Profile
    • Donate to Member
Re: The Best Introductory Language
« Reply #20 on: April 23, 2007, 10:16 AM »
I'm going to blasphem and say something like Visual Basic 6... Or any very high level language.

That's because for me, learning first about higher level stuff, being able to focus more on what I want the program to do, and not the nitty gritty of memory management (to mention just one difficult area), allows me to learn at my own pace.

I first learned QuickBasic, then Turbo Pascal, then Assembler, then a little C++. It was easy for me to understand ASM (even machine code) after Basic and Pascal, plus it helped me understand how those worked.

It could be the other way around I guess, but that's what worked best for me.

zridling

  • Friend of the Site
  • Charter Member
  • Joined in 2005
  • ***
  • Posts: 3,299
    • View Profile
    • Donate to Member
Re: The Best Introductory Language
« Reply #21 on: April 24, 2007, 09:27 AM »
What the hell's wrong with you people? Fortran's not good enough for you? I took the course in 1980 and I've never needed anything since!*



*I haven't used it since either. So stop smirking.

broken85

  • Supporting Member
  • Joined in 2006
  • **
  • Posts: 88
    • View Profile
    • Donate to Member
Re: The Best Introductory Language
« Reply #22 on: May 01, 2007, 04:26 PM »
I got started with Basic, followed immediately thereafter by Visual Basic 5 Learning Edition. That was quite enlightening, and really opened the door for all my future programming endeavors, from C++/VC++ to PHP to Java and C# and everything inbetween. It might not be the best place to start, but it seemed much less complex than any variation of C at the time and since I was a kid that was OK with me!

Rather than pick a specific language to start learning, I would recommend getting a free copy of Visual Studio 2005 Express Edition and having a look at some sample projects in the various languages, or trying out some simple tutorials in each of them, to figure out which one is easiest for you to wrap your head around. In the end most languages can do most things you want them to, but with extremely varied levels of ease and success. It's all about preference.

Last year I "watched" a couple of webcasts to get a free copy of Visual Studio 2005 Standard (was linked to from this forum) and I'm really glad I did, it has been my tool of choice ever since. Well, except for web programming because I have not found a good reason to take the plunge away from PHP yet (nor have I really been looking for one. I love PHP.)
--
Ben M

nosh

  • Supporting Member
  • Joined in 2007
  • **
  • Posts: 1,441
    • View Profile
    • Donate to Member
Re: The Best Introductory Language
« Reply #23 on: May 01, 2007, 05:46 PM »
f0dder: What's a good place to start teaching yourself machine architecture if you're completely new to it? Any book/online tutorial recommendations?

BTW, tried out quite a few DC programs today and I loved fsekrit. Great work there!

f0dder

  • Charter Honorary Member
  • Joined in 2005
  • ***
  • Posts: 9,153
  • [Well, THAT escalated quickly!]
    • View Profile
    • f0dder's place
    • Read more about this member.
    • Donate to Member
Re: The Best Introductory Language
« Reply #24 on: May 01, 2007, 06:56 PM »
Good question - I haven't found any single source that I liked, I've picked up from bits and pieces here and there. For x86, the resource has been the processor manuals from intel (PDFs as well as paperback prints freely available), but those are pretty dry and heavy.

Randall Hyde's "The art of assembly" is supposedly good, but I haven't read it - the old part is about 16bit which I've happily forgotten more about than most people of today will ever look at :), and the 32bit part is in his HLA syntax that I'm not too fond of (it's interesting because it's different, though). I've never taken a formal course in this stuff, so I don't have any references, sorry. Or well, I bought "Silberschatz/Galvin/Gagne: operating system concepts" which seems to be decent, but that's only part of it - more OS than machine architecture.
- carpe noctem