Wikiposts
Search
Computer/Internet Issues & Troubleshooting Anyone with questions about the terribly complex world of computers or the internet should try here. NOT FOR REPORTING ISSUES WITH PPRuNe FORUMS! Please use the subforum "PPRuNe Problems or Queries."

Programming - Where to start?

Thread Tools
 
Search this Thread
 
Old 17th Dec 2011, 13:03
  #1 (permalink)  
Thread Starter
 
Join Date: May 2005
Location: 50'11N 004' 16W
Posts: 282
Likes: 0
Received 0 Likes on 0 Posts
Programming - Where to start?

I'd like to start learning programming. My current knowledge is zero. My aims are to self teach with a view to possibly take a course and obtain a qual later on in order to add another string to my bow.
I have a "Python programming for the absolute beginner" book which I have been given. i'm also tinkering with Linux but have never got beyond having it as a "novelty different OS" on a spare laptop.

Realistically, what is the best approach for me to learning something relevant, I don't want to end up barking up the wrong tree and learn something virtually obsolete. C+, C++, Java etc mean little to me at the moment apart from I know "it's going on in the background".
Advice appreciated, Thanks.
ex_matelot is offline  
Old 17th Dec 2011, 13:45
  #2 (permalink)  
More bang for your buck
 
Join Date: Nov 2005
Location: land of the clanger
Age: 82
Posts: 3,512
Likes: 0
Received 0 Likes on 0 Posts
Other than reading books which is quite useful, the only real way to learn is to set yourself projects, starting with a simple one such as finding the square root of an number and then getting longer and more complicated.
green granite is offline  
Old 17th Dec 2011, 14:14
  #3 (permalink)  
Thread Starter
 
Join Date: May 2005
Location: 50'11N 004' 16W
Posts: 282
Likes: 0
Received 0 Likes on 0 Posts
yes, I figured that approach would be best but - to use an analogy... If say Arabic was THE language to learn - do I go about learning French first or jump straight in? Crap analogy and wrong I know but - where to start in terms of programming language? What to aim for?
I realise I have to learn the fundamentals of all - the grammar as it were but - is it realistic for a 35 year old to self learn a programming language and possibly be able to expand on it and even...make some money from it?

What sort of timescale is it, on average, to learn or undergo something like this and come out at the other end knowing something "useful"?

Very vague and subjective I know, my apologies.
ex_matelot is offline  
Old 17th Dec 2011, 14:26
  #4 (permalink)  
More bang for your buck
 
Join Date: Nov 2005
Location: land of the clanger
Age: 82
Posts: 3,512
Likes: 0
Received 0 Likes on 0 Posts
It really depends what you want to program, but my suggestion would be learn BASIC first then go onto C when you feel confident, but then I stopped programming 20 years ago apart from the occasional PIC.

No doubt someone else will have more up to date ideas.
green granite is offline  
Old 17th Dec 2011, 14:37
  #5 (permalink)  
 
Join Date: Apr 2005
Location: Earth
Posts: 366
Likes: 0
Received 0 Likes on 0 Posts
Small Basic

You might like to give Small Basic a go.

A simplified programming language and environment to help teach programming to beginners.
PS Make sure you download the 'Introducing Small Basic', as well.
Spurlash2 is offline  
Old 17th Dec 2011, 14:51
  #6 (permalink)  
 
Join Date: Jan 2008
Location: Bracknell, Berks, UK
Age: 52
Posts: 1,133
Likes: 0
Received 0 Likes on 0 Posts
I wouldn't choose Basic and then go to C. It's like learning Esperanto and then expecting it to help you learn Swahili.

Go straight to C for a decent computing language that's not obsolete, you can then adapt the proper programming constructs from there to other languages.

Buy this book:
Amazon Amazon

(RIP Dennis)
Mike-Bracknell is offline  
Old 17th Dec 2011, 15:08
  #7 (permalink)  
 
Join Date: Jul 2010
Location: East sussex
Posts: 624
Likes: 0
Received 0 Likes on 0 Posts
Years ago I worked with COBOL the code is a lot easier to follow than 'basic' poking this and poking that and a lot better (my opinion) than PASCAL were 'functions' always got me lost. The COBOL language I was familiar with was COBOL INS 73 Yes, very long in the tooth.

I presume COBAL has been updated (is it still used?) it was mainly used in the banking sector/company goods stock level updates. Used to read and update large file records. Back in the early eighties I believe the cost for the 'compiler' written code to machine language, cost hundreds of pounds.

Which ever programming language you decide on check out 'top down design' and be aware (as basic) too many 'go to' is very naughty and makes following the code most trying.

Daz
dazdaz1 is offline  
Old 17th Dec 2011, 15:10
  #8 (permalink)  
 
Join Date: Aug 2002
Location: Earth
Posts: 3,663
Likes: 0
Received 0 Likes on 0 Posts
I'd like to start learning programming.
Unless I've missed it, there's one important question everyone here seems to have missed asking ex_matelot.

For what ?


What is your ultimate end goal ? Programming as in writing software for computers ? Programming as in web development ? Something else ?

Writing for embedded systems or for computers/servers ?

If in doubt... go C/C++.... always easier to start low and work your way to higher level scripting languages than the other way around.

However it's pointless, for example, learning C++, if all you want to really do is code dynamic websites properly.

If it's software for computers, then forget BASIC ... that's of limited use. Get your teeth into C/C++ and it will serve you well, as it's high-level enough to be comprehensible, whilst low-level enough to offer powerful features and be fast.

If web coding look at scripting languages such as Perl or PHP. I would suggest staying away from newer languages such as Ruby etc. as they are less mature and a bit fluffy.

Whichever language you choose, try to pick one that's Object Orientated (e.g. pick C++ over C) That will teach you to be disciplined in your programming and not just throw together spaghetti code.

Finally, whichever language you choose, make sure you learn correctly the first time round. Don't start with bad habits as they are hard to shake off... there's so much nasty spaghetti code out there. So stay away from, for example, those learn X in 7 / 21 whatever days books !
mixture is offline  
Old 17th Dec 2011, 15:32
  #9 (permalink)  
Spoon PPRuNerist & Mad Inistrator
 
Join Date: Sep 2003
Location: Twickenham, home of rugby
Posts: 7,390
Received 247 Likes on 165 Posts
Distinguish between learning programming and learning a programming language.

The latter is a specific way of implementing a solution identified in the former.

The three steps (extremely simplified) are:

1) understand the problem
2) construct a solution (and map it out in a "pseudo code")
3) implement the solution in your chosen programming language - if necessary, learning it!

SD
Saab Dastard is offline  
Old 17th Dec 2011, 15:36
  #10 (permalink)  
Thread Starter
 
Join Date: May 2005
Location: 50'11N 004' 16W
Posts: 282
Likes: 0
Received 0 Likes on 0 Posts
Mixture,

Good question! ...

I don't know actually. If I were to take a wild leap I'd say - something that could make me useful to an employer. Or even something to be proud of being able to do.
I'm just looking for something else to "hobbyise" with the distant hope that it may come in handy one day. Adding more strings to my bow is the best I can come up with. 35 yr old, was 14 yrs RN. Have a full time job, PPl but no hope of caa class 1....Just want to broaden my horizons and keep my mind active.
ex_matelot is offline  
Old 17th Dec 2011, 17:38
  #11 (permalink)  
Per Ardua ad Astraeus
 
Join Date: Mar 2000
Location: UK
Posts: 18,579
Likes: 0
Received 0 Likes on 0 Posts
Hello World? Well, everyone seems to................

I would firmly endorse Saab's steps 1 and 2. After those you may choose not to try 3

All a 'computer programme' does is apply logic steps via a series of 1's and 0' to achieve a result. I would suggest you get to grips with Logic Flow Charts as a first step. There are thousands of links to learning these. Here is one. Follow GG's advice with a chosen simple 'programme' and then try a more complex one with a few 'Yes'/'No'/'If' loops etc.

Flowcharting
BOAC is offline  
Old 17th Dec 2011, 18:33
  #12 (permalink)  
Thread Starter
 
Join Date: May 2005
Location: 50'11N 004' 16W
Posts: 282
Likes: 0
Received 0 Likes on 0 Posts
I will take this advice, thankyou all..
ex_matelot is offline  
Old 17th Dec 2011, 19:09
  #13 (permalink)  
 
Join Date: Aug 2002
Location: Earth
Posts: 3,663
Likes: 0
Received 0 Likes on 0 Posts
ex_matelot,

Given what you've said, I would strongly suggest C/C++.

Reason being that the open source community gives you a suitable starting "employer" to put your coding knowledge to work (e.g. contributing towards the code behind Firefox, Ubuntu or whatever you have a fondness for). Because of the nature of opensource, it's a more friendly and less demanding atmosphere than taking your first job in the commercial coding sector.

Then as your experience and confidence grows, you can start looking at going for commercial jobs with real word employers.

Plus the other reasons for C/C++ I've given in my previous post (e.g. better to start in a low-ish level coding language as it's always easier to migrate to easier higher level languages than the other way around ).
mixture is offline  
Old 17th Dec 2011, 20:27
  #14 (permalink)  
bnt
 
Join Date: Feb 2007
Location: Dublin, Ireland. (No, I just live here.)
Posts: 733
Received 6 Likes on 5 Posts
I agree with learning C++ if you want to get a good handle on programming. My only warning would be that debugging programs can be hairy - error message tend to tell you the last thing that failed, but that's not always where the problem starts. A good website to help you is cplusplus.com - The C++ Resources Network

If you're going to do any GUI programming I'd also recommend looking at GTK later - a cross-platform toolkit for developing GUI applications. This is what is used to develop the GNOME system on Linux, for example, as well as many Windows applications. There's a GUI builder called Glade.
bnt is offline  
Old 18th Dec 2011, 10:05
  #15 (permalink)  
 
Join Date: Jun 2001
Location: Bristol,UK
Posts: 225
Received 11 Likes on 7 Posts
Get a copy of The C Programming Language by Brian W. Kernighan, Dennis M. Ritchie. It will give you the basics of programming.
If you are still interested after that c# allows you to quickly develop applications.
Your biggest problem will be thinking up what you what you want to write.
If you want to do it professionally you will face an uphill struggle. Those companies who have not shipped their development to India will want people with experience. Most commercial applications will be connected to a database so SQL would be worth learning.
I learnt basic at collage, got a summer job doing compiled basic for a few weeks and then they lent me the above book to learn C. After polytechnic I joined them as a C programmer. A few job changes and I covered Visual basic, C#, T/SQL, PL/SQL, java (almost the same as C), various "it writes the code for you" systems (normally to replace them with proper programming languages to get a usable system).
I have been programming for nearly 25 years and absolutely love it. I look forward to going to work!

#include <stdio.h>

int main()
{
printf("Good Luck");
return(0);
}
under_exposed is offline  
Old 18th Dec 2011, 10:19
  #16 (permalink)  
Thread Starter
 
Join Date: May 2005
Location: 50'11N 004' 16W
Posts: 282
Likes: 0
Received 0 Likes on 0 Posts
Thanks everyone.

Starting from scratch: Should i start on Python with the book I already have or should I start on C?

I figure the python option will at least give me a grounding in the "grammar" of programming.
ex_matelot is offline  
Old 18th Dec 2011, 10:30
  #17 (permalink)  
 
Join Date: Jun 2001
Location: Bristol,UK
Posts: 225
Received 11 Likes on 7 Posts
There is probably a reason why they wrote python in C, but of course I am biased.
You may find this usefull in deciding.

Last edited by under_exposed; 18th Dec 2011 at 10:43.
under_exposed is offline  
Old 18th Dec 2011, 11:27
  #18 (permalink)  
 
Join Date: Nov 2000
Location: Cambridge, England, EU
Posts: 3,443
Likes: 0
Received 1 Like on 1 Post
There is of course a difference between "programming", being what you need to be able to play around doing interesting things for yourself, which you probably can learn from books and web sites, and "software engineering", which is what you need to get a job, which you can't. What's needed for that, after you've got the degree or whatever, is on-the-job training from somebody competent, and, of course, in time honoured fashion, you can't get the job until you've had the on-the-job training.

Having said which, there are an awful lot of people out there earning a living from programming who don't have the remotest clue what they're doing. Ah well, whilst clearing up the messes they leave behind isn't always fun it is always profitable.
Gertrude the Wombat is offline  
Old 18th Dec 2011, 12:04
  #19 (permalink)  
bnt
 
Join Date: Feb 2007
Location: Dublin, Ireland. (No, I just live here.)
Posts: 733
Received 6 Likes on 5 Posts
Originally Posted by under_exposed
There is probably a reason why they wrote python in C, but of course I am biased.
You may find this usefull in deciding.
One note about the stats on that site: the reason for the fast rise of Objective C in the rankings is that that's the language used for iPhone & iPad Apps, in conjunction with Apple's COCOA API (application programming interface). I've never used it, but since it is based on C, I probably could. You could say it competes with C++ in providing object-oriented programming to C.
bnt is offline  
Old 18th Dec 2011, 12:12
  #20 (permalink)  
 
Join Date: Aug 2002
Location: Earth
Posts: 3,663
Likes: 0
Received 0 Likes on 0 Posts
ex matelot,

I figure the python option will at least give me a grounding in the "grammar" of programming.
Up to you really as to how much time you want to put into it.

Being a high-level language, and therefore providing a great deal of abstraction over what's actually going on behind the scenes, a scripting language such as Python will certainly enable you to hit the ground running and make swift progress in your learning.

C/C++ are lower level. They abstract the hardware level somewhat, but leave a lot of the rest of the power in developers hands. As others have pointed out, high-level languages such as Python, PHP and Perl are all written in C.

The other important thing to bear in mind is that if you start off in a high-level language, you're going to find it tough going to wrap your head around lower level concepts at a later date, because you would have got used to the way high-level languages babysit you and hold your hands.

Then again, learning C/C++ is tough going at first. So you may run the risk of being alienated and running away from programming altogether if you're not prepared to persevere. So it may be potentially wiser to go for a higher-level language depending on your character.

But in the end, it's up to you. I guess the fact you've already got a Python book may be somewhat of a deciding factor !
mixture is offline  


Contact Us - Archive - Advertising - Cookie Policy - Privacy Statement - Terms of Service

Copyright © 2024 MH Sub I, LLC dba Internet Brands. All rights reserved. Use of this site indicates your consent to the Terms of Use.