Re:Eve: the dev diary of a programming environment aimed at ...
by anigbrowl on Thursday May 14, 2015 @01:58PM
(#9546518)
Edit: I hadn't seen your pro-Excel comments before typing this, so it's already out of step with your more elaborate explanation. But now that I've written it, I don't want to just zap it again :-)
I feel the same way about text-based programmers who refuse to wrap their heads around flow-based programming using graphical interfaces depicting control networks.
I don't think the hard part about conventional programming is understanding branches and loops, or even things like pointers and trees. It's the uncertainty about how to structure a program (which is like the difference between being able to write an answer to a question and being able to compose a long essay) and how get familiar with library functions - it's not obvious to someone new to programming sitting in an editor what things they can do, and a great deal of documentation written by programmers is appalling - a cardinal sin among developers is a poor ability to articulate what tools are for and how they can be used. It's like handing some kid a box of paints and brushes but refusing to tell them anything about picture composition, color theory, or brush technique.
Another part of the problem is many developers' veneration of syntax. There is nothing worthy about making people do lots of typing, both the hitting-keys-on-the-keyboard kind and the using-the-right-sort-of-variable kind. OK, it is worthwhile to understand the basics of char, string, int, and float, but that's all that most people need to know. Faffing about with extended types and understanding the way the CPU works isn't important for most people. Kernel and other low-level programmers, sure, but most people want to solve an external problem, not become expert on the insides of their computer - just as most people want to drive cars rather than be mechanics, most people want to drill holes rather than become experts in brushless motors and tool manufacture, and most programmers want to talk about relatively high level concepts rather the messy business of transistors and voltages and digital circuits (witness the slightly panicked tone of any discussion on FPGAs where people say that HDLs like Verilog are scary hard).
It's bizarre to me that people are still getting up every day and worrying about whitespace, semicolons, and matching braces. In general this stuff is a complete waste of time; it can be automated away, so why do we expect people to do all this typing other than because that was what we had to do when we learned to program? When I was young, the only way to study computers in college in my country was to do an electrical engineering degree. This wasn't that attractive to me because while I do sort of enjoy breadboarding and building analog circuits, I was a lot less interested in learning about the internals of power supplies and so on than I was in constructing text adventure games or fiddling with sprites or browsing the source code for Rogue. Many developers today are making the same mistake, saying that if you want to play with computers you need to learn a bunch of language-specific stuff which must be typed out with a keyboard, yea, as has been the tradition on the hallowed command line of thy god, UNIX...
...let's get real. You don't become an architect by spending years learning to lay bricks, install plumbing, and hang drywall until finally the secrets of the holy blueprints are revealed. Rather, you study a mix of things from structural engineering to the properties of different materials to aesthetic theories to economics. You could be first in your class at architecture without necessarily being especially skilled in construction. It seems to me that you're arguing for programming to be more like (mythical) freemasonry, but that;'s a good way to get sidelined as more and more people demand software development tools for more utilitarian ends.
I'm not saying that a detailed grasp of these low-level concepts lacks value. Of course it has value. I have a soft spot for hand-rolling things inn assembler. But you shouldn't have to come to it through a text-based paradigm, any more than children should be required to study injection-molding and styrene monomers before being allowed to make things out of Lego.
I feel the same way about text-based programmers who refuse to wrap their heads around flow-based programming using graphical interfaces depicting control networks.
I don't think the hard part about conventional programming is understanding branches and loops, or even things like pointers and trees. It's the uncertainty about how to structure a program (which is like the difference between being able to write an answer to a question and being able to compose a long essay) and how get familiar with library functions - it's not obvious to someone new to programming sitting in an editor what things they can do, and a great deal of documentation written by programmers is appalling - a cardinal sin among developers is a poor ability to articulate what tools are for and how they can be used. It's like handing some kid a box of paints and brushes but refusing to tell them anything about picture composition, color theory, or brush technique.
Another part of the problem is many developers' veneration of syntax. There is nothing worthy about making people do lots of typing, both the hitting-keys-on-the-keyboard kind and the using-the-right-sort-of-variable kind. OK, it is worthwhile to understand the basics of char, string, int, and float, but that's all that most people need to know. Faffing about with extended types and understanding the way the CPU works isn't important for most people. Kernel and other low-level programmers, sure, but most people want to solve an external problem, not become expert on the insides of their computer - just as most people want to drive cars rather than be mechanics, most people want to drill holes rather than become experts in brushless motors and tool manufacture, and most programmers want to talk about relatively high level concepts rather the messy business of transistors and voltages and digital circuits (witness the slightly panicked tone of any discussion on FPGAs where people say that HDLs like Verilog are scary hard).
It's bizarre to me that people are still getting up every day and worrying about whitespace, semicolons, and matching braces. In general this stuff is a complete waste of time; it can be automated away, so why do we expect people to do all this typing other than because that was what we had to do when we learned to program? When I was young, the only way to study computers in college in my country was to do an electrical engineering degree. This wasn't that attractive to me because while I do sort of enjoy breadboarding and building analog circuits, I was a lot less interested in learning about the internals of power supplies and so on than I was in constructing text adventure games or fiddling with sprites or browsing the source code for Rogue. Many developers today are making the same mistake, saying that if you want to play with computers you need to learn a bunch of language-specific stuff which must be typed out with a keyboard, yea, as has been the tradition on the hallowed command line of thy god, UNIX...
...let's get real. You don't become an architect by spending years learning to lay bricks, install plumbing, and hang drywall until finally the secrets of the holy blueprints are revealed. Rather, you study a mix of things from structural engineering to the properties of different materials to aesthetic theories to economics. You could be first in your class at architecture without necessarily being especially skilled in construction. It seems to me that you're arguing for programming to be more like (mythical) freemasonry, but that;'s a good way to get sidelined as more and more people demand software development tools for more utilitarian ends.
I'm not saying that a detailed grasp of these low-level concepts lacks value. Of course it has value. I have a soft spot for hand-rolling things inn assembler. But you shouldn't have to come to it through a text-based paradigm, any more than children should be required to study injection-molding and styrene monomers before being allowed to make things out of Lego.