Number of languages known [was Re: Python is readable] - somewhat OT

Nathan Rice nathan.alexander.rice at gmail.com
Tue Apr 3 08:39:14 EDT 2012


On Tue, Apr 3, 2012 at 1:40 AM, alex23 <wuwei23 at gmail.com> wrote:
> On Apr 3, 2:55 pm, Nathan Rice <nathan.alexander.r... at gmail.com>
> wrote:
>> I don't care what people do related to legacy systems.
>
> And that's what earns you the label 'architecture astronaut'. Legacy
> systems are _part_ of the problem; it's very easy to  hold to a purist
> approach when you ignore the bulk of the domain that causes the
> issues. There's _never_ going to be an InfoTech3k where we just stop
> supporting older code.

There are people who are paid pretty well to support crappy old COBOL
apps, but I am not among them (nor are you, with very high
likelihood), so your "we" is misplaced.  For all intents and purposes
that software exists in an alternate reality.

Remember the tutorial on global vs local optimization I made
previously?  Let me distill it... If you are unwilling to endure pain
to move towards a better world you will always be trapped in a
sub-optimal situation.

>> I do care about programmers that are too lazy to
>> learn, and would be happy to ignore the fact that programming is hard
>> for most people to learn, so they can continue not learning.  Those
>> programmers are scumbags.
>
> Wait, what?
>
> Programmers are both "too lazy to learn" and yet somehow happy that
> the skills they've acquired are "too hard for most people to learn"?
> So how did they learn them?
>
> And they're also somehow "lazy" because they have to learn multiple
> languages to be effective,  rather than one mythical ur-language?
>
> In my 20 years as a software developer, I have _never_ encountered
> anyone trying to deliberately expand the knowledge gap. This isn't a
> priesthood.

Did you miss the part where I said that most people who learn to
program are fascinated by computers and highly motivated to do so?
I've never met a BROgrammer, those people go into sales.  It isn't
because there aren't smart BROmosapiens (sadly, there are), they just
couldn't give two shits about computers so programming seems like a
colossal waste of time to them.

It isn't about people scheming to "dis-empower then plebs" rather it
is about people who don't want to move outside their comfort zone.
You can talk about people learning multiple languages all you want,
but for the most part they will be 10 descendants of ALGOL, with minor
variations.  Very few people are willing to tackle something like
Haskell or ML if they weren't taught functional programming in
university, though there are a few that view it as an endurance trial
or mountain to climb.  Those people get a pass on most of what I've
said thus far.

>> Just don't let me hear you complaining because some syntax is not "C
>> like" enough for you.  Whenever I hear that I want to strangle the
>> self-serving 'tard that wrote it.  When I see people defending "C
>> like" syntax as optimal or somehow much more expressive, that makes me
>> doubly irritated.  These are the people who are selfishly defending
>> the status quo because they're invested.
>
> Syntax is never the issue, it's the deeper semantics. Is the scoping
> of one C-like language the same as C? How does it differ? Why does it
> differ? Is the difference a fundamental implementation issue that you
> really need to know before you actually grok the language? Are
> functions first-class objects? Are they actual objects or some kind of
> magical stub? Can you extend those objects with properties? etc etc

Syntax and semantics are both a big mess right now.  That is why I
always address them both.

> Every language tackles _so many_ things differently. It's not lazy to
> say that you prefer something to resemble/be based on a language you
> have experience with, that's human nature. If you're insistent that
> your non-typical syntax is so much better, the onus is on you to prove
> it, not to insist that the lack of uptake is 'laziness'.

The winds of change generally blow for programming when generations of
older programmers leave the workforce.  Alan Kay was a smart man,
viewing programming as an educational tool and designing for youth is
absolutely the right way to do things.  If you try to retrain older
programmers, you are basically telling them they have to change
decades of learning for a moderate (but not huge) productivity
increase, so that programming is accessible to a much wider group of
people.  Much like with the terminal to GUI transition, you will have
people attacking declarative natural language programming as a stupid
practice for noobs, and the end of computing (even though it will
allow people with much less experience to be more productive than
them).

> And one again: code is _communication_. Not having to understand new
> optimal patterns for every single language is a Good Thing.

Code is a horrible medium for communication.  If it weren't, I
wouldn't be trolling this thread.

>> Don't try to delude people that our modern
>> ALGOL derivatives are the best possible way to model knowledge
>> (including process knowledge) to a computer, because that is a lie.
>
> Um, okay, I'll stop doing that...not that I've ever seen anyone make
> that claim...

Computers require you to state the exact words you're searching for as
well.  Try looking again, and this time allow for sub-categories and
synonyms, along with some variation in word order.

> A large part of what makes languages popular _is their popularity_. In
> many ways, ALGOL is English to your hypothetical language's Lojban.
> You can argue until the end of time for the superiority of Lojban due
> to it's lack of ambiguity, it's not going to affect it's acquisition
> at all.

I would say that ALGOL is more like the grunts and gestures of a
proto-language.  Some day, one or two hundred years from now,
computers will be embarrassed that they were ever so obtuse.  Kind of
like when grown up children finally apologize to their parents for all
the trouble they caused when they were younger.

>> You should be able to live in your reality if you want, as long that
>> doesn't impinge on others.  Of course, if you disagree on basic
>> grammar, then I would have to ask you, do you disagree about English
>> grammar, or have you accepted it so that you can communicate with
>> people?  This is why I advocate following English grammar closely for
>> syntax - people have accepted it and don't make a big deal, and it is
>> the way we represent information already.
>
> And programmers have accepted ALGOL and don't etc
>
> The idea of coding in English just fills me with horror and dread.
> COBOL died for a reason.

COBOL gets brought up every time there is a conversation about natural
language programming.  Take a break from the thread, program some
COBOL, and tell me there is ANYTHING natural about it.  On top of
that, I imagine you would find many other reasons besides the use of
English words that the language deserved to die.

>> > You're arguing for a top-down centralised approach to language
>> > development that just will _never_ exist, simply because it cannot. If
>> > you don't accept that, I believe there's a fascinating fork called
>> > "Python 4000" where your ideas would be readily adopted.
>>
>> You completely missed my point.  In fact, my argument is for a bottom
>> up approach, with a meeting point which is much closer than the
>> machine code which is currently used.
>
> You missed my point; I was referring more to the _adoption_ of your ur-
> language. The only way to push this is to force it on everyone.

No, most people are too selfish to do something because it is good for
others.  People learn programming languages because of a "killer app"
or lucrative platform... Rails, Django, PHP, javascript (the browser),
objective c (the iphone).

Again, I defer to Alan Kay who I am quite sure already thought about
this issue.  Targeting young people and education avoids a lot of the
"killer app" chasing and knowledge intertia.

Providing a scripting layer for video games is also a viable option.
That is modeling a game world, so a declarative language that is
designed to model knowledge and systems would be a fairly easy sell.

Finally, build a NoSQL database around it.  Support both in-memory and
distributed processes.  It doesn't have to be the fastest, but it does
have to be stable and easy to use.

>> However you want to represent
>> it, the knowledge is the same, and that is what matters.  We need to
>> get past the idea of different, incompatible languages, and settle on
>> a common knowledge representation format that underlies all languages,
>> and is compatible.  If you want to make an alex23 DSL where up is down
>> and inside is upside down, go for it, just as long as it is
>> represented in a sensible set of semantic primes that I can transform
>> to whatever reality I want.
>
> So effectively for any given project I'd need to know: the underlying
> representation (because we have to be able to discuss _something_ as a
> team), my DSL, how my DSL transforms to the underlying representation,
> and to be really effective, every team member's DSL and how it
> transforms. Because _no one_ on my team works alone, debugs alone 100%
> of the time.

People don't walk around using words of their own creation, they get
together and agree on terminology for a topic, then stick to it.
Additionally, I was suggesting that while you *write* your code in
alex23ese, the computer would be able to produce a canonical
representation, as a courtesy to you, since you suggested that not
being able to write "your way" was somehow horrible or crippling.

> How do I share cool patterns? Show them the underlying representation?
> How do they copy them? Back trace the representation to their own DSL
> and reimplement? What if the elegance in my DSL is a nightmare to
> construct in a peer's? How does my code look to them? Does it even
> include my identifiers & comments or is the representation too low
> level for that? How do they debug it?
>
> How do we learn? How do we share?

Don't think "underlying", instead think "canonical".

Ultimately, the answers to your questions exist in the world for you
to see.  How does a surgeon describe a surgical procedure?  How does a
chef describe a recipe?  How does a carpenter describe the process of
building cabinets?  Aside from specific words, they all use natural
language, and it works just fine.



More information about the Python-list mailing list