8 ms·
I've seen this in a couple places, but I'm not sure I understand why. Does anybody know of a good reason for teaching java first?
by marblar 14y ago
I've seen this in a couple places, but I'm not sure I understand why. Does anybody know of a good reason for teaching java first?
- jckt 14y agoIt's in the interest of the big companies. From what I know, some smaller schools like Harvey Mudd start off with other languages, like Scheme and Prolog.
- jlgreco 14y agoThat used to be The Way To Do It(tm). MIT switched away, though to python iirc which isn't terrible. Northeastern still uses Scheme first though.
- andrewflnr 14y agoIIRC, Harvey Mudd starts off with Python, in the intro class everyone takes. I just looked through their course listing, but I'm not 100% sure I'm thinking of the right class.
- ww520 14y agoWhy not?
- USNetizen 14y agoThere are a few big reasons schools still teach Java primarily - adoption, scalability, and maturity. According to almost every Tiobe language survey, Java has been and is still either #1 or #2. It is pervasive in just about every enterprise IT environment throughout the entire world (whether you realize it or not), running on a ~billion devices and, now, Android phones as well. Furthermore, it has very mature support for everything from GUIs (Swing) to web development (Servlet) to high-powered concurrency to advanced data structures. There are literally thousands of libraries and frameworks for every need and a wealth of talent and knowledge out there. Its performance is also orders of magnitude better than interpreted languages like PHP, Python or Ruby. It simply scales better in just about every way and is universally supported almost everywhere. So, to summarize, for all the reasons listed above Java is the bread and butter of enterprise software. Personally, I prefer Python and C#, but Java is unavoidable if you want a good paying job or are serious about building a high-performance, platform-independent, scalable application.
- andrewflnr 14y agoYes, but teaching java before graduation is different than teaching it first. You can get all the benefits you mentioned of learning Java even if it's the second or third language while using something nicer for the first one (python? Scheme? SML?).
- USNetizen 14y agoNot so. Learning on an interpreted language is akin to learning how to fly a plane by simply riding in one. There is a lot to learn in a CS program, and it really requires a single language from start to finish. Python doesn't have some of the advanced capabilities and adoption of an enterprise-class language like Java. Believe me, I love Python - I've created a ton of apps with it, but I also have a CS degree and have seen the practicality of using a single language from start to finish. How are you going to reinforce the notion of how a compiler works with an interpreted language? How would you teach and force the use of static types on a dynamically typed language? How would you teach true concurrency and thread safety with a language that is limited by a global interpreter lock (GIL)? These are introductory things a CS student would take in their first year.
- abraininavat 14y agoVery few first year CS students do any concurrency your first year. Your first year you're just learning Java.
- deleted 14y ago[deleted]
- eru 14y ago> Learning on an interpreted language [...] Interpretation or not is a property of the implementation, not of the language. And it's a sliding scale as well, as you can see with Java.
- kyllo 14y agoHow are you going to teach pointers or recursion in Java, though? More on that from Joel Spolsky here: http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html http://www.joelonsoftware.com/articles/ThePerilsofJavaSchool... There is a lot to learn in a CS program, and it really requires a single language from start to finish. There is really no single language that you can use to teach everything that a CS student needs to learn. A computer science education should teach concepts that transcend languages, and use whichever language is best suited to demonstrate the concept at hand.
- timtadh 14y agoThe AP (Advanced Placement Exam)^ is taught in Java. Before it was in Java it was in C++. A lot of schools had C++ intro courses because of this. When the AP switched most switched to Java. It isn't the right language in my opinion for an intro course but there you go. ^ an exam which offers college credit at most universities to high school students
- qpleple 14y agoI feel it gives a good tradeoff between: - typed languages that are too low level to start (C/C++) - scripting languages that are high level, not typed, and therefore do a lot of things under the hood (Python, Ruby, Javascript)
- mratzloff 14y agoThis is a reasonable view, but I want to point out that Python and Ruby are strictly typed, just not statically typed. You must still understand primitive types and casting, in contrast to JavaScript or PHP, which are both loosely and dynamically typed (a frequently dangerous combination).