PDA

View Full Version : What are the best learning practices to learn programming?




DavidBlack
Jul 22, 2013, 12:14 PM
Hi I am learning Objective - C from this book I bought on Amazon Programming in Objective-C (5th Edition) by Stephen G. Kochan. And I have been trying to learn Objective - C on my own I have reached chapter 3 on Classes, Objects and Methods I think I am learning a lot. But I am just wondering if there is anything extra I can do to learn it more efficiently and get a better understanding of Objective -C. I am willing to learn and I am trying to do a exercise everyday. But I was wondering for you guys out there, how did you start and how long did it take? Also what do you recommend me to do to learn the language more efficiently. Thanks your help in advance :)



firewood
Jul 22, 2013, 12:42 PM
Practice coding. Practice coding. Nothing beats actually writing lines of code to solve some relevant problem, and making it work.

Practice on small problems or exercises, stuff that is hard enough it takes more than a few minutes, but easy enough that it takes less than a few days. If you can't do that after reading the first very few chapters, then the book isn't that conducive to learning programming.

Even advanced programmers do this when learning new tools, APIs or solution areas.

robvas
Jul 22, 2013, 12:53 PM
Work and code with others. See how other people write code and think. Ask them to review your code.

You don't want to get too far down the road and figure out you're going the wrong way.

MegamanX
Jul 22, 2013, 12:56 PM
Are you learning how to program or are you just adding a new language under your belt.

If it is the former then I would like to point out that a programming language is really nothing more than syntax in the end. Or at least that is how it has become to me after getting 4 or 5 languages now under my belt. Each one has its own advantages and draw backs. Since you already started I would strongly recommend after you are done to go learn another one as well. You will find it is pretty easy to pick up a 2nd or a 3rd plus its starts helping out as you start learning the right questions to ask and search for to do different things.

Starfia
Jul 22, 2013, 12:59 PM
I really recommend Stanford's "Coding Together" course on iTunes U; it's very helpful to hear a teacher talk through the rationale behind the language's main building blocks. Apple's own tutorials and documentation on Objective-C are also definitive and thorough.

DavidBlack
Jul 22, 2013, 01:03 PM
Are you learning how to program or are you just adding a new language under your belt.

If it is the former then I would like to point out that a programming language is really nothing more than syntax in the end. Or at least that is how it has become to me after getting 4 or 5 languages now under my belt. Each one has its own advantages and draw backs. Since you already started I would strongly recommend after you are done to go learn another one as well. You will find it is pretty easy to pick up a 2nd or a 3rd plus its starts helping out as you start learning the right questions to ask and search for to do different things.

Thanks for the advice, this is my first programming language also what language did you start with?

MegamanX
Jul 22, 2013, 01:17 PM
Thanks for the advice, this is my first programming language also what language did you start with?

The first major I learned was Java.
But before that I had the done Turbo Pasca in HS but then it was a little VB.net.

I had a basic understanding of things like arrays and methods before I did java but really java is what I truly learned first.

DavidBlack
Jul 22, 2013, 02:58 PM
The first major I learned was Java.
But before that I had the done Turbo Pasca in HS but then it was a little VB.net.

I had a basic understanding of things like arrays and methods before I did java but really java is what I truly learned first.

What language do you suggest I start with?

PatrickCocoa
Jul 22, 2013, 03:06 PM
What language do you suggest I start with?

I'll pop back in once the reply count hits 100.

At that point there will be 100 replies and 101 suggested starting languages.

MegamanX
Jul 22, 2013, 03:43 PM
What language do you suggest I start with?

As you have already started with Object C you might as well stick with it. Just when you are done pick up another one.

Hell as odd as it sounds even if you started with Java my advice would be teh same. After you gotten a good understanding of it go learn another. It helps seeing the + and - of different languages.

Object C would never be the first one I would recommend because it has some things about it that make it a little harder to understand.

ArtOfWarfare
Jul 22, 2013, 05:30 PM
I'll pop back in once the reply count hits 100.

At that point there will be 100 replies and 101 suggested starting languages.

I disagree. The following languages will be suggested by several people:

C
Obj-C
Python
Java

A handful of people will suggest another ~5 languages (LOGO, BASIC, JS, C++, Scratch) but they'll be outliers.

Personally, I learned C first and I feel like it's the best. Some people point out how complex it can be but... IDK, I've not yet found a language that struck me as both less complex and as (or more) capable.

robvas
Jul 22, 2013, 07:31 PM
If we're suggesting first languages, I'd pick JavaScript (Not Java, big difference) or Python :)

DavidBlack
Jul 22, 2013, 08:05 PM
I disagree. The following languages will be suggested by several people:

C
Obj-C
Python
Java

A handful of people will suggest another ~5 languages (LOGO, BASIC, JS, C++, Scratch) but they'll be outliers.

Personally, I learned C first and I feel like it's the best. Some people point out how complex it can be but... IDK, I've not yet found a language that struck me as both less complex and as (or more) capable.
Thanks for the info, can you provide books and or resources to learning C. But since I have already started with Objective - C I think I will stick with it. How long do you think I will before I learn it?

iphonedude2008
Jul 22, 2013, 08:28 PM
Thanks for the info, can you provide books and or resources to learning C. But since I have already started with Objective - C I think I will stick with it. How long do you think I will before I learn it?

About 3 months until you understand it. Then 3 months of practice to start learning what to use for various tasks. 3 months of mastering various tasks. A lot of people are going to tell me that I'm wrong and its 3 years, but honestly, if you dedicate yourself to it and ask the right questions, you'll learn it as quick as I did.

After you finish that book and if you want to learn iPhone programming, I recommend Programming iOS 6 (or 7 if it comes out then) by Matt Neuburg.

ArtOfWarfare
Jul 23, 2013, 05:15 AM
Thanks for the info, can you provide books and or resources to learning C. But since I have already started with Objective - C I think I will stick with it. How long do you think I will before I learn it?

Learn C the Hard Way is a free ebook I endorse.

As for the learning period... I'd say that by far the biggest thing to learn is APIs. I doubt many people are familiar with all of them, particularly because Apple adds a huge amount of them on an annual basis. Languages are easy. The first one takes maybe 4 months, the second 2 months, third third 1 month, the fourth 2 weeks, the fifth 1 week, and beyond that they take 2-3 days. Most languages are designed by people who think the same ways and they just recombine existing features in new ways and throw in one or two unique things. Once you know a few, picking up more is trivial because you're not going to find much new stuff.

DavidBlack
Jul 23, 2013, 07:22 AM
Learn C the Hard Way is a free ebook I endorse.

As for the learning period... I'd say that by far the biggest thing to learn is APIs. I doubt many people are familiar with all of them, particularly because Apple adds a huge amount of them on an annual basis. Languages are easy. The first one takes maybe 4 months, the second 2 months, third third 1 month, the fourth 2 weeks, the fifth 1 week, and beyond that they take 2-3 days. Most languages are designed by people who think the same ways and they just recombine existing features in new ways and throw in one or two unique things. Once you know a few, picking up more is trivial because you're not going to find much new stuff.

Thats sounds great but since C is a procedural programming language and Objective - C is object oriented. Won't that make it harder for me to pick up Objective -C? I am just wondering.

----------

About 3 months until you understand it. Then 3 months of practice to start learning what to use for various tasks. 3 months of mastering various tasks. A lot of people are going to tell me that I'm wrong and its 3 years, but honestly, if you dedicate yourself to it and ask the right questions, you'll learn it as quick as I did.

After you finish that book and if you want to learn iPhone programming, I recommend Programming iOS 6 (or 7 if it comes out then) by Matt Neuburg.

3 years to learn programming I will be 18 by then :)

robvas
Jul 23, 2013, 08:04 AM
Biggest tip: Less message boards, more programming.

firewood
Jul 23, 2013, 11:01 AM
The best learn-to-program books for complete non-programmers seem to be on Python, Javascript and maybe Java. Also kids books on Scratch, Squeak, and Alice. Out-of-print books on Basic and Logo. The authors of C/C++ and Objective C books appear to have never taught an beginning programming class for high school A.P. or incoming freshman history/english/art/etc. majors (e.g. typical *real* people, not math-nerds/nerd-wannabe's).

Most people never learn to code. Many flunk out trying. Why make it any harder to get started than you possibly have to?

Stanford's iOS programming class has 3 quarters worth of beginning programming classes as a pre-requisite. I do not recommend starting out that high. I do recommend learning C as your 2nd or 3rd programming language.

iphonedude2008
Jul 23, 2013, 12:47 PM
The best learn-to-program books for complete non-programmers seem to be on Python, Javascript and maybe Java. Also kids books on Scratch, Squeak, and Alice. Out-of-print books on Basic and Logo. The authors of C/C++ and Objective C books appear to have never taught an beginning programming class for high school A.P. or incoming freshman history/english/art/etc. majors (e.g. typical *real* people, not math-nerds/nerd-wannabe's).

Most people never learn to code. Many flunk out trying. Why make it any harder to get started than you possibly have to?

Stanford's iOS programming class has 3 quarters worth of beginning programming classes as a pre-requisite. I do not recommend starting out that high. I do recommend learning C as your 2nd or 3rd programming language.

I learned C as a first language and went to Objective C after that with the same book the OP is using. After 9 month, I am now making apps as a freelancer. And I am 14. You don't need to learn those other languages first because what will be most helpful toward your end goal is C. All C code is valid in Obj C because it is a perfect subset of C. The same can not be said for the other mentioned languages.

DavidBlack
Jul 23, 2013, 03:35 PM
I learned C as a first language and went to Objective C after that with the same book the OP is using. After 9 month, I am now making apps as a freelancer. And I am 14. You don't need to learn those other languages first because what will be most helpful toward your end goal is C. All C code is valid in Obj C because it is a perfect subset of C. The same can not be said for the other mentioned languages.

How did you learn C? What book/ resources did you use?

iphonedude2008
Jul 23, 2013, 05:12 PM
How did you learn C? What book/ resources did you use?

cprogramming.com, the begining of the book the OP is using, online tutorials, and Apple's resources. I didn't learn much of any C frameworks, just the basic way it works, which is all I need for iOS development.

DavidBlack
Jul 23, 2013, 05:28 PM
cprogramming.com, the begining of the book the OP is using, online tutorials, and Apple's resources. I didn't learn much of any C frameworks, just the basic way it works, which is all I need for iOS development.

Thanks for the information :)

----------

cprogramming.com, the begining of the book the OP is using, online tutorials, and Apple's resources. I didn't learn much of any C frameworks, just the basic way it works, which is all I need for iOS development.
BTW what apps do you have on the app store?

iphonedude2008
Jul 23, 2013, 06:08 PM
Thanks for the information :)

----------


BTW what apps do you have on the app store?

I have only recently finished learning, but I have been hired to make 2 apps as a freelancer for a guy who really likes Clash of Clans. One is called Strategy Guide for Clash of Clans. There is also an update I did for it in review now. The other on is a troop calculator for clash of clans also in review.

I have been working a game myself, but I have restarted it 3 times so far. I need it to be perfect and since I have no cost of living as a teenager, I am able to spend the time on it. It is a game in which you are a technology startup (like apple) in 2000 and you have to build up your company by making products like phones and tablets and laptops. Any suggestions?

DavidBlack
Jul 23, 2013, 08:07 PM
I have only recently finished learning, but I have been hired to make 2 apps as a freelancer for a guy who really likes Clash of Clans. One is called Strategy Guide for Clash of Clans. There is also an update I did for it in review now. The other on is a troop calculator for clash of clans also in review.

I have been working a game myself, but I have restarted it 3 times so far. I need it to be perfect and since I have no cost of living as a teenager, I am able to spend the time on it. It is a game in which you are a technology startup (like apple) in 2000 and you have to build up your company by making products like phones and tablets and laptops. Any suggestions?

What a coincidence! I thought of making a game similar to that but I never had the skills to do it.
I got the idea based on this game for the Mac
http://mr-fridge.de/software/walk_of_fame/
Maybe I can get I get in contact with you with ideas. I am really got at designing UI's, just send me a private message.

ArtOfWarfare
Jul 24, 2013, 10:05 PM
history/english/art/etc. majors (e.g. typical *real* people, not math-nerds/nerd-wannabe's)

... you named all of the useless majors that are set up for people who didn't get what they were supposed to out of their free high school education, so they blew huge amounts of money at university for a redo.

The real majors are the ones that build off of what was taught in high school rather than repeat it, IE, engineering, science, medical, math, and business majors.

mrfrosty
Jul 25, 2013, 02:27 AM
... you named all of the useless majors that are set up for people who didn't get what they were supposed to out of their free high school education, so they blew huge amounts of money at university for a redo.

The real majors are the ones that build off of what was taught in high school rather than repeat it, IE, engineering, science, medical, math, and business majors.

Your school didn't teach Art, History and English ? That's a strange school system. I can't imagine that it produces well rounded individuals ready for society !

ArtOfWarfare
Jul 25, 2013, 05:09 AM
Your school didn't teach Art, History and English ? That's a strange school system. I can't imagine that it produces well rounded individuals ready for society !

Where do you get that from? I took US History, US Government, Eastern Asian Studies, English Language and Composition, and numerous other history and English classes that I can't recall the exact names of in high school. I didn't waste my money retaking those classes in university - the only class like that that I took in university was a journalism class called "Interpreting the Day's News". My university had plenty of other classes in those departments. It also had algebra, geometry, trig, and calculus. I didn't bother taking any of them because I'd already done so in high school. Instead I took the more advanced classes that weren't offered in high school - diff eq., discrete math, digital logic, computer architecture, electronics, computer optimization, database management, etc.

musique
Jul 25, 2013, 11:34 AM
Ladies and Gentlemen, I'd like to return to the OP's question because I'm in a similar situation. I programmed many years ago in assembler, Fortran, BASIC, COBOL, and a few other languages. I'm currently teaching myself C using some of the books and sites referenced here as well as a few others.

One poster mentioned going to other coders to see how they code and to ask questions when there's just some hurdle preventing you from getting to the next level. I have always found that helpful when doing almost anything with systems.

Can you recommend one or more sites to ask these kinds of "stopping you dead in your tracks" questions? For example, one source tells me to use the command "cc" to compile my program (written using BBEdit) from the command line. Another tells me to use "gcc." Both seem to work and both create a new copy of a.out. However, when I try to run a.out I get "-bash: a.out: command not found." I'm sure it's an extremely simple problem, but I don't know what I'm doing wrong.

Where would one go to ask questions? Thanks.

lee1210
Jul 25, 2013, 11:58 AM
Ladies and Gentlemen, I'd like to return to the OP's question because I'm in a similar situation. I programmed many years ago in assembler, Fortran, BASIC, COBOL, and a few other languages. I'm currently teaching myself C using some of the books and sites referenced here as well as a few others.

One poster mentioned going to other coders to see how they code and to ask questions when there's just some hurdle preventing you from getting to the next level. I have always found that helpful when doing almost anything with systems.

Can you recommend one or more sites to ask these kinds of "stopping you dead in your tracks" questions? For example, one source tells me to use the command "cc" to compile my program (written using BBEdit) from the command line. Another tells me to use "gcc." Both seem to work and both create a new copy of a.out. However, when I try to run a.out I get "-bash: a.out: command not found." I'm sure it's an extremely simple problem, but I don't know what I'm doing wrong.

Where would one go to ask questions? Thanks.

Right here! We're happy to help.

cc is likely aliased to gcc. gcc is a GNU replacement for the original cc. To run your program run:
./a.out
The issue is that the current directory is not on your PATH, and it shouldn't be.

-Lee

subsonix
Jul 25, 2013, 12:09 PM
Can you recommend one or more sites to ask these kinds of "stopping you dead in your tracks" questions? For example, one source tells me to use the command "cc" to compile my program (written using BBEdit) from the command line. Another tells me to use "gcc." Both seem to work and both create a new copy of a.out. However, when I try to run a.out I get "-bash: a.out: command not found." I'm sure it's an extremely simple problem, but I don't know what I'm doing wrong.

Where would one go to ask questions? Thanks.

CC on mac OS is just a hard link to GCC, or Clang (I think) depending on what version of OS X you use. On Snow Leopard you get this:

lrwxr-xr-x 1 root wheel 32 10 Jul 2011 /usr/bin/cc -> ../llvm-gcc-4.2/bin/llvm-gcc-4.2

Which is not regular GCC actually but the GCC front end with LLVM code generation.

I would explicitly go with Clang personally since GCC is mostly left for compatibility reasons on OS X these days AFAIK. CC is short for C Compiler and GCC, GNU C Compiler basically signifying a free software version of the C Compiler. The hard link is probably there to make sure invocations to CC will "just work" for historical and compatibility reasons.

The reason you get "-bash: a.out: command not found." is that you need to refer to the current directory, ie use: ./a.out , that gives an absolute path to the command you are trying to invoke, without it bash will look at your PATH variable (basically system directories with binaries), it will not find a.out there, which is why you get the error.

musique
Jul 26, 2013, 09:30 AM
Thanks to both of you. Things worked just as you said. (I am on Mountain Lion, BTW.)

When I do a "man gcc" I get a pretty helpful screen (actually quite a few of them) explaining what it is and its options. Very helpful stuff.

Again, thanks. I'll take you up on your offer and will be back with more questions as they arise. :)

960design
Jul 26, 2013, 11:38 AM
Just think of learning a programming language like learning any other communication language: French, Chinese, Korean, Spanish, German, ect.

It will take you a couple of days to figure out how to say hi, by and thanks. It will take you months to learn how to order from a menu, ask for directions.

It will take you years to write a novel in a new language.

The fastest way to learn a language is not from a book ( although it is a fantastic place to start ). The best way is to immerse yourself in the language. If you want to learn Urdu you travel to Pakistan or India.

The best way to learn a programming language is to go to the programmers and ask if you can help. Find a local club, or create one.

It is a perishable skill. At one point I knew more than 12 programming languages, I can only say I'm proficient in 3 now. The good thing is that like riding a bike, it doesn't take too long to pick it back up.

Good luck, study hard, write code every single day.

ArtOfWarfare
Jul 26, 2013, 11:54 AM
It is a perishable skill. At one point I knew more than 12 programming languages, I can only say I'm proficient in 3 now. The good thing is that like riding a bike, it doesn't take too long to pick it back up.

I'm feeling skeptical of that. Given how rapidly I can learn additional languages at this point (at this point, I can learn a new language in about 3 days,) I feel like as long as I'm using just a few languages, I won't forget how to use all the others.

Maybe not. Right now I'd say I'm proficient in C++, Java, Obj-C, C, JavaScript, and Python. Maybe when I learn more I'll start forgetting some of those.

robvas
Jul 26, 2013, 12:29 PM
Depends on what you mean by 'knowing' a language.

firewood
Jul 26, 2013, 02:29 PM
Can you recommend one or more sites to ask these kinds of "stopping you dead in your tracks" questions?
...
Where would one go to ask questions?

For questions not locked to a specific support topic (for instance NDA beta questions for Apple's dev forums), stackoverflow.com currently seems to be the most used and often best source for answers (although you have to filter out dumb answers from game addicts trying to earn rep points). Stackoverflow often has betters answers than a particular software products own official support forums.

You can also learn tons by researching enough to answer some questions on SO.

ArtOfWarfare
Jul 26, 2013, 10:16 PM
For questions not locked to a specific support topic (for instance NDA beta questions for Apple's dev forums), stackoverflow.com currently seems to be the most used and often best source for answers (although you have to filter out dumb answers from game addicts trying to earn rep points). Stackoverflow often has betters answers than a particular software products own official support forums.

You can also learn tons by researching enough to answer some questions on SO.

I agree. The entire stack exchange network is actually pretty great - I use both Super User and Stack Overflow, depending on my specific question (IE, I often find SU has people more familiar with scripting languages than SO.)

Miguel Cunha
Jul 27, 2013, 06:45 AM
If we're suggesting first languages, I'd pick JavaScript (Not Java, big difference) or Python :)

Hello, rovbas.

You post made me wonder about my decision of learning Java.

I've heard of JavaScript, but I don'know the differences between the two languages, nor the best reference material to start from.
Could you give some directions on this and also explain what are the differences and the reason to start with JavaScript instead of Java?

About Python, I've heard about it as well. Could you tell me more?
There are so many languages that to tell one from another to make a choice is difficult.

Finally, how would you (or anybody in this thread) rate the book mentioned in the OP? There are also many books on the same language and bad choices are not a option.

Thank you.

ArtOfWarfare
Jul 27, 2013, 07:36 AM
Hello, rovbas.

You post made me wonder about my decision of learning Java.

I've heard of JavaScript, but I don'know the differences between the two languages, nor the best reference material to start from.
Could you give some directions on this and also explain what are the differences and the reason to start with JavaScript instead of Java?

About Python, I've heard about it as well. Could you tell me more?
There are so many languages that to tell one from another to make a choice is difficult.

Finally, how would you (or anybody in this thread) rate the book mentioned in the OP? There are also many books on the same language and bad choices are not a option.

Thank you.

All 3 languages are object oriented.
JavaScript and Java are both C based, although totally unrelated. There are so many languages in existence that you can basically google "The (anything) Programming Language" and you'll find someone has made a language with that name. The part that's unusual isn't just how similar their names are, but how similar their names are AND both are actually used and fairly popular.

Java code is compiled into Java Byte Code (JBC) files, called .jar, which a Java Virtual Machine (JVM). Java is the language used to program Android devices. It can also run on any computer with a JVM, so I like using the language if I want my code to run on any computer.

JavaScript and Python are both dynamic, non-type safe languages that aren't usually compiled, but instead interpreted. JavaScript is most known as the standard web language that all browsers, whether desktop or mobile, or IE or any other browser, supports, without any plugins at all.

Python... I guess is mostly used to write scripts? IDK - I think it was originally created with the intent of being easy to learn but I'm finding that its insistence on having types, but never mentioning what they are, to be very obnoxious when trying to debug... Maybe that's just because I'm not using an IDE (anyone have suggestions for a good one for Python?)

Oh, probably something that I should mention about compiled vs. interpreted languages. Compiled languages are languages that need their files to be converted ("compiled") from code that programmers can easily understand, to a language that the computer can easily understand. This generally means the code runs faster than interpreted languages, where the code is always human readable, meaning the computer needs to both figure out what the code means, and then do it, when running the program. As the years have gone by, computers have come to be so fast that it's rare you'll notice a difference in performance between compiled and interpreted languages.

subsonix
Jul 27, 2013, 12:44 PM
Do not pick JavaScript unless you are planning on doing web related stuff, it's very domain specific and has lots of warts. If you want to go for a scripting language pick something like Python or Ruby.

firewood
Jul 27, 2013, 02:20 PM
I've heard of JavaScript, but I don't know the differences between the two languages...

The great advantage of Javascript is almost every device and computer comes with Javascript built-in and ready to run... inside any modern web browser. Doesn't require any compilers, plug-ins, IDEs, etc. Just type Javascript code anywhere you can get your browser to load (local text file, dropbox, etc.), and immediately see the results (text on a web page, colored boxes on a canvas, etc.) Lots of tutorial/educational material on the web targeted at kids and non-STEM majors.

Javascript is also a forgiving (can't deref null pointers, etc.) and Turing-complete language. The basic thing you will have to learn when moving from Javascript to Objective C is that Javascript is too forgiving and has too much built-in, and you will have to learn a lot more about data types, memory management, linking frameworks, & etc.

Mac_Max
Jul 27, 2013, 05:02 PM
I disagree. The following languages will be suggested by several people:

C
Obj-C
Python
Java

A handful of people will suggest another ~5 languages (LOGO, BASIC, JS, C++, Scratch) but they'll be outliers.
....

You forgot:

Ruby,
Go,
Perl,
C#,
VB.net,
...

Haha and the list goes on and on.

That said, I agree, if you're enjoying the Objective C book stick with that for now. Later on if you feel like doing backed web dev, Ruby is another message passing language that should offer a degree of familiarity.

My own path was Java/C++ (School) -> C# (First job) -> Perl/Objective C (Subsequent work)

The best learn-to-program books for complete non-programmers seem to be on Python, Javascript and maybe Java. Also kids books on Scratch, Squeak, and Alice. Out-of-print books on Basic and Logo. The authors of C/C++ and Objective C books appear to have never taught an beginning programming class for high school A.P. or incoming freshman history/english/art/etc. majors (e.g. typical *real* people, not math-nerds/nerd-wannabe's).

Funny texts on Computer Science might require some background in Computer Science...


I'm feeling skeptical of that. Given how rapidly I can learn additional languages at this point (at this point, I can learn a new language in about 3 days,) I feel like as long as I'm using just a few languages, I won't forget how to use all the others.


I think it depends on the language and individual (how good is your long term memory? haha). I let C# go for a year and change and picked it back up in two days. I also taught myself all the fun async stuff I missed as my job was suck on .Net 3.5.

Where I have a bigger issue is Perl. I learned "Modern Perl" which basically rejects all the terrible practices of the 90s. I can barely read Perl from the 90s (<insert Perl joke>) let alone understand what the script/program is doing. A lot of people from back then wouldn't be able to get a job where I work unless they kept up with developments in the language and community over the past couple years (a couple have tried and been passed on). I feel like C++11 will cause a similar divide for that community but I'm not certain.

960design
Jul 29, 2013, 10:52 PM
I'm feeling skeptical of that. Given how rapidly I can learn additional languages at this point (at this point, I can learn a new language in about 3 days,) I feel like as long as I'm using just a few languages, I won't forget how to use all the others.

Maybe not. Right now I'd say I'm proficient in C++, Java, Obj-C, C, JavaScript, and Python. Maybe when I learn more I'll start forgetting some of those.

You shouldn't feel skeptical at all, you should be proud of your superior abilities. I haven't written assembly in over 20 years. I would not take a job writing code for TIMU based applications for DARPA right now. Ahh, the days of hacking satellite receivers so many years ago. Good times, good times.

robvas
Jul 30, 2013, 07:20 AM
There was an article a week or two ago that was posted on various blogs and news sites about writing a Scheme compiler in C - you might want to check that out for fun.

PatrickCocoa
Jul 30, 2013, 10:48 AM
I'll pop back in once the reply count hits 100.

At that point there will be 100 replies and 101 suggested starting languages.

Guys, you're not pulling your weight. Here are the languages mentioned so far:

Objective-C
Java
C
Python
LOGO
BASIC
C++
Scratch
JavaScript
Python
Squeak
Alice
assembler
Fortran
COBOL,
Ruby,
Go,
Perl,
C#,
VB.net,
Scheme

Note that not all of these were recommended. In fact, some were anti-recommended.

But in any case, you're way behind on the 101 languages target. Get to work!

tominco
Jul 31, 2013, 01:25 AM
Guys, you're not pulling your weight. Here are the languages mentioned so far:

Objective-C
Java
C
...
Scheme

Note that not all of these were recommended. In fact, some were anti-recommended.

But in any case, you're way behind on the 101 languages target. Get to work!

Ahhh. this brings back memories.... I'll add a few new ones (or rather some very old) to your list that I've used or played with at one time or another in the last 39 years since I started programming....

LISP
Prolog
Snobol
Pascal
PL/I
APL
Ada
Awk
Matlab
LabView (Lego NXT)
a bunch of different assemblers all with their own quirks.

And how about the classic old Turing machine from an Intro to Comp Sci class. Do they still teach that? Or am I dating myself?

Now days, I do most of my "programming" in Verilog (ok an HDL, but really it's a glorified programming language) and Perl (cheap and quick), with various C dialects as well. I still really like the power, yet simplicity of C.

As to the original comment, I have to agree with other comments. Pick one language and use it. Come up with something you want to do and develop that into an application. Stick with your Objective C and later spread out to something else (Java, Ruby, Python, another C variant) depending upon what your needs are... Then do the same thing, only this time it will go much faster than before, as you will have already learned the concepts of programming and you're just learning new features, quirks and syntax.

ArtOfWarfare
Jul 31, 2013, 10:52 AM
I can't believe I haven't seen Smalltalk mentioned, yet. Not a language I'd suggest you learn for using, but just because it has so many interesting concepts.

Other languages not worth learning for using, but sometimes hilarious to learn about, are esolanguages, such as brainf*** (the name ends in profanity), COW, and Whitespace.

firewood
Jul 31, 2013, 11:31 AM
I can't believe I haven't seen Smalltalk mentioned, yet.

Both Java and Objective C have been called ways of hiding Smalltalk behind a more familiar-to-coders C-like syntax.

samwich
Aug 1, 2013, 12:11 AM
But in any case, you're way behind on the 101 languages target. Get to work!

Lua.

Depending on your learning style you may like www.codecademy.com (http://www.codecademy.com/) for Python or Javascript.

Or http://c.learncodethehardway.org/ For C, Python, etc.