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