by mitt3ns on Wed Aug 18, 2010 4:42 am ([msg=43877]see Is Java (not) the right start?[/msg])

After seeing the post about pitfalls of Java as a first programming language, I decided that Python was the right way to go to get myself further in depth into programming (I have minor past experience, but understand the general feel for programming).

As I understand, Java has a basic set of packages and classes available to the programmer that make the actual programming relatively easy, as those pre-packaged packages and classes are at the hands of the programmer, whilst Python (though this extends beyond -just- Python) pushes the programmer not to only find these packages and classes for his/her need, but rather to create them on his/her own.

Is my thinking on this correct? I had taken a few classes in high school in Java and did feel this lack of full understanding for everything I was doing and thinking it could go much deeper than the teacher gave us.

> Hope you all can give some feedback on this. I am not looking into exploring languages such as C/C++ until I get a feel for more interpreted languages first.

mitt3ns wrote:find these packages and classes for his/her need, but rather to create them on his/her own.

Python has a huge library of modules, classes, and packages. In all of my experience with it, by the way Python is an amazing language, I've had to get ONE module from the Interwebs, and that was to compile my script into an EXE.

I don't know much about Java, and I'm still a noob in programming in general, but for me, Python was the way to go.

"Knowledge is knowing that a tomato is a fruit, but Wisdom is knowing not to put it in a fruit salad."

I think you'll find every programmer/hacker will always be very opinionated (any good one, at least). There's a lot of argument over the "best" first language to learn.

Personally, I think that article is misattributing the decline of computer to science to Java instead of a decline of education overall. Whatever language you learn first will generally influence your views of later languages (and your programming habits), but not so in a way that makes it impossible to become a good programmer. Every language has their pros and cons: Java is excellent for learning object orientation, but not good at all for learning about pointers.

In the end, your first language, while important, won't have a huge impact on your programming skill. You'll certainly have different habits, but habits are breakable, and you'll find that every new language you really learn will modify your habits.

Every high level language has conveniences for the sake of whoever is programming it. That's the point of a high level language. Even C which is quite low level has all the stress-savings of easy to read loops, boolean evaluation, automatic stack frame setup for variables etc. To consider a language helping you as a weakness is unfounded, though I've seen that sentiment quite a bit.

I guess it stems from seeing people who really have no desire to learn about computers or programming like script kiddies. They want hit and run code and don't have any desire to contribute back. But if you are interested in programming, having high level help is nothing to be ashamed of. Programming is a very "top down" process these days because computers and software are so complex. You start off being eased into it then down the track learn more about the low level side if you want.

With that said I don't think there's any wrong language to start with. Start with anything and if you get a sour taste in your mouth try a different one. If you do try a different one then you have a desire to program, and your learning will likely only stop when you die

sanddbox wrote:In the end, your first language, while important, won't have a huge impact on your programming skill. You'll certainly have different habits, but habits are breakable, and you'll find that every new language you really learn will modify your habits.

I completely agree. There has always been a lot of discussion about which is the best language to start with, but learning one language before another isn't going to permanently set you back in your learning. If you really want to learn how to program, you will learn no matter which language you start off with.

My view on the idea of a best / worst or correct / incorrect language to first learn is probably an unpopular one, but I will provide my opinion on it either way (regardless of opinions being like assholes).

Surely it doesn't matter which language you first learn? My reasoning for this is that every language has it's pros and cons with that specific language will teach you. For example, learning C will teach you a great deal about things such as pointers, memory allocation (and dealloction) and other topics that come from being that little bit closer to the macine.

However, you will learn nothing about object oriented techniques that are commonplace now, but were missing at the inception of C.

Similarly, as has already been mentioned, a high level language like Java will teach you much about OO and will (hopefully) provide you with a more abstract way of looking at a problem or way of providing a solution, but again as is mentioned multiple times throughout a number of threads on this site - that extra layer of abstraction takes you (obviously) furter away from the machine.

This is why I think there is no 'best' or 'correct' language and prefer to think more along the lines of 'this language provides me with this feature, but there are others that will provide me with different ones'.As long as you eventually gain and understanding of how your programs work at a low level and how to work with objects and the like (which should come with knowing multiple languages) then your starting point is moot.

Yes, I took AP Compsci A last year and loved the class (- the teacher) but I always found my self trying to implement and create the methods in the standard class library and adding extensions. (Making a math with complex number class, improving the Scanner, ect...) So I decided that I wanted to step out into the roots of modern code and learn C and I love it so far . They say if you know C you can learn any language and thats pretty true.

My first language was Java, and after taking a course into it, I took a course in C. I find that helps immensely. Not only did that re-inforce the basics, the differences between OOP and...NOP? made a big difference to me, now I find myself preferring Java but not any less proficient at C at all.

Of course, I've only been programming for about a year and only now have started expanding my horizons.