PDA

View Full Version : Should I get into Computer Programming.




warriorz
Jun 21, 2011, 07:38 AM
Hi All,

I've had to recently take a break from academic studies (Law) due to ill health.

I've been floating around thinking about things to pursue when I'm feeling well to keep my mind active and myself busy. Law is not something I'll be able to pursue in the very near future due to the commitment required outside of home. I'm basically not feeling too good at the moment and I've got a bit of a way to go with hospital visits, operations and so on.

I've always been interested in computing, software, 'looking at' code, 'looking at' programming but I've never pursued it. Like many of you I guess there must be things you've wanted to do but never really got round to it. So as I'm at home for quite a while I thought I'd look into a few things. Programming seems a viable option as it can be home based, certainly the learning, and I know a couple of family members who basically just work from home, and from what I can tell are absolutely fascinated by their work. Which in my view is great, doing something you love for a living.

I currently don't have access to Windows OS but I can obviously get Parrallels & Windows, but maybe I prefer to start out on my Mac, Objective C as a possibility?

Your opinions would be greatly appreciated. Also for what it's worth I quite like the idea of being forced to pursue advanced mathematics, something I understand is very helpful/ essential in some cases for programming, and I've been messing around with basic math for a while now, I quite enjoy the problem solving.

Do you guys have any ideas on where on earth to start? C, C++, Java, Objective C (and learn basic programming as I go?)? Maybe start with some iOS dev for iPhone as it's relatively instant feedback in terms of attempting to submit apps? In today's world, which is a great language to build a solid foundation on? A great base which will help me in future dev pursuits?

Thanks so much for your help. I really would appreciate genuinely helpful opinions of members.



lee1210
Jun 21, 2011, 08:25 AM
If you want to program on the Mac or iOS you need to learn Objective-C. You can start with Objective-C directly, or start with C (of which Objective-C is a superset). I used to strongly recommend C if someone wanted to do anything but Mac programming, but really... start anywhere, if you need the underpinnings of C later you can learn them then. There is a link at the top of the forum to this page:
http://guides.macrumors.com/Cocoa_FAQ

It's probably somewhat out of date, but it still has some books that people have found helpful, etc.

I don't mean to burst your bubble, and maybe programming will be fascinating to you, but don't assume you'll love it. It's something most people can learn if they put their mind to it, but there are far less people for whom it is natural and very exciting. I only say this to temper your expectations, as you may not end up loving it and being able to happily work from home doing it as a full time job.

Good luck, get coding.

-Lee

warriorz
Jun 21, 2011, 08:50 AM
If you want to program on the Mac or iOS you need to learn Objective-C. You can start with Objective-C directly, or start with C (of which Objective-C is a superset). I used to strongly recommend C if someone wanted to do anything but Mac programming, but really... start anywhere, if you need the underpinnings of C later you can learn them then. There is a link at the top of the forum to this page:
http://guides.macrumors.com/Cocoa_FAQ

It's probably somewhat out of date, but it still has some books that people have found helpful, etc.

I don't mean to burst your bubble, and maybe programming will be fascinating to you, but don't assume you'll love it. It's something most people can learn if they put their mind to it, but there are far less people for whom it is natural and very exciting. I only say this to temper your expectations, as you may not end up loving it and being able to happily work from home doing it as a full time job.

Good luck, get coding.

-Lee

Hi Lee,

Great thanks for replying and your advice. I have looked at the links, including the one above but I really wanted real life opinions, just like yours so appreciate your response. Will def take your opinion about just using Objective-C as a potential start into consideration and have already sort of had a very brief look at links/ vids/ sites and so on. And off course I take on board what you say about the enjoyment and f/t work aspect of it. I sometimes think it's always worth pursuing a hunch so I'll have a look around and experiment, see if it works for me.

Do you mind me asking which area/ code/ language(s) you work in, and whether you actively enjoy what you do?

Be interesting to see what others/ your colleagues in the programming world say.

Thanks very much,

Sam

duggram
Jun 21, 2011, 09:03 AM
Hi All,

I've had to recently take a break from academic studies (Law) due to ill health.

I've been floating around thinking about things to pursue when I'm feeling well to keep my mind active and myself busy. Law is not something I'll be able to pursue in the very near future due to the commitment required outside of home.

Sorry to hear about your health, but this is wild. In 1991 I graduated from law school. The best part of law school was being required to buy my first computer in 1989. I toyed with the idea of switching to computer science at the time but stuck with law.

A year out of school and I went back to work in a hospital as an Informatics Nurse (I'm an RN). Law was not for me. The work was so slow that in 3 years on the job I taught myself a lot about VB and started a career as a developer in Seattle. The time was right for the dot COM boom. Found a company to put me through night school at UW and got a certificate in C++, then worked in Java.

Life is good. I'm working with interface engines in healthcare IT now. Not as much fun as developing software, but it pays great.

My only regret was not switching to CS in 1990. Law for me was a giant bust.

francis21
Jun 21, 2011, 09:30 AM
Well, I may not have the real-life experience in programming, but I can sure tell you about my learning process in computer programming. I'm currently in university, still pursuing Computer Science as my main program, with a minor in Mathematics.

Programming can be quite difficult at first. I have known some people who never had any programming experience before. But throughout the year, they got the hang of it. Personally, I enjoyed programming with all of its complications. It truly requires some deep understanding of the concepts, as they are abstract concepts. Debugging can also suck a lot of time when you're doing a program. So far, that's what I've found out about my programming experience.

Object-oriented programming based languages is a great way to start off, I believe. For instance, Java or Python are some of these kinds of languages.

Good luck on your programming journey. Cheers.

racketeer71
Jun 21, 2011, 10:14 AM
If you want to program on the Mac or iOS you need to learn Objective-C.

Which pill should one take, to get to your alternate reality?

chown33
Jun 21, 2011, 10:50 AM
Which pill should one take, to get to your alternate reality?

The one surrounded by []s.

mydogisbox
Jun 21, 2011, 11:56 AM
This isn't something I came up with, but it makes a lot of sense to me so I'm going to repeat it. If possible, start with a language used by other people you interact with. The important part is having someone with experience there to guide you and keep your interest level high. If you know someone who programs, their language might be the right starting place for you, otherwise, the guys here at macrumors give a lot of great feedback (i.e. obj-c).

mobilehaathi
Jun 22, 2011, 09:33 AM
I think that starting with C/C++ is the best option. It will serve you very well as a knowledge base, and then you can quickly move into ObjC.

If your goal is to start putting apps on the Mac store or iOS store, then I think this is a great way to start.

What kind of programs are you looking to write?

Sander
Jun 22, 2011, 10:05 AM
Do you mind me asking which area/ code/ language(s) you work in, and whether you actively enjoy what you do?

I work in image processing and scientific stuff for a living, I work in C++, and I actively enjoy what I do.

Just a data point.

a.jfred
Jun 22, 2011, 12:13 PM
Object-oriented programming based languages is a great way to start off, I believe. For instance, Java or Python are some of these kinds of languages.

Good luck on your programming journey. Cheers.

I'm learning Python right now, as a way to get my head back around concepts & structuring. It's been many years (we won't go into how many; let's just say double-digits), since I've programmed or coded anything, and wanted to start off with something a little easier to grasp, before jumping into something more complex.

While I do "get it", I find I'm having to look things up a good number of the time. I can read it, and understand what I'm reading (resulting in a "Duh!" moment), but so far, I'm having a little more difficulty coming up with things on my own. That said, I know I have a bad tendency to overthink things.

I'm absolutely sticking with it. I used to love creating my own web pages, and even now, every time I come up with a solution on my own, it feels like I've won a small victory, and I love that feeling :)

warriorz
Jun 22, 2011, 06:14 PM
Great responses and advice here guys - thanks for your opinions and experiences, please feel free to keep it coming, I'm learning a lot, great to hear other peoples views...

warriorz
Jun 23, 2011, 01:22 PM
Hey All,

Been looking lots at C++, C, Java and Objective-C too. Some good beginner resources on the net. (Did you guys find any of particular use when you were starting out or if you are currently at the beginner stages any websites with info you'd particularly recommend?

Main question is I was just wondering what exactly is the difference in downloading Xcode from the App Store as opposed to registering on Apple's Developer site and getting it free from there? Are there any actual differences? I presume that the App Store version will benefit from auto updates but other than that?

Thanks again.

lee1210
Jun 23, 2011, 01:37 PM
Hey All,

Been looking lots at C++, C, Java and Objective-C too. Some good beginner resources on the net. (Did you guys find any of particular use when you were starting out or if you are currently at the beginner stages any websites with info you'd particularly recommend?

Main question is I was just wondering what exactly is the difference in downloading Xcode from the App Store as opposed to registering on Apple's Developer site and getting it free from there? Are there any actual differences? I presume that the App Store version will benefit from auto updates but other than that?

Thanks again.

The version on the app store is 4.X, the free download is 3.X.

-Lee

warriorz
Jun 23, 2011, 01:50 PM
Well, I may not have the real-life experience in programming, but I can sure tell you about my learning process in computer programming. I'm currently in university, still pursuing Computer Science as my main program, with a minor in Mathematics.

Programming can be quite difficult at first. I have known some people who never had any programming experience before. But throughout the year, they got the hang of it. Personally, I enjoyed programming with all of its complications. It truly requires some deep understanding of the concepts, as they are abstract concepts. Debugging can also suck a lot of time when you're doing a program. So far, that's what I've found out about my programming experience.

Object-oriented programming based languages is a great way to start off, I believe. For instance, Java or Python are some of these kinds of languages.

Good luck on your programming journey. Cheers.

Hey,

Thanks for your input. Was wondering what kind of maths did you/ do you find useful specifically for real life programming. I presume Logic and Algebra - is that correct. Do you think it's worth pursuing those as independent pursuits in order to assist with the actual coding, or is it just academic? Do you think the maths helps with the 'abstract concepts and deep understanding' you mentioned?

Thanks

The version on the app store is 4.X, the free download is 3.X.

-Lee

Ah, thanks, I guess it pays to read closely. Thanks for pointing that out.

Sorry to hear about your health, but this is wild. In 1991 I graduated from law school. The best part of law school was being required to buy my first computer in 1989. I toyed with the idea of switching to computer science at the time but stuck with law.

A year out of school and I went back to work in a hospital as an Informatics Nurse (I'm an RN). Law was not for me. The work was so slow that in 3 years on the job I taught myself a lot about VB and started a career as a developer in Seattle. The time was right for the dot COM boom. Found a company to put me through night school at UW and got a certificate in C++, then worked in Java.

Life is good. I'm working with interface engines in healthcare IT now. Not as much fun as developing software, but it pays great.

My only regret was not switching to CS in 1990. Law for me was a giant bust.

! Quite a story! I do actually enjoy Law - I would have stuck with it if it wasn't for the interruption. But nevertheless I see this as a good opportunity - I'm sure there's a way to combine the two, hopefully be a way to pursue two areas I really enjoy, assuming the programming works out. Glad things worked out for you, always inspiring to hear good experience like this!

I think that starting with C/C++ is the best option. It will serve you very well as a knowledge base, and then you can quickly move into ObjC.

If your goal is to start putting apps on the Mac store or iOS store, then I think this is a great way to start.

What kind of programs are you looking to write?

Hey, initially anything to give me experience. Base level games might be an option as there seems to be resources out there for beginners wanting to learn how to these - though I really do mean 'base level', one sprite stuff! Eventually I'd be quite interested in writing stuff that lawyers may find useful, maybe references apps, though I'm sure I'll get eaten up by the big players!

I work in image processing and scientific stuff for a living, I work in C++, and I actively enjoy what I do.

Just a data point.

Useful point, thanks for that, good to hear the 'actively enjoy' bit. Enjoyed reading your signature links.

mobilehaathi
Jun 23, 2011, 04:22 PM
Hey, initially anything to give me experience. Base level games might be an option as there seems to be resources out there for beginners wanting to learn how to these - though I really do mean 'base level', one sprite stuff! Eventually I'd be quite interested in writing stuff that lawyers may find useful, maybe references apps, though I'm sure I'll get eaten up by the big players!

You might want to start with C/C++ and very basic command line programs in order to get familiar with the basic functioning of the language. From there you could probably easily pop into ObjC, Cocoa, Xcode, and Interface Builder to start making basic GUI apps.

This is, of course, my biased opinion. Others may disagree and say jump right into the GUI stuff, and it may work out well for you.

So IMO, go grab a learning C++ book and get cracking. Then after you've made your way through that, pick up a ObjC book. I enjoyed the Hillegass book.

balamw
Jun 23, 2011, 05:07 PM
I've had to recently take a break from academic studies (Law).

There is room for projects that combine your academic interest and code. I always find that you are more likely to learn about code when you work on something that you care about outside the act of coding.

You might want to ping MR user cmaier (http://forums.macrumors.com/member.php?u=118078). He combines both things with a few legal related apps on the App Store.
From his MR profile: Attorney, Microprocessor Designer (AMD, Sun, Exponential Technology), iPhone developer

B

racketeer71
Jun 24, 2011, 08:13 AM
Instead of thinking about which language to begin with, perhaps it would be better to ask yourself what you want to achieve - and what you want to program?

It seems your dream is to work from home, and make money doing so. If that's the case, then you can rule out all the enterprise-focused stuff.

How long can you wait, before you start making money? Do you want to make shrinkwrap software, or program a game for iOS, or create a cool website, or program embedded devices, or, or, or?

It's virtually impossible to give you any good pointers, when the only thing you apparently have in mind is working from home. There's no reason to take a detour on your path to achieve that goal. Find out want you want to CREATE, then choose the easiest and most direct way to create that. Always remember: Make it work, make it right - in that order.

There's seriously no reason why you should waste time on learning C or objective-C, if you want to program a website*. Also, take it easy on the math. Yes, it's good to know (especially discrete mathematics: http://en.wikipedia.org/wiki/Discrete_mathematics ), but seriously it's something you can learn as you go. When you create an SQL backed application and joins 3 tables and get 15734032 records when you expected 4, you'll learn about cartesian products, and when you want to make the missiles in your game fly in a beautiful curve, you'll learn about ballistics. There's no reason to sit down with a math book now, without any guidance, and read it cover to cover - when you in 6 months time experience a problem where you need math skills, you'll have forgotten what you read anyway.

So: Decide what you want to create. Then the path becomes obvious.

* I know some of you will say "Oh noes! It's veeery important to know everything about pointers, machine architecture and why RISC is so much better than CISC", but let's be frank: There's hundreds of thousands of developers out there without such insights, making good money, and working from home (where the ability to create a sell-able products, is more important than academic discussions on wheter Standard ML or LISP is the **** right now)

warriorz
Jun 24, 2011, 08:36 AM
I enjoyed the Hillegass book.

Hey,

Thanks for the Hillegass recommendation, he's obviously a heavyweight in Mac development. Amazon seem to have a preorder version of iOS programming for release on 2nd July - though I think it just adds iPad chapters to the original iPhone programming text. I think your recommendation for C/C++ will serve me well as a solid building block foundation, and will obviously make Objective-C easier and quicker to look at. Though it might be of benefit to try the two in tandem, hopefully will fall into place as my experience progresses. Having a browse through Java and I've got friends familiar with this so that may help. A lot to get through but quite exciting and I'm enjoying what I've looked at so far.


You might want to ping MR user cmaier (http://forums.macrumors.com/member.php?u=118078). He combines both things with a few legal related apps on the App Store.

Hi,

Thanks for the heads ups with 'cmaier'. Will definitely get in touch with him, see how he's combined the two - though I was only at the stage of academic study of law as opposed to having progressed on to practice. I believe from his profile he's actually practicing, would be great to see what apps he's developed to combine his legal experience and coding. And I definitely agree about developing with a purpose that serves your outside interests, again it's about that 'enjoyment' factor or as you put it 'something that you care about'. I'm sure I'll hone in on my very specific interests as I progress with the coding, which at this very early stage I am certainly enjoying & keeping interested.

mobilehaathi
Jun 24, 2011, 08:46 AM
Hey,

Thanks for the Hillegass recommendation, he's obviously a heavyweight in Mac development. Amazon seem to have a preorder version of iOS programming for release on 2nd July - though I think it just adds iPad chapters to the original iPhone programming text. I think your recommendation for C/C++ will serve me well as a solid building block foundation, and will obviously make Objective-C easier and quicker to look at. Though it might be of benefit to try the two in tandem, hopefully will fall into place as my experience progresses. Having a browse through Java and I've got friends familiar with this so that may help. A lot to get through but quite exciting and I'm enjoying what I've looked at so far.

You could totally do them in parallel. They have a lot in common and some things quite different.

duggram
Jun 24, 2011, 09:57 AM
What about a text like Programming -- Principles and Practice Using C++ (http://www.stroustrup.com/Programming/). It's a large text that Stroustrup (creator of C++) wrote to teach programming which just happens to use C++. He says, "This book is based on a course I designed for engineering freshmen at Texas A&M University. It has now been taught by me and others for three years and to more than 1200 students." I like the fact that it is focused on teaching the craft while including the language.

warriorz
Jun 24, 2011, 10:13 AM
Find out want you want to CREATE, then choose the easiest and most direct way to create that. Always remember: Make it work, make it right - in that order.


Hi,

I think at this stage I'm exploring. I don't really view learning C or coding in general as a waste of time as it's something I've been wanting to do for a quite a while and it seems I've been given an opportunity to do so now. At this very early stage I am certainly enjoying learning the basics at least.

I do take on board your point about the 'end result is what counts' and in that respect agree that it may be pointless learning complex code if all I want to do is, for example, produce a website that sells a product on at a profit.

As to the maths, again I agree with what you say. Though I certainly have no intention of getting 'bogged down' or reading maths text cover to cover. However I'm sure there are areas where basic 'logical', dare I say it, 'mathematical' thinking is pretty important to enable effective coding. I'm fortunate on the the guidance aspect as I have a best friend who is a formally trained CS/ programmer who now tutors maths. But again just to be clear, learning maths is not certainly not a priority.

I think you make a good point about developers currently successful at what they do, producing a good quality software, without necessarily taking an in-depth academic stance on the coding/ programming side of things. I think maybe the majority do it for the final product? There's always academics around to pursue the in depth nitty gritty.

What about a text like Programming -- Principles and Practice Using C++ (http://www.stroustrup.com/Programming/).

Great link, I'll take a look. Seems to focus in on the practicalities of actually producing software.

a.jfred
Jun 24, 2011, 12:33 PM
Hi,

I think at this stage I'm exploring. I don't really view learning C or coding in general as a waste of time as it's something I've been wanting to do for a quite a while and it seems I've been given an opportunity to do so now. At this very early stage I am certainly enjoying learning the basics at least.

I do take on board your point about the 'end result is what counts' and in that respect agree that it may be pointless learning complex code if all I want to do is, for example, produce a website that sells a product on at a profit.



The "what am I going to/what do I want to do with it" is what held me back for a long time. Every time I'd think about picking up coding again, I'd get bogged down with that one question, and not get any further. I finally said "to heck with it" and decided to treat it like I did when I picked up photography: I had to learn how to use the camera first. The more I did it, the more I played with my camera, the more I found myself leaning towards, and truly enjoying, nature & macro photography.

I'm basically re-teaching myself how to code. I'm starting with the basics, such as structure & concept, and the more I work my way through the tutorials, the more I find "hey, I like this part". I still don't know exactly *what* I want to do with it, or what direction I want to take it, but I've only been at it a couple of months (with limited time to play), and I'm still learning.

I had to start somewhere; Python (for me), seemed as good a place as any, given I have no particular goal *yet*, and I'm still grasping the basics. And I'm finding that I am understanding a little of what I read in other languages. I know I'll get there, but if I kept putting it off for "what do I want to do with it," I'd have never started.

warriorz
Jun 26, 2011, 04:00 AM
The "what am I going to/what do I want to do with it" is what held me back for a long time. Every time I'd think about picking up coding again, I'd get bogged down with that one question, and not get any further. I finally said "to heck with it" and decided to treat it like I did when I picked up photography: I had to learn how to use the camera first. The more I did it, the more I played with my camera, the more I found myself leaning towards, and truly enjoying, nature & macro photography.

I'm basically re-teaching myself how to code. I'm starting with the basics, such as structure & concept, and the more I work my way through the tutorials, the more I find "hey, I like this part". I still don't know exactly *what* I want to do with it, or what direction I want to take it, but I've only been at it a couple of months (with limited time to play), and I'm still learning.

I had to start somewhere; Python (for me), seemed as good a place as any, given I have no particular goal *yet*, and I'm still grasping the basics. And I'm finding that I am understanding a little of what I read in other languages. I know I'll get there, but if I kept putting it off for "what do I want to do with it," I'd have never started.

Hi,

Thanks for sharing your experience. I think the "I like this part" is great; it's so important to try to pursue things you enjoy. I'm still learning away, picked up a basic c++ book whilst I'm away from my computer for a bit so will see how that goes. Exciting to learn something new and something I've wanted to do for a while at the very least.*

dfansteel
Jun 26, 2011, 08:40 AM
First, I love programming. I live everything about it. But getting good isn't easy. If you've never programmed before I recommend "Learn Python the Hard Way". It's a free download (actually free, not pirated free). This will get you into many core concepts in computer science and programming ( loops, control structures, etc. ). From there move onto Java for object oriented programming concepts ( use Eclipse as your IDE ). I actively hate Java, but this will get your feet wet on OOP. I don't like C++ for a first pass at OOP because of issues involving memory management and pointers you don't have to deal with in Java.

Speaking of which, at this point pick up a copy of K&R and learn C. Especially pointers, structs, and memory management. Also, learn GDB, it will be your best friend. Now you are ready for C++, C#, or Objective-C. A professor of mine said that "objective-c is what C++ should have been". The Hillegass books are amazing for Cocoa libraries and Obj-C. iTunes U has some great stuff for iPhone programming.

Mathematically, you will need linear algebra. It will make your life easier (as will C).

Is this a lot? Yes. Computer programming isn't easy and isn't even why software engineers make the big money. It's because they can do algorithms. Find a good algorithms book ( at least two inches thick ) and read it. Twice.

warriorz
Jun 26, 2011, 01:56 PM
First, I love programming. I live everything about it. But getting good isn't easy. If you've never programmed before I recommend "Learn Python the Hard Way". It's a free download (actually free, not pirated free). This will get you into many core concepts in computer science and programming ( loops, control structures, etc. ). From there move onto Java for object oriented programming concepts ( use Eclipse as your IDE ). I actively hate Java, but this will get your feet wet on OOP. I don't like C++ for a first pass at OOP because of issues involving memory management and pointers you don't have to deal with in Java.

Speaking of which, at this point pick up a copy of K&R and learn C. Especially pointers, structs, and memory management. Also, learn GDB, it will be your best friend. Now you are ready for C++, C#, or Objective-C. A professor of mine said that "objective-c is what C++ should have been". The Hillegass books are amazing for Cocoa libraries and Obj-C. iTunes U has some great stuff for iPhone programming.

Mathematically, you will need linear algebra. It will make your life easier (as will C).

Is this a lot? Yes. Computer programming isn't easy and isn't even why software engineers make the big money. It's because they can do algorithms. Find a good algorithms book ( at least two inches thick ) and read it. Twice.

Hi,

Interesting post, you haven't written much but there's actually a lot of content there, so appreciate that. I'm away for 6 weeks but I'll check back in with the content/ advice you give in this post when I'm back in front of a laptop (I couldn't take my MBP with me). I may get back to you for advice/ futher pointers on here if you're around when I'm back.

Thanks