PDA

View Full Version : Encouraging new programmers?



MattBD
January 1st, 2009, 04:38 PM
Ever since I first started using Ubuntu last year, it's reawakened my interest in programming which hadn't stirred since I had my Amstrad CPC when I was a kid. I'm currently learning Python, and I also have plans to learn a few more languages (possibly PHP and Java).

I've found Linux in general, and Ubuntu in particular, to be a very good environment in which to learn more about programming - it includes a lot of documentation, such as the Dive Into Python book, and loads of cool development tools, and I really think Linux does a lot to encourage people to take more of an interest in how their computer works.

So I was thinking - what can be done to encourage more people to take an interest in programming?

Microsoft, to their credit, do have some pretty decent resources for new programmers. For the absolute beginner, SmallBasic isn't a bad way to get started, and Visual Studio Express Edition does enable you to get started quite quickly at creating graphical applications. I've been tinkering with Visual C# the past few days and I have to admit I am impressed. They also do have pretty good tutorials for it. XNA also looks quite promising as a way for hobbyists to create their own games easily.

However, they don't exactly go out of their way to make these resources obvious to people. Maybe if PC vendors preinstalled Visual Studio Express Edition, along with a PDF tutorial or two it would encourage more people to learn about programming.

Also, I personally dislike IDE's - it's bad enough learning a programming language without having to learn a complex IDE at the same time.

Apple have the Xcode IDE available on the OS X install DVD, which is a good idea, however it's still not preinstalled. Also, Apple's developer resources seem to be aimed almost entirely at existing developers switching from other platforms. I have yet to find any resources provided by Apple for new programmers.

What do other people think? How could we encourage people to take more of an interest in programming? Should we?

forrestcupp
January 1st, 2009, 07:04 PM
I don't think you can make someone be interested in programming. I think it's a thing where some people have it, and others don't.

I think that rather than getting people to become interested, we're better off finding people who are interested, and encouraging them that they can do it. Programming seems daunting to beginners, especially when it seems that they aren't getting very far very fast. We can encourage beginners and not put them down for the simple things they achieve in the beginning, but applaud their achievements.

We can determine their programming personalities, and either point them to the simpler languages, like Python, where they can see results fast, or if they're the type that want to dive in, help them tackle the harder things, like C or C++.

I just think it's better to cultivate people that already have that spark of interest than it is to try to get people to be interested.

Dr Small
January 1st, 2009, 07:08 PM
I don't think you can make someone be interested in programming. I think it's a thing where some people have it, and others don't.


Ditto.
I myself get in programming moods, and don't want to write a line of code. Other times, all I do is program non-stop :)

Copernicus1234
January 1st, 2009, 07:12 PM
Linux in general is very much a creative environment with all its shell scripts, themes etc. Everything is configured in text files that you can read and understand. Its the beautiful simplicity of the operating system that makes it popular.

You mention Python. Its the same thing there, things are easy to understand and intuitive. Things work the way you expect them to work.

I guess some people just appreciate the simple things in life. :)

Id rather try to find a config file in the /etc directory than trying to find something in the Windows registry for example.

Like the guy above, I have periods when I want to code, and periods when I dont. I tried working as a programmer but it got boring. Now I only do it for fun at home, without deadlines and pressure.

MattBD
January 1st, 2009, 07:14 PM
Believe me, I have no interest in making anyone learn to program if they don't want to! But at the same time, OS vendors don't exactly go out of their way to encourage people by providing the resources to get people interested in the first place.

At least the first generation of home computers did provide those resources - the manual for my Amstrad CPC was the size of a phone book and much of that was about using BASIC!

While it would be fair to say that not everyone wants to wade through something that size, it wouldn't be a bad idea to provide these kinds of resources so people may try them one day when they haven't got anything else to do. Personally I think Python would probably be the best choice in many ways - it's simple, requires no IDE (though you can use IDLE), and yet is powerful enough to get a lot of use out of, making it a strong candidate as a modern equivalent to BASIC.

koenn
January 1st, 2009, 08:09 PM
At least the first generation of home computers did provide those resources - the manual for my Amstrad CPC was the size of a phone book and much of that was about using BASIC!
That was mostly because the BASIC interpreter functioned as the shell / operating system / master control program of your Amstrad - you'd need to create a BASIC routine to get it to do anything.

Times have changed, and you don't need to know how to program to get some use out of a computer. At the same time, some people still think you need to be a programmer to use Linux, and that's a reason for them to not use Linux ...





Python would probably be ... a strong candidate as a modern equivalent to BASIC.
Careful where you say such things. Some people may consider it flame bait.

Copernicus1234
January 1st, 2009, 08:13 PM
making it a strong candidate as a modern equivalent to BASIC.

Python is one of the most powerful languages out there. Its almost equivalent to C or C++ in terms of speed while still having a easy syntax. :)

MattBD
January 1st, 2009, 08:19 PM
Careful where you say such things. Some people may consider it flame bait.

You think? There are other candidates, sure (Perl, Ruby etc). My personal opinion is that Python has a nice clear syntax making it ideal for new programmers.

If you ask me it's more important to get a good language under people's noses than debate what would be the best language. I'd be just as happy to see computers shipping with Perl, Ruby or Lua interpreters as I would be to see them shipping with Python.

For that matter, Visual Studio Express Edition or Small Basic would be better than nothing.

jts0803odon
January 1st, 2009, 08:26 PM
Careful where you say such things. Some people may consider it flame bait.

That could actually be an interesting discussion to watch, though. I'm where MattBD's at - learning Python, remember my school days with BASIC. Would love to hear what people with a good sense of history (particularly what happened between the early '80s and now) think of the comparison.

To my mind, Matt's initial question is interesting because when I use tools such as Mnemosyne to help me remember concepts, facts, tips and such, I always think that what I'd be grateful for is a tutorial environment geared towards languages because, as in KDE's education project, there are people committed to making really interesting educational tools for kids and adults both. Most of those are geared toward math and the sciences, or language acquisition. I get Safari books online through my univ. library, too, so I'm not hurting for sources of info.

Those types of applications, geared with a focus in schools, perhaps, with learning programming as a language or composition skill (as opposed to a purely technical one) might help.

MattBD
January 1st, 2009, 08:33 PM
Those types of applications, geared with a focus in schools, perhaps, with learning programming as a language or composition skill (as opposed to a purely technical one) might help.

You mean something like Robocode (http://robocode.sourceforge.net/)?

phrostbyte
January 1st, 2009, 08:40 PM
Well I am happy that Ubuntu at least comes with Python preinstalled, so it can get people up run running quickly with their programming experiments. But I do find Linux to be a good programmer's OS, most of the stuff is available on Windows too, but there is just something missing.

phrostbyte
January 1st, 2009, 08:43 PM
TBH I also kinda view Python as a continuation of BASIC in spirit. BASIC was a terrible language no doubt, but the idea was to make programming accessible to everybody. I think Python accomplishes this, but with also appealing to professional programmers.

-grubby
January 1st, 2009, 08:44 PM
BASIC was a terrible language no doubt

I'm sure it was nice in it's day. It's kind of deprecated now, though.

MattBD
January 1st, 2009, 08:49 PM
I'm sure it was nice in it's day. It's kind of deprecated now, though.

It was OK, but it wasn't object-oriented like most modern languages are. Compared to Python, it was quite unwieldy.

Of course it's not exactly dead - Visual Basic .NET is still around, but that's a very different language (object-oriented, compiled rather than interpreted, etc). And there are other implementations of BASIC around such as FreeBASIC.

koenn
January 1st, 2009, 08:56 PM
You think? There are other candidates, sure (Perl, Ruby etc). ...


That could actually be an interesting discussion to watch, though. I'm where MattBD's at - learning Python, remember my school days with BASIC. Would love to hear what people with a good sense of history (particularly what happened between the early '80s and now) think of the comparison.

what I meant was that comparing python to BASIC could be seen as an insult to python.

BASIC (the 80's variant) was a language geared towards sequential programming, although you could get some structure into it by using subroutines. A beginner's code would typically be badly formatted and riddled with GOTO statements - spaghetti code.
Modern variants of Basic (eg Visual Basic), although they have many features added, still have all the old treats so they still allow (some say : encourage) a beginner to write spaghetti code.

Python is a structured language that supports object orientation, and forces the use of well-formatted, easily human-readable code. It's probably also a whole lot more powerful than BASIC. It's a language that works well for a beginner to learn because it forces the student to learn good programming habits, but it can just as well be used to write production grade software.

MattBD
January 1st, 2009, 09:06 PM
what I meant was that comparing python to BASIC could be seen as an insult to python.
Ah, I'm with you. I certainly didn't mean to compare Python to BASIC in that sense!

I was comparing it with BASIC in that it's an ideal beginner's language because it's fairly easy to learn. However, as you said, Python instils much better habits in you when learning, and it's also more powerful.

I can certainly appreciate what you said. Debugging a Python program in Vim is a world away from debugging a BASIC program on my old CPC. Python is so much more readable and powerful that it would probably be an insult to compare it to BASIC.:)

jts0803odon
January 1st, 2009, 09:32 PM
You mean something like Robocode (http://robocode.sourceforge.net/)?

Ha! Very nice. I was actually thinking of Scratch (http://scratch.mit.edu/), but I'm with you - I'm thinking of a set of applications with an adult programming literacy orientation. Something less than a pre-certification test tutorial, but something more than Smalltalk, where the motive of instruction is built into the language itself.

I'm going to give Robocode a try, though.

saulgoode
January 1st, 2009, 09:36 PM
If you are interested in sticking with BASIC, the GAMBAS project (http://gambas.sourceforge.net/) project provides a nice environment.

forrestcupp
January 2nd, 2009, 04:04 PM
Python is one of the most powerful languages out there. Its almost equivalent to C or C++ in terms of speed while still having a easy syntax. :)Not even close. Python is an interpreted language, while C & C++ is compiled to machine code. I'm not denying that Python is a great language, but speedwise, it can't compare. The only way you can see speed out of Python is if you use it as a scripting language to run Python wrappers for another framework written in C, C++ or assembly. So it's not really the Python that's fast.

It is great for things that don't need to be fast, though.



Careful where you say such things. Some people may consider it flame bait.


You think? There are other candidates, sure (Perl, Ruby etc). My personal opinion is that Python has a nice clear syntax making it ideal for new programmers.Well, he's just saying that because if you take part in the discussions in the programmer's area of these forums, you'll see a lot of heated arguments for and against Python. Talking about Python over there is almost like a Gnome vs. KDE discussion.

MattBD
January 2nd, 2009, 05:19 PM
I thought you could compile Python to bytecode, similar to Java, so that would make it somewhat faster.

Delever
January 2nd, 2009, 05:19 PM
I am also interested in ways to make programming easier. Basically, information sometimes is too far apart and sometimes scattered, confusion where to start and how things can be done, how things should be done, what is already done, and things like that. That's necessary not only for beginners.

P.S. Python is compiled before you run it, don't start this again :D

forrestcupp
January 2nd, 2009, 06:06 PM
I thought you could compile Python to bytecode, similar to Java, so that would make it somewhat faster.


I am also interested in ways to make programming easier. Basically, information sometimes is too far apart and sometimes scattered, confusion where to start and how things can be done, how things should be done, what is already done, and things like that. That's necessary not only for beginners.

P.S. Python is compiled before you run it, don't start this again :D

Bytecode is not as fast as machine language. ;)

Python is awesome, but it's not as fast as C/C++. It's ok for different languages to have different strengths and weaknesses. Python is better for some projects, and C is better for others.

Edit:

But Python is almost always better for people who are just starting out. You can see results faster with it, which helps to keep people from just giving up.

jts0803odon
January 2nd, 2009, 06:21 PM
Well, he's just saying that because if you take part in the discussions in the programmer's area of these forums, you'll see a lot of heated arguments for and against Python. Talking about Python over there is almost like a Gnome vs. KDE discussion.

Well, sure. I'm glad there's a place where you can discuss this stuff in a less technical fashion. I've asked and googled "what's a good first language to learn?" and rec'd VB, Python, Perl, "don't bother," all kinds of answers. Coming from a non-comp.sci. background, it's hard for me to wrap my head around basic concepts even, like "object oriented," so I have a severe cognitive deficit there. Advanced debates over the technical details would confuse people like me. I've been reading the "Is Compiz dead...?" thread and I had to remember the amount of time I spent patiently plotting out the relationships between window managers, desktop environment, window decorators, etc. on a big whiteboard. Wouldn't really dare to venture my opinion on C-F vs. Kwin or whatever, in any case.

I think that's what part of this thread is about - the attraction Linux distros hold for some people who want more facility with the computer as opposed to just having an idiot-proof platform for someone else's software to run. So you see other distros and wonder if you could learn more about certain aspects of the OS without the eye candy that's important to Ubuntu and KDE. But - despite what I've asked about re: good languages to learn - I started using Ubuntu because it was an encouraging environment to learn about programming at my own pace, with a variety of tools, and with more to do at the terminal. XP works fine, but it goes so far out of its way to hide every thing it does - using Task Manager isn't really a learning experience in the same way figuring out what "ps x" does, going to the man page for "kill," trying to understand what the difference between different signals might be, etc.

It's like when Chrome came out: a lot of people at my department (English, natch) wanted to try it, but my school provides them Symantec Endpoint Protection for free. SEP won't allow Chrome to run in sandbox mode, which I believe is default. So nobody can use Chrome, because nobody knows how to launch a Windows program with an argument, or even that shortcuts launch programs. Which isn't really a fault so much as an approach to literacy: like 5 of these people got new MacBooks this year and boy do they love them. Still can't connect to a network printer, but it's a nice environment, so they enjoy using it. But the department has this approach to computers that essentially accepts whatever the GUI provides. A workstation running word processing, email, and browser applications would serve 99% of the dept.'s computing needs. But people get spoiled for choice, y'know?

Delever
January 2nd, 2009, 07:01 PM
By the way, if you are very interested in making programming easier and want to share concepts and ideas, PM me. We may get something going.