How do you teach yourself programming?
How do you teach yourself programming?
Author
Discussion

turbotongue

Original Poster:

7,573 posts

211 months

Friday 9th April 2010
quotequote all
Hi guys

I have just been watching a video about developers at ableton (http://www.ableton.com/developer-jobs .. if your interested) and a few of the guys hold degrees in Chemistry or Physics and taught themselves how to code while at Uni.

I am soon going to be studying electronic engineering and while we do learn programming later in the degree I would like to give myself a head start and get into it.

How do you teach yourself? Are there any good websites/books you can recommend? What kind of things can you program while you learn?

Turbo

randlemarcus

13,646 posts

262 months

Friday 9th April 2010
quotequote all
PM me your address, and I'll throw across some Modula-2 and Software engineering textbooks from my Uni a while back. Gives you some of the basics of why you do stuff like that.

Also, http://www.microsoft.com/visualstudio/en-gb/defaul... gives you a nice modern Development Environment, which allows you to cheat, and have nicely formatted code, and things like error checking etc etc. Keeps you concentrating on the important stuff while you learn what the words do.

As regards what you can do, your imagination is the limit (along with what language the Uni course will prescribe). iPhone apps, Windows Apps, Google Gadgets - the Cloud is a very good thing for budding dev types. Worth checking out Azure while you are surfing.

Tonsko

6,299 posts

246 months

Friday 9th April 2010
quotequote all
Motivation, mainly. Sorry to sound fatuous.

I bought myself a mac mini last june with a determination to write in Cocoa...limited programming experience, Modula-2, C, never progressed very far, beyond knowing the various loops and conventions. I've tried before with various languages and they've fallen by the wayside. Then I got ill (prolapsed disc) and couldn't do anything for months. Picked it up again in december.

Then I bought this awesome book, best programming book I've ever read. For me, it's the best laid out book, explains everything as you need it, and gradually ups the complexity. Within a few chapters I could read code, and understand what's going on with variable assignment and pointers, then a few chapters later I could understand objects and inheritance etc.

It's hard to sit down and grind through it, but keep your eyes on the prize (i.e. programs I can run on my iphone) and your motivation will stay.

Edited by Tonsko on Friday 9th April 14:42

RizzoTheRat

29,077 posts

223 months

Friday 9th April 2010
quotequote all
Best way is toy come up with a project you want to do, so you're not learning to program for the hell of it but you're trying to write a program to achieve something.

eztiger

836 posts

211 months

Friday 9th April 2010
quotequote all
Tonsko said:
Motivation, mainly. Sorry to sound fatuous.

I bought myself a mac mini last june with a determination to write in Cocoa...limited programming experience, Modula-2, C, never progressed very far, beyond knowing the various loops and conventions. I've tried before with various languages and they've fallen by the wayside. Then I got ill (prolapsed disc) and couldn't do anything for months. Picked it up again in december.

Then I bought this awesome book, best programming book I've ever read. For me, it's the best laid out book, explains everything as you need it, and gradually ups the complexity. Within a few chapters I could read code, and understand what's going on with variable assignment and pointers, then a few chapters later I could understand objects and inheritance etc.

It's hard to sit down and grind through it, but keep your eyes on the prize (i.e. programs I can run on my iphone) and your motivation will stay.

Edited by Tonsko on Friday 9th April 14:42
What book would that be...? smile

Tonsko

6,299 posts

246 months

Friday 9th April 2010
quotequote all
Heh.

I found it through http://cocoadevcentral.com/, and really liked his style - straightforward explainations, clearly laid out, easy to get. I was really struggling with the Apress titles, suddenly everything became clear! Found out he had a book, so.... smile

Cocoa and Objective-C: Up and Running

http://my.safaribooksonline.com/9780596804794

It really suited me. Might be different for you. I anticipate me finishing this book, a fairly big achievement with programming books!

Edited by Tonsko on Friday 9th April 15:15

rpguk

4,520 posts

315 months

Friday 9th April 2010
quotequote all
Having a crappy computer that wasn't good enough to play games when I was a teen. Played around with Qbasic until I managed to somehow write a program which buggered the computer up.

Reinstalled and stuck Perl on there - followed the free chapters on www.cgi101.com and then started putting together little sites for myself. One got big and I started getting little jobs which gave me pocket money while at school. Slowly learnt more built up a decent portfolio and clients. I got into it by accident though and now just think about the big ideas and have guys in Sri Lanka who worry about the details.

While it's my baby and incredibly powerful, Perl is a slowly dying language. Mainly because PHP has a more helpful and less arsey group of developers so it's taken over. Most 'off the shelf' web apps are built in PHP too so there's less need to reinvent the wheel.

Depends on what you want to actually be working on in the long run though, other languages are more suited to desktop programs.

So yeah, I found that a good bite sized online guide with real world examples helps a lot. I found having a print out useful too. And remember that whatever question you have google usually has the answer already!


Edited by rpguk on Friday 9th April 15:37

eztiger

836 posts

211 months

Friday 9th April 2010
quotequote all
Tonsko said:
Heh.

I found it through http://cocoadevcentral.com/, and really liked his style - straightforward explainations, clearly laid out, easy to get. I was really struggling with the Apress titles, suddenly everything became clear! Found out he had a book, so.... smile

Cocoa and Objective-C: Up and Running

http://my.safaribooksonline.com/9780596804794

It really suited me. Might be different for you. I anticipate me finishing this book, a fairly big achievement with programming books!

Edited by Tonsko on Friday 9th April 15:15
Thanks - always fancied a nosey at Cocoa.

Dupont666

22,952 posts

223 months

Friday 9th April 2010
quotequote all
turbotongue said:
Hi guys

I have just been watching a video about developers at ableton (http://www.ableton.com/developer-jobs .. if your interested) and a few of the guys hold degrees in Chemistry or Physics and taught themselves how to code while at Uni.

I am soon going to be studying electronic engineering and while we do learn programming later in the degree I would like to give myself a head start and get into it.

How do you teach yourself? Are there any good websites/books you can recommend? What kind of things can you program while you learn?

Turbo
What programming you wanting?

Database
JAVA
WEB
.Net
.ASP
Blah, blah, blah....

Its like learning a new language you must pick one first instead of stating I want to learn a new language.

What will you use it for?

What is the coding you will learn later, etc?

ShadownINja

80,154 posts

313 months

Friday 9th April 2010
quotequote all
RizzoTheRat said:
Best way is toy come up with a project you want to do, so you're not learning to program for the hell of it but you're trying to write a program to achieve something.
Yep! I couldn't just read a book cover to cover. I'd rather have a task to achieve, then break it down and figure out what mini-tasks I need to be able to code up in order to get the program I really want. That said, maybe I can't program at all - I simply butcher sample code written by professionals. I mean, if you ask me if I can program in MQL (MetaQuotes Language - a bit like VB or Javascript), I'd say no but if I needed to get something done, I'd steal bits of code from samples online and nail them together to get what needs doing.

Bibbs

3,754 posts

241 months

Friday 9th April 2010
quotequote all
Dupont666 said:
What programming you wanting?

Database
JAVA
WEB
.Net
.ASP
Blah, blah, blah....

Its like learning a new language you must pick one first instead of stating I want to learn a new language.

What will you use it for?

What is the coding you will learn later, etc?
Exactly ..

I'm a developer, and I use different languages/tools depending on what I'm doing.

Writing an accounts package is different to writing a website.

zac510

5,546 posts

237 months

Friday 9th April 2010
quotequote all
RizzoTheRat said:
Best way is toy come up with a project you want to do, so you're not learning to program for the hell of it but you're trying to write a program to achieve something.
Agree with that, it's great self motivation.

Frederick

5,902 posts

251 months

Friday 9th April 2010
quotequote all
Visual development tools are the easiest way to begin really. I taught myself Visual Basic and Delphi years ago before moving onto more structured languages like C++ and Java.

The reason I became more adept at VB/Delphi was purely that it was logical - if you wanted a button to pop up a message box, you double clicked the button you'd just placed on the pre-generated form, added the message box code and away you go. With C++ (back then, anyway) it was a proper chew on - making Windows applications needed loads of code and API links before you could begin to think about button placement etc.

It's a lot easier now with Visual C# and the .net languages, so with a rudimentary knowledge of semantics, you should be able to code up basic applications pretty quickly.

dcb

6,070 posts

296 months

Friday 9th April 2010
quotequote all
Frederick said:
Visual development tools are the easiest way to begin really. I taught myself Visual Basic and Delphi years ago before moving onto more structured languages like C++ and Java.

The reason I became more adept at VB/Delphi was purely that it was logical - if you wanted a button to pop up a message box, you double clicked the button you'd just placed on the pre-generated form, added the message box code and away you go. With C++ (back then, anyway) it was a proper chew on - making Windows applications needed loads of code and API links before you could begin to think about button placement etc.

It's a lot easier now with Visual C# and the .net languages, so with a rudimentary knowledge of semantics, you should be able to code up basic applications pretty quickly.
For the front end GUI stuff, Java does it well.

For everything else between the front end and the database back end,
I use C++.

Doing a GUI in C++ is non-trivial, and TBH
a bit pointless when Java does it so well. Horses for courses.

The trouble with VB and VC++ is that they are proprietary
to the closed world that is Microsoft.

Java is a fine modern language to learn and it works
well everywhere, not just on one vendor's boxes.

C++ is pretty much Java's older, more complex,
uglier and more powerful brother.

Zad

13,023 posts

267 months

Friday 9th April 2010
quotequote all
As the OP is going to be studying Electronic Engineering rather than Software Engineering, Database Systems etc etc, I imagine it will just be the core language rather than huge amounts of Windows interfacing, SQL etc. Try and find out what language they will be using, it will probably be C or C++, with a possibility of Pascal or Assembler. Ideally, find out what development environment they will be using, half the battle when learning how to program can be just working out how to use Visual Studio or whatever.

Frederick

5,902 posts

251 months

Friday 9th April 2010
quotequote all
Just to add to this actually, I have recently started dusting down what I knew of Java to start programming for the Android mobile phone OS - Google link through to a Java IDE called "Eclipse" which works perfectly, it's free and it will give you a great grounding point to begin programming in object-oriented languages. There are plenty of Hello World applications and tutorials online so jump in and give it a go smile

turbotongue

Original Poster:

7,573 posts

211 months

Friday 9th April 2010
quotequote all
Thanks for all the replies.

I will be learning C and Java so am looking to learn one of those really. Sorry for not being specific. I have no programming experience and really don't know where to start. I think buying a book would be a bit dry. I agree that it would be good to think of something I want to build and focus on that but I really don't know. I suppose it would be cool to develop an iPhone app.. I got as far as downloading the SDK a few months ago... can anybody recommend good ways to approach doing this? Will this develop skills in java/c or is it all a different language?

powerrangersgirl

3 posts

212 months

Friday 9th April 2010
quotequote all
If I had one tip from the last couple of decades, it would be learn to code, not to code Jave, or C or Modula-2. There'll be something cooler, faster and better just around the corner, but good solid knowledge of putting together the right underlying logic, in clean understandable code, with good comments, that the next bloke can see why what and how you did something is worth more than "clever".

You're training to be an engineer - find out what elegant means smile

ETA Logged in on the missus' PC - its marcus smile

Edited by powerrangersgirl on Friday 9th April 21:11

purplepolarbear

488 posts

205 months

Friday 9th April 2010
quotequote all
My suggestions -

Get yourself an emulator for a 1980s computer (or a 1980s computer off ebay). You should be able to get some free books online to help you. Use that to learn programming. You can write a program that does something in a few lines of BASIC, and it's less forgiving than a modern language so you'll really understand what each line of code actually does, but it's fun and rewarding.

When you understand this, try and learn software engineering concepts such as pointers and how to build linked lists in a slightly more modern language like C++. (First year university stuff - boring but necessary).

Finally (when you understand the underlying concepts), move on to a modern language (C#/Java with the latest development environment). It will be a lot easier if you understand the fundamentals.




Morningside

24,147 posts

260 months

Friday 9th April 2010
quotequote all
Tonsko said:
Motivation, mainly. Sorry to sound fatuous....
yes I agree with that one. I started off using a ZX81 in err 1981 and then sat for hours after work with an Apple ][ learning Apple Pascal (UCSD) as that was what the company was using at the time (Early macs were programmed in Pascal using the Lisa as a development tool)

Then moved on to database and 8051 assembly stuff.

You need a goal.