Join 117,610 Programmers for FREE! Ask your question and get quick answers from experts. There are 2,438 online right now! We've got more than 500 tutorials and 2,000 snippets. Join and find out why Dream.In.Code is the #1 programming help community on the internet! Registration is fast and FREE... Join Now!
Hello pals.Am a new member of the forum.Am actually trying to build a career for my self in this aspect of I.T.I do not have a stong I.T background but I have come to discover that there are numerous programming languages and frameworks.My questions are:- 1.Is it possible to be proficient in all of these programming languages? 2.Is it necessary to be proficient in all of them,or just a few will suffice? 3.As a beginer who knows next to nothing about programming,which of these do you advice I start with and why? 4.What are the necessary steps/tips to take to become a well grounded programmer? 5.What does the future hold for programmers?
Well first let me welcome to you </dream.in.code> balo, glad you could join us. Now on to some of your questions. It is possible to be proficient in many languages, but it does take many years to do so, I would start with a single language and stick with that one until you feel you have a very firm grasp of the concepts and the way that language works. Take me for instance, I can program in VB3-6, VB.Net, C#, C++, Basic, MSSQL, mySQL,and am now trying to learn Java, but I have been doing this for many years (Got my first degree in 1989).
I don't think its necessary to be proficient in all of them, but I will say the more you know the more valuable you are to an employer, and the more opportunities you have in the field. As for #3, you will get as many answers to that question as their are languages, since every programmer has their own preferences. I would start with an Object Orientated Language, be it C#, C++, or Java, but thats just my opinion. Learning OO right off the bat is the way to go, and will give you a well grounded foundation to branch off of.
As far as tips to be come a well grounded programmer, well that time and patience, lot of mistakes but having the ability to learn from those mistakes. Read lots of books/tutorials, write lots of code, as they say practice, practice, practice. The future is wide open for programmers, people will always need software, and where theres a need theres a job. I don't think the job of a programmer is going to go away in our lifetime, hopefully anyways lol.
Lastly, I am moving this to the Computer Science Forum, I think you'll get better attention there than in the Databases Forum. Hope I answer at least some of your questions
This post has been edited by PsychoCoder: 8 Feb, 2008 - 02:50 PM
I will agree with the most that PsychoCoder said.I don't have the experience he has with programming but I suggest that you shouldn't start with a Object Oriented language.I believe you should start with a structural language such as C or Basic so that you can understand some concepts like for loop and if statement that you will use in an Object Oriened language too. That's my opinion
I suggest a language to start to learn what programming is like, would be Basic HTML. its simple and pretty easy to learn. there is many tutorials and guides and help on it. you dont need any special programs for it, just basic Notepad for Windows and/or TextEdit for Macs. and once you save your work, you can open it up in any web browser and see the results.
If you like HTML and get used to the basics of programming, i reccomend C++ or Java.
Thats just my $.02. Good Luck, and again Welcome To D.I.C!
This post has been edited by Artaniz: 8 Feb, 2008 - 04:10 PM
I think that PsychoCoder pretty much summed it up, but I would like to add a few points.
QUOTE(balo @ 8 Feb, 2008 - 02:10 PM)
1.Is it possible to be proficient in all of these programming languages?
The only limitation is the one that you put on yourself. You can achieve whatever you set out to do... but only you can push yourself to do it!
QUOTE(balo @ 8 Feb, 2008 - 02:10 PM)
2.Is it necessary to be proficient in all of them,or just a few will suffice?
It is better to understand computers & what programming languages have to offer. You want to be versitile... not a text book. What an employer wants is for you to complete the task, & in a timely manor, without the ability to have someone watching over your shoulder. If you are king at VB.NET, but are not versitile... then you may not switch well to Java. I've actually worked at a place where they knew I had vast experience with C/C++ & unix shell scripting, yet my 1st task was Java... never had touched the stuff. Had I simply said "no thanks I don't know Java", I probably wouldn't have kept my job.
QUOTE(balo @ 8 Feb, 2008 - 02:10 PM)
3.As a beginer who knows next to nothing about programming,which of these do you advice I start with and why?
That's going to be up to you. You could start reading something simple like HTML, but if you get too board with it, you may struggle. Try taking a look at some of the tutorials & snippets, & then look for some free tools. Try out a few different technologies, but just keep them current technologies.
QUOTE(balo @ 8 Feb, 2008 - 02:10 PM)
4.What are the necessary steps/tips to take to become a well grounded programmer?
Learn why things work they way they do. Learning Assembler made me a better C/C++ programmer, because I understood more about what was happening.
I'll tell you a secret; on a certain level, all programming is the same. The foundation concepts that drive computer languages can be found in any major language. There are different names for things, and sometimes drastically different ways of preforming a process, but the ideas behind the process can be universal.
You're looking at the destination and not the journey. Stop that. Learn something, anything, that will make a computer DO something. Once you learn a single computer language well, another one will not seem too difficult. If you like programming, you'll learn another, and another, without it seeming like that big a deal. Anyone who has programmed long enough will happily learn a computer language for simple amusement.
To the questions:
1. Yes.
2. Learn one, then learn another, you'll know when you've had enough.
3. I like Java. However, for a beginner Python might be a good place to start. It features an immediately interactive environment and has some very good beginner material. Take a look at Dive Into Python and see how far you get.
4. Read, a lot. Theory until it puts you to sleep. Particularly, look at other people's code. Try to understand other people's code. Try to make other people's code work better.
5. As long as there are computers, there will be programmers. Computers follow instructions real well, but are horrid creative thinkers. If the last three decades of Artificial Intelligence research has shown us anything, it's that this isn't going to change any time soon.
Computer languages are funny. Students seem to fixate on them for some reason. They worry about which ones to learn, which ones are important, and which will make them employable. I think they're largely irrelevant.
Two things fundamentally matter. One is understanding computer architecture. How does the processor work? You don't need to design your own CPU, but you certainly should be able to use one. This means understanding assembly language, understanding how interupts work, and how memory works. You need to know how peripherals function; what's really going on when you read from disk? Write to a printer? Draw some grpahics?
System architecture knowledge also includes OSes. How do page faults work? What is memory management about? How do processes and threads interact?
The other fundamental is the study of algorithms. Algorithm development is the goal; algorithm analysis is crucial. If you solve a problem, is your solution inherently slow? Does it need to be faster? How would you make it faster? And so on.
Given these two things, really mastering them, means you're in great shape. The language you use to express algorithms doesn't really matter, and if you understand algorithms and the architecture where the code is running, you know what to do. AT this point, learning a new language is spending a few hours with the specification of the language or an approachable reference book.
There's one exception, and it's a big one. That's knowing what to do when things break -- or are stressed to their limits.
Many people I meet who claim to know C++, to take one popular example, don't know crap about the tools they use to write C++ code. How does the compiler work? How does it handle header files? How do precompiled header files work? What do the different options mean? What if you mix them? How does the librarian work? What about the linker? The debugger? The symbol store? And so on.
When writing simple little school projects, these issues don't come up. You just get the code to compile. A very small commercial project is about ten times the size and complexity of the biggest project most students complete in school. How does the language and the tools react under the stress of a medium or large commercial project? Where do things tend to break? How do you avoid problems? How do you fix them when they come up?
If someone tells me they know C++, then, I assume they mean they know what a "class" is. They have to demonstrate to me that they also know the tools and that takes lots of experience and insight. Learning a language that deeply is really important because most of the time you spend in a commercial environment is going to be about making compromises related to the tools--either for performance or for efficiency, or for troubleshooting.
If you're a beginner, I think you should start with assembly language. It gets you to undrestand how computers work as fast as possible. You can learn assembly on your PC, but with any modern operating system, you're vastly removed from the underlying hardware. For less than a couple hundred bucks, you can buy a single-board computer and use it to learn lots about hardware and software in a very short amount of time.