|
Taken that nullpointer leans towards more subjective questions, a thought just popped into my head - why do they still teach Java given that Ruby and Python are also object oriented? Btw, I've found that some science high schools are teaching Python, so why not make python the standard? I'd love to hear from faculty/teachers/ students and their opinions. Maybe with enough balls running, finally it would be fun to learn computer programming. In my opinion they shouldn't make it hard for people who will be programming first time to learn OO. To me java is like C which is like a super hard thing to make people learn, not unlike Python. Then when you teach python or ruby, it would make people more "happy" IMHO than Java which is very verbose/serious/difficult in its implementation. This is my opinion. Anyway, any suggestions? Java people just tend to make scripted languages a little less fun - IMHO.
This question is marked "community wiki".
showing 5 of 22
show all
|
Suggested reading. Java actually gets a bit of flak every now and then for being "too easy" for teaching programming courses. :P Gives an alternate perspective on whether or not programming courses should be made easier. I'm confused. What question is this answer answering? well, to somehow make this funny, i think it answers: "How do you make students suffer pain and agony in Java so that they can see better the light when they see Ruby and Rails?" All four points are possible reasons why universities are using "difficult" (Java) languages (as you put it) instead of "easy" (python) languages, like you're suggesting. That was your original question, wasn't it? it was a rhetorical question. not to be taken seriously, yes i just didn't have a good time with java in college, which lead to my rough start in software development apologies, now i understand why subjective questions aren't asked over at stack overflow. every answer is correct to an extent. I see... I sorta skipped the part in the question where Java was called hard. I was just confused that your points didn't seem to apply to Java. If applied to Assembly, C, or LISP, sure it would make sense, but Java, not so much. I agree with all the points that rain mentioned. I would like to add that, IMO, the static typing of Java adds to its advantages, at least in teaching, because the students with or without the help of IDE will be able to know if they made a mistake in assigning values to variables as early as compile time.
showing 5 of 7
show all
|
|
Market forces. Think about it: what sort of people are needed by the enterprise solution vendors that donate computers/provide sponsorships to these schools? That's right, Java or .NET programmers. In hindsight, it's sad that I graduated UP without learning LISP / MIT Scheme (but then again, it's also sad that I graduated without learning JavaScript, HTML, and CSS :p) |
|
Because once you do Python... there's no turning back. :) Drowsiness aside: There are some low level things in programming that are better explained in c/c++ and java. In Python and Ruby, a professor might just say when you set a variable it gets collected and you don't have to worry about it. While in c family, students will actually alloc/dealloc memory and IMHO gives you clear understanding of nitty gritty + discipline and quite a bit of different mindset. correct. the thing is that in college CS is taught by fragmented courses. hence this course invented by some guy in jerusalem. http://diycomputerscience.com/courses/course/the-elements-of-computing-systems |
|
this might not be a favorable answer but looking at this wiki page http://en.wikipedia.org/wiki/Comparison_of_programming_languages Java is standardized as opposed to Ruby and Python. There must have been guidelines set and followed by universities in choosing a Programming Language of choice if there needs be one specific PL for a curriculum. |
Which college and universities are you referring to?
ateneo, la salle, UP. they're all java for data structures and everything.
if i'm not mistaken, these three do java. but mostly nag jajava ang universities. of course they offer a lot of other programming languages but i mean for fresh men they teach it for OOP. IMHO python is easier to teach for OOP and as well as Ruby. It's just one line. I don't get why they purposely pick a difficult language (at least for me). Anyway, java basics is easy, sure. Then there are a lot of tutorials on java and it was once open source.
oh and this question would be meant for those teaching CS/MIS/IT in their respective curriculums. gayahan lang ba or is it hard to revise curriculums, so that's why everyone is on java for OOP for first year..
There are some low level things in programming that are better explained in c/c++ and java. In Python and Ruby, a professor might just say when you set a variable it gets collected and you don't have to worry about it. While in c family, students will actually alloc/dealloc memory and IMHO gives you clear understanding of nitty gritty + discipline and quite a bit of different mindset.
@marconi, you may post that as an answer. =D
Right, I'll just edit my first one below. :)
[java] for (i = 0; i < arrayOfInts.length; i++) { if (arrayOfInts[i] == searchfor) { foundIt = true; break; } }
vs [python)
if( searchfor in arrayOfInts) : foundIt = True
If there are short cuts, why not use them? what part of lists would I not understand if I shortcutted it? i know that a list will contain a list of values, just that i find the last statement easy to understand. (then again, I just wish that courses were flexible, OOP in Java or OOP in Python, which do you want? okay, there we go)
@redshift, I believe this follow-up question has been answered in Marconi's post. If you want concrete examples of things you'll be misssing for this specific case, it's better to post this follow-up question on a new thread.
Java has a first mover advantage. And if you used Ruby on Rails, I think you need to subscribe to some kind of religion/philosophical methodology for you to be able to use it. And do you want your students to be exposed to DHH? ;-) http://www.hanselman.com/blog/DontGiveBileAPermalinkFindingBalanceWithinTheNoAssholeRule.aspx
You're confusing Ruby with Rails. Ever heard of MINSWAN?
And besides what's wrong with subscribing to a methodology if it works in the proper context?
I'm not confusing Ruby with Rails. Ruby is fine. It's just that Ruby on Rails is the face of Ruby right now, and comes with it is a leader whose personality is a bit strong for some people. "And besides what's wrong with subscribing to a methodology if it works in the proper context" <-- I'm not complaining on this, just matter-of-factly there, that some will find other languages (notably PHP, Python, or Java if you may) more approachable(there's no gazillion of things to setup/configure or subscribe to certain methodology) and/or consquently has lesser learning curve
Ruby will have a place in computing (if it still hasn't), Matz complied with facial rule :-) http://blogs.microsoft.co.il/blogs/tamir/archive/2008/04/28/computer-languages-and-facial-hair-take-two.aspx
"..some will find other languages (notably PHP, Python, or Java if you may) more approachable(there's no gazillion of things to setup/configure or subscribe to certain methodology)"
Er.. that's the point of Convention over Configuration. If you're going to use a framework that gives you free reign over what you can do, you're going to have gazillions of things to configure, and vice versa. AFAIK, there's no framework that gives you both without compromise.
yo michael use the answer thingy so we can add points. yes and that methodology is based upon the agile method, the MVC way of organizing code, and also some OOP. then there are alternatives to all frameworks (of course!) - one rails alternative is sinatra (microframework though). The reason to have a certain philosophy is if you say you're a RoR guy, any company using looking to maintain their RoR application can get you, vice versa. compare this to if you're not rails, then you can't get the job because you don't know where to start or what it's all about.
@redshift: If I may clarify your question.
What OOP concepts have you learned in Ruby (btw I think Rails should not be part of this question as it is not a language) or Python that you had a hard time learning in using Java?
"IMHO python is easier to teach for OOP and as well as Ruby. It's just one line." Can you expound on this? IMO, language verbosity has nothing to do with OOP concepts. As rain mentioned Python and Ruby usually hides the details w/c might teach OOP concepts better.
Also I would like to say that Java is still open source.
Sorry if I'm sounding like a grouch here, but isn't the question regarding learning OOP? It gets confusing, especially to those who are not familiar with what you guys are saying (e.g. RoR, agile methodology). And I think this stemmed-out because of the title, which should have not included Rails as it is not a language.
Also, I think agile doesn't have anything to do with "convention over configuration" but that's another topic.
for those who dont know java has struts, hibernate,spring as frameworks. there are also groovy and even jruby which implem ruby.
scripted languages like ruby are yet another way to teach OOP, the language is part syntactic sugar, my point was its easier to read its syntax. theres no prob if you like compiling first then seeing if there are errors. its a little tedious but i understand why. so you'd have to look through all the possible loop wholes and learn bytecode etcetera. OOP has nothng to do with it, i think i wanted to replace java with ruby in colleges, thats the nature of my question.
@bobsantos
Can you give a concrete, non-metaprogramming example wherein Python and Ruby hides implementation details for OOP compared to Java?
As for the digression into agile, it's due to someone basically saying "Don't use Ruby because you'll use Rails and you'll be forced to use a certain agile methodology. Also the guy who created Rails is an asshole." which is so wrong on many points.
@redshift: Thank you for the clarification. :) So the question should not be limited to OOP and I saw that you created another question for that.
@bryan bibat: That's basically my point, the metaprogramming capability of Python and Ruby (I'm not saying this is a bad approach.) might hide some implementation details which leads to what @redshift said "easier" way of doing things. But if we are just talking about fundamentals of Python then I don't have any arguments for that. ;)
@bryan bibat: "As for the digression into agile, it's due to someone basically saying "Don't use Ruby because you'll use Rails and you'll be forced to use a certain agile methodology. Also the guy who created Rails is an asshole." which is so wrong on many points." -- LOL, maybe I missed that part while reading thru the comments at 2AM. I agree that it is wrong at ALL points. Rails does not define Ruby and the agile methodology has little to nothing to do with creating Rails. That's why I mentioned that Rails should have not been part of the question.
(Off-topic) For what it's worth, we'd really prefer it if NullPointer had more objective questions. :)