What do you think about Java as an academic language? (WARNING: rant)
This is a bit of a rant, so don't take it too seriously. ;)
I'm now studying java as part of my first year in university. Talk with most of the senior students who do computer science tell me that Java is what we learn mainly throughout. I'm jumping ahead of myself here so I might sound arrogant when I say this (then again I might only be arrogant because of my ignorance, hence I'm looking for LQ's opinion on it, so cast your pearls of wisdom upon me :) ). I feel like this isn't a very good university education. I came to learn things much more low level like Assembler/C. Learning Java makes me feel like a corporate stooge who's being trained to use the corporations products, if you get what I mean. No really, if I wanted to learn how to use Java and it's libraries I'd stay at home, save my money, and learn it online with the help of a good book!!! End of Rant vxc p.s: Don't tell me to get a blog, I've heard that one before! :p |
Quote:
|
I think you may be missing the point a bit. You don't go to Uni to become skilled, you go to become enlightened.
The purpose of University programming courses is not to teach you a language, but to teach you *how* to program, and how to *think* about programming. Teaching this is more efficiently done in high level languages like Java - no messing about with pointer aliasing, memory leaks and endian-ness while you're trying to learn the bigger picture. Once you know how to program (properly) you should be able to pick up a new language in a matter of weeks, if not days. In my case we went from Ada95 in 1st year (thank the deity of your choice you're not using Ada. Seriously.) to Java and Haskell in 2nd year (pure functional languages bend the mind), to Java and whatever-you-liked in 3rd and 4th year. Jargon files: http://www.catb.org/jargon/html/J/Java.html Dave |
I agree with the previous post. I too went to university expecting to learn programming languages as well but in fact that's not the point of most university courses. You will learn fundamental concepts and to demonstrate the concepts you use programming languages to excersize them. Programming languages come and go so if you went to university to learn programming languages you could find your education out dated eventually.. not to say however that the concepts won't change.. eventually.
You might be learning a lot of object oriented concepts in your program and that could be one reason you're using Java. Arguably.. Java can be said to be one of the better structured object oriented languages and has an easy to use API so it's good for academic purpuses for that reason. If you understand the underlying concepts that the programming languages use and are built on then you won't have trouble picking up other languages as you go. |
I think it depends what are you trying to learn. If you doing EE, then generic Assembly and C would make more sense then Java, and you probably learn more about Software-Hardware interaction. But if you study Java as a generic programming language, then it is good as any other of them. Other posters are right, it is more important to understand the concepts of programming rather then concentrate on certain languages.
I don't know where one of the poster took the statistic on more frequent use of Java then C. The whole Linux is written in C, kernel and drivers. And in the embedded word nobody heard about C++, Java, C# ..., it is all plain vanilla C. |
I see what you are saying, but it is hard for me to comment since I don't go to your school, at least I am assuming that. :)
Anyway, my first year of college we learned Java. Over the summer, I studied the C programming language with just Kernighan, Ritchie and myself. The point is similar to what has already been mentioned: learn how to program. Picking up languages is easy once you do. However, I don't know about using Java all the way though an undergraduate degree. In my second year I wrote C and Java code. For instance, in an operating systems class I used Java to implement a paging algorithm simulation. We had a choice of languages, Java made it simple, such that I got an A. Programming languages are a tool, a (good) programmer is the one who knows when to use which tools. |
I didn't take any statistic (and I won't) to show that Java is more used than C or assembly because statistics can easily be manipulated to prove anything you want :D.
But, always when I search for jobs as a programmer, they almost always ask for .NET/C#, Java or PHP. The majority of it is for the web, as it is to be expected. Very few ask for C++ and I personally never saw any company around here requesting any sort of knowledge in Assembler/C. Ever. This most likely will be different from where you live, I guess. Well, just take a look at the local newspaper and you will see... I am not saying that C and Assembler are inferior/superior/easier/harder... all I am saying is market-wise, the need for C/Assembler programmers are far less than Java programmers (again, at least around here). |
I agree statistic might be manipulated, misleading and deceiving, and depend on on who conducts information gathering, but for this particular site please look at:
http://www.linuxquestions.org/questi...nguage-579542/ And give you vote! |
Thanks for the link mate. I already voted for Java in that one a long time ago. There are so few options to chose from in that poll which is not even fun.
But that thread is a good example of what I said. Programming languages may vary from one place to another. In a Linux forum, I am sure that Java would rate very low. At least bellow C, C++, Perl, Python and every other single scripting language commonly used in Linux. Try posting the same question on a Microsoft forum, then the same question on Sun Microsystems forums and we would get quite a different result. But in this site (and every other Linux site), C will dominate, because most know that Linux kernel is written in C, thus the "De facto" option. How many of those that voted for "C" can actually program anything beyond a hello world-type of program is nobody's guess though... |
Quote:
|
Quote:
|
Only Regionally Useful
Knowing the Javanese language would only really be useful in Indonesia. It might be interesting as an intellectual pursuit, but outside of Malaysia wouldn't be any more useful than Latin. Sure it's one of the most populous countries on the planet, but for me at least learning the language would be pointless.
And Haskell? I've never heard of it. A derivative of "Eddy Haskell" speak from "Leave It To Beaver"? You know, like "Hello Mrs. Cleaver! You're looking very lovely today!" - which in Haskell means "Let me distract you from my nefarious plans so I won't get into trouble." Poor dumb Eddy never realized that Mrs. Cleaver was fluent in Haskell. |
Quote:
Now I have the feeling that the majority here are right and I may have been a bit arrogant. I have to learn from scratch the way they teach it, BlueJ and all that jazz, or else I will, like ilikejam said, miss the big picture, regardless of whether it'll be useful or not for everyday programming. Thanks to all. :) vxc |
They thought me Java at Uni with BlueJ too (before moving to Eclipse). While not a bad program, I thought BlueJ to be a big waste of time. I can see how it "helps" to understand the classes structure through some nice UML-like diagrams. However, I think UML should be thought separately in any OOP courses.
Still, most Java courses start with BlueJ. Give me Eclipse any day :) |
i don't know about you dude but where i come from (pakistan) at my university you study c++/java combination. and they KILL YOU if you even try using an IDE for java. its all simple JDK and command line. ..lol (well you can use ant though).
And yes OO Analysis and Design is generally a separate course. Just had to get that off my chest. |
Quote:
Emacs or vi. |
Quote:
vxc |
I understand the point that mkhan919, vxc69 and ilikejam are trying to make and you are all right (kinda). Learning to use an IDE early on can be a pain, because you need to learn the IDE at the same time. It sure will get on the way.
However, I can't possibly think to program in Java without an IDE. The language is far too big and complex and auto-completion is a must for larger projects. When you start adding more frameworks with it, it will turn into a nightmare. If you work in a team, using Eclipse with SVN or CVS is very useful. You sure will be much more productive using an IDE then using an text editor, try to compile, fail because you typed one letter wrong in a method at the line 2034, fix it and try to compile again. Eclipse will check for syntax all the times and complete things for you. I really can't see how (and even more so "why") one would program without an IDE. Quote:
Dads today, I tells ye. You've to get with the times... |
Heh heh heh.
I'm 26. New-old-skool, baby. Dave |
LOL, cool. Well, I just hope you didn't take my "dad" part seriously, I was kidding. I can't deny I thought you were (much) older though, hehe.
|
Ive just started studying engeneering at uni (cambridge UK w00000t)
and we are learning to program in C++ as it can be used to teach the fundimentalls of any programming but dousent let you become sloppy like most "easier" languages can do. |
Quote:
I'd really like to know what you mean about a sloppy programmer in this case. Also, a sloppy programmer is not(only) relative to the language itself, but by the programmer and in some cases, his/her teacher. I've seen nicely done code written in Perl(which I dislike by the way) and ugly code written in C#... |
Sloppiness is largely defined by the point at which your sloppiness is found out.
In c(++) you get found out at runtime. In Java you get found out at compile-time. If my time was worth a lot of money (as I would contest that it is, both when employed and in Uni (but for different reasons)), I would prefer to be found out earlier, rather than later. Your mileage may, of course, vary. dasy2k1, you mentioned that you're doing an engineering degree - is that engineering(physical) or engineering(software)? Dave |
Another point i would like to make is that there is fundamental problem with using an IDE early on. I have seen a number of good programmer (student level mind you) who are totally clueless about how to go on if they dont have their favorite IDE avaiable. Thats why i said (hinted more likely) that sticking to just the JDK and a simple editor might be preferrable for educational purposes. For commercial developement Or major projects ...yes you need a good IDE. But in my opinion for beginners IDE tend to make them slopy ... in the sense that they dont actually understand how things can be done from command line , how to set classpaths etc since all is being taken care of by the IDE.
on the issue of sloppiness, any programmer using any language can be as sloppy as possible. it depends on the programmer not the language. But again its only my opinion .. |
I agree that using command line forces the student to learn some aspects that they may not otherwise. But there are times when using a command line can be quite restricting. Here's an example, if you're working on a large scale software project an ide often gives you the ability to build and uses some intelligence the determine what needs to be rebuilt and what doesn't. On very large scale projects builds can take hours so build times can be reduced. Depending on the language there may be tools that allow you to do the same thing but i haven't used them.
|
Quote:
Code:
man make |
Yeah.. disregard that ide intelligence post..! :)
|
If you work in the same environment or on a long project then time and effort invested in mastering any particular IDE might be worthwhile. If projects are short and diverse then there is no much sense studding IDE, old good 'make' would do the job as good as any of the most advanced IDE's. And by knowing your way around 'make' you could start another project in no time.
I don't think that anyone in the business for the last ten years would deny that IDE might be a powerful and helpful tool. And on another hand, it might be limiting and obscuring. So my take on it: anyone should understand 'command line' options, and that would give a better perspective on what is going on under the hood of IDE. And for the beginner, I discourage using IDE if you really want to understand programming and how things click together. |
Ya i agree with that!
|
I agree w/ most of what the OP said. A school should be teaching a low level assembly language. If they're not, the school is doing a disservice and students should avoid that school. It's an essential part of studying computer organization. In particular, Pep/5 is a good language choice. It's an assembler language that has no real world application, but it was invented by a professor as a language to ensure all low-level concepts can be presented.
And as terrible as C is, it should be taught to the extent needed to be able to read the language, because so many algorithms are published in C. A high level language is certainly more important, and this is where I disagree w/ the OP. You can learn the syntax of a high level language at home, sure, just like any other language, but profs will need to express high level concepts (OOP) using a high level language, so it's a good idea for a university to standardize on one. But there are much better choices than Java. Most academic programs are not structured intelligently enough to choose Ada, but if you find a school that uses Ada for high-level teaching, you can't beat it. Ada was heavily influence by Pascal (a true learning language), but also includes safety concepts not available in other languages. Plus it has the added benefit of having real world application. It's the language most projects would be using if most schools were competent enough to teach it. |
Quote:
As I have heard it told, there are three levels of knowledge:
At this point in your nascent(!) career, you're probably still on "level two." Everything that you have encountered so-far you relate to your own experience, and what does not relate to that, you dismiss as irrelevant. In the coming decades, you will undoubtedly encounter plenty of new systems and approaches that make today's GUI-systems look pathetic. (In fact, such systems are already here.) You'll find that all of your existing perspective on "the way things are" will be repeatedly blown out of the water; you will constantly be pushed out of your comfort zone, or else you will abandon this business for good. You'll gravitate toward some manageable and enjoyable corner of this ever-expanding universe of possibilities and eck out your career there. And you will shake your head in faint embarrassment at the absurdity of the above quote. Those around you will, however, understand. We have all, at one time or another, been there too. So if you suppose that I am making fun of you, please don't. You might not grok this quite right now, but I'm not. |
Is this really about Java? Or is it more about general dissatisfaction of students? There are rules and regulations in uni, you cant just go ahead and do whatever you like. Besides, they dont only train you technically but also socially, making you a member of the community of computer scientists. Introducing you to the ways of conduct here. Peace.
|
Quote:
Oh wow, thanks for that. Now I have something amazing(not) to look forward to. *shivers* :eek: |
Quote:
Oh and my module using BlueJ finished. I have to admit that for some of the lab/course work they designed it with BlueJ in mind so it was actually helpful to use BlueJ (like you don't need a main method to test stuff out). As for Java all I can say is that it's a really bloated language built with efficiency in mind, not speed, and it's kinda boring to code in, but that's my opinion anyways. Thanks for the discussion guys. :) |
Quote:
I must say... I don't really like computers (used to, though), so I hope that I won't have to work with them for the rest of my life. They used to be a hobby, but when you turn a hobby into a job, it almost always stops being fun. That and the fact that you need a new hobby :) If I could have chosen my path, I'd ratter be a farmer, a fisherman or a truck driver. I hate sitting inside an office all day long. |
At my university if you do anything network related you get to learn java. But anything generic will get you visual basic and c++. After two years of Java, and an arsey lecturer, i moved to the generic course, and it is so much better, and more how i imagined programming to be.
Similar to Mega Man X, if i could take it all back to before uni, i'd have (personally) followed my dream into Archaeology. Forget computers unless you appreciate intensely boring days, probably sorting out the problems of whining minions...sorry, other employees in the company. If you are reading this considering a job in computers, then read through some of the parts of this forum and ask yourself, do you want to end up like the rest of us? :D |
Quote:
Nothing better than pascal, C and C++ (not java to start) |
It's amazing to read this after 11 years. How I've personally morphed from the state I was in when I originally posted and how I am now, more like the older posters. Kind thanks to all you gracious strangers on LQ for steering me in the right direction back then. I wonder where you all are now and what your thoughts are about this industry and our shared hobbies.
I should pay it forward. |
All times are GMT -5. The time now is 01:18 AM. |