3 ms·
It's simple. Designing a language that clearly illustrates CS fundamentals and a designing a language that supports maintenance of huge codebases by teams of pr
by cageface 16y ago
It's simple. Designing a language that clearly illustrates CS fundamentals and a designing a language that supports maintenance of huge codebases by teams of programmers of varying ability are two very, very different problems. It's no accident that CS profs love Scheme and banks love Java.
What really matters is how well your language supports your primary level of abstraction. The turtles-all-the-way-down nature of elegant languages like Smalltalk or Lisp doesn't really make that much difference when you're mostly manipulating high-level third party APIs and where mature tools and predictable, easily readable code count for more than the ability to roll your own new object system in the core language.
- raganwald 16y agoFirst, I am under the impression that a great many CS professors teach CS using Java. Second, are you suggesting that since banks love Java, then Java is a language that supports maintenance of huge codebases by teams of programmers of varying ability to a greater extent than Scheme or any other language? Third, I am confused by the suggestion that "elegant" languages are somehow unsuitable for writing "predictable, easily readable code." Can you expand on this? Update: Fourth, I forgot the essential point I was implying in my original question. What is there about "maintenance of huge codebases by teams of programmers of varying ability" that isn't a CS fundamental? Sure, if you are talking about Computer Science as a study of the properties of a formal system, this is irrrelevant and lost amidst talk about category theory and turing equivalence. However if you look at CS in a wider context you have professors teaching things like encapsulation, which has certain important implications for the study of formal systems but also has important implications for "maintenance of huge codebases by teams of programmers of varying ability." This is part of the motivation for Wirth expanding Pascal into the Modula family of languages: To create a language that was useful for teaching and practical for the construction of the Lilith workstation. I can't imagine anything about "maintenance of huge codebases by teams of programmers of varying ability" that isn't a suitable topic for teaching and especially research.
- cageface 16y agoMy impression is that most CS profs teach Java because they've been forced to and that they're not very happy about it. Which makes sense, because Java is a terrible language for teaching fundamentals. And yes, I do think Java is much better than Scheme for the kind of software a bank wants. The rigid syntax, static type system, and built-in OO, and lack of macros make it easily to build very powerful tools, which you need when you're wading through a huge, unfamiliar codebase. These same features make it pretty easy to jump into an arbitrary codeblock and understand what it's doing. Scheme, for example, is so flexible that you can design your own exception-handling and iteration constructs, which nobody but you can read. As far as elegance goes, it counts mostly in the small. Quicksort in Haskell is a thing of beauty but most production code looks nothing like this. The vast majority of real production code is just API glue and simple iterations and elegance just doesn't enter into the discussion.
- raganwald 16y agoYour arguments appear to be of your own construction, not of mine. I never said Scheme is an ideal language for teaching, you did. Yet in the same thread, you deride "elegant" languages as only being elegant in the small. This thread is about devising a new language for teaching. If the Scheme is only elegant in the small, why would we use it for teaching? We would devise a language that isn't anything like Scheme if we believed what you profess to believe. If "rigid syntax, static type system, and built-in OO, and lack of macros make it easily to build very powerful tools," why wouldn't we teach with a language featuring "rigid syntax, static type system, and built-in OO, and lack of macros?" Overall, I get the strong impression that you like Java and don't like Scheme. Have at it, you are not alone. But there is no reason for me to debate that with you, since at no time have I said that I prefer Scheme to Java for teaching or for industry. My claim is, essentially, that if we are designing a single new language, then whatever characteristics we think are appropriate for demonstrating CS concepts will also be appropriate for business. I voiced no objection to static typing or rigid syntax or lack of macros. You did.
- cageface 16y ago