The Best First Programming Language

"<language> as a first programming language"

  • (3 Pages)
  • +
  • 1
  • 2
  • 3

32 Replies - 3163 Views - Last Post: 01 May 2009 - 07:45 PM

Poll: The Best First Programming Language (46 member(s) have cast votes)

Which language is the best for absolute beginners?

  1. Java, C#, or similar (21 votes [45.65%])

    Percentage of vote: 45.65%

  2. Python, Ruby, or similar (2 votes [4.35%])

    Percentage of vote: 4.35%

  3. C++, Objective-C, or similar (6 votes [13.04%])

    Percentage of vote: 13.04%

  4. C or similar (8 votes [17.39%])

    Percentage of vote: 17.39%

  5. Haskell, Lisp, or similar (2 votes [4.35%])

    Percentage of vote: 4.35%

  6. PHP or similar (1 votes [2.17%])

    Percentage of vote: 2.17%

  7. Javascript, ActionScript/Flash, or similar (1 votes [2.17%])

    Percentage of vote: 2.17%

  8. Other (explain in post) (5 votes [10.87%])

    Percentage of vote: 10.87%

Vote Guests cannot vote

#16 Aurel300  Icon User is offline

  • D.I.C Head

Reputation: 13
  • View blog
  • Posts: 230
  • Joined: 10-November 07

Re: The Best First Programming Language

Posted 27 April 2009 - 01:00 PM

Hm... I voted Visual Basic.
I did actually learned that one as first, though when I learned C-based it was painful...
But Visual Basic is kidna good for beginners because... well, itīs syntax isnīt "a == b || (a + b++ - a%(&e))" etc... but it is more like "a Is b Or (a + (b + 1) - a Mod (&e))" - I mean ... more English and that way easier to learn.

VB6 was a pain too, though, because then I got to VB.NET - similar syntax in few parts, but other than that - more logic of the Developerīs site, not English and stuff...

So, I think VB... NET.

And, BTW, iPhone development is using obj-C... When I tried a "Hello World!" app, I was more like... "Hell world!"...
Its syntax is quite illogical for me still - take for example a simple object. Assume I have the class created already.
- In the definitions outside the functions, there is one syntax.
- In the functions - assigning a value to one member is another syntax...
- And finally when, for example, I want to DELETE it, ANOTHER syntax.
Like crazy.
This one is definitely not good for beginners...

So is PHP... a little, but someone has to get there, but he has to better learn C-syntax first...
Was This Post Helpful? 0
  • +
  • -

#17 baavgai  Icon User is offline

  • Dreaming Coder
  • member icon

Reputation: 5908
  • View blog
  • Posts: 12,814
  • Joined: 16-October 07

Re: The Best First Programming Language

Posted 27 April 2009 - 04:23 PM

View PostAurel300, on 27 Apr, 2009 - 02:00 PM, said:

Hm... I voted Visual Basic.


Forgive me, but in your own words you've kind of proved the point of not starting with VB. ;)
Was This Post Helpful? 0
  • +
  • -

#18 mikeblas  Icon User is offline

  • D.I.C Regular
  • member icon

Reputation: 44
  • View blog
  • Posts: 390
  • Joined: 08-February 08

Re: The Best First Programming Language

Posted 27 April 2009 - 04:42 PM

Assembler. (Yes, I'm serious.)
Was This Post Helpful? 0
  • +
  • -

#19 neos300  Icon User is offline

  • D.I.C Head

Reputation: 2
  • View blog
  • Posts: 62
  • Joined: 21-April 09

Re: The Best First Programming Language

Posted 27 April 2009 - 04:50 PM

I should have started with C++. But no, I had too go and start with some unknown BASIC based language. After that C++ scared me too much, so i started with java two days ago.
Was This Post Helpful? 0
  • +
  • -

#20 BlakeJustBlake  Icon User is offline

  • D.I.C Regular
  • member icon

Reputation: 26
  • View blog
  • Posts: 441
  • Joined: 15-February 09

Re: The Best First Programming Language

Posted 28 April 2009 - 01:07 AM

View Postmikeblas, on 27 Apr, 2009 - 03:42 PM, said:

Assembler. (Yes, I'm serious.)



It's not too bad of an idea if you're up to the task. It really makes you understand how the computer works.

The biggest problem for a beginner would be to understand where to start (I've found that there isn't that much as far as recent writings on Assembly goes.) So much of the information out there is way outdated when it comes to Assembly, but I guess there really haven't been tooooo many changes in x86 (that I really know of)
Was This Post Helpful? 0
  • +
  • -

#21 no2pencil  Icon User is offline

  • Admiral Fancy Pants
  • member icon

Reputation: 5382
  • View blog
  • Posts: 27,350
  • Joined: 10-May 07

Re: The Best First Programming Language

Posted 28 April 2009 - 01:10 AM

View PostBlakeJustBlake, on 28 Apr, 2009 - 02:07 AM, said:

View Postmikeblas, on 27 Apr, 2009 - 03:42 PM, said:

Assembler. (Yes, I'm serious.)


...but I guess there really haven't been tooooo many changes in x86 (that I really know of)

As the processors progress, there are added instructions, & sometimes added registers (as is the case with MMX on the PII). However, I would never suggest Assembly as a 1st language. It's great to learn after one understands the ropes of C/C++, because it really shows you the how & why (in my opinion) to make your programs more efficient, readable, & well commented. From my own experience the more I learn about Assembler, the better I become in C.

Plus, making linked libraries & combining the languages is always fun.
Was This Post Helpful? 0
  • +
  • -

#22 BlakeJustBlake  Icon User is offline

  • D.I.C Regular
  • member icon

Reputation: 26
  • View blog
  • Posts: 441
  • Joined: 15-February 09

Re: The Best First Programming Language

Posted 28 April 2009 - 01:17 AM

While learning assembler I was surprised at the amount of control I got over what I was doing, it was the kind of control that I wanted whenever I first started out. After saying that though, I still wouldn't have started out with it personally.
Was This Post Helpful? 0
  • +
  • -

#23 SpeedisaVirus  Icon User is offline

  • Baller
  • member icon

Reputation: 114
  • View blog
  • Posts: 855
  • Joined: 06-October 08

Re: The Best First Programming Language

Posted 28 April 2009 - 06:53 AM

I rank good first languages like this:
Java/C#
Python
Ruby
Lisp/Scheme etc
C/C++
the rest...

Java has all of the good stuff in my opnion:
JVM basically ensures what you write will work the same everywhere you run it. .

Strong typing.

Structured but clear syntax (which is close enough to C/C++ that you will understand what is going on when you see it).

Excellent online API.

Allows teaching of all of the principles of OOP.

Great unit testing facilities.

========================

Not C/C++ and here is why:
Inconsistent across different platforms. Code that compliles and works on my intel linux box might not compile or run as intended on my schools sparc solaris system or a cygwin system. That adds one more concern that you do not need to worry about when wrestling how to program.

Complexity of passing pointers, references, and values typically leave a noob who barely understand the difference of an object and a primitive staring blankly.

Multiple inheritance mucks the waters when you want to teach inheritance.

Memory management doesn't help teach the principles of writing a program in my opinion. Worrying about destructors and freeing pointers isn't as important as understand how to design the code embracing the principles.

=========================

Nothing against C++ but I have done intro to programming in Java then transfered school a school that does it in C++. I had no prior C programming so I was required to take it. We spend most of the class trying to clarify the things I listed rather than learning to write effective code. C++ should be reserved for someone that already understands the basics so you can focus on the true strengths of C++.

This post has been edited by SpeedisaVirus: 28 April 2009 - 06:55 AM

Was This Post Helpful? 0
  • +
  • -

#24 IngeniousHax  Icon User is offline

  • |>|20-514<|{3|2

Reputation: 78
  • View blog
  • Posts: 1,358
  • Joined: 28-March 09

Re: The Best First Programming Language

Posted 29 April 2009 - 12:55 AM

Hmmm...I have chosen C++ as my first language to learn because there is a lot you can learn about other languages through the usage of C++, and I want to learn to program networking tools aswell, and eventually MySQL and PHP...I basically wanna be an all around knowledgeable kind of ''computer user''.

All depends on what you're looking to do, and what captures your interest I suppose. I have taken an intro to Java class, and I hated it, I got into my intro to C++ class and I love it, all depends on the person i suppose.

This post has been edited by IngeniousHax: 29 April 2009 - 12:58 AM

Was This Post Helpful? 0
  • +
  • -

#25 SpeedisaVirus  Icon User is offline

  • Baller
  • member icon

Reputation: 114
  • View blog
  • Posts: 855
  • Joined: 06-October 08

Re: The Best First Programming Language

Posted 29 April 2009 - 06:16 AM

I think I could write db tools faster and cleaner in java (no experience doing so in C++ though) :P Anyway, here is a counter point to using Java even though I believe Java is the better first language.

Perils of Javaschools

This post has been edited by SpeedisaVirus: 29 April 2009 - 06:17 AM

Was This Post Helpful? 0
  • +
  • -

#26 baavgai  Icon User is offline

  • Dreaming Coder
  • member icon

Reputation: 5908
  • View blog
  • Posts: 12,814
  • Joined: 16-October 07

Re: The Best First Programming Language

Posted 29 April 2009 - 08:10 AM

Ack, PDFs hurt my browser. Might as well link the the original: http://www.joelonsof...avaSchools.html

I recall this being a contentious article, when it was first posted 3+ years ago. While VB is hated by everyone else, Java get's it's share of haters, particularly from the C++ crowd.

A salient quote from the article:

Quote

CS is proofs (recursion), algorithms (recursion), languages (lambda calculus), operating systems (pointers), compilers (lambda calculus) -- and so the bottom line is that a JavaSchool that won't teach C and won't teach Scheme is not really teaching computer science, either.


If this were true, it would be a concern. The fact is, you can do the proofs and algorithms stuff just fine Java. These are needed for beginners, the rest is more advanced.

And the advanced is mostly possible. When the author says "lambda calculus" they mean Scheme (MIT snobbery), and I'd tend to disagree that it is required for languages and compliers. Strangely enough, there are a number of "compilers" written in Java (Jython, Scala, Clojure, etc.) You may not see an OS written in Java, but that's hardly an issue; you won't see an OS written in most languages.
Was This Post Helpful? 0
  • +
  • -

#27 mikeblas  Icon User is offline

  • D.I.C Regular
  • member icon

Reputation: 44
  • View blog
  • Posts: 390
  • Joined: 08-February 08

Re: The Best First Programming Language

Posted 30 April 2009 - 07:05 AM

View PostSpeedisaVirus, on 28 Apr, 2009 - 05:53 AM, said:

Nothing against C++ but I have done intro to programming in Java then transfered school a school that does it in C++. I had no prior C programming so I was required to take it. We spend most of the class trying to clarify the things I listed rather than learning to write effective code.
Of course you did--since you didn't know them, and nothing in your background prepared you for how computers systems really worked, you needed to catch up. Someone who learned C++ from the start, then, was ahead of you. Learning that you don't need to worry about something is far easier than learning what a new concept is, what it means, and how to handle it.

View PostBlakeJustBlake, on 28 Apr, 2009 - 12:07 AM, said:

It's not too bad of an idea if you're up to the task. It really makes you understand how the computer works.
And that's the point. Any developer or engineer who knows how the machine works is going to be a lot batter off when writing in any other language. Assembler progrmmers aren't baffled by pointers, for example, in C. They don't consider their higher-level language compiler a black box. They understand the expense of operations, memory access, and other fundamental routines that the run-time environment or OS provide for them.

View PostBlakeJustBlake, on 28 Apr, 2009 - 12:07 AM, said:

The biggest problem for a beginner would be to understand where to start (I've found that there isn't that much as far as recent writings on Assembly goes.) So much of the information out there is way outdated when it comes to Assembly, but I guess there really haven't been tooooo many changes in x86 (that I really know of)
Your inability to find references seems baffling to me. Perhaps the problem is that you're thinking only of x86-based machines.

I believe the first CS course should be about programming single-board machines in assembly. No graphics, maybe not even keyboards; just text terminals, LEDs and processors and some simple I/O. This reduces the OS to a minimum (or, even, nothing!) teaches students what's really happening without any abstractions in the way, and so on. They develop intuitive feels for how much memory is a little or a lot, how fast the machine really is, and so on.

Such courses can be taught on development kits that cost less than $100 with a minimum of disposable lab equipment per student.


I think that decrying a course because it's not modern is a bit of a bad argument. If the courses were being taught, authors would be writing books to fill the curricula because there would be a market for such books. Further, the bleeding edge of the practice has changed, but the core concepts really aren't any different. Does MMX really have a place in a beginning course?

Here are some recent x86 titles:

The 8088 and 8086 Microprocessors: Programming, Interfacing, Software, Hardware, and Applications, 2004. This is a common textbook with good examples and labs. They won't cover the MMX instructions, but I don't think those have much of a place in an introductory course.

Assembly Language Programming for Intel Processors Family, 2005. This includes 32-bit code, and is more comprehensive than the 8086/8088 book above. It's more appropriate for intro students who are going on to a degree rather than students who are getting some casual CS course requirements out of the way for another major or study focus.

Guide to Assembly Language Programming in Linux, 2005. This uses the NASM tools instead of GCC so it doesn't defeat the idea of using simpler tools. But it's got great coverage of the languages and concepts, and covers Linux installation as part of the setup--though that's probably irrelevant for use as course material.

For non-x86 titles:

Programming and Customizing the PIC Microcontroller, 2007. The PIC is one of the more common embedded controllers, at least in the hobbyist market. With an inexpensive dev kit and free tools, students can learn very simple hardware interfacing, do exciting and tangible products, and not trip over a huge operating system or an incredibly complicated tool chain, but still be exposed to the fundamental concepts which the intro course should be presenting.

Programming and Customizing the AVR Microcontroller, 2000. The Atmel parts are also very popular in the hobbyist market, and some would argue they have a better architecture. Again, the approach here is to use free tools with cheap development kits to do very simple hardware projects that produce a tangible and exciting result while learning how the processor architecture works, without being saddled by learning a huge OS or toolset.

Write Great Code: Volume 1: Understanding the Machine, 2005. This book is the first in a series about how computers really work. It's a great introduction into binary math, ASCII and Unicode encoding, and so on. Best of all, it explains why computers work this way. For each point it discusses in computer architecture, it reviews how that design came to be.

I'm at the point where I can't imagine hiring someone who doesn't know assembly at least well enough to debug code. When analyzing faults in released code, it's a necessary skill. Developers I know who aren't familiar with assembly language programming have flawed concepts of how the machine operates, and tend to make bad design decisions as a result.

This post has been edited by mikeblas: 30 April 2009 - 07:12 AM

Was This Post Helpful? 0
  • +
  • -

#28 SpeedisaVirus  Icon User is offline

  • Baller
  • member icon

Reputation: 114
  • View blog
  • Posts: 855
  • Joined: 06-October 08

Re: The Best First Programming Language

Posted 30 April 2009 - 07:17 AM

View Postbaavgai, on 29 Apr, 2009 - 07:10 AM, said:

post


I'm with ya. I just had to post something to counter all my java love I have been spreading. That article was given to me in a class that uses Scheme ;)

This post has been edited by SpeedisaVirus: 30 April 2009 - 07:18 AM

Was This Post Helpful? 0
  • +
  • -

#29 KYA  Icon User is online

  • g++ jameson.cpp -o beverage
  • member icon

Reputation: 3116
  • View blog
  • Posts: 19,154
  • Joined: 14-September 07

Re: The Best First Programming Language

Posted 30 April 2009 - 07:18 AM

Keep your java in your virtual machine or you might catch something ;)
Was This Post Helpful? 0
  • +
  • -

#30 firebolt  Icon User is offline

  • D.I.C Lover
  • member icon

Reputation: 92
  • View blog
  • Posts: 5,561
  • Joined: 20-February 09

Re: The Best First Programming Language

Posted 01 May 2009 - 06:05 AM

Its really what you feel comfortable with as there is no "best" first programming language.
Was This Post Helpful? 0
  • +
  • -

  • (3 Pages)
  • +
  • 1
  • 2
  • 3