Skip to main content
GameDev.net gamedev.net
🔒 Locked

How do you go about learning other computing languages?

Started by LionMX Nov 25, 2009 at 1:46 AM 16 replies 3.1k views
Original Post
LionMX
LionMX
This is a question I have been asked to prepare for an interview. I'm interested in what answer you would give to this question, and why?
Matt_D
Matt_D
if thats your answer, you've already failed the interview
your never as good as they say you were, never as bad as they say you was.
LionMX
LionMX
Ok thats fair. Here's how I plan to answer the question:

To learn a new language I first become familiar with syntax, this is synonymous to spelling in a spoken language. My first steps in learning a new syntax would be to obtain a language reference card. Once I have this I then start looking at the tools I will use, the compiler and editor, I will build a simple "Hello World" example and ensure that I can use the debugger correctly.

Once I'm comfortable with the tools, I start looking at the semantics and logic of the specific language. To do this I have found a list of 15 examples that become progressively more challenging but explore the semantics and logic iteratively. If a language is procedural and object oriented I will begin with the procedural and once comfortable I will then move on to the object oriented aspects.

I appreciate it's not very well structured but I have until the new year to work on that.
gimbal_
gimbal_
how would you go about learning other computing languages?

Well the answer is simple really, I buy a book, I study it and I apply the knowledge to test applications.

In the mean time I prepare an application design that I want to implement using the new language and/or tools. Something useful, not a "hello world". It is better to have a real project to implement than do simple test stuff, as with the real project you are forced to go beyond the simple layer and into the more complex programming problems, simply because you have a good reason to spend the time to do so.
Hodgman
Hodgman
I study example code, then if I'm stuck I go to reference manuals, then when I want to learn how to do it properly I get a book ;)
kirsis
kirsis
I learn the basic syntax that's required for most apps. If there's some fancy stuff, I leave it for later.

Then I try to get a good overall idea of language features and possibilities by checking out docs, samples and other people projects in this language. That way, when I run into a problem, I'll know if there's some feature in this language thats well suited for solving said problem (even if I havent bothered to learn this particular feature yet).

Then I decide something that'd be fun to work on, and try to do it in the language in question, tackling problems as they arise.
LionMX
LionMX
gimbal_ the "hellow world" was just an example, the actual programs I test are more complex ;-) I was simply using an example the interviewer could relate to.

I agree that reading a book is a completely valid way of learning and a book introduces topics in a progressive way, I have tried to say the same thing without saying that I rely on books. I might be shooting myself in the foot here but my arguement is that I can still learn the same things but without the cost :-), however Hodgeman I agree that buying a book would teach you the correct way to use a language.
daviangel
daviangel
Quote:
Original post by LionMX
gimbal_ the "hellow world" was just an example, the actual programs I test are more complex ;-) I was simply using an example the interviewer could relate to.

I agree that reading a book is a completely valid way of learning and a book introduces topics in a progressive way, I have tried to say the same thing without saying that I rely on books. I might be shooting myself in the foot here but my arguement is that I can still learn the same things but without the cost :-), however Hodgeman I agree that buying a book would teach you the correct way to use a language.

I'd substitute "text editor" for hello world program in the future since that sound better. Besides wan't it Charles Petzold that would always say the best way to learn a new language is writing a text editor in it which makes sense. You'd probably have to pick up most of the basics of the language along the way in order to accomplish it. Personally, I prefer books since I tend to learn best that way. I've seen other that hate books though and seem to get by just using Google. But I think most programmers realize that after you pick up a couple of languages others can and should easily be picked up. Assuming you are sticking to procedural languages anyways. The way you go about this will reveal a lot about your personality hence the purpose of this question.
For example, if someone told me they learned a new language by reading the latest language specification vs googling for answers I'd tend to think the first person to be more organized and methodical vs the latter that just wants to get the job done in the least amount of time?

Then again you have to think that one of the reason Petzold just started coding and hacking away is that there was no decent books on Windows Programming at the time so if it's a fairly new language like Google's GO maybe you will have no choice than to read the language specification.

Nowadays, there are even decent programming video's(see Stanford's Java and C++ ones for example) ,so if books aren't your thing, there is even less of a reason now to open one up.

[Edited by - daviangel on November 25, 2009 8:27:28 AM]
[size="2"]Don't talk about writing games, don't write design docs, don't spend your time on web boards. Sit in your house write 20 games when you complete them you will either want to do it the rest of your life or not * Andre Lamothe
DevFred
DevFred
The question is a red herring. The only answer that will get you the job is "Why learn another programming language? I already know LISP!" ;)
LionMX
LionMX
Quote:
Original post by daviangel
Quote:
Original post by LionMX
gimbal_ the "hellow world" was just an example, the actual programs I test are more complex ;-) I was simply using an example the interviewer could relate to.

I agree that reading a book is a completely valid way of learning and a book introduces topics in a progressive way, I have tried to say the same thing without saying that I rely on books. I might be shooting myself in the foot here but my arguement is that I can still learn the same things but without the cost :-), however Hodgeman I agree that buying a book would teach you the correct way to use a language.

I'd substitute "text editor" for hello world program in the future since that sound better. Besides wan't it Charles Petzold that would always say the best way to learn a new language is writing a text editor in it which makes sense. You'd probably have to pick up most of the basics of the language along the way in order to accomplish it. Personally, I prefer books since I tend to learn best that way. I've seen other that hate books though and seem to get by just using Google. But I think most programmers realize that after you pick up a couple of languages others can and should easily be picked up. Assuming you are sticking to procedural languages anyways. The way you go about this will reveal a lot about your personality hence the purpose of this question.
For example, if someone told me they learned a new language by reading the latest language specification vs googling for answers I'd tend to think the first person to be more organized and methodical vs the latter that just wants to get the job done in the least amount of time?

Then again you have to think that one of the reason Petzold just started coding and hacking away is that there was no decent books on Windows Programming at the time so if it's a fairly new language like Google's GO maybe you will have no choice than to read the language specification.

Nowadays, there are even decent programming video's(see Stanford's Java and C++ ones for example) ,so if books aren't your thing, there is even less of a reason now to open one up.


Maybe I will approach this with a hybrid answer. I think I will begin by saying I use a book (after all this is how I learn) and where I have unanswered questions, I use the internet. Hopefully this can show im resourceful.


In keeping with the topic I have 2 other questions which are bothering me. On the application form competencies are classed in 2 ways, Desireable and Essential. I have answered all the essential questions (and had good feedback), but im struggling with 2 desirable questions:

knowledge of configuration management principles

and

knowledge of Java and ANT

I'm from a predominantly C++ background with C and C# experience but Java is new to me, I understand its an OO language and i've briefly looked at the syntax but I have never developed anything using it. ANT and configuration management principles are however completely new.

Is this a fair answer to these questions or should I avoid saying I didn't know them prior to reading the requirements?

"Having researched the requirements of this post I decided to extend my knowledge of these topics by first obtaining a book and relevant software and then familiarising myself with the theory and practice behind these topics."
Ravyne
Ravyne
Not that this reply is going to be much help to you, but this question is pretty lame -- There's really no *good* way to answer it, IMHO.

You either answer in very general terms succinctly and confidently (eg, the seasoned coder) or you try to enumerate every boring step you recall from the intro chapter of your first "Learn in 21 days!" book (eg, the paranoid newbie). In either case there are better questions that can be asked to make that determination. This is also a bad question if the interviewer is bad, because you'll be left praying that whatever you said was in agreement with their own philosophy, and if it doesn't they may shut off right then and there. A good interviewer doesn't do that, but then again a good interviewer doesn't ask such poor questions.

If your interview contains a high number of similarly inane questions, I'd be inclined to view their company with a suspicious eye -- personally I'd be sure to politely decline any offer made under those circumstances (unless they were throwing similarly stupid amounts of money at me), but I've been around the block long enough that I'm pretty sure I don't have to settle for that kind of thing :)

A far better question, IMO, would be to ask how you go about learning a new library -- The domain of the question is sufficiently focused, while also being broad enough that anyone with real programming experience has at least a couple past experiences to draw from (as opposed to the too-specific "How do you learn a new game engine.")
throw table_exception("(? ???)? ? ???");
LionMX
LionMX
I should probably say at this point that the job isn't in game development, it's actually working for the government. The money on offer is very good, above average for graduates, with a fantastic promotion framework (I know because I work there in a generalist post)hence all the positiv feedback i've had this far, if you were wondering.

Anyone else have any pointers on answering the "knowledge of.." questions?
Ravyne
Ravyne
Heh, well, I guess that explains it then [grin] you know the old saying... "I guess its good enough for government work!"... or maybe not since you're across the pond, and I believe that's a fairly American saying, but I digress...

If you can get your hands on it, there's a book called "Programming Interviews Exposed" which is in it's second edition, and can't be recommended enough. I always read through it when I'm in the job market, and it covers everything from knowlege-based questions, to general questions, to the typical brain-teaser type questions. They even cover how to dress, and how to negotiate your salary. That book is probably the best money I've ever spent.
throw table_exception("(? ???)? ? ???");
Antheus
Antheus
Quote:
Original post by LionMX
I should probably say at this point that the job isn't in game development, it's actually working for the government.


In that case...
- First, you fill out the 224-3b form in triplicate (Request for acquisition of presently unfamiliar computer language, operation procedure or operating manual)
- Request coordination with union labor to determine which parts of language are currently covered by union workers
- Wait 3 weeks to get negative response from both for failing to put your initials next to paragraph 2 of requisition form
- Restart the process with initials properly added
- Wait 2 weeks (your superior is retiring and isn't doing anything, so your paperwork expires in meantime)
- Restart the process
- Having received reply to 224-3b, take it proper entity to issue you the language acquisition approval form
- Take it language acquisition department only to learn that reply must be on blue form, not the green one
- Restart the process
- Realize you work for the government and can't be fired
- Further realize that your degree warrants you a 7.6% raise as per adjusted pay scale
- Request pay raise
- Play solitaire....
krez
krez
Quote:
Original post by DevFred
The question is a red herring. The only answer that will get you the job is "Why learn another programming language? I already know LISP!" ;)

Once I learned LISP, all I had to do to learn any other language was figure out what to type.
--- krez ([email="krez_AT_optonline_DOT_net"]krez_AT_optonline_DOT_net[/email])
SamLowry
SamLowry
A few days ago, I took a look at Google's go programming language. I started with going quickly through the tutorial, to get an idea what the makers decided what was worthy of mention. My first main interest was finding out what was new. Once I got an idea of which features the language offered me, I started with writing a very small program, just to get it compiled, linked and running.
I then wondered what kind of programs I would try to make in it, and which style I would adopt. I decided (perhaps wrongly, it's only been a few days) that go is a fairly low level, imperative programming language.
Next came a bigger program, ended up making a Mastermind solver (got the idea from programming praxis). I try to force myself to use the different language features, because it's all too easy to think "oh, this must work as in that other language", while in fact, there can be so many subtle differences, which you'll only bump into when actually using it.
In the future, I'll try to make a few more programs which make use of other features, but for now, my opinion of the language is that it sucks badly.
LionMX
LionMX
Haha that made me chuckle but it was helpful to hear your thought process.

I managed to get a copy of Applied Software Project Management by Jennifer Greene, Andrew Stellman from the office library and much to my suprise is that I have actually covered and have experience of using configuration management principles, I just knew it as a version control system.
Zahlman
Zahlman
Quote:
Original post by LionMX
it's actually working for the government. The money on offer is very good, above average for graduates, with a fantastic promotion framework (I know because I work there in a generalist post)


Presumably the reason they're asking this question, then, is that a job this good requires someone really qualified - the sort of person who has learned other programming languages fairly often and can answer the question simply by recalling previous experience. Skilled programmers do tend to do that sort of thing, you know. :)

Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.