Hi Sahat,
I like the questions you ask as a student.
Is it possible to write in C programming language everything that
you could write in other languages
such as Java, C# or C++. If that's the
case why don't schools these days
teach C instead of Java?
There are some good answers that get into the nuts and bolts of things here already. I'm going to answer this question with the topic of one of my first presentations at Uni. This was at a time when Meyer's book has just come out and OO was in it's infancy.
At the time I saw a remarkable similarity between what I considered "best practice" in the procedural world and what OO was doing for us. My premise was that whilst OO strongly encourages us to do some things in elegant and sensible ways, in procedural languages like C, we have the option to apply equal elegance if we just know how to use things in good ways.
In years to follow I realised just how important it is for the development environment to guide developers into doing things the right way. The reason for this is not everyone you meet has the same eye for doing things right as you, me and many of the other fine folks frequenting this forum do.
Of course the other thing is that whilst you can, practically speaking, accomplish pretty much any (commercial) result using any language/framework some offer significant productivity benefits over others. Just because you can do it, doesnt necessarily mean you will want to if you have to spend an extra month writing framework code that you can just call in another environment.
Ok the main reason why I am asking is because I don't want to tie down to
a single programming language and
platform (.NET and C# or Obj-C and
Cocoa). Perhaps I am confusing a
programming language with a framework?
If anyone could clarify all this for
me, I'd certainly vote for your
answer.
Again you've got lots of good info on the nuts and bolts of things here. I'm going to try to offer you some info that I think will address what's fundamentally the question in your mind here.
Do you need to learn lots of languages or just one really well to be relevant in the commercial world?
The same question can be applied to frameworks.
There are two answers to this for my money.
Firstly I'll tackle it from the angle of your skill development.
I believe you will learn immensely from going deep in a language and framework of your choice. Going deep typically comes form solving problems and putting all the tools of the language to work and sometimes pushing the boundaries. This experience I believe hones your capabilities to solve problems and recognise how to apply the same or similar techniques quickly in unfamiliar languages and frameworks you will encounter in the future.
With that said, yes its defintily an advantage to go broad as well - getting a taste of what the pros and cons are of different languages and frameworks and learning to evaluate which is better suited to different kinds of problem spaces. This is also an important part of your development.
You can drive whether you go for breadth or depth based on your interest and motivation on the day while on your own time. But I do recommend keeping an eye on both, even if just to break it up a bit and keep things fresh.
Secondly I'll tackle it from the angle of your career growth.
From my experience this really comes down to what you want to be doing. You've said in another post you are interested in financial work. This makes the answer simple since you know what you want to do. It's simply a question of where all the jobs are and also looking at where you see the industry going.
Making an assessment where there will be the best of their being lots of opportunities. More often than not it will also happen that there is a reason why a particular technology set is dominant (or emerging) in a particular industry.
From person to person you will get different views - sometimes loosely "religous" in motivation. I encourage looking beyond this at what is going to be best for you.
I think you already know which tools I spend my time with at the moment, but I always keep an eye on the other camps at what's going in. If there is one constant in this industry, it is that things change.. usually when you're not looking :o
Lastly, I will just say that OO has many advantages over procedural, there is no question of which is a better way to program for me. But don't forget functional - this style of programming is becoming more relevant now and is starting to make it's into the commercial world after a long stint mostly in academia. Check out some of Anders' recent discussions and presentations. You will get an idea how it's going to "fit in with" rather than "replace" imperative programming languages.