Learning a new coding language? (need help)

FauxFox

Honorable
Jul 17, 2013
6
0
10,510
0
Hello fellow forum members! I am a 13 year old boy, and I want to learn code.

I had a friend's parent recommend Scratch to "Get my mind thinking about how code works" Well...I can surely say that after about a week of screwing around with Scratch, I understand it well. :)

My ultimate goal is to learn Objective-C (I want to code on OSX to make iOS apps...).

Currently, this is the order of languages I think I should learn.

1) Python

2) C

3) Objective-C

Sound good?

I was also wondering if it would be better just to skip C and move to objective C (assuming I have Python "down pat"). I heard people have done this, but I am afraid I will miss a lot of the basic fundamentals of C (although I know I will end up incorporating them into Ob-C anyways...).

What should I do?
Any learning tips?
 

Pinhedd

Distinguished
Moderator


It's the other way around.

Higher level interpreted languages such as Python, Perl, C#, Java, and ECMAScript (ActionScript, JScript, JavaScript) have lots of different types of abstraction which make it easier to write programs without giving a damn about the underlying hardware. They're great languages to use for hammering something out quickly and adding portability, but at the cost of efficiency and learning potential.

C, C++, and Objective-C require the programmer to learn from their mistakes and really study the effects of what they are doing. In C it's much easier to study how each line of program code relates to specific machine instructions. Python may eliminate 90% of the boilerplate code found in most C programs, but its that repetitive boillerplate code that will teach you the most. Once you're comfortable writing a program in 100 lines of C code, you can go ahead and figure out how to do it in 20 lines using Python.

The mistake that many amateur programmers make is assuming that those 80 lines disappear. They don't, they're just abstracted away through the framework and standard library. They're still there in one form or another. However, if you don't write them and study them, you won't learn anything from them.

C will teach you good coding habits, mainly because it will punish you viciously if you don't use them.
 

Pinhedd

Distinguished
Moderator


Learn C (or a teaching language such as Pascal or Turing) and master it before you touch anything else.

C is a hard language to learn but it's very mechanical and structured. It has a very close relationship to machine code so it's by far the best way to learn how to program in a spacial and temporal efficient manner.
 
Aug 6, 2013
2
0
10,510
0


 
FauxFox,

First - congratulations on your decision to do learn!

Second - Python will be fine, but I would probably first as a first language something more casual, like C# (I would say even Pascal / Delphi but that's too much to ask for these days).

Jumping onto C too soon will damage your young brain way too soon ;)

I am no Apple fan, and not a specialist on Objective-C, but I am sure having good OO base from C# will help you embrace this.
 
Aug 6, 2013
2
0
10,510
0
You are young, so learning well a bit of programming is more important than learning one specific language.

(I could nearly be your grandfather - my oldest grandson is 10 - and I learned, at age of 14, PL/1 in 1974 on punched cards).

I suggest learning Scheme - e.g. with http://mitpress.mit.edu/sicp/ as book, and DrScheme as implementation, and also some more functional language like Ocaml or Haskell. Then learn Python and/or Javascript. Put C, C++ or objective C after that list.

Learning several programming languages will teach you how to think better about code.

BTW, please install Linux and take the habit of looking inside free software (e.g. study some of its code).

Regards

Basile Starynkevitch --- http://starynkevitch.net/Basile/
 

Ijack

Distinguished
If you want to program for iOS, and you have access to a Mac, then the obvious answer is to start with Objective-C. It's a powerful, but fairly simple, language with less frills than - for example - C# or C++ to distract you from the basics.

If we are going to talk about the less mainstream languages and you want something that will give you a good grounding for Objective-C then Smalltalk is ideal.
 

FauxFox

Honorable
Jul 17, 2013
6
0
10,510
0
Hey guys! So far, none of you have seemed to really give me a solid answer besides Pinhedd (thnx btw)...

When I say a starting language, I mean something slightly more versatile and widely known (Python was my idea)...

So again, does anyone disagree with the following learning path?

1) Python
2) C
3) Objective-C?

I am a smart person, but I am afraid that if I just went straight into Ob-C, I would get lost and give up...?

Python seems like a good introduction to coding, and I think C will lay down the fundamentals for me.

Anyone agree or disagree? Please say "yay" or "nay" (just kidding, use words :p)
 

Ijack

Distinguished
I think there's a danger that you are confusing the syntax of particular languages with other aspects of programming. Learning Python and C will give you no insight into iOS programming and won't make it any easier to learn Objective-C.
 

FauxFox

Honorable
Jul 17, 2013
6
0
10,510
0


Interesting...My thoughts were that Python would get my mind into the "coding habit" like I would learn some codec (so to speak)... And I thought learning C would give me some basic fundamentals to learn Ob-C?

Am I wrong here?

 

Pinhedd

Distinguished
Moderator


It's the other way around.

Higher level interpreted languages such as Python, Perl, C#, Java, and ECMAScript (ActionScript, JScript, JavaScript) have lots of different types of abstraction which make it easier to write programs without giving a damn about the underlying hardware. They're great languages to use for hammering something out quickly and adding portability, but at the cost of efficiency and learning potential.

C, C++, and Objective-C require the programmer to learn from their mistakes and really study the effects of what they are doing. In C it's much easier to study how each line of program code relates to specific machine instructions. Python may eliminate 90% of the boilerplate code found in most C programs, but its that repetitive boillerplate code that will teach you the most. Once you're comfortable writing a program in 100 lines of C code, you can go ahead and figure out how to do it in 20 lines using Python.

The mistake that many amateur programmers make is assuming that those 80 lines disappear. They don't, they're just abstracted away through the framework and standard library. They're still there in one form or another. However, if you don't write them and study them, you won't learn anything from them.

C will teach you good coding habits, mainly because it will punish you viciously if you don't use them.
 

Ijack

Distinguished
Objective-C is so close to C (it's just a superset of it) that you could learn both at the same time. The advantage of going straight to Objective-C is that it gets you going with classes, methods, etc. from the start (but in a very simple fashion). The only disadvantage is that you really need a Mac; the advantage is that you then have a superb development environment in XCode.
 
Thread starter Similar threads Forum Replies Date
H Apps General Discussion 1
T Apps General Discussion 8
T Apps General Discussion 5
A Apps General Discussion 4
J Apps General Discussion 6
S Apps General Discussion 2
arpitsri Apps General Discussion 3
A Apps General Discussion 11
R Apps General Discussion 1
syssoft Apps General Discussion 1
A Apps General Discussion 2
C Apps General Discussion 9
A Apps General Discussion 2
L Apps General Discussion 1
C Apps General Discussion 6
U Apps General Discussion 9
U Apps General Discussion 12
K Apps General Discussion 3
C Apps General Discussion 4
W Apps General Discussion 11

ASK THE COMMUNITY