PDA

View Full Version : Ima gonna give programming a go...



ching_ching
23rd January 2005, 06:58
Hi gang,

One of my New Years Resolutions is to try and give this programming bizzo a go (since I've got a computer and all ;) )

So my question to those in the know is, "In your opinion, what beginner's language would you use to get started?"

This will be a very informal affair. Whenever I get a chance I'll lock meeself in me room and potter away and when I get frustrated and need a break I'll go for a ride. Have found a language called Python and have had a small tittu. Looks cool. BTW have already been to the local stationery shop to order my pocket pen holder. :Punk:

ching ching

Skunk
23rd January 2005, 07:08
Programming for what? Applications? Web? Mobiles?

End use makes a difference to the best language to use...

jrandom
23rd January 2005, 07:50
Doesn't matter what you're programming for, all computers are the same underneath the plastic covers. Mobile phones, PCs, bank mainframes, car GPSs...

What will really help you out if you fancy learning to program computers is getting a good understanding of what's actually going on in the processor, memory, and all that.

You should get yourself a book on assembly-language programming for the x86 and MS-DOS, and start there. It'll still work just fine under the latest versions of Windows; you'll need to find yourself an assembler (MASM or TASM, perhaps) but I'm sure I can help with that :)

Once you have a good grasp of how a processor actually works, how programs run and how they interface to an operating system, you will find yourself being much, much more enlightened in your use of high-level languages like Python (and much more capable of writing proper software in C, which is what all Real Software (tm) is written in, and which has been described as having "the power and flexibility of assembly language, combined with the ease of use of assembly language...")

Skunk
23rd January 2005, 07:58
You're right JR, I was thinking more PHP, C+, Java... :sleep:

avgas
23rd January 2005, 08:59
assembly? sorry but i actually found learning to program using whole words easier (mind due, i was having to program and ATMEL ATMEGA128 in it) - is this other assembler easier?
The easiest language to learn has to be pascal though - but i dont know if you can get it for PC's.
Yeh C (not C++) is a good way to start, or even some web scripting

SPORK
23rd January 2005, 09:53
Well, I first had an experience with BASIC. And believe me, it is.
I think that Visual Basic is a good step up from there, and you can make some decent little programs. However, like jrandom said, if you want to make RealPrograms C/++ is where you want to go.

ching_ching
23rd January 2005, 14:46
Thanks for the replies so far gang.

JRandom would it be correct to assume that learning a bit of assember would be good for familiarity purposes only (the details of a microprocessor, interfacing with an OS, etc) as fully-fledged programming in such a language would be mind numbing to say the least?

I've already looked at some versions of Basic and Pascal as well as looking at some sites dealing with Delphi, VisualBasic, etc. In the short time that I've been looking into things, I'm in the midst of delving into a free online tutorial of Python... basically because it's free and although it's a scripting language, it's giving me a kickoff. But I like what u said JRandom, look into Assembler and consider studying the inner workings of the Micro. Hard times ahead believe me. I ain't no clever barstad. :blink: But I'll give it a crack Nigel. :msn-wink:

TwoSeven
23rd January 2005, 17:29
Personally assembler would be a wasted effort - there isnt anything you cant do in an 'easier' language. And for learning, probably the likes of java and C# would be better, apart from being more relevant they are both free and heavily used in industry.

NordieBoy
23rd January 2005, 18:36
TCL/TK - Language of the gods.

Blakamin
23rd January 2005, 18:41
Personally assembler would be a wasted effort - there isnt anything you cant do in an 'easier' language. And for learning, probably the likes of java and C# would be better, apart from being more relevant they are both free and heavily used in industry.
if you want to make money, I agree!!!!
are you doing this for fun or a career move, CC???

ching_ching
23rd January 2005, 18:51
if you want to make money, I agree!!!!
are you doing this for fun or a career move, CC???

Initially for fun Amin. But who knows later on down the line. My foresight is pretty much sheight as you can gather. But wouldn't mind getting my computer to do "more stuff!" :2thumbsup

Mental note... (find out what TCL/TK is all about).

NordieBoy
23rd January 2005, 18:58
Mental note... (find out what TCL/TK is all about).

http://www.tcl.tk

Scripting language (TCL) + gui stuff (TK).

Free drag and drop IDE's available (500Kb download - Suck on that VB!)

My Image Gallery program that does all my webbed photos is done in TCL.

Perl would probably be the one to learn though as more people are likely to know what you are talking about when you mention it.

Blakamin
23rd January 2005, 19:18
If yer doin it for "fun" I'd tend to go for one of the visual studio packages (Visual C++, Visual Basic) just to get into the "frame of mind" :blink:

jrandom
23rd January 2005, 19:35
Personally assembler would be a wasted effort - there isnt anything you cant do in an 'easier' language. And for learning, probably the likes of java and C# would be better, apart from being more relevant they are both free and heavily used in industry.

Blah.

You're just parroting what the HR people say when they have to tick 'feature' checkboxes off a pile of CVs.

I wouldn't hire a software engineer that didn't have a good understanding of processor architecture and all the low-level stuff that's so easy to ignore when you learn in a language like Java or Python. Been there. They write bad code.

TwoSeven
23rd January 2005, 20:23
Actually I'm basing that information on a shit load of experience.

jrandom
23rd January 2005, 20:50
Actually I'm basing that information on a shit load of experience.

The fact that you may have been working as a programmer with whatever language for however long doesn't really have much to do with the best way to learn about it. And I'm not dissing you.

It's just... bugger worrying about what will get you a job. You have to grok the machine.

I really don't have much time for people who are just doing it because they heard there was a 'good living in IT' or some nonsense like that, went and 'learned Java', or whatever, and now they're writing code behind buttons on web pages or database entry forms... most of the BSc comp sci graduates these days fit into that category. It's sad. They don't *get* it.

There's real joy and satisfaction to be had in designing and writing software. Some people spend their lives getting paid to do it, but never really experience it.

Just be glad I'm not ranting here about how Ching shouldn't be allowed near a code editor until he's learned to design logic circuits :p

jrandom
23rd January 2005, 21:00
Scripting language (TCL) + gui stuff (TK)... Perl would probably be the one to learn though...

All very worthy and irreplaceable technologies.

But let me make one last plea to ching_ching before I sink into silence and despair...

FEEL the machine! Feel it tick! Feel the opcodes flowing through the pipeline. Feel the busy, intricate web of interactions in a vastly complicated system. Visualise the delicate dance of data on a bus. It's real, it's physics, it's not black magic.

But if all you ever play with is Perl, or Python, or C#... you'll always end up with a little mental map of what's going on that has a blank spot in the middle marked "Here Be Dragons".

ching_ching
23rd January 2005, 23:57
All very worthy and irreplaceable technologies.

But let me make one last plea to ching_ching before I sink into silence and despair...

FEEL the machine! Feel it tick! Feel the opcodes flowing through the pipeline. Feel the busy, intricate web of interactions in a vastly complicated system. Visualise the delicate dance of data on a bus. It's real, it's physics, it's not black magic.

But if all you ever play with is Perl, or Python, or C#... you'll always end up with a little mental map of what's going on that has a blank spot in the middle marked "Here Be Dragons".

Hmmm... I think I'm feelin ya JRandom. :crazy:

I can learn the basics of programming in the generic sense with whatever language I think I can handle but to really get into the groove and experience the somewhat "euphoria"... (another programming language I believe) of being able to accomplish things by way of issuing instructions, looking at things at the ground level where all the orks roam would be a good idea. Yes??

Jamezo
23rd January 2005, 23:58
The fact that you may have been working as a programmer with whatever language for however long doesn't really have much to do with the best way to learn about it. And I'm not dissing you.

It's just... bugger worrying about what will get you a job. You have to grok the machine.

I really don't have much time for people who are just doing it because they heard there was a 'good living in IT' or some nonsense like that, went and 'learned Java', or whatever, and now they're writing code behind buttons on web pages or database entry forms... most of the BSc comp sci graduates these days fit into that category. It's sad. They don't *get* it.

There's real joy and satisfaction to be had in designing and writing software. Some people spend their lives getting paid to do it, but never really experience it.

Just be glad I'm not ranting here about how Ching shouldn't be allowed near a code editor until he's learned to design logic circuits :p

you make me feel like a programming lamer, all I know is VB6, and a very thorough grounding in BASIC (which I feel is very helpful to learn first if you are going to progress to a visual environment)

I had no idea people still wrote anything significant in assembly languages, can you tell me about what kind of stuff you've done with it?

jrandom
24th January 2005, 07:37
you make me feel like a programming lamer, all I know is VB6, and a very thorough grounding in BASIC...

Learn C.


I had no idea people still wrote anything significant in assembly languages, can you tell me about what kind of stuff you've done with it?

Not an awful lot. On almost any platform, anything you can do in assembler, you can do in C. When we (Navman) released our first in-car GPS product a few years ago (it runs on an Intel XScale ARM processor) I used some assembler in the bootloader and filesystem implementation, but that was only because it was actually tider to do it that way.

In previous jobs, I've used it in code for EFTPOS terminals and PABX systems.

The point of learning assembler, and playing around with it, is that it gives you a vivid picture of how the processor actually works, what instructions a function call or loop translate to, etc. That's why the Holy Bible of Software (Knuth's The Art of Computer Programming) introduces a hypothetical simplified computer design in the first chapter, and then illustrates all of its algorithms in that machine's assembly language in the rest of the volumes. The code is just as relevant and 'modern' looking now as it was 30 years ago.


... to really get into the groove and experience the somewhat "euphoria"... (another programming language I believe) of being able to accomplish things by way of issuing instructions, looking at things at the ground level where all the orks roam would be a good idea. Yes??

Got it in one.

Wonko
24th January 2005, 08:08
First try to figure out why you are learning programming. Are you doing it to make Business software, server side, portable devices, web interfaces etc. As said before there are many tools that can do all the jobs, but most are good at doing one type of task. Perfect example is what JR is saying about learning assembler. Great for handheld's, PABX's etc, single task machines. Even though you can build a fully fleaged accounting and stock control system in assembler, I wouldn't because of the maintenance factor involved in the program. I do agree that you should know how/what your computer is doing, how information flows around the machine, how a screen is painted in layer's, etc

My two cent's worth is learn any of the .NET framework. VB.NET would be my pick, but I'm baised. Easy to learn, quick for GUI's, drawback that it protect's you from most of the underlying OS properties but they can be gotten around(also a plus as it's harder to f*** the system by accident). Can also tap into C code if needed.

Drunken Monkey
24th January 2005, 08:32
JR's got it about right, and it's true for other aspects of computing as well. Learning a bit of assembler will help you understand what you're trying to get a computer to do, regardless of what language you end up using. For sure if you're going to be a 'heads-down-bums-up' code monkey type anyway. Probably more important to have a financial background if you want to do something like reporting (which most programmers will tell you isn't real programming anyway).
I've found it no different when finding network normans to do things for me as well. People that had a good understanding of old skool visually clumsy type operating systems like unix or ms-dos have a better understanding of how file systems work and what the operating system is trying to do. Thirdly, although these days one doesn't need to know much more than how to load a driver for a NIC, knowing how to set one up from scratch, layer by layer, on an old OS, always produces an engineer who can resolve network problems much faster.
Probably good advice for anyone looking to change fields - a bit of knowledge on the underlying mechanics of a computer should give you an edge. They haven't really changed in 20 years. I have done a bit of both, although very little programming at a professional level.

TwoSeven
24th January 2005, 09:05
As I say, assembler wont really teach you anything as such - it doesnt do anything that an ordenary language does except require a heck of a lot more typing and obtuse complexity for the same result - and the assembler people should know this.

The reason I proposed java and C# is because they are very very good teaching languages as well as commercial ones - which means there is a lot of support for them including up to date online resources and books. They also allow you to access hardware at low level in the same way that assembler would, with the exception that you must have grasped the basics before you attempt 'the hard stuff'.

Learning the hardware is not required if you intend to write application level software, since these days the functionality of most hardware is hidden by the operating system you are using. For this reason python is probably ok, but a rather odd one to choose - although if you've already started with it - carry on exploring what it does.

Yokai
24th January 2005, 09:15
1) What JR says is true - you need to grok processor / memory / application layer interfacing to write good code.

2) Whatever anyone says about elegance being easy to read is wrong. If you have an elegant solution, explain it in commentary. Someone who doesn't get the whole picture will at some point have to read your code.

3) sometimes a naive solution IS the best solution.

4) I'm still waiting for Amazon to deliver Knuth, Goddammit!

5) Once you've done the groundwork, get some good introduction to Object Oriented Design. Most of what is being written is Object Oriented now - and you need to understand polymorphism, inheritance etc. Even if you aren't going to use it now, learn it. It helps in all sorts of programming problems - even when dealing with basic structures....

6) If you get to be a programmer before me, I'm gonna come over there and jump on you... Someone get me out of QA... I'm trying!

Warren
24th January 2005, 10:09
First try to figure out why you are learning programming. Are you doing it to make Business software, server side, portable devices, web interfaces etc. As said before there are many tools that can do all the jobs, but most are good at doing one type of task. Perfect example is what JR is saying about learning assembler. Great for handheld's, PABX's etc, single task machines. Even though you can build a fully fleaged accounting and stock control system in assembler, I wouldn't because of the maintenance factor involved in the program. I do agree that you should know how/what your computer is doing, how information flows around the machine, how a screen is painted in layer's, etc

My two cent's worth is learn any of the .NET framework. VB.NET would be my pick, but I'm baised. Easy to learn, quick for GUI's, drawback that it protect's you from most of the underlying OS properties but they can be gotten around(also a plus as it's harder to f*** the system by accident). Can also tap into C code if needed.

Learning C or Assembly is harder but It will teach you better coding practices and show you how the CPU and memory works. I thnk it is better to start with a easier language and than by learning C and assembly first.

PHP is very easy to learn and in a short time you can be making programs that do something useful. PHP is the most common server side programming language (for web sites) and is used in many applications including this forum.

Hoon
24th January 2005, 13:34
The thing about programming is once you master one language, its pretty easy to carry those skills over to any other language you need to pick up - mostly its just a matter of syntax.

Personally I can't think of a better way to put someone OFF programming than telling them to learn assembly first. Sure it teaches you more about the lower level stuff but I would class this as intermediate/advanced material and not really suitable for a beginner.

Basic and Pascal are good first time learning languages but aren't really that common anymore. VB (VisualBasic) is probably your next best bet but it is object orientated and this can be a hard concept to grasp as a beginner (esp on your own!).

PHP is simple but is more web based and also setting up this environment to learn in is probably beyond the average beginner.

I would say try VBscript/ASP first (cut down version of VB) as all Windows PCs have it built in so you don't need any software to get going. Ample samples/tutorials on the web (http://www.google.com/search?hl=en&lr=&q=beginner+vbscript&btnG=Search) too so you could be up and running in < 5 mins.

Otherwise if you are serious I would take up some night classes in programming.....or get some "Learn to Program" books out from a library. Its very important to learn to program right as you can pick up some nasty habits if you're not kept in check.

Skunk
24th January 2005, 14:10
:Offtopic: I've been reading Folklore.org (http://www.folklore.org/index.py) which is about the team that did the first Mac. Tells the story in their own words about Xerox, LISA, Apple II, and the first Mac. Trying to fit everything into the memory space and addressing the ram etc. Much of it over my head.

Good read about some strange and talented guys. Whether you're a Mac fan or not.

ching_ching
24th January 2005, 15:06
Hi there gang,

Thanks again for your replies so far. Yeh it seems that one can be easily inundated with the opinions of what languages are best for just 'learning' how to 'string' some instructions together just to see what it can get your computer to do in which case pretty much any language will suffice. But like Hoon said, learning the basics by way of any language then transporting to any other is a matter of syntax (among other things). All I want to do at the mo is just learn the basic structures / constructs (loops, lists and other data structures, etc) without any purpose in mind of a final project. After I do that (and I will) then definitely look at the barebones stuff of assembler and co. (First time I had a look at assembler and all the machine code and about binary / hex I went "WTF??") Haha. Anyways, I seem to be slowly getting into it and believe me I ain't no geek (no offence fellas / fellases) or so I thought. :pinch: (Man, can't wait till I get my pocket pen protector). :Punk:

Once again gang, thanks for your feedback. :Punk:

ching

Jamezo
24th January 2005, 15:29
Hi there gang,

Thanks again for your replies so far. Yeh it seems that one can be easily inundated with the opinions of what languages are best for just 'learning' how to 'string' some instructions together just to see what it can get your computer to do in which case pretty much any language will suffice. But like Hoon said, learning the basics by way of any language then transporting to any other is a matter of syntax (among other things). All I want to do at the mo is just learn the basic structures / constructs (loops, lists and other data structures, etc) without any purpose in mind of a final project. After I do that (and I will) then definitely look at the barebones stuff of assembler and co. (First time I had a look at assembler and all the machine code and about binary / hex I went "WTF??") Haha. Anyways, I seem to be slowly getting into it and believe me I ain't no geek (no offence fellas / fellases) or so I thought. :pinch: (Man, can't wait till I get my pocket pen protector). :Punk:

Once again gang, thanks for your feedback. :Punk:

ching

how about starting off with BASIC, with a focus on loops and arrays. it's amazing what you can do with loops and arrays, especially as you go on to visual environments, they are frequently undervalued. writing efficient and eloquent code is a fine art as far as I am concerned, and modern languages make it too easy to write bad code.

jrandom
24th January 2005, 18:12
Yeah, true, very good point Hoon. Start learning with a fun language and programming environment that can make the computer's bells and whistles go off with without too much hassle or pain, and it'll whet the appetite.

No rush. You can learn assembler or whatever else you want if and when you feel the need.

Y'all will have to excuse my hardcore geekism, I haven't taken my medication this week... :p

inlinefour
28th January 2005, 02:32
I had a go at school along time ago. I would not like to have to do it agin. Got offered a job in data entry in IT, but could not go through with it. :doh:

Biff
31st January 2005, 16:27
Programming - you geek. Get a life.


























I studied Pascal, so for heavens sake study something useful!!

ching_ching
31st January 2005, 16:39
Programming - you geek. Get a life.
I studied Pascal, so for heavens sake study something useful!!

Haha yeah... fuck I don't know how to respond :spudwhat:

Just leave me alone ya barrsstad. It took me a lot of courage to come out of the closet. :headbang: :banana:

(PT)<--- do I need this bloody thing? :spudwhat:

jrandom
31st January 2005, 17:26
Got offered a job in data entry in IT, but could not go through with it.

Well, you certainly wouldn't have been any closer to being a programmer if you'd *taken* the job, either. :spudwhat:

MrMelon
31st January 2005, 20:36
If you're going to learn programming, I think the best way to go about it and have some fun in the process is to think of something you'd like to do using software, and then learn what you need to do to achieve it. Just keep it simple to start with and build upon it as you get better.

If you've got a goal you can work towards, you'll probably keep interest for a lot longer than if you're just following tutorials from a book or a website. And at the end of it you get some cool software that actually does something useful, and you wrote it and know exactly how it works.

This is what worked for me anyway. I got bored reading programming books and just decided that I wanted some software that'd track my progress at the gym so that I'd easily be able to see that I was getting better each week, so I sat down and read some php and mysql tutorials, and figured out how I could make a series of pages to input and display text fields and draw graphs, and to store all of the info in a database.. 2 days later I had a functional page that worked well for what I'd intended and I ended up using it for a year and a half. That was the first time I'd ever really done any programming.

dhunt
31st January 2005, 20:48
My suggestion would be learn a language that gains your interest such as c or maybe python in your case and play round with it/learn it. At a later state if that didn't bore you to death do what JR suggests and learn a bit of assembly.

Also give yourself some projects to do other wise it will be boring and you won't learn much.

matthewt
31st January 2005, 21:05
Also give yourself some projects to do other wise it will be boring and you won't learn much.

Good call. I wanted a program to rename my digital photos using a name and a running number so for a laugh I did it in Java. I'd done heaps of other languages but not Java. It was quite fun.

ching_ching
1st February 2005, 05:44
Thanks for the continuing opinions gang. :niceone:

NordieBoy
1st February 2005, 07:45
I can learn the basics of programming in the generic sense with whatever language I think I can handle but to really get into the groove and experience the somewhat "euphoria"... (another programming language I believe) of being able to accomplish things by way of issuing instructions, looking at things at the ground level where all the orks roam would be a good idea. Yes??

Euphoria is a nice little language but you'll have problems getting books on it.
I found the way it did things made me think more and offered some insights into things I could apply to other languages I hadn't thought of.

This is true of all languages though.

I'd be looking at scripting languages first to get an idea of data structures/program flow type stuff and once you're comfortable with that sort of thing then getting more low-level.
Because computers are so fast now people have forgotten how to optimise, there's none of the old-school "Oh look! I saved a byte, and a cycle!" type mentality although that still lives on it the emedded systems area.

NordieBoy
1st February 2005, 07:54
I studied Pascal, so for heavens sake study something useful!!

Like Delphi?

jrandom
1st February 2005, 10:36
Because computers are so fast now people have forgotten how to optimise, there's none of the old-school "Oh look! I saved a byte, and a cycle!" type mentality although that still lives on it the emedded systems area.

Meh. Even in the embedded space, optimisation is very, very rarely about saving cycles.

*Real* optimisation is about analysing the computational complexity of your program, and choosing an approach that is most efficient.

You might make a program run 10% faster by tweaking loops in assembler, but sometimes you can make the same program run orders of magnitude faster by thinking carefully about your algorithms.

Biff
1st February 2005, 10:40
(PT)<--- do I need this bloody thing? :spudwhat:

Nah, don't worry mate, I don't take anything that's said here seriously.

Enjoy, and once you're qualified drop me a line.

Biff
1st February 2005, 10:41
Like Delphi?

Is she cute?

jrandom
1st February 2005, 10:52
Enjoy, and once you're qualified drop me a line.

Oi! *I* get first dibs on hiring any KB programmers. Hands bloody off, mister.

jrandom
1st February 2005, 10:54
Is she cute?

Since Anders Hejlsberg moved to Microsoft to work on C# and the .NET class library, she's way past her use-by date.

The Borland VCL is, IMO, the *previous* decade's Windows development environment.

Biff
2nd February 2005, 14:43
Oi! *I* get first dibs on hiring any KB programmers. Hands bloody off, mister.

Ahh - but he'd get a Swedish massage everyday from our resident blonde Scandinavian honey.


The BorEland VCL is, IMO, the *previous* decade's Windows development environment.


What the fork are you talking about, speak English man!!
Bloody geeky gobbledygook!

vifferman
2nd February 2005, 14:54
If you're going to learn programming, I think the best way to go about it and have some fun in the process is to think of something you'd like to do using software, and then learn what you need to do to achieve it. Just keep it simple to start with and build upon it as you get better.
Yeah, good idea.
My first foray into real programming (apart from Fortran in Applied Maths :eek5: ) was to convert our manual payroll (piles of paper and several days work every fortnight) into a computerised one. I did this during three weeks when the boss was away in Europe. I enjoyed it so much, I then wrote an inventory/stores system, and a barcode label printing interface. I decided I'd stop being a Systems Manager and become a programmer, but eventually I decided that as much as I enjoyed it, my brain wasn't suited to programing.

Probably not suited to anything else either, for that matter....

Yokai
2nd February 2005, 15:18
Ahh - but he'd get a Swedish massage everyday from our resident blonde Scandinavian honey.

Ummm - you need someone with Java and C# but that can't explain it very well because everytime they get to do something their manager comes along and puts them in QA? Oh - and I need to telecommute...

Check out www.meths.net/blog2/dnlds.shtm my temporary in redesign blog download area.

jrandom
2nd February 2005, 15:21
My first foray into real programming (apart from Fortran in Applied Maths :eek5: ) was to convert our manual payroll (piles of paper and several days work every fortnight) into a computerised one...

*My* first foray was when I was about 10 years old, writing MS-DOS .COM viruses in assembler on my 80286.

Never 'released' any of them, of course.

jrandom
2nd February 2005, 15:22
Check out www.meths.net/blog2/downloads.shtm my temporary in redesign blog download area.

404 Object Not Found?

Yokai
2nd February 2005, 15:26
404 Object Not Found?
Yeah - re-edited

dnlds.shtm - just go to www.meths.net/blog2 and click the downloads link...