Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

What topics/abilities are generally accepted as vital-to-know of any programming language?

(Can be answered through either language-specific or non-specific suggestions, however)

For example, I wager "Data Structures" would be one. Or if this was for learning a foreign (non-programming) language, "Verb conjugation" might be one.

I've found this, which is a helpful start: http://www.indiangeek.net/wp-content/uploads/Programmer%20competency%20matrix.htm

share|improve this question

closed as not constructive by Jim G., MichaelT, Glenn Nelson, psr, Tyanna Mar 1 '13 at 3:35

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

1  
The question is a bit vague - the first part sounds like it's about things specific to learning a programming language, while the second part seems to be more about learning programming in general. –  tdammers Feb 28 '13 at 23:11
    
Like spoken languages, not all programming languages require the programmer to know the same kinds of things. For example, Mandarin has no concept of verb conjugation. –  Greg Hewgill Feb 28 '13 at 23:12
    
Different paradigms would be another factor here as there are some things that can be done in OOP that may not be so easy with procedural code. –  JB King Feb 28 '13 at 23:13
add comment

2 Answers

In my experience, the most important factor is having a programmer's mindset. You need to understand--not just "know" mentally, but really internalize--the concept of solving a large problem by breaking it down into smaller problems, and then breaking them down into smaller problems still, and so on recursively until you have a problem small enough that it fits a known solution, and then applying those solutions and gluing them together.

If you can do that, if you can really understand how to do that, then the rest is just details. Learning a programming language is a matter of learning what small solutions it provides, and what techniques are used to glue small solutions together into larger ones.

share|improve this answer
add comment

I'm answering this with specific regard to 3GL languages.

I know a bunch of them, and while I have two that are my main commercial languages (C# and PHP), I do try to use the "best tool for the job" when a client approaches me to do work for them.

I think the following lists pretty much sum up what is essential to know with a programming language to be truly successful with it.

First of all, you need to get your head around the language itself. This includes learning the following:

  • Variable declaration
  • Typing - duck, loose, strong, dynamic, etc
  • Looping
  • Conditionals
  • Order of evaluation
  • Defining data structures
  • OOP factors - classes, interfaces, inheritance abilities, etc

Then, you need to approach the framework and look at what capabilities the languages primary framework has. This will control how you do things such as:

  • I/O - Sockets, disk, memory
  • Network services
  • Threading
  • Drawing
  • Database access

Finally, you need to learn the nuances of deploying the application for your chosen programming language and framework. These will vary between what you're developing, some things such as pure C apps with the CRT linked in, or Delphi can produce self contained executables.

  • Installing the runtime
  • Making the server accessible
  • Application definitions / pools / etc
  • Deploying the actual application
share|improve this answer
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.