
-----------------------------------
wtd
Thu Jan 19, 2006 2:37 am

The Perils of Java Schools
-----------------------------------
http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html

-----------------------------------
Martin
Thu Jan 19, 2006 3:12 am


-----------------------------------
All the kids who did great in high school writing pong games in BASIC for their Apple II would get to college, take CompSci 101, a data structures course, and when they hit the pointers business their brains would just totally explode, and the next thing you knew, they were majoring in Political Science because law school seemed like a better idea. I've seen all kinds of figures for drop-out rates in CS and they're usually between 40% and 70%. The universities tend to see this as a waste; I think it's just a necessary culling of the people who aren't going to be happy or successful in programming careers.

Yeah, that's me. Shit.

And see? I'm completely justified in enjoying C++.

-----------------------------------
wtd
Thu Jan 19, 2006 4:29 am


-----------------------------------
You don't need to use C++ to deal with pointers.  :)

-----------------------------------
Martin
Thu Jan 19, 2006 7:02 am


-----------------------------------
What language would you recommend? Ruby, perhaps?

-----------------------------------
codemage
Thu Jan 19, 2006 1:20 pm


-----------------------------------
I did
1st year = Java / Pascal
2nd year = C / C++
3rd & 4th years = language independent / misc
(which meant C++ for independent work, and usually java for group projects).

-----------------------------------
wtd
Thu Jan 19, 2006 2:15 pm


-----------------------------------
What language would you recommend? Ruby, perhaps?

If the goal is to teach pointers, and not a broader introduction to programming, then C is perhaps a better match than C++.  While it lacks generics which are exceptionally useful for data structures, it's also a far simpler language semantically.

Pascal can also deal with pointers, and is perhaps even more straightforward for use in an educational environment.

I did
1st year = Java / Pascal
2nd year = C / C++
3rd & 4th years = language independent / misc
(which meant C++ for independent work, and usually java for group projects).

Have you worked with functional programming languages?

-----------------------------------
Andy
Thu Jan 19, 2006 2:40 pm


-----------------------------------
it pisses me off to see newb programmers play around with pointers randomly and finish their projects using tne.. when i started pointers we did it in c++, and if u sucked, you get the BSOD and you have to reboot ur system.. java is spoonfeeding way too much

-----------------------------------
rizzix
Thu Jan 19, 2006 2:45 pm


-----------------------------------
Nah not C, [url=http://en.wikipedia.org/wiki/Cyclone_programming_language]Cyclone and [url=http://www.digitalmars.com/d/index.html]D

-----------------------------------
wtd
Thu Jan 19, 2006 2:49 pm


-----------------------------------
Nah not C, 

Well, yes... but given the choice between C and C++ alone, C is the simpler language to teach and does just as much to explain how pointers work.

For it's safety, Cyclone is actually likely a bit more complex than C.

-----------------------------------
rizzix
Thu Jan 19, 2006 2:57 pm


-----------------------------------
well you don't have to teach them how to use @ and ?  (avoid, non-nulls and pointer arithmetic, until more advanced courses)

the * pointer in Cyclone is pretty safe, since it does not allow pointer arithmetic.


edit: actually, maybe just stick to ?... since you have to use them for arrays.. so yea pointer arithmetic.. but at least it has runtime bounds checking... acutally u know what.. nvm.. teach everything.. it's all there for a reason.

-----------------------------------
wtd
Thu Jan 19, 2006 3:02 pm


-----------------------------------
Either way, I trust we can agree that understanding pointers is important.  :)

Maybe they're not something you should use much in production code when safer options exist, but just because you shouldn't do something, doesn't mean you shouldn't know how to do it.  ;)

-----------------------------------
rizzix
Thu Jan 19, 2006 3:06 pm


-----------------------------------
well you definitely need to know how to do it, if you should not be doing it. ;)

-----------------------------------
wtd
Thu Jan 19, 2006 3:08 pm


-----------------------------------
Exactly!

-----------------------------------
Martin
Thu Jan 19, 2006 11:24 pm


-----------------------------------
Yeah, at my last internship myself and the other student gave each other nicknames. I was Martin "Memory Leak" Kess and he was Eric "Seg Fault" Lai. Good times.

-----------------------------------
Hikaru79
Fri Jan 20, 2006 12:27 am


-----------------------------------
What's really cool is that article links to a page full of downloadable video lectures: http://swiss.csail.mit.edu/classes/6.001/abelson-sussman-lectures/

Look at that first one, wtd :) A lecture on Lisp! (it even comes with a free copy of the complementary textbook)

-----------------------------------
McKenzie
Sun Mar 18, 2007 4:16 pm

Re: The Perils of Java Schools
-----------------------------------
Hey, no one mentioned Turing. Turing has pointers too  :wink: 
I think you can learn pointers reasonably well with Java.  It's actually one my biggest problems with Java though.  Although when you read/hear about Java you read that Java doesn't have pointers.  Once you get your feet wet you realize, of course it does, all references are pointers, you just can't play with them.  The idea, of course, is that they operate "under the hood" and you don't need to worry about them.  My problem is that this is "Leaky Abstaction."  There are a number of very fundamental things in Java that you need to understand how pointers operate under the hood.  This all gets back to one of the most common educational CS debates: What the best way to learn CS? "Objects First" or does your knowledge mimic the evolution of programming languages in general?  I've heard passionate arguments on both sides of the fence.  I'm not convinced that there is a clear-cut victor on either side.

-----------------------------------
ericfourfour
Mon Mar 19, 2007 2:59 pm

RE:The Perils of Java Schools
-----------------------------------
Although, pointers and recursion are important for efficiency and what-not, why should an employer care if they are not needed to write a program? This person talks about OSs and compilers, but how many people are being paid to program those, compared to where pointers and recursion are not needed.

Also, if the language can take care of the memory for you and make life easier, isn't that good? That way you can worry about the task at hand rather than if you are freeing the right memory at the right time.

Its good to know all of the concepts this person writes about (and more), but society, in general, doesn't believe they are necessary to survive. That is why they are being phased out of colleges and the workplace.
