Hi there,
I just started to study software developmnet, something we call over "Ausbildung" which i think is called apprentice.man have learn programming in Java,C++, C# sqldatabase.
my question is how does a man need to learn and what is important among this programing language and how do i become a good programmer.
thanx

Recommended Answers

All 7 Replies

It really depends on what kind of code you'll be working with. If you're only doing system level stuff, learning UI components isn't as important. If you're only doing the front end of applications, learning the niggling low level features isn't as important. Repeat ad infinitum for whatever feature you can find. That said, a well rounded programmer tends to be a better programmer in general.

Some aspects of a language like control structures and declarations are fairly universal, but you can get comfortable with those common aspects in a day or less.

So the first question to ask as concerns what the important features to learn are in a programming language is: how am I going to use this language?

Becoming a good programmer is an easier question. Practice makes perfect. Read/understand lots of code, write lots of code, try different things as often as practical, and associate with good programmers whom you can learn from.

english, for the helpscreens
the translations of helpscreens can make one procedural error, and f-up your whole week

commented: Straight to the point +0

Programming really has two parts. One is programming langages, and another is problem solving.

If you know a few practical languages, your fine. Idially, you should be able to pick up most languages on the spot if you need too.

Problem solving is going to be a lot more important then learning more languages. You should be familiar with how a veriety of data structures and algorithms work, and how to implment them. You should learn how to adapt algorithms for your needs, and you should learn how to perform some algorithm analisys.

Finally, you should be sure you know good programming practice. Do you know how to use documentation systems? Do you know how to use revision control? Is your code well organized?

Do you know how to use documentation systems? Do you know how to use revision control? Is your code well organized?
I will say and i donf even have an idear of what those you mention are. Do you have may be a link for me to read about them.
Is documentation systems something like Java libraries? What is the most needed, important part of programing to know for a starter.

Is documentation systems something like Java libraries?

No. A documentation system, which is usually called a documentation generator, is a tool (program / application) that can be used to generate documentation about your code directly from your code (provided that you have some annotations in it). Notable examples are Javadoc (Java), Doxygen (C / C++ / Java / C# / Fortran / ..), EpyDoc / Sphinx (Python), and others. I would say that for most projects they are necessary but not sufficient. You just write code as usual, and you add comment blocks before functions and classes to describe what they are, what they do, and what parameters they take, all using the standard tags (like @param, @author, etc.). The documentation generator will look through all your source code, pick out those functions and classes along with their associated comment block, it will parse the tags and generate a nice-looking, searchable documentation file (various formats, like HTML, help files, pdf, etc.) with all of that. It's a nice way to have an up-to-date and complete API documentation of all your classes and functions, but in general, it is not sufficient because you need more of a "narrative" to make the documentation useful for outsiders (who want to use your code), such as tutorials, overviews, examples, etc.. But that generated API documentation is a must-have.

Do you know how to use revision control?

A revision control, or version control system, is a tool that will supervise the development process by watching the changes that are made to the source code and keep track of the history of the changes. Basically, every time you have made a meaningful change to the code (e.g., every day or week, or so), you can "commit" your changes, which creates a sort of milestone or snapshot of the source code at that stage. You can go back and forth in the history of changes to the code, which is very practical when something that used to work suddenly stopped working (you can go back to the last time it worked and try to figure out what changes since then caused it to break). When working in a team, different people can work on different development branches, or simply work on different source files, and then, whenever appropriate, the changes that people made can be merged together automatically (or manually if there are conflicting changes). And of course, version control systems have many other perks, and if nothing else, they can be used as a simple way to keep various copies of the source code synchronized by uploading / downloading changes on a regular basis (e.g., every day) to or from a server. In short, they are an indispensible tool for any non-trivial long-term project. Example tools for this are Git (most recommended), SVN, CVS, Mercurial, etc.. Open-source websites like github or sourceforge are essentially based around the free hosting of revision control repositories (Git for github, and SVN (and now Git) for sourceforge), although you don't need to use one of these services, you can host your own revision control repository almost anywhere, including only locally on your own harddrive.

What is the most needed, important part of programing to know for a starter.

None of these things are actually important for a beginner. Documentation generation, version control, code organization, etc... are all things that are extremely important when you are involved in larger projects or working professionally as a developer. These things are kind of the "bureaucratic" aspects of working on larger projects, and doing those things effectively, with the support of good tools, is very important for productivity and sustainability of a project. But for a beginner looking to start to learn to program, these things are not something to be concerned about (but keep them in mind, know that they exist, because if you do start to get into some serious programming, you would be wise to adopt those things early).

I would say that the most important thing for a beginner to learn is to understand the logic of programming. In other words, understanding the procedural nature of software, and understanding some of the fundamental mechanisms (memory, execution, function stack, etc..). This is often the make or break phase on the learning curve. After that, it's just about learning about fundamental algorithms and data structures, and then, working on some real projects to get practical experience.

As far as languages are concerned, they depend very much on what you want to do, i.e., each language has its own niche. But, there are languages of overall fundamental importance, such as C / C++, and there are languages with particular qualities that are good to know/discover, such as Haskell or Smalltalk, and then, there are languages that remove you from the details of things and allow you to do a lot of stuff easily, such as Python or Java/C#. They're all "serious" in their own rights, but I would say that every well-rounded programmer should know at least one or two languages from each of the three categories I just mentioned (to some extent, no need to be an expert at everything), in addition to being very good at the language(s) most relevant to his/her field (web-dev, databases, computer games, etc..).

commented: How.... how do you write so much on every post (in a good way)! +0

Which language you like.If you are like or interest c then you can take this language for studying.Otherwise other language.Which language is more interesting and easy for you then you can take that language.

To me C was the eye opener.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.