PDA

View Full Version : Am I too old to start programming?




WhiteIphone5
May 13, 2013, 04:55 PM
I have Zero programming/coding experience, no HTML, php, or java. I've been reading a few programming forums and it seems most programmers started at the age of 8+ years old. I came to US from Peru when I was 13, and have not been interested in technology until two years ago when I received my first iPhone. At the beginning of the year, I started to look into programming for iOS, but I know I need a background of programming before I start with Objective-C. But how do I start? I'm 20 years old and feel like its too late as there is tons of programming languages. I know It takes passion and love for programming, which I'm very interested in doing. Not for the money, but for the experience. In next year I will start taking programming college courses, but I want to have some background before I start. So another question would be, how do I start? What programming language do you recommend? Not only do I plan to create iOS apps, but websites as well. Thank you so much, and again I have no experience at all.



MegamanX
May 13, 2013, 05:06 PM
Short answer is no you are not.

Also programming languages are nothing more than syntax to me. I professionally develop right now I know and program in I want to say 4-5 different languages and of those 2 of them are professionally. in the next year I am looking to extend that to all of them. Picking up another programming language is pretty easy. To give you an idea I pick up and start producing pretty decent work in object c in 2-3 weeks. When I started in it I had never used the Xcode before or written a line of code in object c.

I had been out of school for about 6 months with my CS degree and been programming in yet another langage that I had never used before I started working. Also I did have a fair amount of java and android dev under my belt from school.

As for age, 20 is still really young. Programming is more about how to think and design. It is not so much being a code monkey. On your own you can get fairly far. Now in the past year my skills as a developer have progress more and more rapidly due to it being professionally and it is very different than school but I still pull on that skill set.

Starting langage Java is fine to start in. I would not recommend object C to start in because to work in object C you need to really under stand object orientated programming first and that is something that most people seem to struggle with until one day they just get it. There is no real in-between. It will just be one day the switch is click and boom it all makes sense.

Shrink
May 13, 2013, 05:10 PM
Short answer...no you are not.

Longer answer...you are 20 years old and worried you are too old!?:eek:

Digital Dude
May 13, 2013, 05:18 PM
I started with Apple products from the very beginning so yes, I am old! You have just started so jump right in! No offense, but after reading your post I subscribe to 'youth is wasted on the young'.

maxosx
May 13, 2013, 05:18 PM
You are _never_ too old. (to learn anything you want)

Unless _you_ say you are :)

WhiteIphone5
May 13, 2013, 05:28 PM
Thanks everyone for the comments, but someone has yet to tell me where I should start XD

ArtOfWarfare
May 13, 2013, 06:45 PM
Thanks everyone for the comments, but someone has yet to tell me where I should start XD

Google "Learn C the Hard Way". It's a free eBook. I suggest reading from it and doing the exercises contained.

If you aren't learning from that style of writing, I'm sure other people have "easier" books to learn from, but I think the hard way is the right way.

ChrisA
May 13, 2013, 07:17 PM
...But how do I start? I'm 20 years old and feel like its too late as there is tons of programming languages.....


To old at 20? This is a joke right?

First off like all beginner you confuse learning to write programs with learning some specific programming language. Well of course you need to learn some specific language but THAT is just the first step. Kind of like learning to spell is the first step to becoming a novelist.

Just pick something. Java is not a bad choose. and write some SIMPLE program. Likely it will be a command line program to do something trivial like type back what you enter but backwards.

Another areas of programming you make start with is to buy an Arduino (about $30) and make it blink some LEDs and then control some motors and sensors.

Just write some software to do some really simple things like a command line program to compute postage. The language does not matter at all.

Later after you can write programs in some language, learning a second or fourth language takes just weeks. I started in Fortran and cobol then they invented C and I got into that then C++ came along and Ada and Perl and Java. They are all more alike than different

The bigger thing to learn is the environment. If you write for IOS dec=vices you need to know a lot about IOS. If you are writing firmware for a digital camera you need to know the how the camera works and so on. People tand to specialize on "platforms" not so much on languages

So to get started follow this rule
(1) just DO Something,
(2) repeat #1 as requited.
The exact details matter about 100x less then just doing the above.

MegamanX
May 13, 2013, 07:18 PM
Thanks everyone for the comments, but someone has yet to tell me where I should start XD

I say Java is generally a good place to start. Chances are where you take school will do something.

I will strongly recommend against starting in Object-C right off the bat.

WhiteIphone5
May 13, 2013, 08:09 PM
I have been telling myself that there are steps before picking a language for example. I thought before JAVA you need HTML, and before objective c to do C++. I'm confused, doesnt the advance languages need prior experience? I can't just start straight with objective c right? I need experience before learning it. Idk why some of you tell me to "just pick a language" I don't get it. Thanks everyone I'm a noob at this.

saltyzoo
May 13, 2013, 09:07 PM
I have been telling myself that there are steps before picking a language for example. I thought before JAVA you need HTML, and before objective c to do C++. I'm confused, doesnt the advance languages need prior experience? I can't just start straight with objective c right? I need experience before learning it. Idk why some of you tell me to "just pick a language" I don't get it. Thanks everyone I'm a noob at this.

There are no prerequisites. HTML is in a completely different realm than java or C / Objective C.

You'll find it easier to understand the concepts starting with Java or php, but there is no reason you can't start with Objective C if that's your only interest. It will be a little more difficult, but it's certainly possible.

Personally, my progression was Basic -> pascal -> C -> COBOL -> C++ -> Java -> Objective C.

SQL HTML and a dozen others also along the way.

Pick one, learn it well and understand the concepts and you can literally do any of the others with minimal effort. After several decades and a lot of self learning, I can be productive in a new language in a day, and proficient at it in a couple of weeks.

Good luck!

WhiteIphone5
May 13, 2013, 09:32 PM
There are no prerequisites. HTML is in a completely different realm than java or C / Objective C.

You'll find it easier to understand the concepts starting with Java or php, but there is no reason you can't start with Objective C if that's your only interest. It will be a little more difficult, but it's certainly possible.

Personally, my progression was Basic -> pascal -> C -> COBOL -> C++ -> Java -> Objective C.

SQL HTML and a dozen others also along the way.

Pick one, learn it well and understand the concepts and you can literally do any of the others with minimal effort. After several decades and a lot of self learning, I can be productive in a new language in a day, and proficient at it in a couple of weeks.

Good luck!

Thanks! I think I'll go with java>c++> objective c

lee1210
May 13, 2013, 09:46 PM
Thanks! I think I'll go with java>c++> objective c

This is fine, but there's no real reason for this progression. Java will not specifically prepare you for C++, and C++ will not prepare you for Objective-C. Learning any language will help you be ready to learn another, but it's not like Java is more basic than C++ or Objective-C.

People say pick a language because whatever you pick is only where you start. You're not stuck with the decision, and it is unlikely that it will be the last one you learn. It's better to start anywhere than kill time debating which one is "right".

There are not prerequisites. Just start.

-Lee

MegamanX
May 13, 2013, 09:58 PM
I have been telling myself that there are steps before picking a language for example. I thought before JAVA you need HTML, and before objective c to do C++. I'm confused, doesnt the advance languages need prior experience? I can't just start straight with objective c right? I need experience before learning it. Idk why some of you tell me to "just pick a language" I don't get it. Thanks everyone I'm a noob at this.


You are confusing Javascript with Java. The only thing those 2 really share in common is the name java. Hell Javascript is called javascript because at the time Java was the new hot thing so it was trying to ride on its coat tails with the name.

Java has a lot more in common with C than Javascript. Hell Java is C based.

The reason why I do not recommend you start right in with Object C is because object C is VERY VERY object oriented. Something that takes some time for it to click and how to program that way. Plus it does have a weird syntax and set up that just does not follow the others.
This is fine, but there's no real reason for this progression. Java will not specifically prepare you for C++, and C++ will not prepare you for Objective-C. Learning any language will help you be ready to learn another, but it's not like Java is more basic than C++ or Objective-C.

People say pick a language because whatever you pick is only where you start. You're not stuck with the decision, and it is unlikely that it will be the last one you learn. It's better to start anywhere than kill time debating which one is "right".

There are not prerequisites. Just start.

-Lee

THat is more or less true. Honestly once you learn 1 langage it pretty easy to pick up another.

For me my progression went Pascal> VB.net> Java> C#>VDF> Object-C

Right now I program in VDF and Object-C and looking forward a few months I will be doing .net and Java with those 2 at the same time. Just the nature of my work.

I pick up object C with in a matter of weeks. It is just learning how to program is what it takes.

Just start with a hello world and keep going.

WhiteIphone5
May 13, 2013, 10:12 PM
I'm very interested in objective c and php. But since there are no pre-requisites, I guess il just start off there? Any books?
Like I said I have no experience what so ever.

----------

Also is there a language before c++ like "C" ? Should I do C before objective c?

ArtOfWarfare
May 13, 2013, 10:29 PM
I'm very interested in objective c and php. But since there are no pre-requisites, I guess il just start off there? Any books?
Like I said I have no experience what so ever.

----------

Also is there a language before c++ like "C" ? Should I do C before objective c?

An approach that's generally more successful than picking arbitrary languages is to pick something you want to make. We'll then suggest which language is best suited for that.

Contrarily to all the BS people are saying about all languages being equally valid starting points, I'm going to say they're all wrong.

C is the language you want to learn first. Nearly every other language that is used today is derived from C. Objective-C is a perfect superset of C, that is, all valid C code is also valid Objective-C code. C++ is mostly a superset of C, meaning that most valid C code is also valid C++ code. Java is heavily based on C++, and so is in turn based heavily on C.

If you learn C first, you'll be at a great spot for diving into pretty much any other language.

Java is an okay first language, but I feel like it shields you too much from seeing how the computer works, so going from Java to other languages would be more disorienting than going from other languages to Java.

Like I said in my prior post, use the free ebook Learn C The Hard Way (google it). If you find it's not working for you, other people here can suggest other books (although as LCTHW discusses in its intro, the hard way is the right way. I agree 100% with dispelling notions that the computer is magical or you need your hand held right off the bat.)

WhiteIphone5
May 13, 2013, 10:59 PM
An approach that's generally more successful than picking arbitrary languages is to pick something you want to make. We'll then suggest which language is best suited for that.

Contrarily to all the BS people are saying about all languages being equally valid starting points, I'm going to say they're all wrong.

C is the language you want to learn first. Nearly every other language that is used today is derived from C. Objective-C is a perfect superset of C, that is, all valid C code is also valid Objective-C code. C++ is mostly a superset of C, meaning that most valid C code is also valid C++ code. Java is heavily based on C++, and so is in turn based heavily on C.

If you learn C first, you'll be at a great spot for diving into pretty much any other language.

Java is an okay first language, but I feel like it shields you too much from seeing how the computer works, so going from Java to other languages would be more disorienting than going from other languages to Java.

Like I said in my prior post, use the free ebook Learn C The Hard Way (google it). If you find it's not working for you, other people here can suggest other books (although as LCTHW discusses in its intro, the hard way is the right way. I agree 100% with dispelling notions that the computer is magical or you need your hand held right off the bat.)

http://c.learncodethehardway.org/book/ ???

It says "This book is intended for programmers who have learned at least one other programming language. I refer you to Learn Python The Hard Way if you haven't learned a programming language yet"

ArtOfWarfare
May 13, 2013, 11:29 PM
http://c.learncodethehardway.org/book/ ???

It says "This book is intended for programmers who have learned at least one other programming language. I refer you to Learn Python The Hard Way if you haven't learned a programming language yet"

That's the one. Interesting - I don't recall seeing that note at the start of it. I'm actually not familiar with Python so couldn't say whether it's better to learn it or C first, but since the author of the book I'm endorcing suggested you learn Python first, maybe you should do that.

WhiteIphone5
May 13, 2013, 11:56 PM
That's the one. Interesting - I don't recall seeing that note at the start of it. I'm actually not familiar with Python so couldn't say whether it's better to learn it or C first, but since the author of the book I'm endorcing suggested you learn Python first, maybe you should do that.

This site is awesome!
I was just about to start Phyton, then it told me to familiarize myself with terminal, so I'm about do that then Phyton then C and finally objective C
Thanks for guiding me!!

naryn
May 14, 2013, 01:06 AM
Watch the Stanford Java course CS106a on iTunes U and learn Java programing games! Great lectures, great assignments.

Lectures:
https://itunes.apple.com/us/itunes-u/programming-methodology/id384232896

Coursework:
http://www.stanford.edu/class/cs106a/

Then progress to CS106b, then to their iOS class, job done! :)

Tander
May 14, 2013, 04:20 AM
I'm 24 and have only started learning to program since last year.

I've started my first job as a junior developer which starts next week as I think doing it professionally is one of the best ways to learn

So no, you're not too old.

Since I am going into iOS programming, I have decided to get my C skills up to scratch first, then move over to Objective-C. :cool:

WhiteIphone5
May 14, 2013, 07:17 AM
I'm 24 and have only started learning to program since last year.

I've started my first job as a junior developer which starts next week as I think doing it professionally is one of the best ways to learn

So no, you're not too old.

Since I am going into iOS programming, I have decided to get my C skills up to scratch first, then move over to Objective-C. :cool:

Awesome!!
What language did you first start with?

----------

Watch the Stanford Java course CS106a on iTunes U and learn Java programing games! Great lectures, great assignments.

Lectures:
https://itunes.apple.com/us/itunes-u/programming-methodology/id384232896

Coursework:
http://www.stanford.edu/class/cs106a/

Then progress to CS106b, then to their iOS class, job done! :)

Great links. Thank you!

dan1eln1el5en
May 14, 2013, 07:24 AM
When I saw the headline, I thought it was a 78 year old and I would still have said no.... 20...you might be too young :-P

ArtOfWarfare
May 14, 2013, 08:01 AM
When I saw the headline, I thought it was a 78 year old and I would still have said no.... 20...you might be too young :-P

I don't think there is such a thing as too young (or too old, for that matter.)

All you need is the will and desire to learn, and to want to do it now rather than later. If you've never touched programming before, but go to university looking to get a degree in it, then you're probably going to make a lousy programmer. Why? Because the ones actually interested in it started learning on their own well before enrolling.

The OP is different from the lousy ones - he's looking to learn on his own, and so though he's making the initiative later than usual, he is making it on his own which I think means he could in time be one of the better programmers of his (and my... I'm also 20) generation.

Tander
May 14, 2013, 08:52 AM
Awesome!!
What language did you first start with?

C.

before that I have not touched any other language.

When I was younger (Around 15 or so ) I started with C but due to leaving the country and life in general I never looked at programming in any real great depth, but always had an interest in it.

I did IT support for seven years and last year I had finally had enough and decided that it was time for a change.

So, I started with Objective-C first and found it difficult as there was C syntax I did not know and that the book I was reading did not explain in any detail as it assumed the reader (me) knew some C skills (I didn't)

So, I took a step back and went to C - I ams till going through my C book (learn C on mac - 4th edition by David Mark's) very good book.

Once I have completed the book I will go back to Objective-C and progress from there.

I was offered a job as a junior dev with the intention of the company "brining me up to scratch" on iOS development and I just couldn't say no.

That chapter of my life starts next week and I cannot wait. :cool:

MegamanX
May 14, 2013, 09:50 AM
Awesome!!
What language did you first start with?

He is right professional programming is one of the best ways to learn. I have learned more in the pass year than I did during all the stuff from school and before hand. School gave me the foundation.

I have been programming professionally at 1 year and I am 30.

Now my history was I was 14 I did some in Pascal in HS and then a few years later for degree 1 in VB.net. After that it was a several year break before I went back to school for CS (degree 2). School did Java, I took C# as an elective and I have not programmed in either one of those 2 since I left school.

gnasher729
May 14, 2013, 10:58 AM
When I saw the headline, I thought it was a 78 year old and I would still have said no.... 20...you might be too young :-P

I once met a retired postman who, at the age of 65, decided to buy himself a computer and start programming. Went straight to assembler code and produced stuff that had a gang of twenty-your-olds (including me) with mouths gaping wide open.

pogoyoyo
May 14, 2013, 12:49 PM
My personal progression was HTML > Java > C > C# > Objective-C
I found that each branched off the other quite nicely and progressively.

xArtx
May 14, 2013, 01:20 PM
I think C is still the most portable language... could be wrong now though.

I would say if you're in love with the machine,
learn to program for that platform right off the bat.
iOS presents some difficulty there, but at least the simulator is free.
How many platforms I've written for where everyone
programming for the platform said "This isn't the platform to learn on" = 3.
The Sony Playstation Portable, Canon Digital camera, and Apple iPhone.
There's probably an old C64 at some garage sale that you're allowed to learn on.

If the machine doesn't matter, then something easy to set up and start
testing example code.
You can gain understanding of how software works with almost any language.
Even if it's BASIC, you still learn programming,
then you can almost instantly write working programs in C long before discovering
any additional opportunities that C provides.
In a nutshell, anything written in BASIC is very easily ported to C,
but not the other way round.

WhiteIphone5
May 14, 2013, 09:56 PM
C.

before that I have not touched any other language.

When I was younger (Around 15 or so ) I started with C but due to leaving the country and life in general I never looked at programming in any real great depth, but always had an interest in it.

I did IT support for seven years and last year I had finally had enough and decided that it was time for a change.

So, I started with Objective-C first and found it difficult as there was C syntax I did not know and that the book I was reading did not explain in any detail as it assumed the reader (me) knew some C skills (I didn't)

So, I took a step back and went to C - I ams till going through my C book (learn C on mac - 4th edition by David Mark's) very good book.

Once I have completed the book I will go back to Objective-C and progress from there.

I was offered a job as a junior dev with the intention of the company "brining me up to scratch" on iOS development and I just couldn't say no.

That chapter of my life starts next week and I cannot wait. :cool:
good luck on your journey!

firewood
May 15, 2013, 02:17 AM
Some retired (65+ years old) grandparents have learned to program computers just fine. How soon before you're that old?

I'd start with an easier programming language (Python or Scratch for kids seems to be more in vogue than Basic or Logo these days). Learning a 2nd or 3rd programming language, such as C or Objective C or ARM/NEON assembly language is much easier after you get good at solving problems using your first programming language.

gnasher729
May 15, 2013, 03:11 AM
Some retired (65+ years old) grandparents have learned to program computers just fine. How soon before you're that old?

George Marsaglia (google for the name) was posting some seriously good code on Usenet at the age of 86.

Tander
May 15, 2013, 05:57 AM
good luck on your journey!

Thanks and to you too - if you never need tips or help etc - just send me a PM. :cool:

ohbrilliance
May 15, 2013, 06:34 AM
I think you're focussing too much on the language as a skill. You need to understand the theory and structures behind programming, which you'll learn in tandem with a suitable language. As mentioned above, Stanford's introductory courses are a great start.

If I can make one recommendation based on the languages mentioned in this thread: do not learn PHP as your first language. It's a horribly inconsistent and broken language that does not encourage good habits. I say this as somebody who develops in PHP and can recognise from my background (C++ and Java) the flaws in the language.

WhiteIphone5
May 15, 2013, 02:47 PM
Watch the Stanford Java course CS106a on iTunes U and learn Java programing games! Great lectures, great assignments.

Lectures:
https://itunes.apple.com/us/itunes-u/programming-methodology/id384232896

Coursework:
http://www.stanford.edu/class/cs106a/

Then progress to CS106b, then to their iOS class, job done! :)

i just finished the first lecture/intro
it seems they're using XP, does it matter that the video is old?

Tander
May 15, 2013, 03:04 PM
i just finished the first lecture/intro
it seems they're using XP, does it matter that the video is old?

No, it doesn't matter. The language is the same still. The tools and developing environment might be slightly different but you can adapt easily enough.

WhiteIphone5
May 15, 2013, 03:38 PM
No, it doesn't matter. The language is the same still. The tools and developing environment might be slightly different but you can adapt easily enough.

video quality is horrible, but hey its free. i can barely see what he is typing..

ArtOfWarfare
May 15, 2013, 05:51 PM
video quality is horrible, but hey its free. i can barely see what he is typing..

IDK about this specific class, but as I recall for the iOS programming course from Stanford, they give a URL where you can find the files that they typed during the lecture so you can go back and read over them on your own machine.

Scrub175
May 15, 2013, 06:39 PM
great topic. I just started learning a couple of weeks ago. My end goal is to develop some helpful iOS apps. Nothing major or in an effort to make fortunes. Just something I've wanted to try.

I found several ebooks for "beginners" in Obj-c, which really meant having prior experience in another language then moving to Obj-c. Even Obj-C for dummies stated the same thing.

I searched for true beginner books and found a couple. The first was Programming in Obj-C by Stephen Kochan. It's a good book, but didn't really set up the terms with easy examples right away. So i ventured to the bookstore and found the big nerd ranch iOS book, and the book recommended a different book if you are indeed new to programming. Of course it was the big nerd ranch Obj-C programming. Having gone through the first few chapters, I'm much more drawn into this book than the other. What I found helpful is the message forum for the big nerd ranch book kind of gives some personal help based on their specific lessons that may not be achieved by some of the other books. I know help is always a google search or macrumor post away, but I liked how I could search for my specific question in an area specific to that book and lesson.

The nerd ranch book says it's for Obj-C, but the author starts with C to get some basics down. He states the C is only high level to get started, not to bog you down with C and he's been pretty accurate so far.

So that would be my advice is check out one of the books I used. I found myself re-reading sections over and over in Programming Obj-C, unlike the nerd ranch book where it just makes sense quicker for me.

If you want to information share during the process or share some successes (which at our level are very basic) PM me. Good luck.

WhiteIphone5
May 15, 2013, 08:19 PM
IDK about this specific class, but as I recall for the iOS programming course from Stanford, they give a URL where you can find the files that they typed during the lecture so you can go back and read over them on your own machine.

I see. I'm a bit confused on the Karel program thingy, I'm gonna go to my windows machine, as on the rMBP looks ugly lol

----------

great topic. I just started learning a couple of weeks ago. My end goal is to develop some helpful iOS apps. Nothing major or in an effort to make fortunes. Just something I've wanted to try.

I found several ebooks for "beginners" in Obj-c, which really meant having prior experience in another language then moving to Obj-c. Even Obj-C for dummies stated the same thing.

I searched for true beginner books and found a couple. The first was Programming in Obj-C by Stephen Kochan. It's a good book, but didn't really set up the terms with easy examples right away. So i ventured to the bookstore and found the big nerd ranch iOS book, and the book recommended a different book if you are indeed new to programming. Of course it was the big nerd ranch Obj-C programming. Having gone through the first few chapters, I'm much more drawn into this book than the other. What I found helpful is the message forum for the big nerd ranch book kind of gives some personal help based on their specific lessons that may not be achieved by some of the other books. I know help is always a google search or macrumor post away, but I liked how I could search for my specific question in an area specific to that book and lesson.

The nerd ranch book says it's for Obj-C, but the author starts with C to get some basics down. He states the C is only high level to get started, not to bog you down with C and he's been pretty accurate so far.

So that would be my advice is check out one of the books I used. I found myself re-reading sections over and over in Programming Obj-C, unlike the nerd ranch book where it just makes sense quicker for me.

If you want to information share during the process or share some successes (which at our level are very basic) PM me. Good luck.

I definitely will. I'm starting JAVA first, but will also get your recommend book. Maybe have said to start with C as java is based on C as well. I'm a bit unsure as I haven't really started the Java course on iTunes U. I have all summer long to learn, and after that too but I have too much time during this time and I want to make the most out of it. I don't want to waste time by deciding. How's C? Why not JAVA?

Scrub175
May 15, 2013, 08:39 PM
I see. I'm a bit confused on the Karel program thingy, I'm gonna go to my windows machine, as on the rMBP looks ugly lol

----------



I definitely will. I'm starting JAVA first, but will also get your recommend book. Maybe have said to start with C as java is based on C as well. I'm a bit unsure as I haven't really started the Java course on iTunes U. I have all summer long to learn, and after that too but I have too much time during this time and I want to make the most out of it. I don't want to waste time by deciding. How's C? Why not JAVA?

having dipped my toes in Obj-c and gone back to C, I get a better picture of what Obj-C was trying to accomplish now. While working with Obj-C I was simply copying text line by line. With C I can apply some thought to it and some cause and effect, more so than I could with Obj. I can really see and understand what is being asked in the sample problems in C more than in Obj-C as well.

Why not Java... Well I had no clue what language to start with honestly. In high school I struggled with two languages (english and german) so I figured I would start with what would get me to my end point (as what someone recommended above), Obj-C. Since iOS and Mac use Obj-C, I didn't see where Java fit in that path. The detour to C was simply a response to the recommendation by the author of the nerd ranch book. So far he is on track with that transition.

After I (if I ever) get a handle of Obj-C and iOS I would like to transition to Android development too. The iOS tools and simulator kit are very nice. Google announced an upgraded Android tool kit today.

WhiteIphone5
May 15, 2013, 08:59 PM
having dipped my toes in Obj-c and gone back to C, I get a better picture of what Obj-C was trying to accomplish now. While working with Obj-C I was simply copying text line by line. With C I can apply some thought to it and some cause and effect, more so than I could with Obj. I can really see and understand what is being asked in the sample problems in C more than in Obj-C as well.

Why not Java... Well I had no clue what language to start with honestly. In high school I struggled with two languages (english and german) so I figured I would start with what would get me to my end point (as what someone recommended above), Obj-C. Since iOS and Mac use Obj-C, I didn't see where Java fit in that path. The detour to C was simply a response to the recommendation by the author of the nerd ranch book. So far he is on track with that transition.

After I (if I ever) get a handle of Obj-C and iOS I would like to transition to Android development too. The iOS tools and simulator kit are very nice. Google announced an upgraded Android tool kit today.

I think I'll start with C. I'm gonna follow the guide posted here before. Python then C> obj- c

ArtOfWarfare
May 15, 2013, 09:05 PM
I think I'll start with C. I'm gonna follow the guide posted here before. Python then C> obj- c

Sounds reasonable enough. I generally recommend learning C from LCTHW (the book whose author suggested you learn Python first) and then Obj-C from Stanford's CS193P course (which also rolls in the iOS SDK and some Xcode.)

WhiteIphone5
May 15, 2013, 09:34 PM
Sounds reasonable enough. I generally recommend learning C from LCTHW (the book whose author suggested you learn Python first) and then Obj-C from Stanford's CS193P course (which also rolls in the iOS SDK and some Xcode.)

Thanks!!
I hope the course has good vid quality.

Scrub175
May 15, 2013, 09:47 PM
Thanks!!
I hope the course has good vid quality.

I found the video quality great.

larswik
May 16, 2013, 03:01 AM
I'm 20 years old and feel like its too late as there is tons of programming languages.

I started at 39 with C. I picked up a C book in 94' when I was 24 and did not understand it. I think as I got older I had a better understanding and a more relaxed approach to learning. You can't rush it. I spent a year just on C and object C before I ever wrote anything that used a GUI.

About everything I have seen uses C from Object C, Java and more. From C it took a few days to get the hang of PHP.

My C book was 'Learn C on the Mac'. But I would have failed again if it wasn't for this forum where I could ask questions.

firewood
May 16, 2013, 11:53 AM
The most successful books on learning to program computers are no longer in print. Back in the days when the Apple II was one of the most popular personal computers (as well as the C64, Acorn BBC, et.al.), zillions of kids (and even some parents) learned to program in Basic just from the books and magazine articles. My local library used to have almost a whole shelf of these books in the children's section. They are no longer there any more... only one lonely book on Python now. Too bad for computer literacy. :(

ArtOfWarfare
May 16, 2013, 12:06 PM
The most successful books on learning to program computers are no longer in print. Back in the days when the Apple II was one of the most popular personal computers (as well as the C64, Acorn BBC, et.al.), zillions of kids (and even some parents) learned to program in Basic just from the books and magazine articles. My local library used to have almost a whole shelf of these books in the children's section. They are no longer there any more... only one lonely book on Python now. Too bad for computer literacy. :(

It all went digital, for better or worse.

dejo
May 16, 2013, 03:39 PM
It all went digital, for better or worse.

Do you know of some online places where similar resources can now be found?

ArtOfWarfare
May 16, 2013, 06:59 PM
Do you know of some online places where similar resources can now be found?

Learn Code the Hard Way is a collection of similar resources that's online that I rather enjoy. I'm debating the possibility of putting together an iBook on everything I know now that I wish I could have learned when I was in 6th grade... I have a few chapters written but I'm always learning new things that renders what I've already written obsolete... Given that I learn more everyday, I'm not sure if its really feasible to ever write such a book.

dejo
May 16, 2013, 07:21 PM
Learn Code the Hard Way is a collection of similar resources that's online that I rather enjoy.

I would think that an introduction to programming for children would probably be more along the lines of "Learn Code the Easy Way". :)

denniscote
May 16, 2013, 07:28 PM
Do you know of some online places where similar resources can now be found?

You could try the ebook "Snake Wrangling for Kids" at http://briggs.net.nz/snake-wrangling-for-kids.html. There are PDF files of Mac, Windows, and Linux versions that teach kids to program in Python (version 3, but older versions o the book teach Python 2 as well). They explain the concepts of programming at the same time as they teach them how to use them in Python.

HTH.

ArtOfWarfare
May 16, 2013, 07:38 PM
I would think that an introduction to programming for children would probably be more along the lines of "Learn Code the Easy Way". :)

Sooner or later, you're going to hit hard tasks in coding. The Learn Code the Hard Way prepares you for it from the very beginning. If you don't like challenges and problems (and solving / overcoming them,) then you shouldn't be coding.

dejo
May 16, 2013, 07:48 PM
Sooner or later, you're going to hit hard tasks in coding. The Learn Code the Hard Way prepares you for it from the very beginning. If you don't like challenges and problems (and solving / overcoming them,) then you shouldn't be coding.

Sorry, I guess my gentle ribbing was misunderstood. Anyways, even Zed Shaw admits (http://learnpythonthehardway.org/book/intro.html) that his approach isn't actually hard:
The title says it's the hard way to learn to write code; but it's actually not. It's only the "hard" way because it's the way people used to teach things using instruction.

:D

Scrub175
May 16, 2013, 11:50 PM
I think I'll start with C. I'm gonna follow the guide posted here before. Python then C> obj- c

I think I'm going to follow your lead and go with Learn C the hard way. The author suggests new folks start with python. In python it is suggested to work on command line so I went with his tutorial with that first.

Where did u start and what are you working on. Perhaps we could keep pace together and group study through this.

63dot
May 17, 2013, 12:35 AM
It's never too late to learn anything, especially programming. It's forgiving if you start late in that many a programmer who spent a ton of time in old languages kind of have to relearn, too.

It's unforgiving in that even if you have mad skills, it's all too often if you are bleeding edge current. It was tough in the past to keep up but these days are even more relevant as to being into the latest and greatest. It's not like medicine where practitioners had to go to get an MD or RN and thus somewhat lockstep, but it's rather like being a rock star in that most successful people in the field don't have a specific music degree but more passion than academic credentials. Programmers who are successful range from teens still in school to middle aged PhDs in computer science.

Whether you are experienced or a newbie, all have to constantly learn stuff and your passion is the only ingredient for success. You can't do this for long if you are not into it.

Jodles
May 17, 2013, 09:20 AM
You can start Objective-C straight away using Steven Kochan's "Programming in Objective-C". It assumes no prior programming experience. A lot of people would say you should learn C first. For me personally the opposite ended up being more fruitful. I dived into Obj-C, and then started learning about C and had a few eye-openers and a-ha moments that tied into my experience with Obj-C. Worked really well for me.

It might also be useful to do a free online course like those offered at Coursera and edX. The ones at edX ties a programming language in with computer science more than maybe focused programming courses: 6.00x at edX dives into OOP with Python and some random algorithms and monte carlo methods, and CS50 tackles mainly C, but deals with other CS stuff like different sorting algorithms. Over at Coursera there's loads of others! Udacity also has good programming courses.

But I think the most important thing is not to get stuck learning one language - I picked up loads of books and numerous tutorials over the internet on different languages all the time, whatever interested me at the time - and you quickly realise that most of the concepts all tie into each other and appear in the other languages.

Good luck!

ArtOfWarfare
May 17, 2013, 11:23 AM
You can start Objective-C straight away using Steven Kochan's "Programming in Objective-C". It assumes no prior programming experience. A lot of people would say you should learn C first. For me personally the opposite ended up being more fruitful. I dived into Obj-C, and then started learning about C and had a few eye-openers and a-ha moments that tied into my experience with Obj-C. Worked really well for me.

I did the same thing. It would have been nicer to have had those a-ha moments from the start.

firewood
May 17, 2013, 11:23 AM
I have a few chapters written but I'm always learning new things that renders what I've already written obsolete...

What makes you thinks that it's not important to teach and write about obsolete stuff? That may actually be the most important thing you can teach, as it's how you got to where you are now.

The people who only learn the "new thing" have no idea how little they know.

960design
May 17, 2013, 11:23 AM
No you are not too young. Just think of it as learning a new language, like Japanese or Urdu. In your case it will be ObjectiveC, Java, C or PHP, ect.

Good luck and like trying to learn any new language it is MUCH easier if you learn from a 'native' speaker.

7enderbender
May 17, 2013, 02:36 PM
I'm 20 years old and feel like its too late as there is tons of programming languages..


What?? Why would you be too old? It's not rocket science really. And guess what: people learn rocket science as well. Even at the geriatric age of over 20.

Gee - I'm over 40 and I'm constantly trying to learn and pick up new things. Without a physical or mental limitation you pretty much do anything you like. Most certainly as a healthy 20 year old. Don't let anyone tell you otherwise.

ArtOfWarfare
May 17, 2013, 03:19 PM
Without a physical or mental limitation you pretty much do anything you like.

I can think of a few people who would argue otherwise as far as physical limitations keeping you from such things, namely

http://upload.wikimedia.org/wikipedia/commons/3/31/Stephen_Hawking_050506.jpg

driveparty
May 17, 2013, 05:22 PM
not been interested in technology

I believe (and got it proven by my own experience), one needs nothing, but being really interested, or even passionate to the matter in order to get "professional". Nevertheless, the trick is one must be DOING it, not thinking of, if is he capable or not :)

By the way, i have never learned English, just was using it to read all that programming and other, mostly technical books with a dictionary first. Than i was reading some everyday texts, listening to the music, TV, (online) radio and so on, and now i can really speak it. Way not as fluent and correctly, as my native language, or even Spanish, which i was learning in the school, but however... Just because i was in need of it, and i was doing to use it — no more, no less!

TyPod
May 17, 2013, 09:24 PM
I say Java is generally a good place to start. Chances are where you take school will do something.

At the university I attend, Java is what I started with in the CS curriculum.

WhiteIphone5
May 17, 2013, 09:26 PM
I think I'm going to follow your lead and go with Learn C the hard way. The author suggests new folks start with python. In python it is suggested to work on command line so I went with his tutorial with that first.

Where did u start and what are you working on. Perhaps we could keep pace together and group study through this.

Hey bud, sorry I've been really busy. Right now I'm about to start following the terminal guide, as I'm not very familiar with terminal.

----------

I believe (and got it proven by my own experience), one needs nothing, but being really interested, or even passionate to the matter in order to get "professional". Nevertheless, the trick is one must be DOING it, not thinking of, if is he capable or not :)

By the way, i have never learned English, just was using it to read all that programming and other, mostly technical books with a dictionary first. Than i was reading some everyday texts, listening to the music, TV, (online) radio and so on, and now i can really speak it. Way not as fluent and correctly, as my native language, or even Spanish, which i was learning in the school, but however... Just because i was in need of it, and i was doing to use it — no more, no less!

Thank you for sharing. Really.

Scrub175
May 17, 2013, 09:41 PM
I downloaded a flashcard app for the exercises. I can send u the cards if you download the app flashcard+. Plus u can search existing card directories too.

WhiteIphone5
May 18, 2013, 12:15 AM
I downloaded a flashcard app for the exercises. I can send u the cards if you download the app flashcard+. Plus u can search existing card directories too.

Installed!

swingerofbirch
May 18, 2013, 12:57 AM
I don't know where I found this link (most likely on the Macrumors forum), but I bookmarked it in case I ever get around to learning how to program (also no experience programming except for an intro class where I learned Alice, a teaching language):

http://masters-of-the-void.com

Whatever thread I was reading at the time led me to believe it was a good intro to learning C on a Mac. Unfortunately my community college doesn't teach C or Java, which I find really odd. And I have trouble sticking with things if it's not in class form. But maybe this summer!

But to the OP, if you've already found something, stick with it. I was just posting this in case anyone else was interested.

960design
May 20, 2013, 10:23 AM
If you are starting out with Java, may I recommend: http://www.greenfoot.org/door

We are piloting it with a 6th grade programming club. Our goal is to expand the club as they progress through school.
7th -8th grade: BlueJay (if they wish) and very small introduction to Eclipse, Netbeans, Coda to show them the differences in IDEs.
9th grade+ will be XCode and app development for Mac and iOS.

Hopefully by the time they graduate they will be programmers in their own right, with just enough knowledge to know what they want to learn and how to learn it.

balamw
May 20, 2013, 11:27 AM
You could try the ebook "Snake Wrangling for Kids" at http://briggs.net.nz/snake-wrangling-for-kids.html.

The updated, commercial version (http://shop.oreilly.com/product/9781593274078.do) is on the summer reading list for my boys, 12 and 10.

B

henrystar
May 20, 2013, 04:07 PM
Thanks everyone for the comments, but someone has yet to tell me where I should start XD
Everyone will jump on me, but I started with fortran. That's all I use, for scientific programming, even today. That was 1958! For scientific programming today, I expect the "correct" answer is C. For e.g. computer games, I have no idea, and of course no interest anyway. Programming is fun, it is nice to see what you visualized actually appear on the screen!

ArtOfWarfare
May 20, 2013, 04:37 PM
Everyone will jump on me, but I started with fortran. That's all I use, for scientific programming, even today. That was 1958! For scientific programming today, I expect the "correct" answer is C. For e.g. computer games, I have no idea, and of course no interest anyway. Programming is fun, it is nice to see what you visualized actually appear on the screen!

I believe the "correct" answer for both computer games and scientific programming today is C++. MatLab might also be the "correct" answer for scientific programming.

Although C is still being used, I'm finding a lot of people are taught it but think it's C++ despite the fact they utilize none of C++'s features (IE, namespaces, classes, and templates.)

chown33
May 20, 2013, 06:51 PM
I believe the "correct" answer for both computer games and scientific programming today is C++. MatLab might also be the "correct" answer for scientific programming.)

Fortran (http://en.wikipedia.org/wiki/Fortran#Fortran_2008) sent a telegram telephoned emailed texted tweeted and wanted everyone to know it's not dead yet, and has both coarray parallelism (http://en.wikipedia.org/wiki/Co-array_Fortran) and a DO CONCURRENT construct, flanking the computed-GOTO urn on the mantelpiece.

rei101
May 20, 2013, 10:43 PM
I am 38 years old.

And I would like to start programming and many other things. Once you like something go for it, the energy, enthusiasm and imagination start to flow.

I am about to take a training in marketing and another ion sales. I am an audio engineer, digital media associate in science and project manager, all those titles.

I am doing video editing, 3D and sound design as well as motion graphics.

Last year I started this crazy idea in digging into spiritualism, Santeria, witchcraft and all that, even voodoo!

And now I am back with God and starting new businesses and if possible life coaching.

Learning programming? I would love to, I just do not have time and the need right now.

tekboi
May 21, 2013, 12:12 AM
Thread is hilarious.


I started programming around 22-23 years old. Sure, learning young is better, but I wasn't raised in an environment that exactly "nurtured" things like programming...

Sander
May 21, 2013, 04:00 AM
I'm debating the possibility of putting together an iBook on everything I know now that I wish I could have learned when I was in 6th grade... I have a few chapters written but I'm always learning new things that renders what I've already written obsolete... Given that I learn more everyday, I'm not sure if its really feasible to ever write such a book.

Well - as someone who has written a book on programming, I can tell you that nothing has helped me better to master the details. The drawback is that it turned out to be a multi-year project, and I found myself constantly reshuffling things. There's a difficult trade-off between explaining everything in a simple linear fashion, and having "interesting" examples that use the material treated so far.

dollystereo
May 21, 2013, 10:23 AM
Take the online course of MIT (in iTunes U or MIT courseware) introduction to programming, they use python and is very straight forward.
Good Luck!

----------

here is the link
https://itunes.apple.com/us/itunes-u/introduction-to-computer-science/id341597455

firewood
May 21, 2013, 08:17 PM
For e.g. computer games, I have no idea...

The tightest bindings to OpenGL are in C. No idea about DirectX.

phoenixsan
May 21, 2013, 08:47 PM
when the need arrives or anyone wants to do something. Need to do programming? For me, there are no age for that. Want to live from programming? Need to start ASAP

:):apple:

trigonometry
May 22, 2013, 04:46 AM
I'm old as hell and just started a couple of weeks ago. I'd say start with Python. It's easy, fast, and no compiling. Plus everything you need is already on your Mac. Try thenewboston on Youtube, he has some very easy to understand tutorials on almost all programming languages. Also google Learn Python by Mark Lutz, its a book that is available as a pdf. If your heart is in it, you'll be producing code in a couple of days. Hell, I could have coded this post in Python!

Noob tip:Use TextWrangler/BBEdit to write your programs, then you can test and run your code with a keyboard command without even having to open terminal. Sweet!

WhiteIphone5
May 22, 2013, 11:30 PM
I'm old as hell and just started a couple of weeks ago. I'd say start with Python. It's easy, fast, and no compiling. Plus everything you need is already on your Mac. Try thenewboston on Youtube, he has some very easy to understand tutorials on almost all programming languages. Also google Learn Python by Mark Lutz, its a book that is available as a pdf. If your heart is in it, you'll be producing code in a couple of days. Hell, I could have coded this post in Python!

Noob tip:Use TextWrangler/BBEdit to write your programs, then you can test and run your code with a keyboard command without even having to open terminal. Sweet!

thanks for the tip! greatly appreciated

robE89
May 24, 2013, 09:00 AM
Thread is hilarious.


I started programming around 22-23 years old. Sure, learning young is better, but I wasn't raised in an environment that exactly "nurtured" things like programming...

I think the basic ideea here is if OP is old enough to start learning programming and LIVE from it :) of course we can start almost anything at almost any age but i think that OP should not waste any more time and learn hard :D

I`m in a simillar position, where i really want to learn programming, i like it but i think that at my age(24) is the last train i can catch if i want to live from it, of course that there is freelancing and that stuff but dunno how long term is that :)

ArtOfWarfare
May 24, 2013, 09:06 AM
I think the basic ideea here is if OP is old enough to start learning programming and LIVE from it :) of course we can start almost anything at almost any age but i think that OP should not waste any more time and learn hard :D

I`m in a simillar position, where i really want to learn programming, i like it but i think that at my age(24) is the last train i can catch if i want to live from it, of course that there is freelancing and that stuff but dunno how long term is that :)

No, it's never too late for a career shift. You can be 60 and retired and learn how to program and rejoin the workforce as a software engineer... You'll probably be the oldest one on a team, but if you're capable, no one is going to stop you. (At least I've never seen a programmer past 50... And only two past 40.)

Cactus Dan
May 24, 2013, 10:54 AM
Howdy,

Age is never really a limitation. I'm 58 and I've been programming and selling plugins since 2005. Of course I dabbled in programming for years in my spare time with BASIC, GFA BASIC (Atari), but didn't start learning C until I got my first Mac when I was in my 40's. Then didn't start learning C++ until I started programming plugins.

Learning a programming language's syntax is the easy part.

On the other hand, learning how to do creative problem solving is much harder and might not be something everyone can learn. It takes a lot of creative problem solving to be a good enough programmer to make a living at it. Which programming language you use is determined by what you're programming. For me, since I'm bound by the application's API for which I program the plugins, I had to learn C++.

Adios,
Cactus Dan

juliocoutinho
May 24, 2013, 12:14 PM
I have Zero programming/coding experience, no HTML, php, or java. I've been reading a few programming forums and it seems most programmers started at the age of 8+ years old. I came to US from Peru when I was 13, and have not been interested in technology until two years ago when I received my first iPhone. At the beginning of the year, I started to look into programming for iOS, but I know I need a background of programming before I start with Objective-C. But how do I start? I'm 20 years old and feel like its too late as there is tons of programming languages. I know It takes passion and love for programming, which I'm very interested in doing. Not for the money, but for the experience. In next year I will start taking programming college courses, but I want to have some background before I start. So another question would be, how do I start? What programming language do you recommend? Not only do I plan to create iOS apps, but websites as well. Thank you so much, and again I have no experience at all.


I am going through the exact same thing and I am 42.

The difference is that I am some sort of Buck Rogers* of Code. I started programming when I was 12 and continued up to my graduation in engineering. I started with BASIC on an Apple II, took Pascal, Fortran, Clipper, SQL and mostly C. Wrote complex software such as Compilers, interpreters, etc... But that was before the widespread of GUI, objects, and server/client internet apps. Then my career took a different direction. Now, some 20 years later, for fun, here I am trying to start over.

Like you, I want to write stuff that works on the devices I use, my iPad, iPhone, Mac and PC. But which language? Where to start?

I am finding it extremely difficult! Today is a lot more complex. To write a interactive web page you need to use at least 3 languages (Javascript, Html, and CSS) and make them interact together. How come this mess came out to be is a mystery...

What I did and found so far...

Languages are all very much alike. They have really some few 30-50 commands and a few syntax rules to learn. It is all about loops, variables, functions, If-then-else logical decisions. Amazingly, languages haven't evolved much since C. I may be wrong, but I can't see what objects can do that functions alone couldn't.

I found that more important than choosing the language is choosing the Framework. Sure, one is related to the other as each framework is really just a package of objects and code to easy your job in working with buttons, forms, grids, i/o, file, servers and objects on the screen. In today's world, you can't really do much with only standard C. It is not practical.

The problem is that most frameworks are OS / device related. Learning Object C will likely force you to develop to iOS OSX only. Even Java today, once seen as a language for all platforms, is more and more going into the direction of having the same fate of Flash.

While languages are mostly similar, once having learned one, you can easily jump to another without much effort. The core is similar. Frameworks, on the other range, are a almost infinite series of new objects. You need to invest a lot of time learning them. At the end of the day, these objects behave like new commands added to the initial language core.

I finally decided to go to jQuery, javascript path. Javascript frameworks like jQuery have eased the HTML,CSS interaction mess. Besides, Web apps can run anywhere without plugins. Ajax seems to be fulfilling the promise Java seemed to have lost.

There's plenty of jQuery and Javascript dummies books out there.

*Buck Rogers is the character that was frozen in the 80's only to wake up few centuries later and find a completely different world.

Scrub175
May 24, 2013, 12:26 PM
I am going through the exact same thing and I am 42.

The difference is that I am some sort of Buck Rogers* of Code. I started programming when I was 12 and continued up to my graduation in engineering. I started with BASIC on an Apple II, took Pascal, Fortran, Clipper, SQL and mostly C. Wrote complex software such as Compilers, interpreters, etc... But that was before the widespread of GUI, objects, and server/client internet apps. Then my career took a different direction. Now, some 20 years later, for fun, here I am trying to start over.

Like you, I want to write stuff that works on the devices I use, my iPad, iPhone, Mac and PC. But which language? Where to start?

I am finding it extremely difficult! Today is a lot more complex. To write a interactive web page you need to use at least 3 languages (Javascript, Html, and CSS) and make them interact together. How come this mess came out to be is a mystery...

What I did and found so far...

Languages are all very much alike. They have really some few 30-50 commands and a few syntax rules to learn. It is all about loops, variables, functions, If-then-else logical decisions. Amazingly, languages haven't evolved much since C. I may be wrong, but I can't see what objects can do that functions alone couldn't.

I found that more important than choosing the language is choosing the Framework. Sure, one is related to the other as each framework is really just a package of objects and code to easy your job in working with buttons, forms, grids, i/o, file, servers and objects on the screen. In today's world, you can't really do much with only standard C. It is not practical.

The problem is that most frameworks are OS / device related. Learning Object C will likely force you to develop to iOS OSX only. Even Java today, once seen as a language for all platforms, is more and more going into the direction of having the same fate of Flash.

While languages are mostly similar, once having learned one, you can easily jump to another without much effort. The core is similar. Frameworks, on the other range, are a almost infinite series of new objects. You need to invest a lot of time learning them. At the end of the day, these objects behave like new commands added to the initial language core.

I finally decided to go to jQuery, javascript path. Javascript frameworks like jQuery have eased the HTML,CSS interaction mess. Besides, Web apps can run anywhere without plugins. Ajax seems to be fulfilling the promise Java seemed to have lost.

There's plenty of jQuery and Javascript dummies books out there.

*Buck Rogers is the character that was frozen in the 80's only to wake up few centuries later and find a completely different world.

Great reference to Buck Rogers. Erin Gray was A-mazing...

iSee
May 24, 2013, 05:34 PM
...
Clipper! Ah, the memories.
I started out similar to you, but kept on in coding.

...(At least I've never seen a programmer past 50... And only two past 40.)
What?!? :eek: Where are you looking??? I guess there are companies that skew younger or older. There are plenty of us older developers out there!

I think the basic ideea here is if OP is old enough to start learning programming and LIVE from it :) of course we can start almost anything at almost any age but i think that OP should not waste any more time and learn hard :D

I`m in a simillar position, where i really want to learn programming, i like it but i think that at my age(24) is the last train i can catch if i want to live from it, of course that there is freelancing and that stuff but dunno how long term is that :)

I don't think too many employers care if you started when you were 24 or 18 or whatever. (I've been involved in hiring software developers many times over the years and it hasn't really come up.) Mostly they care if you can do the job competently and how much you will cost.

Whether or not you can ultimately make a living at programming depends mainly on your aptitude for the work, whether you are temperamentally suited to it, and, of course, how hard you work at it. I don't believe it's something anyone can do (just my opinion), but I don't see how the age you start could be a major factor.

I think the question that you and the OP should be asking yourselves is if you think you have the ability and inclication to become good programmers. If you aren't sure, get a well-recommended book or take a well-recommended course and work your way through it to the end. If you encounter problems that are very difficult for you but ultimately you are able to solve, then you will be a successful programmer. (If you don't encounter problems that are very difficult for you, then you are probably very smart! Great! But you should try something harder before deciding to become a programmer, because the real fundemental skill you will need is the ability to ultimately solve problems that you initially find to be very difficult. You need to find out if you can do this.)

Murgatroyd
May 24, 2013, 06:25 PM
I have Zero programming/coding experience, no HTML, php, or java. …, Thank you so much, and again I have no experience at all.

Hey Dude, totally get into the art of programming with all the passion and zeal you can muster up every day. Trust me, five years from now you'll be proud of what you can do. And if a flash of creative insight comes your way in the future, all the tools needed to make turn it into a success will be right in your head. Doesn't get any better.

balamw
May 24, 2013, 07:33 PM
Languages are all very much alike. They have really some few 30-50 commands and a few syntax rules to learn. It is all about loops, variables, functions, If-then-else logical decisions. Amazingly, languages haven't evolved much since C.


This is quite true. Just like there are only 7 basic plot structures/stories (http://www.amazon.com/Seven-Basic-Plots-Tell-Stories/dp/0826480373). Like Buck Rogers, who was already old news in film (http://en.wikipedia.org/wiki/Buck_Rogers_(serial)) when my parents were young adults in the 40s.

I may be wrong, but I can't see what objects can do that functions alone couldn't.

That's almost like saying I can't see what C can do that I can't do in Assembly language. For me, the main value of objects is in code reuse. Using objects makes code far more reusable.


What?!? :eek: Where are you looking??? I guess there are companies that skew younger or older. There are plenty of us older developers out there!

I couldn't agree more. I think all the devs at the company i work for are 40+.

B

Scrub175
May 25, 2013, 12:15 PM
did some searching, but still have a question... I started with the learning python the hard way and the MIT itunesU courses. I thing I've found helpful is the command line color coding for string and numbers. So is there a simple way to get this structure into terminal? The MIT course is currently typing in python terminal, but the PTHW class uses textwrangler to write to a file then execute it in python. for the purposes of the MIT direct type method I would prefer to do that since we are typing very simple one line expressions.

Thank you.

firewood
May 25, 2013, 12:24 PM
At least I've never seen a programmer past 50...

A lot of the ones past 50 don't have much tolerance for stupid company management. Thus, the ones who haven't moved up to be stupid managers themselves usually aren't employees, but out consulting on projects the less experienced programmers can't figure out, and sometimes for really big consulting fees.

Scrub175
May 25, 2013, 01:18 PM
Learn Code the Hard Way is a collection of similar resources that's online that I rather enjoy. I'm debating the possibility of putting together an iBook on everything I know now that I wish I could have learned when I was in 6th grade... I have a few chapters written but I'm always learning new things that renders what I've already written obsolete... Given that I learn more everyday, I'm not sure if its really feasible to ever write such a book.

Thank you for your insight. I eventually went with the way you suggested and python is a blast to learn. it really is at the right level to explain the basics of structure and usage before C and Obj-C get way to advanced in their similar syntax usage. very good pacing and complexity to start with. I also tied PLTHW with the MIT series and it is awesome. thanks again.

tekboi
May 25, 2013, 09:34 PM
I think the basic ideea here is if OP is old enough to start learning programming and LIVE from it :) of course we can start almost anything at almost any age but i think that OP should not waste any more time and learn hard :D

I`m in a simillar position, where i really want to learn programming, i like it but i think that at my age(24) is the last train i can catch if i want to live from it, of course that there is freelancing and that stuff but dunno how long term is that :)

So there is an age limit for when people can start making a living doing programming???




I didn't know that.

----------

I don't believe it's something anyone can do (just my opinion)


People always say this.

Why isn't it something that everybody can do?? Why isn't programming something something you can pick up like learning a language or how to work a forklift??

ArtOfWarfare
May 26, 2013, 12:03 AM
Why isn't it something that everybody can do?? Why isn't programming something something you can pick up like learning a language or how to work a forklift??

I believe it's like math. Everyone can do it but you need to be taught in the right way. Many people are convinced that they can't be taught math or science or programming because they haven't had the right teacher who could engage them the right way. Some people find a certain style of book is just right for them - others need to have a more conversational kind of learning experience, and still other people learn other ways.

WhiteIphone5
May 26, 2013, 12:34 AM
All these replies have been extremely helpful. Thank you all!!!

xArtx
May 26, 2013, 12:41 AM
I would say that it's "not for everyone", in the same way that you might say
rock climbing is not for everyone...

balamw
May 26, 2013, 07:17 AM
Why isn't programming something something you can pick up like learning a language or how to work a forklift??

I'd argue that just like learning a language or working a forklift, everyone can get the basics but it takes a particular type of person to become really good at it.

If you've ever seen the difference between someone who can work a forklift and someone who and work a forklift efficiently and even artfully, you'll see it's night and day.

Even driving a car is this way. Everyone can learn the basics, few are truly excellent at it.

B

ArtOfWarfare
May 26, 2013, 07:40 AM
Even driving a car is this way. Everyone can learn the basics, few are truly excellent at it.

But 90% of people think they're above average at it: http://www.scientificamerican.com/article.cfm?id=you-are-less-beautiful-than-you-think

balamw
May 26, 2013, 08:08 AM
But 90% of people think they're above average at it: http://www.scientificamerican.com/article.cfm?id=you-are-less-beautiful-than-you-think

Of course, we're all above average here, right?

B

ArtOfWarfare
May 26, 2013, 09:20 AM
Of course, we're all above average here, right?

B

Definitely. TopCoder's statistics says I'm better than 52.59% of algorithm competitors worldwide (http://community.topcoder.com/tc?module=MemberProfile&cr=23026702), which means I'm above average. The website seems a little wonky right now and won't tell me what my ranking is in the nation, but last I checked (when the website was working) I think it said I was somewhere around better than 60% of algorithm competitors in the US...

tekboi
May 26, 2013, 02:13 PM
I believe it's like math. Everyone can do it but you need to be taught in the right way. Many people are convinced that they can't be taught math or science or programming because they haven't had the right teacher who could engage them the right way. Some people find a certain style of book is just right for them - others need to have a more conversational kind of learning experience, and still other people learn other ways.

I agree. I was taught the very basics of programming by a teacher who went out of his way to make sure I understood the basics as a college freshman. If it weren't for that one-one-one help... I don't know where I would be these days.

juliocoutinho
May 27, 2013, 10:14 AM
That's almost like saying I can't see what C can do that I can't do in Assembly language. For me, the main value of objects is in code reuse. Using objects makes code far more reusable.


I am curious... Why you can't reuse functions? Don't get me wrong... I am just trying to learn what makes Objects more suitable to do that. I can't find it!

ArtOfWarfare
May 27, 2013, 11:21 AM
I am curious... Why you can't reuse functions? Don't get me wrong... I am just trying to learn what makes Objects more suitable to do that. I can't find it!

You can absolutely do it that way, but objects exist to help group related variables and functions together. If you find yourself writing a lot of functions that all take a struct parameter and manipulate it in some way, then chances are that those functions should all become methods on an object and the members of that struct should become ivars for that same object.

Mr. Retrofire
May 27, 2013, 07:08 PM
Short answer...no you are not.

Longer answer...you are 20 years old and worried you are too old!?:eek:
I wish, i had his “problem” (and age).

jpine
May 28, 2013, 12:49 AM
I started developing iOS apps 2 years ago with zero coding experience. I turn 54 in August.

jtara
May 28, 2013, 06:30 PM
C is the language you want to learn first.

I know this won't be a popular choice, but I disagee. I think some sort of assembly or machine language is the best first choice. It will give you some understanding of what is really going-on under the hood from the git-go.

I was lucky in the regard, as the first language I learned was IBM 1620 machine code. (NOT assembly language.) I had to punch instructions onto punch cards, one instruction per card. (The IBM 1620 was a decimal - actually - BCD - machine - so the instructions were just strings of decimal digits. A simple loader program read the cards. How did the loader program get loaded? You flipped some switches on the front-panel...)

After we learned machine code, then they let us learn Fortran. (C had just been invented, and nobody had heard of it.)

This was 1971, and I was in high school - obviously very lucky to be in a high school - one of a small handfull in the country - that had a computer.

In college, again, the first language we learned was MIX - a simulated machine with a simple assembly lanaguage. Then they let us learn PL/1. (Still nobody had heard of C. At least if you were running IBM hardware.)

I think it's tremendously useful to first understand how a computer works - and then later you can better appreciate higher-level languages.

20? When I started, you had to be 30 before they'd let you near a computer. Except in a few rare places, and I was lucky enough to be in one of those places.

ArtOfWarfare
May 28, 2013, 07:08 PM
I know this won't be a popular choice, but I disagee. I think some sort of assembly or machine language is the best first choice. It will give you some understanding of what is really going-on under the hood from the git-go.

I was lucky in the regard, as the first language I learned was IBM 1620 machine code. (NOT assembly language.) I had to punch instructions onto punch cards, one instruction per card. (The IBM 1620 was a decimal - actually - BCD - machine - so the instructions were just strings of decimal digits. A simple loader program read the cards. How did the loader program get loaded? You flipped some switches on the front-panel...)

After we learned machine code, then they let us learn Fortran. (C had just been invented, and nobody had heard of it.)

This was 1971, and I was in high school - obviously very lucky to be in a high school - one of a small handfull in the country - that had a computer.

In college, again, the first language we learned was MIX - a simulated machine with a simple assembly lanaguage. Then they let us learn PL/1. (Still nobody had heard of C. At least if you were running IBM hardware.)

I think it's tremendously useful to first understand how a computer works - and then later you can better appreciate higher-level languages.

20? When I started, you had to be 30 before they'd let you near a computer. Except in a few rare places, and I was lucky enough to be in one of those places.

I learned MIPS assembly using the MARS simulator earlier this year. While I appreciate knowing it and I feel it completes my understanding of how a computer works, I think knowing assembly is only slightly more useful than knowing how to make a half adder, or a full adder, or an AND gate, or any other digital circuit, when it comes to programming.

C is actually necessary. It's the common denominator of most modern programming languages. I don't think I've ever found looking at the assembled or compiled code even remotely useful in a real, non school, programming task.

balamw
May 28, 2013, 07:30 PM
IMO ASM of some sort is most useful in the real world in embedded environments. There are plenty of situations when you need to make use of every bit of processing power your microcontroller has.

B

gwelmarten
May 29, 2013, 03:47 PM
Most people who can 'program' go a rubbish job of it - their code is utter rubbish - really inefficient etc. If you want to learn to program - not 'program', your best bet is to start of learning Python. It will teach all the basic data structures, what classes and functions are, recursion, iteration etc. You can also learn about object-orientated programming and modular programming in Python.

From there, these skills are easily transferrable to other languages like Objective-C - give it a day max before you have some kind of interactive iPhone app from scratch.

For me, I did start when I was 9 (now 19). But I didn't learn proper programming structure for my first few years. My first real language was Objective-C (other than stuff like JavaScript and PHP, which I don't really count), and I didn't find it too bad. But then I went to University this year, got forced to learn Python, as well as good programming structure. I wish I had known this stuff earlier, because it would have made the last 4 years so much easier for me.

Summary: There is no language where it is easier to pickup programming theory than Python. And best of all - it's pre-installed on Mac. Download something like TextWrangler as an editor - it's free.

Les Kern
May 29, 2013, 05:32 PM
No experience at ALL with coding.
I am 57.
Did RB, made a nice app that sold very well.
Moved to iOS with some cool ideas.
Meh.
Got bored with it, moving on.
Specialization is for insects.

So no, you are not. But don't be surprised if one day you look at it all and ask why.

Scrub175
May 29, 2013, 05:43 PM
I started developing iOS apps 2 years ago with zero coding experience. I turn 54 in August.

how did you get started?

aarond12
May 30, 2013, 08:29 AM
I'm 20 years old...
Must... stop... laughing... hahahahaha! 20 years old too old to start programming? Not even close. I'm over 40 and since turning 40 have learned 3 new programming languages. I teach programming, and frequently have students older than me.

Miguel Cunha
May 31, 2013, 08:54 AM
I'm 20 years old and feel like its too late...

Hello WitheIphone5.

I'm 40.

I'never did serious programming.
I don't have a clue of what the future will be for me in this area.

I just know this: I do want to learn programming and doing apps!

Apart from the related knowledge to this, it's all I need to know.

Best of Luck!

Ben S
May 31, 2013, 02:52 PM
I'm a programmer with 30 years experience (I started when I was 8 :-)

You do *not* want to start with C if your goal is to learn Objective-C. It will just get in your way.

You need to learn how to think methodically about problems before attempting to write anything very complex, and most iPhone apps, while they don't involve a lot of actual code, can be quite complex in how all the pieces of the frameworks go together.

I would highly recommend taking this course on Coursera.org: https://www.coursera.org/course/programdesign -- it will give you the understanding of how to write complex programs without getting hung up on the syntax of a particular language. Use what you learn in the course to bootstrap you into writing code in Objective-C, learn the fiddly bits (Objective-C has a lot of them, although they've slowly been stripping of the cruft in more recent versions of Xcode), and then move on to learning how to program using the iOS frameworks.

SnowLeopard2008
May 31, 2013, 02:57 PM
I highly recommend starting with C. If you want to be a good programmer, you need a solid foundation to build from. And C is incredibly solid. Even Objective-C requires knowledge of C. C is used pretty much everywhere and everything (not literally). Once you've got C nailed down, then shift to Objective-C.

balamw
May 31, 2013, 03:01 PM
I think the last two posts highlight that there is no "one good way" to learn objective C 2.0.

The two major books illustrate this too. Kochan takes the approach that Objective C can and should be learned as a first language. Hillegass teaches the fundamentals of C in a few pages.

The best way is the one that works for you.

B

SnowLeopard2008
May 31, 2013, 03:04 PM
I think the last two posts highlight that there is no "one good way" to learn objective C 2.0.

The two major books illustrate this too. Kochan takes the approach that Objective C can and should be learned as a first language. Hillegass teaches the fundamentals of C in a few pages.

The best way is the one that works for you.

B

Interestingly enough, I have both books. ;)

balamw
May 31, 2013, 03:05 PM
Which resonates better with you?

B

SnowLeopard2008
May 31, 2013, 03:14 PM
Which resonates better with you?

B

Both were useful for me as I was already a seasoned programmer before I learned from those books.

Starting with C is better for the long term. Almost every "popular" modern programming language is based off C in some way. And that is not likely to change anytime soon. A (somewhat) good analogy is like learning Latin roots (or Roman, Greek, etc.) instead of just one particular language. Latin roots perpetuate across many languages in the world. You can pretty much grasp the basic meanings of words in many languages without specifically learning each and every one. That doesn't mean it's enough. It just means your understanding of languages is a bit broader.

If you're just tinkering around short term, not really "serious" about programming as a career, then by all means learning whatever language you are interested in. But if you're thinking about this as a potential career or something "serious", then I highly recommend C.

balamw
May 31, 2013, 03:22 PM
Personally, for me, I found that knowing too much C was a hindrance to embracing OOP as my brain always wanted to go back to the non-OOP way of doing things.

I also recently ported some C++ code to make use of STL instead of homegrown classes and found lots of C style inefficiency in the code. (not my code, but code I have worked with for a long time.)

I agree that learning C is a necessity for anyone who intends to make a living writing code. I'm just not sure how deep one should really go before making the leap to some higher level object language.

B

juliocoutinho
May 31, 2013, 03:59 PM
A (somewhat) good analogy is like learning Latin roots (or Roman, Greek, etc.) instead of just one particular language. Latin roots perpetuate across many languages in the world. You can pretty much grasp the basic meanings of words in many languages without specifically learning each and every one.

I think this is a reason for NOT starting with C. I would never study Latin, a dead language, if I had the goal to learn any of languages still in use today.

You can reach the same level of knowledge simply by directly learning one of C "Descendants" and more directly reach your goal. For instance, I speak fluently Portuguese and Spanish. Never studied Latin, but I am able to read Italian, French, Catalan and even Romanian text without much effort.

I think a person that learns Java, for instance, would not have much problem to read C code either.

Menneisyys2
May 31, 2013, 04:13 PM
I have Zero programming/coding experience, no HTML, php, or java.

Then, I think you should go straight Obj-C.

In this thread, many recommended either Java or C first.

IMHO, you definitely NOT want to learn Java first. You wouldn't be able to use it in Mac (/iOS) programming, except for the OOP. Syntax- and logics-wise it differs a LOT from Obj-C / Cocoa - almost all major method names are different, for example (see e.g. count vs. length / size). While I do recommend Java for C# would-be programmers as those two languages (environments) are far closer to each other, with two languages this distinct, you would gain little from learning Java first as an Obj-C programmer.

C has a lot of stuff you simply won't need 99,99% of times. For example, string manipulation (strcpy etc.) belong here, whihc you won;t need in most cases. Heck, most Obj-C apps don't even need malloc() and the like. That is, while it's certainly good to know C, in your case, as a complete beginner, I wouldn't bother with it. It's rather hard to learn and understand - Obj-C is WAAAY easier to learn.

That is, start right with Obj-C. Get a beginner's book and follow its tutorials. AFTER you have a working knowledge of Obj-C should you even think of learning C so that you can also program access to libraries not having an Obj-C wrapper, but in no way the other way round. Again, do NOT start with plain C!




----------

I think this is a reason for NOT starting with C.

Indeed - many of C's unique functions isn't widely used in Mac / iOS programming. Why bother with learning them, then? It's indeed like learning Latin as a first language.

I think a person that learns Java, for instance, would not have much problem to read C code either.

I don't think so. Java is much-much easier to grasp (if one does understand OOP) and is, therefore, very hard for a Java programmer (without ever having programmed in, say, assembly) to understand what malloc(), strcpy(), strcmp(), heap vs. stack etc. is all about. This is true even with the latest Java versions where for example enums are already supported, making it possible to recognize them in C apps by a Java programmer.

Menneisyys2
May 31, 2013, 04:26 PM
Personally, for me, I found that knowing too much C was a hindrance to embracing OOP as my brain always wanted to go back to the non-OOP way of doing things.

Yup, this is a common problem.

HOWEVER! Knowing a procedural, machine- language like C indeed helps a LOT when learning OOP. Actually, this is how I teach OOP on both my Java and Obj-C (iOS) courses for people that know C.

Most OOP (including all the three major languages / classlibs I've mentioned: Java (incl. Android), Obj-C (Mac/iOS) and C# (Win)) books / tutorials are highly theoretical. What I've found is that directly saying "hey, look at how malloc()'ed structs look like on the heap! How do you think a global function could access their fields? Yes, via a pointer, typically passed as the first parameter to the global function. Why isn't there any pointer / reference passed to Obj-C / C# / Java methods, then? Because they're passed implicitly. This is how a method in Obj-C / Java / C# is translated to pseudo-machine C: <now, I show a function with a reference / pointer type as the first parameter, with the other parameters same as with the OOP original>. See? Everything you do in OOP can be emulated in C - albeit, in cases (e.g., polymorphism), in a very convoluted way" and so on - I explain polymorphism, inheritance, type compatibility during inheritance etc. similarly, explaining everything showing malloced structs on the heap. It's much-much easier to learn and understand OOP this way if one already knows for example C. No abstract "a car has wheels" or "a house has windows" crap - they're far harder to grasp.

This doesn't mean the OP should learn C as the first language, though. It's just that he should find somebody / a tutorial that explains OOP keeping the "behind-the-scenes" working in mind.

mslide
Jun 1, 2013, 12:44 PM
I'm surprised people here are equating C to latin. One is a dead language and the other is a language that is still very much in use all over the place. Kernels, device drivers, libraries, embedded applications, older applications still in active development... C is still one of the major players in those areas and always will be. You want that fancy high-level language to interface with a system library? That could mean having to write C or debug someone else's implementation. It's not going anywhere.

Plus, everything is always compared to C. Go on an interview and it's almost assumed you know C and are good with it. I'm shocked whenever I run into an interview candidate who doesn't know C well. It's a huge strike against them, even if C isn't the primary language they would be using most on the job.

robE89
Jun 1, 2013, 12:54 PM
1.But if you want to learn c++ for example, is better to go straight for c++ or start with C and progress to c++ ?

2. If someone want`s to learn web development it`s still better to learn c/c++ first for a better understanding ?

Is there any good known books for C/C++ ? (besides the c++ Stroustrup book)

ArtOfWarfare
Jun 1, 2013, 01:02 PM
If you want to learn c++ for example, is better to go straight for c++ or start with C and progress to c++ ? I would suggest learning straight C first. I feel like too many people mistake features of C as being exclusive to C++ because they didn't learn C before C++. I find the same issue with people learning Obj-C before C.

Also, according to this info graphic, in 2012/2013 C is/has been the second most common language, just after Java:

http://infostory.com/2013/05/30/the-history-of-programming-languages/

Not only is C not dead, it could be considered to be more "alive" than many of its descendants including Obj-C, C++, and C#.

chown33
Jun 1, 2013, 01:08 PM
...
Not only is C not dead, it could be considered to be more "alive" than many of its decedents including Obj-C, C++, and C#.

Apropos typo of the day!

Menneisyys2
Jun 1, 2013, 04:02 PM
1.But if you want to learn c++ for example, is better to go straight for c++ or start with C and progress to c++ ?

Definitely start with C. C++ really requires a working knowledge of C - unlike with Objective-C, where you simply don't need C to start developing 99% of the time (if you don't call functions not having an Obj-C wrapper), assuming you learn from a decent Obj-C book.

Note that I speak of starting to program as a complete newbie. For a newbie, without any knowledge of assembly, C is very hard to grasp. Objective-C, particularly if you don't want to understand reference counting at first (but use ARC all the time), is much more beginner-friendly.

After you've become proficient in Obj-C, you can (and definitely should!) learn C (and also the subtleties of Obj-C, including ref. counting). Then, you'll also be able to develop that missing 1%. This is, IMHO, the right order if one is a complete newbie. Start with the easier and only learn the harder, more complicated when you're already proficient in the former.

2. If someone want`s to learn web development it`s still better to learn c/c++ first for a better understanding ?

Definitely not. If you want to do some heavy server-side programming, learn Java (more specifically, J2EE). It's very widely used on the server side. (Let me know if you need book recommendations - as I teach J2EE, I've read all J2EE books and can compile a writeup of the strengths and weaknesses of each.)

Same stands for HTML5. For that, I don't think you should learn all the subtleties of CSS / JS separately prior to starting to read a HTML5 book. If you choose some great material to learn from and also choose some good books on Canvas (I personally recommend the book Core HTML5 Canvas by Prentice Hall), you'll learn CSS / JS alongside HTML5 programming.

Is there any good known books for C/C++ ? (besides the c++ Stroustrup book)

I don't recommend the Stroustrup book for beginners at all. It's like the C++ version of Kernighan-Ritchie C book - a great reference material / second book but in no way should be used as a first one. C-wise, go with something much easier / more verbose; for example, Oreilly's Head First C. While some of the Head First series are very shallow, I've found this book much more digestable than the Kernighan-Ritchie one. (Some of these books were so shallow that they weren't at all published after the betas; for example, the Head First Android book. While I personally enjoyed the beta of that book, it indeed discusses very little - for example, IIRC, lists aren't discussed at all. Story of the cancellation at http://support.oreilly.com/oreilly/topics/why_was_the_head_first_android_develoment_book_cancelled?utm_content=topic_link&utm_medium=email&utm_source=reply_notification , where I also talked to the O'Reilly folks.)

Note that I don't recommend Thinking in C++ either. It's just not very beginner-friendly.

gnasher729
Jun 1, 2013, 04:37 PM
Apropos typo of the day!

There is a forum rule that you shouldn't correct typos. Your post just proved that this rule is absolutely stupid. I didn't even know "decedent" was a word, now I know. And yes, it's funny :D

chown33
Jun 1, 2013, 04:47 PM
There is a forum rule that you shouldn't correct typos. Your post just proved that this rule is absolutely stupid. I didn't even know "decedent" was a word, now I know. And yes, it's funny :D

Note that I didn't actually correct the typo, I only commented on its, um, aproposity appositeness.

ArtOfWarfare
Jun 1, 2013, 04:49 PM
There is a forum rule that you shouldn't correct typos. Your post just proved that this rule is absolutely stupid. I didn't even know "decedent" was a word, now I know. And yes, it's funny :D

All thanks to my misspelling descendants, right clicking and accepting the only suggested fix without even checking that it was what I wanted, and chown picking up on it. I also didn't know the word decedent until chown mentioned it.

firewood
Jun 2, 2013, 09:11 AM
That is, while it's certainly good to know C, in your case, as a complete beginner, I wouldn't bother with it. It's rather hard to learn and understand - Obj-C is WAAAY easier to learn.

And taking the easy way out sometimes means never learning the basics of how a computer really works.

There is a lot of hard stuff in C, but one doesn't need to learn a lot of the cruft to learn more of the basics of what's really happening inside the computer when your program executes. Obj-C, C++ and especially Java can hide so much inside opaque abstractions that programmers end up clueless about what's really happening, and their questions show it.

So learn C (or assembly language!) first, even if you never use it later. You'll be able to debug stuff that leaves high-level coders mystified. And nobody writes bug free code (for real applications).

Menneisyys2
Jun 2, 2013, 10:11 AM
And taking the easy way out sometimes means never learning the basics of how a computer really works.

There is a lot of hard stuff in C, but one doesn't need to learn a lot of the cruft to learn more of the basics of what's really happening inside the computer when your program executes. Obj-C, C++ and especially Java can hide so much inside opaque abstractions that programmers end up clueless about what's really happening, and their questions show it.

So learn C (or assembly language!) first, even if you never use it later. You'll be able to debug stuff that leaves high-level coders mystified. And nobody writes bug free code (for real applications).

1, I do agree C must be learnt sometime in the OP's carreer. This is what I've stated in my prev posts too.

2, I, however, do NOT agree it should be the first language to learn. He's a complete newbie. He'll just get frustrated - C just isn't ideal for newbies. By learning Obj-C first, he can avoid frustration and can get productive VERY fast by writing apps don't needing a single C system call (many apps - mostly non-games - don't need to call library functions not having Obj-C wrappers). For example, I maintain a large iOS offline mapping and offline routing app with dozens of classes and XIB's. I only needed to use for example malloc() and, for example, unsigned char* in three or four cryptography-related classes to encode offline media / map resources from hackers / people want to reuse them without permission. Everything else could simply be done in simple Obj-C and Cocoa Touch. That is, the OP may not need to know the intricacies of C even in large projects - he can safely start with Obj-C and only learn C later.

(Games are, of course, an entirely different question.)

firewood
Jun 2, 2013, 12:11 PM
C just isn't ideal for newbies. By learning Obj-C first, he can ...

...become lazy, and never learn how a program really works.

C isn't for newbies, but little else current is. Basic and Logo are near obsolete, and there's nothing on Squeak for adults. No one designs programming languages for newbies any more. Almost everything else is designed for advanced programmers, not newbies.

ArtOfWarfare
Jun 2, 2013, 12:53 PM
...become lazy, and never learn how a program really works.

C isn't for newbies, but little else current is. Basic and Logo are near obsolete, and there's nothing on Squeak for adults. No one designs programming languages for newbies any more. Almost everything else is designed for advanced programmers, not newbies.

I disagree. C is absolutely for "newbies". In the information age, you can Google any question about C, or any other common language, and find your answers and documentation. Languages stopped being designed for "newbies" because the internet came along and made learning stuff by looking it up a lot easier.

Things not for "newbies" in the information age is the cutting edge, where the documentation hasn't yet caught up with the technology because it's moving too fast.

Learn C the Hard Way makes you get your nose out of the book, hit the internet, and learn stuff on your own. That's what makes it "the hard way" - it gives you enough discussion and keywords so that you have some idea of what you should be googling for to be able to complete the projects. "The easy way" would be "copy all of this code. See that it works when you do it right?" - that's great, you did it with minimal effort, but no real project will ever be like that, and all that you learned was what was in one book (which will rarely be comprehensive.)

firewood
Jun 2, 2013, 01:45 PM
.. but no real project will ever be like that ...

The vast majority of people will never need to code a "real project".

But I'm of the school that believes that every kid should learn to program. Turtle graphics and Alice games are tons more fun for kids than "real projects". There used to be a programming robot game for Macs that taught the majority of assembly language concepts. C allows learning some of the same stuff but in a far more boring manner.

There are even useful iOS apps in the App store that involve little to no "real project" advanced skills.

chown33
Jun 2, 2013, 02:02 PM
There used to be a programming robot game for Macs that taught the majority of assembly language concepts.

ChipWits (http://en.wikipedia.org/wiki/ChipWits)?

ArtOfWarfare
Jun 2, 2013, 02:11 PM
The vast majority of people will never need to code a "real project".

But I'm of the school that believes that every kid should learn to program. Turtle graphics and Alice games are tons more fun for kids than "real projects". There used to be a programming robot game for Macs that taught the majority of assembly language concepts. C allows learning some of the same stuff but in a far more boring manner.

There are even useful iOS apps in the App store that involve little to no "real project" advanced skills.

Absolutely every kid should learn to program. When I'm finished with my degree in University in a few years I'm hoping to teach a class at my local high school on programming.

I suspect where our views differ is with what a "real project" is. If you can't go online and find a tutorial doing everything exactly the way you want, it's a "real project". You will be contributing to the world by producing something new that didn't exist before. If you can go online and find a tutorial doing everything exactly the way you want, then it's not a real project because all you'll be doing is duplicating someone else's work. It's of some educational value for you, but isn't really valuable in any other way.

Menneisyys2
Jun 2, 2013, 03:50 PM
The vast majority of people will never need to code a "real project".

But I'm of the school that believes that every kid should learn to program. Turtle graphics and Alice games are tons more fun for kids than "real projects". There used to be a programming robot game for Macs that taught the majority of assembly language concepts. C allows learning some of the same stuff but in a far more boring manner.

Yup. In learning to program, it's absolutely essential a complete newbie has success right at the beginning not to discourage him or her. It's like learning foreign languages: you can make a kid hate learning all languages by forcing him to learn a very hard one as the first ever foreign language. Exactly the opposite is true if you do the other way around: make him study a language that makes him able to express his thoughts as early as possible, without having to learn tons of grammatical rules (e.g., conjugation; gender-dependent declension of nouns and adjectives etc. - a typical example is German.)

It's far-far easier to have almost instant success with a comparatively easy language. This is why I've told the OP, who is also a newbie, to learn something easy and instant-success first.


There are even useful iOS apps in the App store that involve little to no "real project" advanced skills.

Agreed. For a LOT of, typically non-gaming, solutions (sometimes even large ones), you simply don't need C-specific knowledge. There are object wrappers for most of the functionality in both the Mac and iOS API.

balamw
Jun 4, 2013, 07:58 AM
I'd start with an easier programming language (Python or Scratch for kids seems to be more in vogue than Basic or Logo these days).

FWIW Several Python, Scratch, Ruby and C++ books designed for newbies are on sale today at OReilly.

http://forums.macrumors.com/showpost.php?p=17350132&postcount=104

http://shop.oreilly.com/category/deals/learn-programming.do?code=DEAL

B

beautifulcoder
Jun 5, 2013, 12:52 PM
I didn't get a chance to go through all the posts so sorry if this has already been suggested.

As everyone says, 20 is not old!

I highly recommend you study Ruby on Rails. It'll teach you HTML/CSS/JavaScript which are quintessential for HTML5. This tutorial should get you started. You can pick it up from there by adding more pizzas to the app on your own.

http://guides.rubyonrails.org/getting_started.html

There are also a TON of Java web frameworks out there. Apache Struts so far is my personal favorite although I haven't tried Play which is promising. If your goal is to land a job in the industry this is a great place to start.

http://en.wikipedia.org/wiki/Comparison_of_web_application_frameworks#Java

Finally, all these frameworks are based on the MVC pattern which is derived from Cocoa UI development. Simply learning one of these will teach what good Object Oriented Programming is all about. Especially in Ruby.

firewood
Jun 5, 2013, 10:12 PM
A lot of kids learned to program in Basic on an Apple II before they ever took an algebra course.

If you want to code graphics apps, learning some geometry will help.

keysofanxiety
Jun 6, 2013, 11:48 AM
I was offered a job as a junior dev with the intention of the company "brining me up to scratch" on iOS development and I just couldn't say no.

That chapter of my life starts next week and I cannot wait. :cool:

Just want to pass on my congratulations. Really hope it goes well for you. :)

Tander
Jun 7, 2013, 01:06 AM
Just want to pass on my congratulations. Really hope it goes well for you. :)

Thank you.

It's been a tough three weeks though but so far so good! :D