|
> There is a lot to learn in a CS program, and it really requires a single language from start to finish. Why would a CS program require one language from start to finish?! Wouldn't exposing students and researchers to as many languages and technologies as possible be the actual point? This is how you get people to come with new ideas, you expose them to as many existing ideas as possible, in as many forms and languages as possible... If I were to design a CS curriculum, language wise, I'd first expose people to Scheme via SICP, then push them from theory to practice with a language like Common Lisp and on a parallel track, more related to EE, move up from an idealized teaching-optimized assembly to real-assembly to C and then to very basic C++, then expose them to "engineery" concepts like OOP in two ways at the same time (the classic C++ way and the multiple-dispatch way in CL), and on a third more "pure CS" track have students choose any of the languages or techs from the other 2 tracks to solve the programming parts of the theoretical problems in this part - yeah, grading and teaching a class of such "polyglots" with their minds all over the map would be hell for any teachers, same as managing a research project with the same maddening diversity, but imho the people that are mentally equipped to handle such environments should be the ones teaching the new generations, not the ivory-tower one-problem-focused types. Don't get me wrong, I'm against this new "hyperpoliglot wave" of using half a dozen languages in one project, but I'm against it in industry, and from a business perspective, because it wastes brainpower that can be put to other use and bring actual business value, but not in academia, because here the whole point is to explore everything, and you don't really have ugly time constraints and the need to provide "quality of service" assuring to real customers - something like a phd program lasts a few years and at it the end of you don't even have to provide a product that works in the real world (like support a certain load, not be littered with security exploits, be extendable to easily surpass or match the competition on new features etc.). Maybe I have a weird way of looking at things, but the whole software universe seems upside down to me: academia / CS programs limit themselves to a very small number of technologies to use and problems to solve and this way they do very little "exploration of the problems' space", while the industry jumped into a madness of polyglot-everything way of doing things, with 100 choices of doing everything, none proven to work better for a particular case, and 90% of the time spend learning the tools instead of solving the problems. Shouldn't industry standardize and academia explore? Why are things the other way around in the IT world? |