On Monday, 9 May 2016 at 19:09:35 UTC, Joe Duarte wrote:
Now, there are some reasonable hypotheses having to do with programming/tech culture and its effects on gender diversity. I think some of those can intertwine with PL design issues. I also think there might be an issue with the quality and compellingness of today's computing platforms, and the perceived power of computers to do amazing and interesting things. I don't think the platforms people are introduced to in CS education are very good at generating excitement about what computers can do. It would be interesting to gauge what sorts of things people think they might be able to create, what sorts of problems they think they could solve, or new interfaces they could implement, after their introduction to programming. What horizons do they see? For example, there used to be a lot of excitement about what computers could do for education. Those visions have not materialized, and it's not clear that computing is doing anything non-trivial in education for reasoning ability, unlocking math aptitude, writing creativity, etc. It might actually be a net harm, with its effects on attention spans and language development, though this will be very complicated to assess.

Mobile has reinvigorated some idealism and creativity about computing. But the platforms people are introduced to or forced to use when learning programming are not mobile platforms, since you can't build complex applications on the devices themselves. Unix and Linux are extremely popular in CS, but are terrible examples for blue sky thinking about computing. Forcing people to learn Vim or Emacs, grep, and poorly designed command line interfaces that dump a bunch of unformatted text at you are disastrous decisions from a pedagogical standpoint. (See the BlueJ project for an effort to do something about this.) They do nothing to illustrate what new and exciting things you could build with computers, and they seem to mold students into a rigid, conformist nix, git, and markdown monoculture where computing is reduced to bizarre manipulations of ASCII text on a black 1980s DOS-like screen, and constantly fiddling with and repairing one's operating system just to be able to continue to work on this DOS-like screen (Unix/Linux requires a lot of maintenance and troubleshooting overhead, especially for beginners – if they also have to do this while learning programming, then programming itself could be associated with a life of neverending, maddening hassles and frustrations). The debugging experience on Unix/Linux will be painful. From a pedagogical standpoint, this situation looks like a doomsday scenario, the worst CS education approach we could devise.


I applaud you for staying and explaining, although you clearly get some destructive feedback here.

Your criticism of vim, emacs, and Unix is misleading imho. Vim and emacs are not optimized for learning. They are power tools for professionals. There are easier text editors for beginners. The command line on the other hand is great in my opinion. It makes you have a conversation with your computer instead of pointing at buttons. The basic idea is currently reinvented as "chatbots are the new UI breakthrough" [0]. Sure, discoverability is a problem with the terminal. GUIs fixed that by showing buttons for every possible action. Chatbots use AI tech to make sense of anything, but we lose precision with this conversational style. A professional tool requires precision.

I agree that syntax is mostly historical baggage. The main reason why D mimics C, is because people are familiar with it. Not because the syntax is good. It is bad and everybody knows it. However, I'm not talking about curly braces or semicolons. I think it is weird that we use the "equals" character to express "assign".

[0] e.g. http://marketingland.com/microsoft-build-171006

Reply via email to