Programming - Where to start?
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.
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.
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.
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.
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.
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.
No doubt someone else will have more up to date ideas.
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.
PS Make sure you download the 'Introducing Small Basic', as well.
A simplified programming language and environment to help teach programming to beginners.
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:
(RIP Dennis)
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:
(RIP Dennis)
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
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
Join Date: Aug 2002
Location: Earth
Posts: 3,663
Likes: 0
Received 0 Likes
on
0 Posts
I'd like to start learning programming.
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 !
Spoon PPRuNerist & Mad Inistrator
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
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
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.
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.
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
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
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 ).
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 ).
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.
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.
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);
}
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);
}
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.
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.
There is probably a reason why they wrote python in C, but of course I am biased.
You may find this usefull in deciding.
You may find this usefull in deciding.
Last edited by under_exposed; 18th Dec 2011 at 10:43.
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.
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.
There is probably a reason why they wrote python in C, but of course I am biased.
You may find this usefull in deciding.
You may find this usefull in deciding.
Join Date: Aug 2002
Location: Earth
Posts: 3,663
Likes: 0
Received 0 Likes
on
0 Posts
ex matelot,
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 !
I figure the python option will at least give me a grounding in the "grammar" of programming.
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 !