On Sat, Mar 31, 2012 at 5:15 AM, Nathan Rice <nathan.alexander.r...@gmail.com> wrote: > It is true that program complexity is correlated with problem > complexity, language and environment complexity is undeniable. If you > want to prove this to yourself, find someone who is intelligent and > has some basic level of computer literacy, sit them down at a computer > and ask them to solve simple problems using programs. You could even > be nice by opening the editor first. Don't help them, just watch them > crash and burn. Then sit them in front of code that already works, > and ask them to modify it to do something slightly different, and > again just watch them crash and burn in all but the simplest of cases. > It is painful - most of the time they just give up. These same > people almost universally can describe the exact process of steps > verbally or in writing to do what is required without any trouble; > there might be some neglected edge cases, but if you describe the > failed result, often times they will realize their mistake and be able > to fix it quickly.
This is more a matter of being unable to express themselves appropriately. If I allowed them to write an exact process of steps to do what's required, those steps would either be grossly insufficient for the task, or would BE pseudo-code. There are plenty of people who cannot write those sorts of instructions at all. They're called non-programmers. Anyone who doesn't code but can express a task in such clear steps as you describe is what I would call a non-coding programmer - and such people are VERY easily elevated to full programmer status. I've worked with several like that, and the border between that kind of clear, concise, simple instruction list and actual Python or REXX code is so small as to be almost nonexistent. It's not the programming languages' fault. It's a particular jump in thinking that must be overcome before a person can use them. There are other similar jumps in thinking. On which side of these lines are you? Do you remember making the shift? Or, conversely, do you stare at it with "Huh? Why would I do that?"? * Source control. Don't just keep daily backups - record specific purposeful changes in a log. * WYSIWYG document editing vs plain-text with a compiler. Pass up Open Office (or worse) in favour of LaTeX, abandon Sibelius in favour of Lilypond. Plays very nicely with source control. * Unicode instead of head-in-the-sand pretending that ASCII is good enough. * Open standards and toolchains instead of expecting monolithic proprietary programs to do your work for you. Etcetera, etcetera. Everyone who's made the jump will see the benefit of the side they're on; most who haven't won't. Same with non-programmers to programmers. Why should I write like that when I could just write English? Simple: Because dedicated programming languages are far more expressive for the job. ChrisA -- http://mail.python.org/mailman/listinfo/python-list