Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

I'm a Mac

macrumors 6502
Original poster
Nov 5, 2007
436
0
I have been (slowly)- not because I don't get it, just because I don't have that much time to put into it- trying to teach myself to program for the Mac (and iPhone, eventually) with Kochan's book and Hillegasses' book. The first time I looked at Hillegasses' book (before reading Kochan's) I was like huh? so I put the book down and started reading Kochan's book. After reading Kochan's book (or most of it, I didn't go into the very last advanced parts), Hillegasse's book began to make some sense to me. I understood the exercises, and was able to do the challenges by looking back into the examples in the chapter- and although I wasn't able to do all the methods by memorization- I guess I should give myself some credit for being able to do the challenges, right? The only thing that worries me is that I don't really have all the methods memorized yet- I wouldn't really consider myself "fluent" in objective-C. Do you think that my way of learning is flawed or I should keep doing what I'm doing and it will come naturally? What were your experiences like?
 

wrldwzrd89

macrumors G5
Jun 6, 2003
12,110
77
Solon, OH
Gosh, it's been 20 long years since I first taught myself how to program in AppleBASIC on the Apple IIgs. My first 3 programs were variations on a theme: guess the randomly generated number. From 1 to 100, 1 to 1000, and 1 to 1,000,000. I found the whole process quite enjoyable.
 

firestarter

macrumors 603
Dec 31, 2002
5,506
227
Green and pleasant land
I taught myself BBC BASIC and assembly language about 25 years ago...

Things were a lot more simple back then, because there weren't as many libraries to do stuff for you - so you ended up learning things from first principles (like how to multiply using add and shift!). It was probably an easier / shallower learning curve, and also probably a better introduction with more first principles stuff.

I think your job is harder.
 

Cromulent

macrumors 604
Oct 2, 2006
6,817
1,102
The Land of Hope and Glory
I started with C about a year and half ago roughly. It took a while to click but once it did I shot forward on all fronts really. Now learning new languages seems so much easier and not something that I worry about doing.
 

lee1210

macrumors 68040
Jan 10, 2005
3,182
3
Dallas, TX
Like warm apple pie...
Sorry, I couldn't resist.

The first actual programming language I learned (did some non-Turing-complete display stuff like HTML previously) was C++ in AP Computer Science during my senior year in high school. The programming portion was so-so, but the computer science/computer math portions were what really got me interested. I did get interested in C++, but wasn't as astute then, so I wasn't able to get my home machine setup for compiling. This definitely stunted my progress.

After high school I dove headlong into windows administration, so the programming I was doing was in support of those tasks. This was mostly scripts in vbscript via WSH. I also did some ASP programming to expose an Access database via the browser.

I eventually began pursuing a bachelor's degree in CS, which dramatically increased my programming skills in Java, C, Haskell and others.

I honestly didn't really get comfortable programming until I started doing it professionally. I have gotten very comfortable with C, Java, Fortran, Perl, Javascript, shell, and others.

I would honestly say the language is less important than the concepts. Most new languages just require learning the basic constructs and syntax for performing the tasks you already understand.

-Lee
 

firewood

macrumors G3
Jul 29, 2003
8,141
1,384
Silicon Valley
I learned a small amount of Fortran, assembly language, and state-machine design in college. But is wasn't until I started writing bigger and bigger programs, first in Basic, and then in C, that I started understanding all the language details, algorithms, data structures, tools, and etc. that are required to really develop software professionally.

In my opinion, with programming, doing is more important than reading (although the latter is important in keeping one from learning counterproductive habits).

I do not suggest learning Objective C as a first language. Pick a simpler, even an interpretive language (Squeak?) first, and wait until you know its limitations.

.
 

Aea

macrumors 6502a
May 23, 2007
838
208
Denver, Colorado
Not sure I agree with that. C is still an abstraction and does not really explain how anything works at the hardware level.

I think C is more then good enough as a first language. I don't think knowing "what happens at the hardware level" is really as important as understanding the basics of what occurs and what programming methods you must use to keep things running smoothly, the biggest one will be memory management which learning in C will definitely help with.

Objective-C is a bit of a chore to get started with even if you're already programming, without C knowledge it would be pretty damn difficult.
 

Cromulent

macrumors 604
Oct 2, 2006
6,817
1,102
The Land of Hope and Glory
I think C is more then good enough as a first language. I don't think knowing "what happens at the hardware level" is really as important as understanding the basics of what occurs and what programming methods you must use to keep things running smoothly, the biggest one will be memory management which learning in C will definitely help with.

Objective-C is a bit of a chore to get started with even if you're already programming, without C knowledge it would be pretty damn difficult.

Oh I wasn't arguing against C as a first language I was just responding to the part where he said C "gives you a really good idea of the way things really work".
 

firestarter

macrumors 603
Dec 31, 2002
5,506
227
Green and pleasant land
Not sure I agree with that. C is still an abstraction and does not really explain how anything works at the hardware level.

Do you think so?

C really has a pretty limited set of commands/instructions, and each one could be immediately rewritten as only a couple of assembler instructions. Sure, when you start using libraries (and especially variable parameter list functions such as printf) you're protected a bit from some more gnarly stack handling, but it's still pretty close to the metal.

I think object-orientedness is the abstractions that does get you further from the hardware and break that link in understanding. Of course, I started off as an (electronic) engineer - and I think that hardware knowledge is a good thing. My software engineer friends would treat my attitude with horror and encourage a starter language that's further from the machine and closer to the problem (anyone still using smalltalk?)

I can't actually think of any 'high level' language that's closer to the metal than C.
 

jodelli

macrumors 65816
Jan 6, 2008
1,219
4
Windsor, ON, Canada
It was hours and hours of entering bits of code from a Basic primer, then entering other peoples' programs and debugging, then changing parts of that code to customize it or make the program do more, sometimes paring code, then finally writing my own programs.
Did this first with interpreted basic, then later compiled basic. It was the most fun when things were starting to work as you wanted them to.

Edit: Fellow oldsters will remember having to write your own programs to get early computers to do anything useful, or even useless. It's not unlike today writing apps for the iPhone.
 

Spadeychops

macrumors newbie
Jan 3, 2009
10
0
My first programming language was COBOL and like you I kept dropping in and out and just didn't get it.

Then I purchased a book (which I still have to this day) and read it from cover to cover. Copied out all the lines of code, did the tests and the exerises from the book. Then it all just started to fall into place.

I now find when ever I'm learning a new language, the best method is to create or identify a little problem you wish to solve. Can be really simple, like verifying a noughts and crosses game (not a noughts and crosses simulator), just verify that the move is valid.....

then once you solve that, just keep adding to the complexity until you have a working solution. As you progress, I often find I have done things that although work, could be more efficient or coded in a slicker fashion, so I keep plugging away re-writting and adding to it.

During the summer holidays while I was at school, I ended up writting the board game monopoly that could be played over the school network all in COBOL with saved games. This contained all the basic skills I picked up from the book and are common to all languages, like condition statements, loops, file handling etc.

I now have experience of C, C#, ASP, Java, VB, VBA and of course COBOL which is still my favourite language!
 

dmkmil

macrumors newbie
Nov 21, 2008
5
0
Athens - Greece
I have been (slowly)- not because I don't get it, just because I don't have that much time to put into it- trying to teach myself to program for the Mac (and iPhone, eventually) with Kochan's book and Hillegasses' book. The first time I looked at Hillegasses' book (before reading Kochan's) I was like huh? so I put the book down and started reading Kochan's book. After reading Kochan's book (or most of it, I didn't go into the very last advanced parts), Hillegasse's book began to make some sense to me. I understood the exercises, and was able to do the challenges by looking back into the examples in the chapter- and although I wasn't able to do all the methods by memorization- I guess I should give myself some credit for being able to do the challenges, right? The only thing that worries me is that I don't really have all the methods memorized yet- I wouldn't really consider myself "fluent" in objective-C. Do you think that my way of learning is flawed or I should keep doing what I'm doing and it will come naturally? What were your experiences like?

I started with Pascal some 22 years ago and ended up with C my programming carrier.

Programming has a steep learning curve so stick with it and you will gradually see results.

I would recommend two thinks
a) to study other's people code as well. It is a very good exercise
b) do a joint project with more experienced programmers.

Good Luck

Dimitris
 

Spadeychops

macrumors newbie
Jan 3, 2009
10
0
You don't often see that written :).

We still use it at work believe it or not!! (A financial bank here in the UK). A lot of our core mainframe stuff uses it, although I actually work on the front office teller stuff that is also written in it.

Sadly it's days are now numbered as they are all moving over to a SAP platform in the coming years.

Brilliant language to learn on for learning the programming principles before getting lost in the bells and whistles of modern languages. ;)
 

dieseltwitch

macrumors regular
Jan 24, 2008
142
0
Im just now learning Java.... taking online classes at VTC.com not to bad.
its nice to be able to rewind the instructor! cant do that in a class.

I learned Basic back about 10 years ago in high school math class when i got bored and started programing on my TI-82 lol

I have to say that this is racking my brain silly. the best way i found to learn is to watch the course listen closely and then try to use what was taught in a different way. this insures that I understand what is going on.
 

I'm a Mac

macrumors 6502
Original poster
Nov 5, 2007
436
0
I think C is more then good enough as a first language. I don't think knowing "what happens at the hardware level" is really as important as understanding the basics of what occurs and what programming methods you must use to keep things running smoothly, the biggest one will be memory management which learning in C will definitely help with.

Objective-C is a bit of a chore to get started with even if you're already programming, without C knowledge it would be pretty damn difficult.

Kochan's book was designed to teach a beginner objective-c without teaching C itself, although it did teach some basic C concepts (It did start with printf, I think). I actually don't think that objective-c is that difficult, and because it's my first language, I find it a very natural language and it makes a lot of sense- the only thing that is that I don't really have many things memorized, I just understand the concepts and the syntax. So, let's say I wanted a hamburger, and I had to order in objective c, it would be something like
Code:
-getHamburger(id)sender
[self driveToRestauant @"burgerPlace]
[self findOpenTable]
etc......
 

hoangluong

macrumors member
Jan 12, 2009
37
0
Sydney, Australia
Hi, I'm a finance student and I'm learning C as the first language. I just want to understand basic things in programming applied to the field of finance.

My question is, which next language should I move onto after C so that I can make use of it in the field of finance (at least get a basic grasp of what they're doing in the finance-related applications... so to speak). And also, I'm using Mac and I want to do things on it. So does it affect the choice of such next language?

Thanks for your time and patience.
 

wrldwzrd89

macrumors G5
Jun 6, 2003
12,110
77
Solon, OH
Hi, I'm a finance student and I'm learning C as the first language. I just want to understand basic things in programming applied to the field of finance.

My question is, which next language should I move onto after C so that I can make use of it in the field of finance (at least get a basic grasp of what they're doing in the finance-related applications... so to speak). And also, I'm using Mac and I want to do things on it. So does it affect the choice of such next language?

Thanks for your time and patience.
Hello hoangluong. If you have an Intel Mac and a Windows install handy, then language choice is less of an issue - if this applies to you add C# to the list of languages to learn, as it's used quite a bit in the business world. Definitely learn Java. It's used in business a lot too. After that... Python's another good choice, because it's so versatile and often used for creating test suites. C++ is entirely optional, but knowing it will make learning Java easier, if you learn it before Java like I did.
 

hoangluong

macrumors member
Jan 12, 2009
37
0
Sydney, Australia
Hello hoangluong. If you have an Intel Mac and a Windows install handy, then language choice is less of an issue - if this applies to you add C# to the list of languages to learn, as it's used quite a bit in the business world. Definitely learn Java. It's used in business a lot too. After that... Python's another good choice, because it's so versatile and often used for creating test suites. C++ is entirely optional, but knowing it will make learning Java easier, if you learn it before Java like I did.

Hello wrldwzrd89, thanks for your help!
 

deputy_doofy

macrumors 65816
Sep 11, 2002
1,467
410
I started out programming in C64 BASIC. Then I took Pascal early on in college and was very resistant to the whole "declare variables" concept, and giving them real names. And... what's a pointer... and why?

Fast forward about 6 years and I "reset" my thinking and started over with C++. NOW, I love pointers and hate it when languages won't let me use them. A lot of languages automatically dereference the pointer automatically (I believe Java is a good example of that).
 

Columbo X

macrumors member
Jun 10, 2007
62
0
UK
My first language was BASIC on the Sinclair ZX Spectrum.

Before that, I remember back in the mid-80s when magazines would publish example programs - sometimes even as hex code. My brother and I would type these in, not having a clue what was going on and hope they'd just work.

I then got into Z80 assembler before settling on C and aside from a few other languages I've pretty much stayed there, taking on C++ and Objective-C along the way.

The one thing that drove me early on was that there were programs (mainly games) I wanted to implement - programming was much more than just an exercise in school. So I put the hours in. And as firewood quite rightly points out, it's the doing that helps you learn.

I think you should certainly give yourself credit for first sitting down to learn this stuff as well as completing the examples. But I think understanding what is happening and understanding how a problem might be broken down and implemented is more important than memorising method calls or libraries.

Good luck and have fun!
 

sushi

Moderator emeritus
Jul 19, 2002
15,639
3
キャンプスワ&#
Started with Fortan IV on mainframes many years ago.

Then went into assembly and over the years many other languages.

I would suggest that the first language you learn is always the hardest because you are learning both the language and the concepts.

I would honestly say the language is less important than the concepts.
Agree with this.

If you know and understand the concepts, you can more easily learn a new language.
 

saginaw66

macrumors newbie
May 7, 2003
4
0
First languages: MICROSOFT BASIC 1.0 (TRS-80 LEVEL II) AND TRS-80 LEVEL I BASIC. The Level II was created by BILL GATES personally, when Microsoft had exactly 2 employees. SUPERB programming language by the way. At that time I had many pieces of software from the hand of Bill Gates, and I will tell they were all stellar bits of programming.



Started with Fortan IV on mainframes many years ago.

Then went into assembly and over the years many other languages.

I would suggest that the first language you learn is always the hardest because you are learning both the language and the concepts.


Agree with this.

If you know and understand the concepts, you can more easily learn a new language.
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.