📜 ⬆️ ⬇️

Why MIT is no longer studying SICP

A few days ago, Gerald Sassman, one of the authors of the great and mighty SICP, as well as the godfather of Scheme, drew wide attention at the NYC Lisp meeting at the beginning of the year. It’s all the fault of the answer to the question of why MIT stopped teaching the now legendary course 6.001, built on the basis of Sassman and Abelson’s book “Structure and Interpretation of Computer Programs” (the question was asked in 59 minutes).



Sassman cited two reasons; however, I note immediately that the first of them is nothing special. By 1997, Abelson and Sassman were already tired of telling almost the same thing since the 80s, so they decided to leave the teaching and suggested that the head of the department decide for themselves what to do with the course itself. There is really nothing to be surprised here - anything can ostochertert, if you deal with them long enough.
')
However, the second reason is much more serious. According to Sassman, he and Abelson realized that the SICP curriculum was no longer able to prepare engineers for what constitutes “engineering” today. In the 80s and 90s, engineers built complex systems, combining simple and well-studied "parts." The goal of SICP was to provide an abstraction language for reasoning about such systems.

Today things are not so. Now engineers usually write code for complex hardware, which they do not fully understand (and often this is due to commercial secrets, and not because of laziness or lack of time - take the same Apple and its technology). The same is true for software, since software environments consist of huge libraries with the broadest functionality. According to Sassman, today his students spend most of their time reading the manuals for these libraries in order to figure out how to link them together with a simple goal — to make everything work and do what they need.

According to Sassman, “Programming today is more like science: you take a part of the library and“ poke ”into it — look at what it does. Then you ask yourself, “Can I set this up so that it does what I need?” The “analysis through synthesis” approach used in SICP, when you build a large system of simple, small parts, has become irrelevant. Today we are programming "at random".

In the end, Python was chosen as an alternative for Lisp at MIT. In favor of the language of teachers, the fact that a large number of libraries are available for Python is available, which allow it to be used to solve exercises in a wide variety of project types (for example, to write software for robot control).

However, Sassman himself joked that using Python was a “late binding” solution — because the SICP training plan was more “consistent” than its place. He admitted that, together with his colleagues, he still had no idea what the optimal training plan should be.

Opinions about modern education in general, and what future software engineer should be trained in, diverge radically - therefore, it is impossible to offer a definite conclusion from the innovation. According to one of them, the fundamental purpose of learning CS is to understand how computers work, rather than studying specific programming languages, and even more so - libraries. The opinion of the co-author of the course of Abelson about the end of the SICP era at MIT can be found here .

The modern economy is in dire need of having a large number of application programmers in the market, and universities are fulfilling their duty to prepare students for the future. Naturally, it is impossible to learn everything, especially at the start of a career; and at the same time, a serious study of CS can reduce the amount of bad code and the suffering of fellow developers.

One of the tales about MIT always said that “the study of SICP and Lisp is the moment when freshmen begin to leave most of the world behind in terms of the possibility of solving problems (I mean problem solving) and the ability to do their work”; Moreover, many MIT graduates continue to do what the libraries themselves write, and do not use someone else's. It seems that despite the cruel realities of business, there are those among us who (secretly) enjoy the process of teaching programming from scratch, more efficient use of resources and building their bicycles than daily disassemblies with other people's APIs and tying up ready-made open source. components in an effort to do what is required - the very “get work done” that Sassman talked about (although the new approach in this regard is really closer to production tasks). However, the times when students during the training had to engage in the creation of compilers / interpreters can go back in time faster than we think.

Of course, all this is not a reason to refuse to get acquainted with SICP. By established tradition, references to the book itself and lectures are attached.

Source: https://habr.com/ru/post/282986/


All Articles