On Nov 28, 2007, at 12:17 PM, Robin Gane-McCalla wrote:
The only substantive cultural bias in programming languages is the
pervasive use of English language keywords,
how can you say that?  Programming is essentially a way to solve
problems and all cultures solve problems differently.


This is not sociology, it is mathematics. Transforming one set of binary states to another set of binary states. Yes, there a number of different methods for doing a given a transformation, but those are all the same kind of mathematics and understanding the tradeoffs between those methods is also the same kind of mathematics. And choosing a method is *not* arbitrary -- see the part about "tradeoffs".

Mathematics does not work differently based on cultural context. There is not a lot of room for whimsy if economical results matter.


which hasn't seemed to
slow down pasty white males who do not speak English a whit.  There
are only a handful of abstract concepts that underly all programming
languages,
what are these concepts?  And if all you need to do is understand a
few concepts, then why do computer experts (people who presumably
understand all of these concepts) have languages they prefer and argue
about which languages are best?


Different languages have different syntactic sugar and structural biases that are better or worse for solving different problems. And then there is the case of people being biased toward the familiar. There is no "best" language because no language is highly optimized toward solving all major classes of problem, yet all of the thousands of languages out there are essentially equivalent at a theoretical level.

Arguments over whether one language is better than another are about practical concerns, like library support and expression density in various domains.


A female minority (or any other minority, anybody who is far away from
the dominant geek culture that dominates CS) probably wouldn't ever
get to the point of designing a programming language unless she joined
the geek culture, and then she would be distanced from all the other
people who don't understand programming, and thus not any more able to
create a useful and easy to understand programming language than the
geeky white males.


Or maybe after she has actually studied theoretical computer science, this female minority understands the subject well enough to realize that there is no such thing as this mythical culturally sensitive programming language so many people are pining for. Computer science is what it is. Chemistry cannot be made as simple as cooking in a kitchen either, even though it has some superficial similarities.

This is a recurring theme, that Holy Grail programming language that requires no knowledge of computer science to use well. These arguments are based entirely the desire to create a language that can turn a thoroughly ambiguous and contradictory specification into a perfectly working program, without grokking that programming languages are *by necessity* non-ambiguous and require consistent constraints -- explicit and implicit -- if you want a useful result.

Your above argument is handwaving. There was a reason I was looking for a specific example -- a minority friendly lambda calculus language -- because I've heard your claim made repeatedly for many, many years and have yet to see a single shred of evidence that such a language would not look virtually identical to one of the thousands of existing languages. We have many dozens of languages that were expressly designed to make the underlying concepts as easy to grasp as possible for a non-geek. This has lowered the barrier to learning a programming language a bit, but it has not obviated the necessity of learning the underlying concepts of theoretical computer science that would make knowing a programming language useful.


The cultural bias lies in the choices that people make for the
syntactic sugar and the mathematical models.


For example...? Mathematical models are selected to optimize for certain functional characteristics. If you think those choices are arbitrary, you were sleeping in your computational theory classes.

And in any case, you can find programming languages that run the range of every major (and most minor) mathematical models for programming in literature, and the major ones are available in major languages. The choice is yours.

Syntactic sugar is not an excuse either; note that the "cultural bias" for syntactic sugar is among *sub-communities of geeks* and not the population at large. It is a technical culture, not a social culture (though LISP weenies get damn close). Also many (most?) languages let you create your own syntactic sugar. In any case, I'd be interested in seeing an example of a prohibitive cultural bias in syntactic sugar.

And if what you assert is true, where are all the female COBOL programmers?


wait, why do I have to manipulate complex multi-dimensional graphs in
my head?  I'm a programmer and I've never done that before.  I'd be
interested in knowing why you think this skill is important, but I can
guarantee you many programmers never do it.


Uh, what kind of programming do you do that you would assume that almost the entire software universe is working in some kind of linear scripting environment?

Any code design of any significant complexity is generally *always* a complex multi-dimensional graph, particularly true if scalability matters. It is not something you do consciously, but any programmer that works on sufficiently complex software systems is doing it. If you are gluing all the fancy complex code engines together with a few glue bits (a lot of web apps are like this) then I suppose it is possible to avoid it because some other programmer did the heavy lifting. Which is a good thing because most programmers cannot be trusted to produce theoretically complex software elements -- an observation, not a criticism.


Communication is necessary for programmers?  I'd say useful, but not
necessary.


What on earth do you think code is? The only difference between code and people-talk is that code requires precision and non-ambiguity since incorrect results are generally considered unacceptable.


Why do you think it is innate?


Because I've never seen anyone learn it, ever; experience changes a lot, but the ability to handle complex abstract models doesn't seem to. I've known many software engineers with careers that span decades and bucketloads of experience that really don't grok graphs beyond a certain complexity -- it is a bit like you reach a certain description threshold where pushing more bits into the model makes other bits fall out. That threshold varies from individual to individual, and it is difficult to not notice that the correlation between really bright software designers and people who are quite apparently able to atypically work with complex models in their heads. I've worked on more than one software project where there were members of the team that quite obviously never grokked the dynamic characteristics of a system even after many months of intimate experience with it, whereas others grokked it quickly. It had nothing to do with education or experience or even desire to learn in many cases.

There is a lot of anecdotal and some literature evidence for this even if you restrict yourself to the pool of pasty white male software geeks. It is also probably why software has the unique feature that half the really brilliant people working in it do not come from a traditional CS background; it was not education per se that made them great. The noted correlations with neurological structures is likely not coincidental either.

Mostly though, I've never seen anyone learn to develop the ability to deal with very complex models that otherwise had all the necessary background. Individual ability to deal with abstract complexity has always been remarkably constant over the years in my experience. I have seen people that clearly had the ability from very early on develop the knowledge to put it to work in the software domain; this ability manifests long before it can be productively applied.


Cheers,

J. Andrew Rogers

-----
This list is sponsored by AGIRI: http://www.agiri.org/email
To unsubscribe or change your options, please go to:
http://v2.listbox.com/member/?member_id=8660244&id_secret=69942428-66d159

Reply via email to