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

2012-04-08 Thread Lie Ryan

On 03/30/2012 06:25 AM, Steve Howell wrote:

On Mar 29, 11:53 am, Devin Jeanpierre  wrote:


Well, what sort of language differences make for English vs Mandarin?
Relational algebraic-style programming is useful, but definitely a
large language barrier to people that don't know any SQL. I think this
is reasonable. (It would not matter even if you gave SQL python-like
syntax, the mode of thinking is different, and for a good reason.)



I don't see any fundamental disconnect between SQL thinking and Python
thinking.

List comprehensions are very close to SQL SELECTs semantically, and
not that far off syntactically.

   [row.x for row in foo if x == 3]

   select x from foo where x = 3


which is where most people get it wrong; the SQL SELECTs statement did 
not specify how the machine is going to get its answer, while the 
Python's list comprehension explicitly specify that the machine is going 
to loop over foo. In most implementation of SQL with the proper indexes 
set up, the SELECT statement above will most likely just use its index 
to avoid looping over the whole foo, and the most smartest ones might 
notice that the result query only ever contains 3 and so just use the 
count of the index (I don't know if any existing SQL engine is *that* 
smart though).


--
http://mail.python.org/mailman/listinfo/python-list


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

2012-04-05 Thread Nathan Rice
Re-trolling.

On Wed, Apr 4, 2012 at 1:49 AM, Steven D'Aprano
 wrote:
>> As part of my troll-outreach effort, I will indulge here.  I was
>> specifically thinking about some earlier claims that programming
>> languages as they currently exist are somehow inherently superior to a
>> formalized natural language in expressive power.
>
> I would argue that they are, but only for the very limited purpose for
> which they are written. With the possible exception of Inform 7, most
> programming languages are useless at describing (say) human interactions.

I was thinking about this statement this morning.  Compression is just
the process of finding a more efficient encoding for information.  I
suppose you could say then that language developers could
theoretically be trying to compress natural language representations
of information.  The problem then is that everyone is doing a horrible
job, because they are approaching the subject in an ad hoc manner.
There are multiple branches of mathematics and computer science that
deal with this exact subject in a rigorous way.  The trick is to find
an encoding that has low space complexity, and for which the
transformation to knowledge is efficient, for human beings.

Lets assume that the input to be encoded are logical
(proposition/predicate) statements. The first thing that came to mind
when thinking this way is radix trees and directed acyclic word graphs
(a form of DFA).  These structures are fairly easy to work out on
paper given a set of inputs, and it is fairly easy to reconstruct a
set of inputs from the structure.  Perhaps, we could use natural
language statements, and some very minimal extended syntax to indicate
a data structure (which fans out to a set of statements).  As a quick
example to see what I mean (mimicking some python syntax for
similarity):

in the context of chess:

a color is either white or black

the board:
is a cartesian grid having dimension (8, 8)
has squares, representing points on the grid

a square:
has a color
contains a piece or is empty

a piece:
has a color
is located in a square or has been captured

a { king, queen, rook, bishop, knight, pawn } is a type of piece

It should be clear that this is a directed acyclic phrase graph, and
if you select a phrase fragment, then one phrase fragment from each
child level until reaching a leaf, the concatenation of the phrase
fragments forms a logical phrase.  Note that the set braces are
shorthand for multiple statements.  This was really easy to write, and
I bet even non programmers would have little or no trouble
understanding what was going on.  Additionally, I could make a full
statement elsewhere, and if we have an algorithm to transform to a
canonical phrase structure and merge synonyms, it could be inserted in
the phrase graph, just as neatly as if I had written it there in the
first place.  The sexy thing about that, is that lets you take two
sets of propositional statements, and perform set theoretic operations
on them (union, complement, etc), and get a phrase graph structure out
at the end which looks just like a nice neat little "program".  You
could even get really crazy, if you could define equivalence relations
(other than the natural relation) for the union (Set1.A ~ Set2.B) as
that would let you compose the graphs in arbitrarily many ways.  If
you're dealing processes, you would also want to be able to specify
temporal equivalence (Process1.T1 ~ Process2.T6).
-- 
http://mail.python.org/mailman/listinfo/python-list


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

2012-04-04 Thread Nathan Rice
> The "building cabinets" problem is interesting:
>
>  1. To actually build a cabinet, there's a lot of domain knowledge
> that's probably implicit in most circumstances.  A carpenter might
> tell another carpenter which hinge to use, but they won't have to talk
> about why doors need hinges or how to do the assembly.
>  2. It's quite common for humans to use computer programs as part of
> the design process.
>  3. Often, the output of a CAD program (at the file level) is some
> sort of vector representation that only describes the end product
> (basic dimensions, etc.).
>
> I wonder if there are mini-languages out there that allow you to
> describe cabinets in a very descriptive way, where the description
> easily translates to the actual steps of building the cabinet, not
> just the final dimensions.

I think if you were to describe the parts of the cabinet that needed
to be assembled separately (and thus could be viewed as separate
entities in some sense) and showed the cabinet as the composition of
those parts, you would be on the right track.  Being a mediocre
carpenter, I can't really say anything conclusively here though :)
-- 
http://mail.python.org/mailman/listinfo/python-list


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

2012-04-04 Thread Nathan Rice
> Long personal note ahead.
> tl;dr version: Computers are such a large shift for human civilization
> that generally we dont get what that shift is about or towards.

Another option: since *computers* are such a general device, there
isn't just one notion.

> In the long run I expect computing science to transcend its parent
> disciplines, mathematics and logic, by effectively realizing a
> significant part of Leibniz's Dream of providing symbolic calculation
> as an alternative to human reasoning. (Please note the difference
> between "mimicking" and "providing an alternative to": alternatives
> are allowed to be better.)

A thinking machine.  +1.

> Needless to say, this vision of what computing science is about is not
> universally applauded. On the contrary, it has met widespread --and
> sometimes even violent-- opposition from all sorts of directions. I
> mention as examples
>
> (0) the mathematical guild, which would rather continue to believe
> that the Dream of Leibniz is an unrealistic illusion

Mathematics is not a closet guild, it is large and contentious.  Ideas
live and die in mathematics based on their fundamental truth.  If
there is some bold, sweeping statement it *MIGHT* be possible to prove
or disprove, mathematicians will be all over it.  just look at
Fermat's last theorem and the Poincare conjecture if you want proof of
this.

> (1) the business community, which, having been sold to the idea that
> computers would make life easier, is mentally unprepared to accept
> that they only solve the easier problems at the price of creating much
> harder one

Most business people I know secretly love when they can sell a
solution to one problem that creates new problems (and thus
opportunities for new products!).  The business term for this is an
"Upsell" or "Value-add".

> (2) the subculture of the compulsive programmer, whose ethics
> prescribe that one silly idea and a month of frantic coding should
> suffice to make him a life-long millionaire

I love hacker culture, but it has been infected by the idea of
entrepreneurship as a good in and of itself.  Being a creator is a
beautiful thing, go forth and make *art*.  Improve the human
condition.  Make the world a better place.  STFU about venture capital
and stage 2 funding and minimum viable products; that sort of talk is
a sure sign that you haven't created anything of actual value.

> (3) computer engineering, which would rather continue to act as if it
> is all only a matter of higher bit rates and more flops per second

These guys are doing something that I find very uninteresting, but is
absolutely necessary.  Bravo I say.

> (4) the military, who are now totally absorbed in the business of
> using computers to mutate billion-dollar budgets into the illusion of
> automatic safety

Nations will always try and be imperialist.  At least drones and robot
soldiers mean less human suffering.

> (5) all soft sciences for which computing now acts as some sort of
> interdisciplinary haven

Digital humanities (outside of a VERY small set of projects) is a
joke.  Multimedia history presentations (and what not) are the domain
of edutainment companies, not academia.

> (6) the educational business that feels that, if it has to teach
> formal mathematics to CS students, it may as well close its schools.

I feel quite the opposite actually.  At the really top notch computer
science schools, there is a clear mathematical bent (though it is
interdisciplinary).  Places like MIT, Stanford, Berkeley, CMU,
Cambridge, etc make a STRONG effort to separate the
mathematical/theory of computation side and engineering side.  At your
average state college, the computer science department is just a
hodgepodge, and you tend to see more graphics, "applied computation"
and embedded/DSP type people.
-- 
http://mail.python.org/mailman/listinfo/python-list


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

2012-04-04 Thread Steve Howell
On Apr 3, 11:19 pm, Steven D'Aprano  wrote:
> On Tue, 03 Apr 2012 08:39:14 -0400, Nathan Rice wrote:
> > 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).
>
> I cry every time I consider GUI programming these days.
>
> In the late 1980s and early 1990s, Apple released a product, Hypercard,
> that was a combination GUI framework and natural-ish language programming
> language. It was an astonishing hit with non-programmers, as it allowed
> people to easily move up from "point and click" programming to "real"
> programming as their skills improved.
>
> Alas, it has been abandoned by Apple, and while a few of its intellectual
> successors still exit, it very niche.
>
> I *really* miss Hypercard. Not so much for the natural language syntax,
> as for the astonishingly simple and obvious GUI framework.
>
> To get a flavour of the syntax, see OpenXION:
>
> http://www.openxion.org
>
> and for a hint of the framework, see Pythoncard:
>
> http://pythoncard.sourceforge.net
>
> > 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.
>
> No they don't. In general they don't use written language at all, but
> when they are forced to, they use a combination of drawings or
> illustrations plus a subset of natural language plus specialist jargon.
>
> Programming languages include both specialist grammar and specialist
> semantics. That makes it a cant or an argot.

The "building cabinets" problem is interesting:

  1. To actually build a cabinet, there's a lot of domain knowledge
that's probably implicit in most circumstances.  A carpenter might
tell another carpenter which hinge to use, but they won't have to talk
about why doors need hinges or how to do the assembly.
  2. It's quite common for humans to use computer programs as part of
the design process.
  3. Often, the output of a CAD program (at the file level) is some
sort of vector representation that only describes the end product
(basic dimensions, etc.).

I wonder if there are mini-languages out there that allow you to
describe cabinets in a very descriptive way, where the description
easily translates to the actual steps of building the cabinet, not
just the final dimensions.


-- 
http://mail.python.org/mailman/listinfo/python-list


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

2012-04-04 Thread rusi
On Apr 3, 11:42 pm, Nathan Rice 
wrote:
> Lets start with some analogies.  In cooking, chefs use recipes to
> produce a meal; the recipe is not a tool.  In architecture, a builder
> uses a blueprint to produce a building; the blueprint is not a tool.
> In manufacturing, expensive machines use plans to produce physical
> goods; the plans are not the tool.
>
> You could say the compiler is a tool, or a development environment is
> a tool.  The programming language is a mechanism for communication.

Long personal note ahead.
tl;dr version: Computers are such a large shift for human civilization
that generally we dont get what that shift is about or towards.
--
Longer version
My mother often tells me (with some awe): You are so clever! You know
how to use computers! (!?!?)

I try to tell her that a computer is not a machine like a car is (she
is better with things like cars than most of her generation).  Its
physical analogy to a typewriter is surprisingly accurate.  In fact
its more like a pen than other machines and its civilizational
significance is larger than Gutenbergs press and is on par with the
'invention' (or should I say discovery?) of language as a fundamental
fact of what it means to be human.

[At this point or thereabouts my communication attempt breaks down
because I am trying to tell her of the huge significance of
programming...]

A pen can be used to write love-letter or a death-sentence, a text-
book of anatomy or a symphony.
An yet it would be a bizarre superman who could do all these.
Likewise (I vainly try to communicate with my mother!) that I cant
design machines (with autocad) or paint (with photoshop) or ...
probably 99% of the things that people use computers for.
And so saying that I 'know computers' is on par with saying that
because I know (how to use a pen to) fill up income tax forms, I
should also know how to (use a pen to) write Shakespearean sonnets.

There is a sense in which a pen is a 'universal device.'  To some
extent the layman can get this.
There is a larger sense in which the computer is a universal device
(aka universal turing machine).
In my experience, not just 'my mother's' but even PhDs in computer
science dont get what this signifies.

This sense can (somewhat?) be appreciated if we see that the pen is
entirely a declarative tool
The computer is declarative+imperative.
The person who writes the love-letter needs the postman to deliver it.
The judge may write the death-sentence. A hangman is needed to execute
it.
When it comes to computers, the same device can write the love-letter/
death-sentence as the one which mails/controls the electric chair.

Let me end with a quote from Dijkstra: 
http://www.smaldone.com.ar/documentos/ewd/EWD1036_pretty.html

In the long run I expect computing science to transcend its parent
disciplines, mathematics and logic, by effectively realizing a
significant part of Leibniz's Dream of providing symbolic calculation
as an alternative to human reasoning. (Please note the difference
between "mimicking" and "providing an alternative to": alternatives
are allowed to be better.)

Needless to say, this vision of what computing science is about is not
universally applauded. On the contrary, it has met widespread --and
sometimes even violent-- opposition from all sorts of directions. I
mention as examples

(0) the mathematical guild, which would rather continue to believe
that the Dream of Leibniz is an unrealistic illusion

(1) the business community, which, having been sold to the idea that
computers would make life easier, is mentally unprepared to accept
that they only solve the easier problems at the price of creating much
harder one

(2) the subculture of the compulsive programmer, whose ethics
prescribe that one silly idea and a month of frantic coding should
suffice to make him a life-long millionaire

(3) computer engineering, which would rather continue to act as if it
is all only a matter of higher bit rates and more flops per second

(4) the military, who are now totally absorbed in the business of
using computers to mutate billion-dollar budgets into the illusion of
automatic safety

(5) all soft sciences for which computing now acts as some sort of
interdisciplinary haven

(6) the educational business that feels that, if it has to teach
formal mathematics to CS students, it may as well close its schools.
-- 
http://mail.python.org/mailman/listinfo/python-list


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

2012-04-04 Thread Nathan Rice
On Wed, Apr 4, 2012 at 1:49 AM, Steven D'Aprano
 wrote:
> On Tue, 03 Apr 2012 13:17:18 -0400, Nathan Rice wrote:
>
>> I have never met a programmer that was not completely into computers.
>> That leaves a lot unspecified though.
>
> You haven't looked hard enough. There are *thousands* of VB, Java, etc.
> code monkeys who got into programming for the money only and who have
> zero inclination to expand their skills or knowledge beyond that
> necessary to keep their job.

Every programmer that I've ever met who got into it for the money has
washed out within about five years.  Sometimes they make a lateral
move to project management, other times they end up as requirements
analysts, and occasionally they become technical sales staff.  The
story is always the same - they do technical mediocre work, but get
along well with their peers, so they are transitioned to a role that
requires more people skills.

I've never met someone who had both poor people skills and mediocre
technical skills who actually kept their job.

> Go to programming blogs, and you will find many examples of some
> allegedly professional programmer selecting an arbitrary blog post to ask
> "Pls sombody write me this code", where "this code" is either an utterly
> trivial question or a six month project.

Honestly, I have seen that, but usually when I inspect closer it is an
Indian ODesk or Rent-a-coder worker who oversold himself and is trying
to cover his ass.

>> As part of my troll-outreach effort, I will indulge here.  I was
>> specifically thinking about some earlier claims that programming
>> languages as they currently exist are somehow inherently superior to a
>> formalized natural language in expressive power.
>
> I would argue that they are, but only for the very limited purpose for
> which they are written. With the possible exception of Inform 7, most
> programming languages are useless at describing (say) human interactions.
>
> Human languages are optimised for many things, but careful, step-by-step
> algorithms are not one of them. This is why mathematicians use a
> specialist language for their problem domain, as do programmers. Human
> language is awfully imprecise and often ambiguous, it encourages implicit
> reasoning, and requires a lot of domain knowledge:

You have to be careful when you bring mathematical notation into the
picture.  Remember that mathematics has developed over thousands of
years, with developments shared in many languages.  Greek letters
serve the same purpose in math that latin and greek names serve in
biology - they are neutral and avoid confusion with common names in
"living" languages.  Not everything about mathematical notation is
good, and in some cases it suffers the same issues that programming
does.  Mathematicians have a tendency to be very terse, and although
some greek letters and symbols have standard meaning, many authors run
roughshod over them.  Logic is somewhat better than math in this
regard, logicians respect their notation and rarely deviate from the
standard meaning of symbols.  Things ARE getting better, but for the
most part it is still kind of a mess.

Also, I should clarify that I consider part of mathematical notation
to be "natural language", namely +/-/*, and rational numbers.  People
"discover" these things on their own, mathematics just provides rigor.
 It is considered bad form to use them in prose, but that is just an
arbitrary "style" restriction; children intermix mathematical symbols
and language all the time, as to older students taking notes in a
variety of subjects.

>    Joe snatched the hammer from Fred. "Hey," he said, "what are
>    you doing? Don't you know that he'll hit the roof if he catches
>    you with that?"

Are you trying to get me to write obfuscated code?  You can write
ambiguous garbage in any language.

>> The crux of my view is that programming languages exist in part because
>> computers in general are not smart enough to converse with humans on
>> their own level, so we have to talk to them like autistic 5 year-olds.
>> That was fine when we didn't have any other options, but all the pieces
>> exist now to let computers talk to us very close to our own level, and
>> represent information at the same way we do.
>
> I think you're dreaming. We (that is to say, human beings in general, not
> you and I specifically) cannot even talk to each other accurately,
> precisely and unambiguously all the time. Natural language simply isn't
> designed for that -- hence we have specialist languages like legal
> jargon, mathematics, and programming languages, for specialist purposes.

Legalese is English with a ton of new words.  Mathematics is older
than most languages in current use and has a lot of baggage that is
(very) slowly being dealt with.

Programming really can't take the relaxed attitude about cleaning up
notation and vocabulary that we see in math.  Mathematicians spend a
lot of time thinking, and the transcription of their thoughts is a
relati

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

2012-04-03 Thread Steven D'Aprano
On Tue, 03 Apr 2012 08:39:14 -0400, Nathan Rice wrote:

> 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).

I cry every time I consider GUI programming these days.

In the late 1980s and early 1990s, Apple released a product, Hypercard, 
that was a combination GUI framework and natural-ish language programming 
language. It was an astonishing hit with non-programmers, as it allowed 
people to easily move up from "point and click" programming to "real" 
programming as their skills improved.

Alas, it has been abandoned by Apple, and while a few of its intellectual 
successors still exit, it very niche. 

I *really* miss Hypercard. Not so much for the natural language syntax, 
as for the astonishingly simple and obvious GUI framework.

To get a flavour of the syntax, see OpenXION:

http://www.openxion.org

and for a hint of the framework, see Pythoncard:

http://pythoncard.sourceforge.net


> 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.

No they don't. In general they don't use written language at all, but 
when they are forced to, they use a combination of drawings or 
illustrations plus a subset of natural language plus specialist jargon.

Programming languages include both specialist grammar and specialist 
semantics. That makes it a cant or an argot.



-- 
Steven
-- 
http://mail.python.org/mailman/listinfo/python-list


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

2012-04-03 Thread Steven D'Aprano
On Tue, 03 Apr 2012 13:17:18 -0400, Nathan Rice wrote:

> I have never met a programmer that was not completely into computers.
> That leaves a lot unspecified though.

You haven't looked hard enough. There are *thousands* of VB, Java, etc. 
code monkeys who got into programming for the money only and who have 
zero inclination to expand their skills or knowledge beyond that 
necessary to keep their job.

Go to programming blogs, and you will find many examples of some 
allegedly professional programmer selecting an arbitrary blog post to ask 
"Pls sombody write me this code", where "this code" is either an utterly 
trivial question or a six month project.


> As part of my troll-outreach effort, I will indulge here.  I was
> specifically thinking about some earlier claims that programming
> languages as they currently exist are somehow inherently superior to a
> formalized natural language in expressive power.

I would argue that they are, but only for the very limited purpose for 
which they are written. With the possible exception of Inform 7, most 
programming languages are useless at describing (say) human interactions.

Human languages are optimised for many things, but careful, step-by-step 
algorithms are not one of them. This is why mathematicians use a 
specialist language for their problem domain, as do programmers. Human 
language is awfully imprecise and often ambiguous, it encourages implicit 
reasoning, and requires a lot of domain knowledge:

Joe snatched the hammer from Fred. "Hey," he said, "what are
you doing? Don't you know that he'll hit the roof if he catches
you with that?"


> I think part of this comes from the misconception that terse is better

+1


> The crux of my view is that programming languages exist in part because
> computers in general are not smart enough to converse with humans on
> their own level, so we have to talk to them like autistic 5 year-olds. 
> That was fine when we didn't have any other options, but all the pieces
> exist now to let computers talk to us very close to our own level, and
> represent information at the same way we do.

I think you're dreaming. We (that is to say, human beings in general, not 
you and I specifically) cannot even talk to each other accurately, 
precisely and unambiguously all the time. Natural language simply isn't 
designed for that -- hence we have specialist languages like legal 
jargon, mathematics, and programming languages, for specialist purposes.



-- 
Steven
-- 
http://mail.python.org/mailman/listinfo/python-list


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

2012-04-03 Thread Mark Lawrence

On 03/04/2012 19:42, Nathan Rice wrote:


I view "computer science" as applied mathematics, when it deserves
that moniker.  When it doesn't, it is merely engineering.



Is it still April first in your time zone?

--
Cheers.

Mark Lawrence.

--
http://mail.python.org/mailman/listinfo/python-list


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

2012-04-03 Thread Phil Runciman
 
> On Tue, Apr 3, 2012 at 4:20 PM, Terry Reedy  wrote:

> > On 4/3/2012 8:39 AM, Nathan Rice wrote:
> >
> > > 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.
> >
> >
> > Not really. Surgeon's learn by *watching* a surgeon who knows the operation
> > and next (hopefully) doing a particular surgery under supervision of such a
> > surgeon, who watches and talks, and may even grab the instruments and
> > re-show. They then really learn by doing the procedure on multiple
> > people. They often kill a few on the way to mastery.
>  
> 
> Well, there is declarative knowledge and procedural knowledge.  In all
> these cases, only the procedural knowledge is absolutely necessary,
> but the declarative knowledge is usually a prerequisite to learning
> the procedure in any sort of reasonable manner.

There is also tacit knowledge. Such knowledge is a precursor to declarative 
knowledge and therefore procedural knowledge. "Tacit knowledge is not easily 
shared. It involves learning and skill, but not in a way that can be written 
down. Tacit knowledge consists often of habits and culture that we do not 
recognize in ourselves." Wikipedia.

The process of eliciting tacit knowledge may be time consuming and require 
patience and skill. The following book covers aspects of this: Nonaka, Ikujiro; 
Takeuchi, Hirotaka (1995), The knowledge creating company: how Japanese 
companies create the dynamics of innovation. 

Phil Runciman
-- 
http://mail.python.org/mailman/listinfo/python-list


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

2012-04-03 Thread Phil Runciman

> -Original Message-
> From: Mark Lawrence [mailto:breamore...@yahoo.co.uk]
> Sent: Wednesday, 4 April 2012 3:16 a.m.
> To: python-list@python.org
> Subject: Re: Number of languages known [was Re: Python is readable] -
> somewhat OT
> 
> On 03/04/2012 15:56, Chris Angelico wrote:
> > On Wed, Apr 4, 2012 at 12:46 AM, Grant
> Edwards  wrote:
> >> Anybody remember DEC's VAX/VMS "patch" utility?  Apparently, DEC
> >> thought it was a practical way to fix things.  It had a built-in
> >> assembler and let you "insert" new code into a function by
> >> auto-allocating a location for the new code an hooking it into the
> >> indicated spot with jump instructions.
> >>
> >> The mind wobbled.
> >
> > Not specifically, but I _have_ heard of various systems whose source
> > code and binary were multiple years divergent. It's actually not a
> > difficult trap to fall into, especially once you start patching
> > running systems. I've had quite a few computers that have been unable
> > to reboot without assistance, because they go for months or years
> > without ever having to go through that initial program load. (I've
> had
> > _programs_ that were unable to load, for the same reason.) But
> > auto-allocating a new spot for your expanded function? That's just...
> > awesome. My mind is, indeed, wobbling.
> >
> > ChrisA
> 
> Around 1990 I worked on Telematics kit.  The patches on all their
> software were implemented via assembler once the original binary had
> been loaded into memory.  They even came up with a system that let you
> select which patches you wanted and which you didn't, as e.g. some
> patches were customer specific.
> 
> --
> Cheers.
> 
> Mark Lawrence.
> 

In the 70's I worked with Honeywell 16 Series computers controlling a variety 
of systems. The patches were loaded as a starting address followed by machine 
code, using a piece of software for this purpose. This all sounds rather 
similar to Mark's situation. The reason however is less obvious. On the H16 
series we did not have a multi-access O/S and the process of assembling and 
linking a large system involved many steps. Often the modifications required 
were trivial. It was generally easier to reload a memory dump from off paper 
tape and then apply the patches.


Phil Runciman
-- 
http://mail.python.org/mailman/listinfo/python-list


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

2012-04-03 Thread Nathan Rice
On Tue, Apr 3, 2012 at 4:20 PM, Terry Reedy  wrote:
> On 4/3/2012 8:39 AM, Nathan Rice wrote:
>
>> 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.
>
>
> Not really. Surgeon's learn by *watching* a surgeon who knows the operation
> and next (hopefully) doing a particular surgery under supervision of such a
> surgeon, who watches and talks, and may even grab the instruments and
> re-show. They then really learn by doing the procedure on multiple people.
> They often kill a few on the way to mastery.

Well, there is declarative knowledge and procedural knowledge.  In all
these cases, only the procedural knowledge is absolutely necessary,
but the declarative knowledge is usually a prerequisite to learning
the procedure in any sort of reasonable manner.

> I first learned basic carpentry and other skills by watching my father. I
> don't remember that he ever said anything about how to hold the tools.
>
> I similarly learned basic cooking by watching my mom. My knowledge of how to
> crack open an egg properly and separate the yolk from the rest is a wordless
> memory movie.

A picture is worth a thousand words :)

If you would like, I don't have any problem incorporating visual
programming and programming by demonstration.  I didn't go in that
direction because I have enough to defend as it is.  I like to look at
it from the perspective of teaching/communicating, rather than
operating a simple machine.
-- 
http://mail.python.org/mailman/listinfo/python-list


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

2012-04-03 Thread Terry Reedy

On 4/3/2012 8:39 AM, Nathan Rice wrote:


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.


Not really. Surgeon's learn by *watching* a surgeon who knows the 
operation and next (hopefully) doing a particular surgery under 
supervision of such a surgeon, who watches and talks, and may even grab 
the instruments and re-show. They then really learn by doing the 
procedure on multiple people. They often kill a few on the way to mastery.


I first learned basic carpentry and other skills by watching my father. 
I don't remember that he ever said anything about how to hold the tools.


I similarly learned basic cooking by watching my mom. My knowledge of 
how to crack open an egg properly and separate the yolk from the rest is 
a wordless memory movie.


--
Terry Jan Reedy

--
http://mail.python.org/mailman/listinfo/python-list


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

2012-04-03 Thread Nathan Rice
>> > A carpenter uses his tools -- screwdriver, saw, planer --to do
>> > carpentry
>> > A programmer uses his tools to to programming -- one of which is
>> > called 'programming language'
>>
>> > Doing programming without programming languages is like using toenails
>> > to tighten screws
>>
>> I would argue that the computer is the tool, not the language.
>
> "Computer science is as much about computers as astronomy is about
> telescopes" -- E W Dijkstra
>
> Here are some other attempted corrections of the misnomer "computer
> science":
> http://en.wikipedia.org/wiki/Computer_science#Name_of_the_field

I view "computer science" as applied mathematics, when it deserves
that moniker.  When it doesn't, it is merely engineering.

Ironically, telescopes are a tool that astronomers use to view the stars.


On Tue, Apr 3, 2012 at 1:25 PM, rusi  wrote:
> All this futuristic grandiloquence:
>
> On Apr 3, 10:17 pm, Nathan Rice 
> wrote:
>> The crux of my view is that programming languages exist in part
>> because computers in general are not smart enough to converse with
>> humans on their own level, so we have to talk to them like autistic 5
>> year-olds.  That was fine when we didn't have any other options, but
>> all the pieces exist now to let computers talk to us very close to our
>> own level, and represent information at the same way we do.  Projects
>> like IBM's Watson, Siri, Wolfram Alpha and Cyc demonstrate pretty
>> clearly to me that we are capable of taking the next step, and the
>> resurgence of the technology sector along with the shortage of
>> qualified developers indicates to me that we need to move now.
>
> needs to be juxtaposed with this antiquated view
>
>> I would argue that the computer is the tool, not the language.
>
>
> ... a view that could not be held by an educated person after the
> 1960s -- ie when it became amply clear to all that the essential and
> hard issues in CS are about software and not hardware

I'll go ahead and forgive the club handed fallacies, so we can have a
nice discussion of your primary point.  What a civil troll I am :)

Lets start with some analogies.  In cooking, chefs use recipes to
produce a meal; the recipe is not a tool.  In architecture, a builder
uses a blueprint to produce a building; the blueprint is not a tool.
In manufacturing, expensive machines use plans to produce physical
goods; the plans are not the tool.

You could say the compiler is a tool, or a development environment is
a tool.  The programming language is a mechanism for communication.
-- 
http://mail.python.org/mailman/listinfo/python-list


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

2012-04-03 Thread rusi
All this futuristic grandiloquence:

On Apr 3, 10:17 pm, Nathan Rice 
wrote:
> The crux of my view is that programming languages exist in part
> because computers in general are not smart enough to converse with
> humans on their own level, so we have to talk to them like autistic 5
> year-olds.  That was fine when we didn't have any other options, but
> all the pieces exist now to let computers talk to us very close to our
> own level, and represent information at the same way we do.  Projects
> like IBM's Watson, Siri, Wolfram Alpha and Cyc demonstrate pretty
> clearly to me that we are capable of taking the next step, and the
> resurgence of the technology sector along with the shortage of
> qualified developers indicates to me that we need to move now.

needs to be juxtaposed with this antiquated view

> I would argue that the computer is the tool, not the language.


... a view that could not be held by an educated person after the
1960s -- ie when it became amply clear to all that the essential and
hard issues in CS are about software and not hardware
-- 
http://mail.python.org/mailman/listinfo/python-list


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

2012-04-03 Thread Neil Cerutti
On 2012-04-03, Dave Angel  wrote:
> And I worked on a system where the microcode was in ROM, and
> there was a "patch board" consisting of lots of diodes and some
> EPROMs.  The diodes were soldered into place to specfy the
> instruction(s) to be patched, and the actual patches were in
> the EPROMs, which were reusable.  The diodes were the only
> thing fast enough to "patch" the ROM, by responding more
> quickly than the ROM.  This was back when issuing a new ROM was
> a very expensive proposition;  there were masking charges, so
> you couldn't reasonably do low quantities.

I worked on a system where the main interface to the system was
poking and peeking numbers at memory addresses.

-- 
Neil Cerutti
-- 
http://mail.python.org/mailman/listinfo/python-list


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

2012-04-03 Thread rusi
On Apr 3, 9:15 pm, Nathan Rice 
wrote:
> On Tue, Apr 3, 2012 at 9:51 AM, rusi  wrote:
> > On Apr 3, 5:39 pm, Nathan Rice 
> > wrote:
>
> >> 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.
>
> > A carpenter describes his carpentry-process in English
> > A CSist describes his programming-process in English (at least all my
> > CS books are in English)
>
> > A carpenter uses his tools -- screwdriver, saw, planer --to do
> > carpentry
> > A programmer uses his tools to to programming -- one of which is
> > called 'programming language'
>
> > Doing programming without programming languages is like using toenails
> > to tighten screws
>
> I would argue that the computer is the tool, not the language.

"Computer science is as much about computers as astronomy is about
telescopes" -- E W Dijkstra

Here are some other attempted corrections of the misnomer "computer
science":
http://en.wikipedia.org/wiki/Computer_science#Name_of_the_field
-- 
http://mail.python.org/mailman/listinfo/python-list


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

2012-04-03 Thread Nathan Rice
On Tue, Apr 3, 2012 at 11:01 AM, Ian Kelly  wrote:
> On Tue, Apr 3, 2012 at 6:39 AM, Nathan Rice
>  wrote:
>> 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.
>
> I have never met the brogrammer stereotype.  I have also never met the
> non-brogrammer stereotype of nerdy solitude (well, maybe once).
> That's all these things are -- stereotypes.  Real programmers are much
> more complex.

I have never met a programmer that was not completely into computers.
That leaves a lot unspecified though.

>> 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.
>
> Lazy troll.  You made the claim.  The onus is on you to provide the evidence.

I reserve the right to be lazy :)

As part of my troll-outreach effort, I will indulge here.  I was
specifically thinking about some earlier claims that programming
languages as they currently exist are somehow inherently superior to a
formalized natural language in expressive power.

I think part of this comes from the misconception that terse is better
(e.g. Paul Graham's thoughts on car/cdr), which doesn't take into
account that your brain compresses frequently occurring English words
VERY efficiently, so they actually take up less cognitive bandwidth
than a much shorter non-word.  This behavior extends to the phrase
level as well; longer phrases that are meaningful in their own right
take up less bandwidth than short nonsensical word combinations.

On the semantic side, most people already understand branched
processes and procedures with conditional actions pretty well.  People
"program" other people to perform tasks constantly, and have been
doing so for the entirety of our existence.  The problem occurs when
programming language specific semantic artifacts must be considered.
These artifacts are for the most part somewhat arbitrary, or you would
see them frequently in other areas, and they wouldn't confuse people
so much.  I think the majority of these relate to how the computer
operates internally - this is the stuff that really turns most people
off to programming.

The crux of my view is that programming languages exist in part
because computers in general are not smart enough to converse with
humans on their own level, so we have to talk to them like autistic 5
year-olds.  That was fine when we didn't have any other options, but
all the pieces exist now to let computers talk to us very close to our
own level, and represent information at the same way we do.  Projects
like IBM's Watson, Siri, Wolfram Alpha and Cyc demonstrate pretty
clearly to me that we are capable of taking the next step, and the
resurgence of the technology sector along with the shortage of
qualified developers indicates to me that we need to move now.
-- 
http://mail.python.org/mailman/listinfo/python-list


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

2012-04-03 Thread Dave Angel
On 04/03/2012 11:16 AM, Mark Lawrence wrote:
> On 03/04/2012 15:56, Chris Angelico wrote:
>> On Wed, Apr 4, 2012 at 12:46 AM, Grant
>> Edwards  wrote:
>>> Anybody remember DEC's VAX/VMS "patch" utility?  Apparently, DEC
>>> thought it was a practical way to fix things.  It had a built-in
>>> assembler and let you "insert" new code into a function by
>>> auto-allocating a location for the new code an hooking it into the
>>> indicated spot with jump instructions.
>>>
>>> The mind wobbled.
>>
>> Not specifically, but I _have_ heard of various systems whose source
>> code and binary were multiple years divergent. It's actually not a
>> difficult trap to fall into, especially once you start patching
>> running systems. I've had quite a few computers that have been unable
>> to reboot without assistance, because they go for months or years
>> without ever having to go through that initial program load. (I've had
>> _programs_ that were unable to load, for the same reason.) But
>> auto-allocating a new spot for your expanded function? That's just...
>> awesome. My mind is, indeed, wobbling.
>>
>> ChrisA
>
> Around 1990 I worked on Telematics kit.  The patches on all their
> software were implemented via assembler once the original binary had
> been loaded into memory.  They even came up with a system that let you
> select which patches you wanted and which you didn't, as e.g. some
> patches were customer specific.
>

And I worked on a system where the microcode was in ROM, and there was a
"patch board" consisting of lots of diodes and some EPROMs.  The diodes
were soldered into place to specfy the instruction(s) to be patched, and
the actual patches were in the EPROMs, which were reusable.  The diodes
were the only thing fast enough to "patch" the ROM, by responding more
quickly than the ROM.  This was back when issuing a new ROM was a very
expensive proposition;  there were masking charges, so you couldn't
reasonably do low quantities.



-- 

DaveA

-- 
http://mail.python.org/mailman/listinfo/python-list


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

2012-04-03 Thread Nathan Rice
On Tue, Apr 3, 2012 at 9:51 AM, rusi  wrote:
> On Apr 3, 5:39 pm, Nathan Rice 
> wrote:
>>
>> 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.
>
> A carpenter describes his carpentry-process in English
> A CSist describes his programming-process in English (at least all my
> CS books are in English)
>
> A carpenter uses his tools -- screwdriver, saw, planer --to do
> carpentry
> A programmer uses his tools to to programming -- one of which is
> called 'programming language'
>
> Doing programming without programming languages is like using toenails
> to tighten screws

I would argue that the computer is the tool, not the language.
-- 
http://mail.python.org/mailman/listinfo/python-list


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

2012-04-03 Thread Mark Lawrence

On 03/04/2012 15:56, Chris Angelico wrote:

On Wed, Apr 4, 2012 at 12:46 AM, Grant Edwards  wrote:

Anybody remember DEC's VAX/VMS "patch" utility?  Apparently, DEC
thought it was a practical way to fix things.  It had a built-in
assembler and let you "insert" new code into a function by
auto-allocating a location for the new code an hooking it into the
indicated spot with jump instructions.

The mind wobbled.


Not specifically, but I _have_ heard of various systems whose source
code and binary were multiple years divergent. It's actually not a
difficult trap to fall into, especially once you start patching
running systems. I've had quite a few computers that have been unable
to reboot without assistance, because they go for months or years
without ever having to go through that initial program load. (I've had
_programs_ that were unable to load, for the same reason.) But
auto-allocating a new spot for your expanded function? That's just...
awesome. My mind is, indeed, wobbling.

ChrisA


Around 1990 I worked on Telematics kit.  The patches on all their 
software were implemented via assembler once the original binary had 
been loaded into memory.  They even came up with a system that let you 
select which patches you wanted and which you didn't, as e.g. some 
patches were customer specific.


--
Cheers.

Mark Lawrence.

--
http://mail.python.org/mailman/listinfo/python-list


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

2012-04-03 Thread Chris Angelico
On Wed, Apr 4, 2012 at 1:01 AM, Ian Kelly  wrote:
> Real programmers are much more complex.

Are you saying that some part of all of us is imaginary??

ChrisA
-- 
http://mail.python.org/mailman/listinfo/python-list


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

2012-04-03 Thread Ian Kelly
On Tue, Apr 3, 2012 at 6:39 AM, Nathan Rice
 wrote:
> 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.

I have never met the brogrammer stereotype.  I have also never met the
non-brogrammer stereotype of nerdy solitude (well, maybe once).
That's all these things are -- stereotypes.  Real programmers are much
more complex.

> 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.

Lazy troll.  You made the claim.  The onus is on you to provide the evidence.
-- 
http://mail.python.org/mailman/listinfo/python-list


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

2012-04-03 Thread Chris Angelico
On Wed, Apr 4, 2012 at 12:46 AM, Grant Edwards  wrote:
> Anybody remember DEC's VAX/VMS "patch" utility?  Apparently, DEC
> thought it was a practical way to fix things.  It had a built-in
> assembler and let you "insert" new code into a function by
> auto-allocating a location for the new code an hooking it into the
> indicated spot with jump instructions.
>
> The mind wobbled.

Not specifically, but I _have_ heard of various systems whose source
code and binary were multiple years divergent. It's actually not a
difficult trap to fall into, especially once you start patching
running systems. I've had quite a few computers that have been unable
to reboot without assistance, because they go for months or years
without ever having to go through that initial program load. (I've had
_programs_ that were unable to load, for the same reason.) But
auto-allocating a new spot for your expanded function? That's just...
awesome. My mind is, indeed, wobbling.

ChrisA
-- 
http://mail.python.org/mailman/listinfo/python-list


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

2012-04-03 Thread Grant Edwards
On 2012-04-03, Chris Angelico  wrote:
> On Wed, Apr 4, 2012 at 12:26 AM, Mark Lawrence  
> wrote:
>> On 03/04/2012 14:51, rusi wrote:
>>> Doing programming without programming languages is like using toenails
>>> to tighten screws
>>
>>
>> The latter is extremely difficult if you bite your toenails :)
>
> I agree, thumbnails are far better suited. Mine are often pushed into
> that service. But to extend the analogy: Using a thumbnail to tighten
> a screw is like directly patching a binary to fix a bug. It works, but
> it's not exactly a practical way to build a system.

Anybody remember DEC's VAX/VMS "patch" utility?  Apparently, DEC
thought it was a practical way to fix things.  It had a built-in
assembler and let you "insert" new code into a function by
auto-allocating a location for the new code an hooking it into the
indicated spot with jump instructions.

The mind wobbled.

-- 
Grant Edwards   grant.b.edwardsYow! I'm a fuschia bowling
  at   ball somewhere in Brittany
  gmail.com
-- 
http://mail.python.org/mailman/listinfo/python-list


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

2012-04-03 Thread Chris Angelico
On Wed, Apr 4, 2012 at 12:26 AM, Mark Lawrence  wrote:
> On 03/04/2012 14:51, rusi wrote:
>> Doing programming without programming languages is like using toenails
>> to tighten screws
>
>
> The latter is extremely difficult if you bite your toenails :)

I agree, thumbnails are far better suited. Mine are often pushed into
that service. But to extend the analogy: Using a thumbnail to tighten
a screw is like directly patching a binary to fix a bug. It works, but
it's not exactly a practical way to build a system.

ChrisA
-- 
http://mail.python.org/mailman/listinfo/python-list


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

2012-04-03 Thread Mark Lawrence

On 03/04/2012 14:51, rusi wrote:

On Apr 3, 5:39 pm, Nathan Rice
wrote:


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.


A carpenter describes his carpentry-process in English
A CSist describes his programming-process in English (at least all my
CS books are in English)

A carpenter uses his tools -- screwdriver, saw, planer --to do
carpentry
A programmer uses his tools to to programming -- one of which is
called 'programming language'

Doing programming without programming languages is like using toenails
to tighten screws


The latter is extremely difficult if you bite your toenails :)

--
Cheers.

Mark Lawrence.

--
http://mail.python.org/mailman/listinfo/python-list


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

2012-04-03 Thread rusi
On Apr 3, 5:39 pm, Nathan Rice 
wrote:
>
> 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.

A carpenter describes his carpentry-process in English
A CSist describes his programming-process in English (at least all my
CS books are in English)

A carpenter uses his tools -- screwdriver, saw, planer --to do
carpentry
A programmer uses his tools to to programming -- one of which is
called 'programming language'

Doing programming without programming languages is like using toenails
to tighten screws
-- 
http://mail.python.org/mailman/listinfo/python-list


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

2012-04-03 Thread Nathan Rice
On Tue, Apr 3, 2012 at 1:40 AM, alex23  wrote:
> On Apr 3, 2:55 pm, Nathan Rice 
> 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,

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

2012-04-03 Thread Chris Angelico
On Tue, Apr 3, 2012 at 8:05 AM, Dennis Lee Bieber  wrote:
> On Thu, 29 Mar 2012 08:48:53 -0700 (PDT), Steve Howell
>  declaimed the following in
> gmane.comp.python.general:
>
>        REXX is inhibited by the architectures to which it has been ported
> -- limiting the ADDRESS targets to variations of Python's os.system() or
> popen() calls; even the subprocess module can't get beyond the all or
> nothing execution model.
>
>        Much different from the original IBM environment (and, biased, the
> Amiga implementation may have gone beyond the IBM one in capabilities)
> wherein compliant programs become the "command shell" for REXX command
> processing -- actual bidirectional interactive interprocess
> communication. Window's COM system offers some of that capability, but
> buried in a cryptic object programming system -- nothing like having a
> script sending the /same/ command that one would use in a text interface
> to the target program.

Some years ago, I wrote a MUD that used REXX as its scripting
language. (The server's still running, but not so much to be a MUD as
to be my administrative interface to that particular box. I'm like
that with MUDs.) I thought it was really cool to be able to simply put
a bare string and have that get sent to the player - for instance:

/* Command handler for some particular location in the MUD */
if arg(1)="foo" then do
"You begin to foo."
/* do some stuff */
"You finish fooing."
end

Having now built MUDs in Pike, I'm not so impressed with the syntax.
But hey, it's a completely different use of the ADDRESS command! :)
And of course, I can always use ADDRESS CMD "blah blah" to execute
commands.

On Tue, Apr 3, 2012 at 10:25 AM, Steve Howell  wrote:
> On Apr 2, 2:50 pm, Chris Angelico  wrote:
>> Hmm... How do you pipe one command's output into another's input using
>> Python? It's not nearly as clean as it is in bash.
>
> For pipes, I'd still call out to bash.  I know that's cheating, but
> the idea is that Python can wrap all the good parts of bash while
> still allowing you to use Python's more modern syntax, standard
> library, etc.

So, it's not that Python is a superset of bash, but that Python+bash
is a superset of bash. Well, that is certainly understandable. And
needn't be too onerous syntactically either:

from os import system as x

x('do_stuff')

ChrisA
-- 
http://mail.python.org/mailman/listinfo/python-list


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

2012-04-02 Thread alex23
On Apr 3, 2:55 pm, Nathan Rice 
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.

> 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.

> 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

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'.

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

> 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...

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.

> 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.

> > 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.

> 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.

How do I share cool patterns? Show them the unde

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

2012-04-02 Thread Nathan Rice
On Sun, Apr 1, 2012 at 11:18 PM, alex23  wrote:
> On Mar 30, 3:37 pm, Nathan Rice 
> wrote:
>> We live in a world where the tools that are used are based on
>> tradition (read that as backwards compatibility if it makes you feel
>> better) and as a mechanism for deriving personal identity.  The world
>> is backwards and retarded in many, many ways, this problem is
>> interesting to me because it actually cuts across a much larger tract
>> than is immediately obvious.
>
> Do you produce commercial code in a team? Because going by your
> absolutist bullshit here, it certainly doesn't sound like it.

Think of me like the Wolf, the cleaner in pulp fiction that Marcellis
Wallis calls in to take care of the mess when Jules accidentally blows
a kid's brains out in the back of a car.  I get called in when my
skills are needed, and when the mess has been handled and things are
back to normal I take my leave.

> When I join an organisation that requires language A as all of its
> systems are written in it, is that 'tradition' or 'personal identity'?
> How is 'compatibility' - either with existing systems or existing
> *developers* - a "backwards and retarded" approach to complex
> problems?

I don't care what people do related to legacy systems.  There will
always be a COBOL.  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.

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.  If you're going to be
selfish and inconsiderate at least be honest about it, rather than
pretending that one of the earliest languages somehow got almost
everything right and should be the basis for new languages till the
end of time.  This goes for most of the ALGOL derived languages.  I
don't have a problem if you know your language well and are happy
using it, that's great.  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.

> If I've chosen language A because some aspect of its syntax maps
> better onto my mind (or for _whatever_ reason that makes individuals
> prefer one language to another), and you've chosen language B: who
> gets to decide which is the 'superior' language, which is the 'better'
> mapping etc?

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.

> 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.  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.
-- 
http://mail.python.org/mailman/listinfo/python-list


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

2012-04-02 Thread Steve Howell
On Apr 2, 2:50 pm, Chris Angelico  wrote:
> On Fri, Mar 30, 2012 at 2:48 AM, Steve Howell  wrote:
> > I agree with you on the overall point, but I think that Python
> > actually does a fine job of replacing REXX and PHP.  I've used both of
> > the latter (and, of course, Python).  REXX and PHP are great at what
> > they do, but I don't think their slight advantages over Python justify
> > all the weight they carry--incompatible syntax to Python, archaic
> > libraries, missing modern language features, etc.
>
> I think you're probably right about REXX, mainly because it's somewhat
> old now. It was an awesome language when I first met it back in the
> 1990s; it tied in very nicely with OS/2, it was (and is) easy to
> extend and embed with C, it had excellent GUI facilities (as long as
> you don't need it to be cross-platform). But today, REXX is somewhat
> outclassed. I don't recommend it to people for most tasks, unless
> they're actually on OS/2 (in which case they probably know it
> already). Unicode support and cross-platform GUI toolkits would
> probably be REXX's two biggest lacks.
>
> As to PHP? I don't think it's "great at what [it] [does]", frankly. At
> least, it's not great at what it's often used for. PHP is adequate as
> a "variant of HTML that allows scripting", but it's usually used today
> as though it were a CGI script, and for that it's less than optimal.
> For instance, you can't have an include file without it also being an
> entry point of its own (eg someone could go 
> tohttp://www.example.com/common_functions.php), so you need code to
> protect against that. Huge frameworks have such code peppered
> throughout.
>
> (As a side point, I don't believe that a web server's CGI scripts
> should be updated simply by writing to the disk. It's pretty easy to
> get non-atomicity problems when you have a page and its include file.
> There ARE other options, but I don't know of any efficient ways to do
> it in Python.)
>
> > Python should also be a perfectly good superset of Bash Scripting
> > language.  (To the extent that Python isn't, there's nothing intrinsic
> > about the language that prevents you from orchestrating processes.)
>
> Hmm... How do you pipe one command's output into another's input using
> Python? It's not nearly as clean as it is in bash.
>

For pipes, I'd still call out to bash.  I know that's cheating, but
the idea is that Python can wrap all the good parts of bash while
still allowing you to use Python's more modern syntax, standard
library, etc.



-- 
http://mail.python.org/mailman/listinfo/python-list


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

2012-04-02 Thread Tim Chase

PHP is a language that I wish would die off quickly and
gracefully.  I feel like the good things of PHP have already
been subsumed into the ecosystems of stronger programming
languages (including Python).


The one killer feature PHP has to offer over other languages: 
ease of efficient deployment on cheap/free hosting.  When I go to 
deploy Python projects, it ends up either being as slow CGI on 
the cheap/free hosting, or it ends up needing 
WSGI/gunicorn/whatever on a more expensive service (whether 
shared, VPS, or full hardware).


I dream of a day that deploying Python/Django apps is as 
cheap/easy as deploying PHP code.


-tkc



--
http://mail.python.org/mailman/listinfo/python-list


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

2012-04-02 Thread Chris Angelico
On Sun, Apr 1, 2012 at 6:23 AM, Steve Howell  wrote:
> On Mar 31, 1:13 pm, Tim Rowe  wrote:
>>
>> I know 10 languages. But I'm not telling you what base that number is :)
>>
>
> Well, that means you know at least two programming languages, which
> puts you ahead of a lot of people. :)

That's enough to use the phone support code word. (I'm of the opinion
that you shouldn't be allowed to use it unless you are qualified to
respond to it.)

ChrisA
who knows 806 comic strips
-- 
http://mail.python.org/mailman/listinfo/python-list


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

2012-04-02 Thread Chris Angelico
On Fri, Mar 30, 2012 at 2:48 AM, Steve Howell  wrote:
> I agree with you on the overall point, but I think that Python
> actually does a fine job of replacing REXX and PHP.  I've used both of
> the latter (and, of course, Python).  REXX and PHP are great at what
> they do, but I don't think their slight advantages over Python justify
> all the weight they carry--incompatible syntax to Python, archaic
> libraries, missing modern language features, etc.

I think you're probably right about REXX, mainly because it's somewhat
old now. It was an awesome language when I first met it back in the
1990s; it tied in very nicely with OS/2, it was (and is) easy to
extend and embed with C, it had excellent GUI facilities (as long as
you don't need it to be cross-platform). But today, REXX is somewhat
outclassed. I don't recommend it to people for most tasks, unless
they're actually on OS/2 (in which case they probably know it
already). Unicode support and cross-platform GUI toolkits would
probably be REXX's two biggest lacks.

As to PHP? I don't think it's "great at what [it] [does]", frankly. At
least, it's not great at what it's often used for. PHP is adequate as
a "variant of HTML that allows scripting", but it's usually used today
as though it were a CGI script, and for that it's less than optimal.
For instance, you can't have an include file without it also being an
entry point of its own (eg someone could go to
http://www.example.com/common_functions.php), so you need code to
protect against that. Huge frameworks have such code peppered
throughout.

(As a side point, I don't believe that a web server's CGI scripts
should be updated simply by writing to the disk. It's pretty easy to
get non-atomicity problems when you have a page and its include file.
There ARE other options, but I don't know of any efficient ways to do
it in Python.)

> Python should also be a perfectly good superset of Bash Scripting
> language.  (To the extent that Python isn't, there's nothing intrinsic
> about the language that prevents you from orchestrating processes.)

Hmm... How do you pipe one command's output into another's input using
Python? It's not nearly as clean as it is in bash.

> I think the problem these days is that the programmer's brain is like
> a small toolbox.  Maybe twenty tools fit in the toolbox.  Instead of
> filling it up with 20 useful tools, a lot of us have it cluttered up
> with ten hammers, when only one of the hammers is what we need for the
> nails.

Maybe. But you can also have a little catalogue in there that reminds
you of the tools you have in your shed. If you keep that catalogue up
to date and accurate, you can hunt down those tools you seldom use
when you need them.

ChrisA
-- 
http://mail.python.org/mailman/listinfo/python-list


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

2012-04-02 Thread alex23
On Mar 30, 3:37 pm, Nathan Rice 
wrote:
> We live in a world where the tools that are used are based on
> tradition (read that as backwards compatibility if it makes you feel
> better) and as a mechanism for deriving personal identity.  The world
> is backwards and retarded in many, many ways, this problem is
> interesting to me because it actually cuts across a much larger tract
> than is immediately obvious.

Do you produce commercial code in a team? Because going by your
absolutist bullshit here, it certainly doesn't sound like it.

When I join an organisation that requires language A as all of its
systems are written in it, is that 'tradition' or 'personal identity'?
How is 'compatibility' - either with existing systems or existing
*developers* - a "backwards and retarded" approach to complex
problems?

If I've chosen language A because some aspect of its syntax maps
better onto my mind (or for _whatever_ reason that makes individuals
prefer one language to another), and you've chosen language B: who
gets to decide which is the 'superior' language, which is the 'better'
mapping etc?

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.
-- 
http://mail.python.org/mailman/listinfo/python-list


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

2012-04-02 Thread Steve Howell
On Mar 31, 1:13 pm, Tim Rowe  wrote:
>
> I know 10 languages. But I'm not telling you what base that number is :)
>

Well, that means you know at least two programming languages, which
puts you ahead of a lot of people. :)


Some folks, when confronted with a problem, decide to solve it with
binary numbers.  And then they have 10 problems.


-- 
http://mail.python.org/mailman/listinfo/python-list


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

2012-04-02 Thread rusi
On Mar 30, 4:37 am, Devin Jeanpierre  wrote:
> On Thu, Mar 29, 2012 at 3:50 PM, Nathan Rice
>
>  wrote:
> > Well, a lisp-like language.  I would also argue that if you are using
> > macros to do anything, the thing you are trying to do should classify
> > as "not natural in lisp" :)
>
> You would run into disagreement. Some people feel that the lisp
> philosophy is precisely that of extending the language to do anything
> you want, in the most natural way.
>
> At least, I disagree, but my lisp thoughts are the result of
> indoctrination of the Racket crowd.

I guess Paul Graham would likewise disagree.
See 7,8,9 in http://paulgraham.com/diff.html
-- 
http://mail.python.org/mailman/listinfo/python-list


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

2012-04-02 Thread Steve Howell
On Mar 29, 9:42 am, Devin Jeanpierre  wrote:
> On Thu, Mar 29, 2012 at 10:03 AM, Chris Angelico  wrote:
> > You can't merge all of them without making a language that's
> > suboptimal at most of those tasks - probably, one that's woeful at all
> > of them. I mention SQL because, even if you were to unify all
> > programming languages, you'd still need other non-application
> > languages to get the job done.
>
> Not really. You can turn SQL (or something equivalent) into a subset
> of your programming language, like C# does with LINQ, or like Scheme
> does with macros.

I'm glad your moving the discussion away from the fake debate between
"diversity" (good) and "one-language-fits-all" (horribly naive at
best, evil at worse).

Of course, there's a middle ground, where (some degree of) language
unification is a completely sane goal, at least worthy of discussion.

SQL is a well-established lingua franca for describing relationships
between sets, or relational algebra.  General-purpose languages like
C#, Scheme, and Python are well suited to subsuming SQL semantics,
and, in fact, they already do, but sometimes they do it a way that's
unnecessarily foreign to people who quite easily grok the basics of
SQL.  The extreme position for language unification would be that
Python completely subsumes SQL under its umbrella as first-class
syntax.  I don't necessarily advocate for that, but I think it's an
interesting thought experiment to ask why it doesn't.  Just to be
clear, I'm talking about SQL as a mechanism to transform sets within
Python itself, not external RDMBS engines (although first-class SQL
integration could also be useful for that as well).

> On the other hand, even similar languages are really hard to run in
> the same VM: imagine the hoops you'd have to jump through to get
> libraries written in Python 2 and 3 to work together.

My take on Python 2 vs. Python 3 is that it's simply a tactical
program to get people to upgrade to Python 3.  The fact that the two
languages can't run on the same VM doesn't really bother me.


> With that in mind, the interesting languages to "merge" aren't things
> like SQL or regular expressions -- these are so easy to make work with
> programming languages, that we do it all the time already (via string
> manipulation, but first-class syntax would also be easily possible).
> The hard problems are when trying to merge in the semantics of
> languages that only "make sense" because they have drastically
> different expectations of the world. The example that comes to mind is
> Haskell, which relies incredibly strongly on the lack of side effects.
> How do you merge Haskell and Python?

My view on Haskell and Python is that they should stay alive as
competing paradigms.  I think you're making a useful distinction
between Haskell and SQL.  Neither language is well integrated with
Python.  With Haskell, I think it's for good reason.  With SQL, I
don't quite understand the status quo (beyond the obvious reasons--
maybe we're just not there yet).

> I guess what I really want to say is that the world looks, to me, to
> be more optimistic than so many people think it is. If we wanted to,
> we could absolutely take the best features from a bunch of things.
> This is what C++ does, this is what Scheme does, this is what D does.
> They sometimes do it in different ways, they have varying tradeoffs,
> but this isn't a hard problem except when it is, and the examples you
> mentioned are actually the easy cases. We can merge Python and C,
> while keeping roughly the power of both, it's called Cython.

I love the fact that C dominates all other languages at its level of
abstraction.  I wish this were the case one level up, where you still
have Python, Ruby, JavaScript, PHP, Perl, and others essentially
solving the same classes of problems.  Don't get me wrong--I'm all for
diversity; I'm not saying we should arbitrarily kill off languages,
etc.  I'm just saying that there will be *some* benefit when a clear
victor emerges, and hopefully that will be Python 3.  Whatever
language emerges as the victor, it will probably subsume some of the
best features of the conquered.  To a degree that has already
happened.

> We can
> merge Python and PHP, in that PHP adds nothing incompatible with
> Python technically (it'd be a lot of work and there would be many
> tears shed because it's insane) -- but Python Server Pages probably
> add the feature you want.

PHP is a language that I wish would die off quickly and gracefully.  I
feel like the good things of PHP have already been subsumed into the
ecosystems of stronger programming languages (including Python).

> We could merge SQL and Python, arguably we
> already do via e.g. SQLAlchemy's query API (etc.) or DBAPI2's string
> API. These can all becomes subsets of a language that interoperate
> well with the rest of the language with no problems. These are
> non-issues: the reasons for not doing so are not technical, they are
> political or sociologic

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

2012-04-02 Thread Steve Howell
On Mar 29, 11:53 am, Devin Jeanpierre  wrote:

> Well, what sort of language differences make for English vs Mandarin?
> Relational algebraic-style programming is useful, but definitely a
> large language barrier to people that don't know any SQL. I think this
> is reasonable. (It would not matter even if you gave SQL python-like
> syntax, the mode of thinking is different, and for a good reason.)
>

I don't see any fundamental disconnect between SQL thinking and Python
thinking.

List comprehensions are very close to SQL SELECTs semantically, and
not that far off syntactically.

  [row.x for row in foo if x == 3]

  select x from foo where x = 3

Many people can grok the basics of relational algebraic style
programming quite easily, which is why SQL is so popular.  It just
happens that many "programming" languages up until now have obscured
the idea.

SQL is so strongly associated with RDBMS implementations that people
tend to forget that it makes sense as an abstract language--people
tend to view SQL as a very concrete mechanism for pulling data out of
storage, instead of as a notation for describing the relating and
transforming of sets.


-- 
http://mail.python.org/mailman/listinfo/python-list


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

2012-04-02 Thread Steve Howell
On Mar 29, 7:03 am, Chris Angelico  wrote:
> On Fri, Mar 30, 2012 at 12:44 AM, Nathan Rice
>
>  wrote:
> > We would be better off if all the time that was spent on learning
> > syntax, memorizing library organization and becoming proficient with
> > new tools was spent learning the mathematics, logic and engineering
> > sciences.  Those solve problems, languages are just representations.
>
> Different languages are good at different things. REXX is an efficient
> text parser and command executor. Pike allows live updates of running
> code. Python promotes rapid development and simplicity. PHP makes it
> easy to add small amounts of scripting to otherwise-static HTML pages.
> C gives you all the power of assembly language with all the
> readability of... assembly language. SQL describes a database request.
>
> You can't merge all of them without making a language that's
> suboptimal at most of those tasks - probably, one that's woeful at all
> of them.

I agree with you on the overall point, but I think that Python
actually does a fine job of replacing REXX and PHP.  I've used both of
the latter (and, of course, Python).  REXX and PHP are great at what
they do, but I don't think their slight advantages over Python justify
all the weight they carry--incompatible syntax to Python, archaic
libraries, missing modern language features, etc.

It's great to have languages like C and HTML that carve out their own
strong niches.  No argument there.

On the other hand, if you know Python, then having to contend with the
learning curves and idiosyncrasies of Perl and Ruby might feel more
frustrating than empowering.  Like REXX and PHP, Perl and Ruby
arguably have corners where they are more expressive than Python, but
I'd rather have a boring system written in 100% Python than a Ruby/
Python hybrid.

Python should also be a perfectly good superset of Bash Scripting
language.  (To the extent that Python isn't, there's nothing intrinsic
about the language that prevents you from orchestrating processes.)

> I mention SQL because, even if you were to unify all
> programming languages, you'd still need other non-application
> languages to get the job done.
>

Here I absolutely agree with you.  SQL, to me, is a perfect
illustration of a language that's optimal for a particular task.  Of
course, people still can't resist hiding it behind an ORM.

The web stack is notorious for requiring multilingual juggling.  HTML,
CSS, JS, Python, and SQL are easy enough to juggle, but then you might
also get template languages (with all the interpolation escaping),
config files (XML, YAML, etc.), regexes (possibly multiple dialects),
SQL, testing DSLs (ugh, Cucumber and friends), etc.


> Keep the diversity and let each language focus on what it's best at.
>
> ChrisA
> who has lots and lots of hammers, so every problem looks like... lots
> and lots of nails.

I know you're just joking here, because you're obviously not
advocating for multiple hammers.  You're advocating for multiple tools
in the toolbox.  Which is good, of course.

I think the problem these days is that the programmer's brain is like
a small toolbox.  Maybe twenty tools fit in the toolbox.  Instead of
filling it up with 20 useful tools, a lot of us have it cluttered up
with ten hammers, when only one of the hammers is what we need for the
nails.



-- 
http://mail.python.org/mailman/listinfo/python-list


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

2012-04-02 Thread Ethan Furman

Tim Rowe wrote:

On 22 March 2012 19:14, Chris Angelico  wrote:


In any case, though, I agree that there's a lot of people
professionally writing code who would know about the 3-4 that you say.
I'm just not sure that they're any good at coding, even in those few
languages. All the best people I've ever known have had experience
with quite a lot of languages.


I know 10 languages. But I'm not telling you what base that number is :)


There are 10 types of people in the world:  those who know binary and 
those who don't.


;)

~Ethan~
--
http://mail.python.org/mailman/listinfo/python-list


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

2012-03-31 Thread Hannu Krosing
On Sat, 2012-03-31 at 18:55 -0400, David Robinow wrote:
> On Sat, Mar 31, 2012 at 4:13 PM, Tim Rowe  wrote:
> 
> > I know 10 languages. But I'm not telling you what base that number is :)
>  The fact that you know there are bases other than 10 puts you in the
> top half of the candidates already!

I'm sure he really had base 10 in mind *

Hannu


* But as this 10 is in his chosen base, it is a tautology  :)



-- 
http://mail.python.org/mailman/listinfo/python-list


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

2012-03-31 Thread David Robinow
On Sat, Mar 31, 2012 at 4:13 PM, Tim Rowe  wrote:

> I know 10 languages. But I'm not telling you what base that number is :)
 The fact that you know there are bases other than 10 puts you in the
top half of the candidates already!
-- 
http://mail.python.org/mailman/listinfo/python-list


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

2012-03-31 Thread Tim Rowe
On 22 March 2012 19:14, Chris Angelico  wrote:

> In any case, though, I agree that there's a lot of people
> professionally writing code who would know about the 3-4 that you say.
> I'm just not sure that they're any good at coding, even in those few
> languages. All the best people I've ever known have had experience
> with quite a lot of languages.

I know 10 languages. But I'm not telling you what base that number is :)

-- 
Tim Rowe
-- 
http://mail.python.org/mailman/listinfo/python-list


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

2012-03-29 Thread Nathan Rice
>> Here's a thought experiment.  Imagine that you have a project tree on
>> your file system which includes files written in many different
>> programming languages.  Imagine that the files can be assumed to be
>> contiguous for our purposes, so you could view all the files in the
>> project as one long chunk of data.  The directory and file names could
>> be interpreted as statements in this data, analogous to "in the context
>> of somedirectory" or "in the context of somefile with sometype".  Any
>> project configuration files could be viewed as declarative statements
>> about contexts, such as "in xyz context, ignore those" or "in abc
>> context, any that is actually a this".  Imagine the compiler or
>> interpreter is actually part of your program (which is reasonable since
>> it doesn't do anything by itself).  Imagine the build management tool is
>> also part of your program in pretty much the same manner.  Imagine that
>> your program actually generates another program that will generate the
>> program the machine runs.  I hope you can follow me here, and further I
>> hope you can see that this is a completely valid description of what is
>> actually going on (from a different perspective).
> [...]
>> What does pushing the abstraction point that far up provide?
>
> I see why you are so hostile towards Joel Spolsky's criticism of
> Architecture Astronauts: you are one of them. Sorry Nathan, I don't know
> how you breathe that high up.
>
> For what it's worth, your image of "everything from the compiler on up is
> part of your program" describes both Forth and Hypercard to some degree,
> both of which I have used and like very much. I still think you're
> sucking vacuum :(

We live in a world where the tools that are used are based on
tradition (read that as backwards compatibility if it makes you feel
better) and as a mechanism for deriving personal identity.  The world
is backwards and retarded in many, many ways, this problem is
interesting to me because it actually cuts across a much larger tract
than is immediately obvious.

People throughout history have had the mistaken impression that the
world as it existed for them was the pinnacle of human development.
Clearly all of those people were tragically deluded, and I suspect
that is the case here as well.
-- 
http://mail.python.org/mailman/listinfo/python-list


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

2012-03-29 Thread Steven D'Aprano
On Thu, 29 Mar 2012 13:48:40 -0400, Nathan Rice wrote:

> Here's a thought experiment.  Imagine that you have a project tree on
> your file system which includes files written in many different
> programming languages.  Imagine that the files can be assumed to be
> contiguous for our purposes, so you could view all the files in the
> project as one long chunk of data.  The directory and file names could
> be interpreted as statements in this data, analogous to "in the context
> of somedirectory" or "in the context of somefile with sometype".  Any
> project configuration files could be viewed as declarative statements
> about contexts, such as "in xyz context, ignore those" or "in abc
> context, any that is actually a this".  Imagine the compiler or
> interpreter is actually part of your program (which is reasonable since
> it doesn't do anything by itself).  Imagine the build management tool is
> also part of your program in pretty much the same manner.  Imagine that
> your program actually generates another program that will generate the
> program the machine runs.  I hope you can follow me here, and further I
> hope you can see that this is a completely valid description of what is
> actually going on (from a different perspective).
[...]
> What does pushing the abstraction point that far up provide?

I see why you are so hostile towards Joel Spolsky's criticism of 
Architecture Astronauts: you are one of them. Sorry Nathan, I don't know 
how you breathe that high up.

For what it's worth, your image of "everything from the compiler on up is 
part of your program" describes both Forth and Hypercard to some degree, 
both of which I have used and like very much. I still think you're 
sucking vacuum :(



-- 
Steven
-- 
http://mail.python.org/mailman/listinfo/python-list


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

2012-03-29 Thread Nathan Rice
On Thu, Mar 29, 2012 at 7:37 PM, Devin Jeanpierre
 wrote:
> On Thu, Mar 29, 2012 at 3:50 PM, Nathan Rice
>  wrote:
>> Well, a lisp-like language.  I would also argue that if you are using
>> macros to do anything, the thing you are trying to do should classify
>> as "not natural in lisp" :)
>
> You would run into disagreement. Some people feel that the lisp
> philosophy is precisely that of extending the language to do anything
> you want, in the most natural way.

That is some people's lisp philosophy, though I wouldn't say that is a
universal.  Just like I might say my take on python's philosophy is
"keep it simple, stupid" but others could disagree.

> At least, I disagree, but my lisp thoughts are the result of
> indoctrination of the Racket crowd. I don't know how well they
> represent the larger lisp community. But you should definitely take
> what I say from the viewpoint of the sort of person that believes that
> the whole purpose of lisps is to embed new syntax and new DSLs via
> macros. Without macros, there's no point of having this despicable
> syntax (barring maybe pedagogy and other minor issues).

Heh, I think you can have a homoiconic language without nasty syntax,
but I won't get into that right now.

>> I'm really thinking here more in terms of a general graph reactive
>> system here, matching patterns in an input graph and modifying the
>> graph in response.  There are a lot of systems that can be modeled as
>> a graph that don't admit a nested list (tree) description.  By having
>> references to outside the nesting structure you've just admitted that
>> you need a graph rather than a list, so why not be honest about it and
>> work in that context from the get-go.
>
> I don't see any issue in defining a library for working with graphs.
> If it's useful enough, it could be added to the standard library.
> There's nothing all that weird about it.

Graphs are the more general and expressive data structure, I think if
anything you should special case the less general form.

> Also, most representations of graphs are precisely via a tree-like
> non-recursive structure. For example, as a matrix, or adjacency list,
> etc. We think of them as deep structures, but implement them as flat,
> shallow structures. Specialized syntax (e.g. from macros) can
> definitely bridge the gap and let you manipulate them in the obvious
> way, while admitting the usual implementation.

We do a lot of things because they are efficient.  That is why
gaussian distributions are everywhere in statistics, people
approximate nonlinear functions with sums of kernels, etc.  It
shouldn't be the end goal though, unless it really is the most
expressive way of dealing with things.  My personal opinion is that
graphs are more expressive, and I think it would be a good idea to
move towards modeling knowledge and systems with graphical structures.

>> I don't think they have to be.  You can view functions as names for
>> temporally ordered sequence of declarative implication statements.
>> Databases just leave out the logic (this is hyperbole, I know), so you
>> have to do it in client code.  I don't feel that a database
>> necessarily has to be a separate entity, that is just an artifact of
>> the localized, specialized view of computation.  As stronger
>> abstractions are developed and concurrent, distributed computation is
>> rigorously systematized, I think we'll go full circle.
>
> Maybe I'm too tired, but this went straight over my head, sorry.
> Perhaps you could be a bit more explicit about what you mean by the
> implications/logic?

Well,  the curry howard correspondance says that every function can be
seen as a named implication of outputs given inputs, with the code for
that function being a representation of its proof.  Since pretty much
every function is a composition of many smaller functions, this holds
down to the lowest level.  Even imperative statements can be viewed as
functions in this light, if you assume discrete time, and view every
function or statement as taking the state of the world at T as an
implicit input and  returning as an implicit output the state of the
world at T+1.  Thus, every function (and indeed pretty much all code)
can be viewed as a named collection of implication statements in a
particular context :)
-- 
http://mail.python.org/mailman/listinfo/python-list


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

2012-03-29 Thread Devin Jeanpierre
On Thu, Mar 29, 2012 at 3:50 PM, Nathan Rice
 wrote:
> Well, a lisp-like language.  I would also argue that if you are using
> macros to do anything, the thing you are trying to do should classify
> as "not natural in lisp" :)

You would run into disagreement. Some people feel that the lisp
philosophy is precisely that of extending the language to do anything
you want, in the most natural way.

At least, I disagree, but my lisp thoughts are the result of
indoctrination of the Racket crowd. I don't know how well they
represent the larger lisp community. But you should definitely take
what I say from the viewpoint of the sort of person that believes that
the whole purpose of lisps is to embed new syntax and new DSLs via
macros. Without macros, there's no point of having this despicable
syntax (barring maybe pedagogy and other minor issues).

> I'm really thinking here more in terms of a general graph reactive
> system here, matching patterns in an input graph and modifying the
> graph in response.  There are a lot of systems that can be modeled as
> a graph that don't admit a nested list (tree) description.  By having
> references to outside the nesting structure you've just admitted that
> you need a graph rather than a list, so why not be honest about it and
> work in that context from the get-go.

I don't see any issue in defining a library for working with graphs.
If it's useful enough, it could be added to the standard library.
There's nothing all that weird about it.

Also, most representations of graphs are precisely via a tree-like
non-recursive structure. For example, as a matrix, or adjacency list,
etc. We think of them as deep structures, but implement them as flat,
shallow structures. Specialized syntax (e.g. from macros) can
definitely bridge the gap and let you manipulate them in the obvious
way, while admitting the usual implementation.

> I don't think they have to be.  You can view functions as names for
> temporally ordered sequence of declarative implication statements.
> Databases just leave out the logic (this is hyperbole, I know), so you
> have to do it in client code.  I don't feel that a database
> necessarily has to be a separate entity, that is just an artifact of
> the localized, specialized view of computation.  As stronger
> abstractions are developed and concurrent, distributed computation is
> rigorously systematized, I think we'll go full circle.

Maybe I'm too tired, but this went straight over my head, sorry.
Perhaps you could be a bit more explicit about what you mean by the
implications/logic?

-- Devin
-- 
http://mail.python.org/mailman/listinfo/python-list


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

2012-03-29 Thread Devin Jeanpierre
On Thu, Mar 29, 2012 at 4:33 PM, Chris Angelico  wrote:
> Of course it's POSSIBLE. You can write everything in Ook if you want
> to. But any attempt to merge all programming languages into one will
> either:

In that particular quote, I was saying that the reason that you
claimed we can't merge languages was not a correct reason. You are now
moving the goalposts, in that you've decided to abandon your original
point. Also you are now discussing the merger of all programming
languages, whereas I meant to talk about pairs of programming
languages. e.g. such as SQL and Python.

Merging all programming languages is ridiculous. Even merging two,
Haskell and C, is impossible without running into massive
world-bending problems. (Yes, these problems are interesting, but no,
they can't be solved without running into your "issue 1" -- this is in
fact a proven theorem.)

> 1) Allow different parts of a program to be written in different
> subsets of this universal language, which just means that you've
> renamed all the languages but kept their distinctions (so a programmer
> still has to learn all of them); or

Yes. I mentioned this. It is not entirely useless (if you're going to
use the other language _anyway_, like SQL or regexps, might as well
have it be checked at compile-time same as your outer code), but in a
broad sense it's a terrible idea.

Also, programmers would have to learn things regardless. You can't
avoid this, that's what happens when you add features. The goal in
integrating two languages is, well, integration, not reducing
learning.

> 2) Shoehorn every task into one language, equivalent to knowing only
> one language and using that for everything. Good luck with that.

This isn't true for the "merge just two languages" case, which is what
I meant to talk about.

> The debate keeps on coming up, but it's not just political decisions
> that maintain language diversity.

Are you disagreeing with me, or somebody else? I never said that.

Yes, I said that in some cases, e.g. SQL/Python, because there are no
technical issues, it must be something political or stylistic. I
wasn't saying that the only reason we don't merge languages in is
political. As a matter of fact, the very next paragraph begins with
"There _are_ times when this is technical".

("political" is a bad word for it, because it covers things that are
just plain bad ideas (but, subjectively). For example, there's nothing
technically challenging about adding an operator that wipes the user's
home directory.)

-- Devin
-- 
http://mail.python.org/mailman/listinfo/python-list


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

2012-03-29 Thread Prasad, Ramit
> >> You can't merge all of them without making a language that's
> >> suboptimal at most of those tasks - probably, one that's woeful at all
> >> of them. I mention SQL because, even if you were to unify all
> >> programming languages, you'd still need other non-application
> >> languages to get the job done.
> > ...
> > But this has nothing to do with being "suboptimal at most tasks". It's
> > easy to make a language that can do everything C can do, and also
> > everything that Haskell can do. I can write an implementation of this
> > programming language in one line of bash[*]. The easy way is to make
> > those features mutually exclusive. We don't have to sacrifice anything
> > by including more features until we want them to work together.
> 
> Of course it's POSSIBLE. You can write everything in Ook if you want
> to. But any attempt to merge all programming languages into one will
> either:
> 
> 1) Allow different parts of a program to be written in different
> subsets of this universal language, which just means that you've
> renamed all the languages but kept their distinctions (so a programmer
> still has to learn all of them); or
> 
> 2) Shoehorn every task into one language, equivalent to knowing only
> one language and using that for everything. Good luck with that.

In a much simpler context, isn't this what .NET's CLR does? Except
that instead of converting each language into each other it converts
everything into a different language. I have trouble in my mind seeing
how what you suggest would not end up with badly coded versions of a
translated program. Never yet seen a program that could convert from one 
paradigm/language directly to another (and do it well/maintainable). 


> The debate keeps on coming up, but it's not just political decisions
> that maintain language diversity.

Not a bad thing in my opinion.  A tool for each problem, but I can 
see the appeal of a multi-tool language. 


Ramit


Ramit Prasad | JPMorgan Chase Investment Bank | Currencies Technology
712 Main Street | Houston, TX 77002
work phone: 713 - 216 - 5423

--
This email is confidential and subject to important disclaimers and
conditions including on offers for the purchase or sale of
securities, accuracy and completeness of information, viruses,
confidentiality, legal privilege, and legal entity disclaimers,
available at http://www.jpmorgan.com/pages/disclosures/email.  
-- 
http://mail.python.org/mailman/listinfo/python-list


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

2012-03-29 Thread Chris Angelico
On Fri, Mar 30, 2012 at 3:42 AM, Devin Jeanpierre
 wrote:
> On Thu, Mar 29, 2012 at 10:03 AM, Chris Angelico  wrote:
>> You can't merge all of them without making a language that's
>> suboptimal at most of those tasks - probably, one that's woeful at all
>> of them. I mention SQL because, even if you were to unify all
>> programming languages, you'd still need other non-application
>> languages to get the job done.
> ...
> But this has nothing to do with being "suboptimal at most tasks". It's
> easy to make a language that can do everything C can do, and also
> everything that Haskell can do. I can write an implementation of this
> programming language in one line of bash[*]. The easy way is to make
> those features mutually exclusive. We don't have to sacrifice anything
> by including more features until we want them to work together.

Of course it's POSSIBLE. You can write everything in Ook if you want
to. But any attempt to merge all programming languages into one will
either:

1) Allow different parts of a program to be written in different
subsets of this universal language, which just means that you've
renamed all the languages but kept their distinctions (so a programmer
still has to learn all of them); or

2) Shoehorn every task into one language, equivalent to knowing only
one language and using that for everything. Good luck with that.

The debate keeps on coming up, but it's not just political decisions
that maintain language diversity.

ChrisA
-- 
http://mail.python.org/mailman/listinfo/python-list


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

2012-03-29 Thread Nathan Rice
On Thu, Mar 29, 2012 at 2:53 PM, Devin Jeanpierre
 wrote:
> Agreed with your entire first chunk 100%. Woohoo! High five. :)

Damn, then I'm not trolling hard enough ಠ_ಠ

> On Thu, Mar 29, 2012 at 1:48 PM, Nathan Rice
>  wrote:
>> transformations on lists of data are natural in Lisp, but graph
>> transformations are not, making some things awkward.
>
> Eh, earlier you make some argument towards lisp being a universal
> metalanguage. If it can simulate prolog, it can certainly grow a graph
> manipulation form. You'd just need to code it up as a macro or
> function :p

Well, a lisp-like language.  I would also argue that if you are using
macros to do anything, the thing you are trying to do should classify
as "not natural in lisp" :)

I'm really thinking here more in terms of a general graph reactive
system here, matching patterns in an input graph and modifying the
graph in response.  There are a lot of systems that can be modeled as
a graph that don't admit a nested list (tree) description.  By having
references to outside the nesting structure you've just admitted that
you need a graph rather than a list, so why not be honest about it and
work in that context from the get-go.

>> Additionally,
>> because Lisp tries to nudge you towards programming in a functional
>> style, it can be un-intuitive to learn.
>
> I think you're thinking of Scheme here. Common Lisp isn't any more
> functional than Python, AFAIK (other than having syntactic heritage
> from the lambda calculus?)
>
> Common-Lisp does very much embrace state as you later describe, Scheme
> much less so (in that it makes mutating operations more obvious and
> more ugly. Many schemes even outlaw some entirely. And quoted lists
> default to immutable (rgh)).

I find it interesting that John McCarthy invented both Lisp and the
situation calculus.

As for set/setq, sure, you can play with state, but it is verbose, and
there is no inherent notion of temporal locality.  Your program's
execution order forms a nice lattice when run on hardware, that should
be explicit in software.  If I were to do something crazy like take
the union of two processes that can potentially interact, with an
equivalence relation between some time t1 in the first process and a
time t2 in the second (so that you can derive a single partial order),
the computer should be able to tell if I am going to shoot myself in
the foot, and ideally suggest the correct course of action.

> Well, what sort of language differences make for English vs Mandarin?
> Relational algebraic-style programming is useful, but definitely a
> large language barrier to people that don't know any SQL. I think this
> is reasonable. (It would not matter even if you gave SQL python-like
> syntax, the mode of thinking is different, and for a good reason.)

I don't think they have to be.  You can view functions as names for
temporally ordered sequence of declarative implication statements.
Databases just leave out the logic (this is hyperbole, I know), so you
have to do it in client code.  I don't feel that a database
necessarily has to be a separate entity, that is just an artifact of
the localized, specialized view of computation.  As stronger
abstractions are developed and concurrent, distributed computation is
rigorously systematized, I think we'll go full circle.
-- 
http://mail.python.org/mailman/listinfo/python-list


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

2012-03-29 Thread Devin Jeanpierre
Agreed with your entire first chunk 100%. Woohoo! High five. :)

On Thu, Mar 29, 2012 at 1:48 PM, Nathan Rice
 wrote:
> transformations on lists of data are natural in Lisp, but graph
> transformations are not, making some things awkward.

Eh, earlier you make some argument towards lisp being a universal
metalanguage. If it can simulate prolog, it can certainly grow a graph
manipulation form. You'd just need to code it up as a macro or
function :p

> Additionally,
> because Lisp tries to nudge you towards programming in a functional
> style, it can be un-intuitive to learn.

I think you're thinking of Scheme here. Common Lisp isn't any more
functional than Python, AFAIK (other than having syntactic heritage
from the lambda calculus?)

Common-Lisp does very much embrace state as you later describe, Scheme
much less so (in that it makes mutating operations more obvious and
more ugly. Many schemes even outlaw some entirely. And quoted lists
default to immutable (rgh)).

> I'm all for diversity of language at the level of minor notation and
> vocabulary, but to draw an analogy to the real world, English and
> Mandarin are redundant, and the fact that they both creates a
> communication barrier for BILLIONS of people.  That doesn't mean that
> biologists shouldn't be able to define words to describe biological
> things, if you want to talk about biology you just need to learn the
> vocabulary.  That also doesn't mean or that mathematicians shouldn't
> be able to use notation to structure complex statements, if you want
> to do math you need to man up and learn the notation (of course, I
> have issues with some mathematical notation, but there is no reason
> you should cry about things like set builder).

Well, what sort of language differences make for English vs Mandarin?
Relational algebraic-style programming is useful, but definitely a
large language barrier to people that don't know any SQL. I think this
is reasonable. (It would not matter even if you gave SQL python-like
syntax, the mode of thinking is different, and for a good reason.)

-- Devin
-- 
http://mail.python.org/mailman/listinfo/python-list


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

2012-03-29 Thread Tim Chase

On 03/29/12 12:48, Nathan Rice wrote:

Of course, this describes Lisp to some degree, so I still need to
provide some answers.  What is wrong with Lisp?  I would say that the
base syntax being horrible is probably the biggest issue.


Do you mean something like:

((so (describes Lisp (to degree some) (of course)) still-need 
(provide I some-answers)) (is wrong what (with Lisp)) (would-say 
I ((is (base-syntax being-horrible) (probably-biggest issue)


nah...can't fathom what's wrong with that...

«grins, ducks, and runs»

-tkc



--
http://mail.python.org/mailman/listinfo/python-list


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

2012-03-29 Thread Nathan Rice
On Thu, Mar 29, 2012 at 10:03 AM, Chris Angelico  wrote:
> On Fri, Mar 30, 2012 at 12:44 AM, Nathan Rice
>  wrote:
>> We would be better off if all the time that was spent on learning
>> syntax, memorizing library organization and becoming proficient with
>> new tools was spent learning the mathematics, logic and engineering
>> sciences.  Those solve problems, languages are just representations.
>
> Different languages are good at different things. REXX is an efficient
> text parser and command executor. Pike allows live updates of running
> code. Python promotes rapid development and simplicity. PHP makes it
> easy to add small amounts of scripting to otherwise-static HTML pages.
> C gives you all the power of assembly language with all the
> readability of... assembly language. SQL describes a database request.

Here's a thought experiment.  Imagine that you have a project tree on
your file system which includes files written in many different
programming languages.  Imagine that the files can be assumed to be
contiguous for our purposes, so you could view all the files in the
project as one long chunk of data.  The directory and file names could
be interpreted as statements in this data, analogous to "in the
context of somedirectory" or "in the context of somefile with
sometype".  Any project configuration files could be viewed as
declarative statements about contexts, such as "in xyz context, ignore
those" or "in abc context, any that is actually a this".  Imagine the
compiler or interpreter is actually part of your program (which is
reasonable since it doesn't do anything by itself).  Imagine the build
management tool is also part of your program in pretty much the same
manner.  Imagine that your program actually generates another program
that will generate the program the machine runs.  I hope you can
follow me here, and further I hope you can see that this is a
completely valid description of what is actually going on (from a
different perspective).

In the context of the above thought experiment, it should be clear
that we currently have something that is a structural analog of a
single programming metalanguage (or rather, one per computer
architecture), with many domain specific languages constructed above
that to simplify tasks in various contexts.  The model I previously
proposed is not fantasy, it exists, just not in a form usable by human
beings.  Are machine instructions the richest possible metalanguage?
I really doubt it.

Lets try another thought experiment... Imagine that instead of having
machine instructions as the common metalanguage, we pushed the point
of abstraction closer to something programmers can reasonably work
with: abstract syntax trees.  Imagine all programming languages share
a common abstract syntax tree format, with nodes generated using a
small set of human intelligible semantic primes.  Then, a domain
specific language is basically a context with a set of logical
implications.  By associating a branch of the tree to one (or the
union of several) context, you provide a transformation path to
machine instructions via logical implication.  If implications of a
union context for the nodes in the branch are not compatible, this
manifests elegantly in the form of a logical contradiction.

What does pushing the abstraction point that far up provide?  For one,
you can now reason across language boundaries.  A compiler can tell me
if my prolog code and my python code will behave properly together.
Another benefit is that you make explicit the fact that your parser,
interpreter, build tools, etc are actually part of your program, from
the perspective that your program is actually another program that
generates programs in machine instructions.  By unifying your build
chain, it makes deductive inference spanning steps and tools possible,
and eliminates some needless repetition.  This also greatly simplifies
code reuse, since you only need to generate a syntax tree of the
proper format and associate the correct context to it.  It also
simplifies learning languages, since people only need to understand
the semantic primes in order to read anything.

Of course, this describes Lisp to some degree, so I still need to
provide some answers.  What is wrong with Lisp?  I would say that the
base syntax being horrible is probably the biggest issue.  Beyond
that, transformations on lists of data are natural in Lisp, but graph
transformations are not, making some things awkward.  Additionally,
because Lisp tries to nudge you towards programming in a functional
style, it can be un-intuitive to learn.  Programming is knowledge
representation, and state is a natural concept that many people desire
to model, so making it a second class citizen is a mistake.  If I were
to re-imagine Lisp for this purpose, I would embrace state and an
explicit notion of temporal order.  Rather than pretending it didn't
exist, I would focus on logical and mathematical machinery necessary
to allow powerful deductive 

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

2012-03-29 Thread Devin Jeanpierre
On Thu, Mar 29, 2012 at 10:03 AM, Chris Angelico  wrote:
> You can't merge all of them without making a language that's
> suboptimal at most of those tasks - probably, one that's woeful at all
> of them. I mention SQL because, even if you were to unify all
> programming languages, you'd still need other non-application
> languages to get the job done.

Not really. You can turn SQL (or something equivalent) into a subset
of your programming language, like C# does with LINQ, or like Scheme
does with macros. The Scheme approach generalizes to programming
languages in general with even some fairly alien semantics (e.g. you
can do prolog using macros and first-class continuations). In fact,
for a more difficult target, I even recently saw an implementation of
Python in Common-Lisp that uses reader macros to compile a subset of
Python to equivalent Common-Lisp code:
http://common-lisp.net/project/clpython/

On the other hand, even similar languages are really hard to run in
the same VM: imagine the hoops you'd have to jump through to get
libraries written in Python 2 and 3 to work together. For a more
concrete example, take the attempt to make elisp and guile work
together in guilemacs:
http://www.red-bean.com/guile/notes/emacs-lisp.html

But this has nothing to do with being "suboptimal at most tasks". It's
easy to make a language that can do everything C can do, and also
everything that Haskell can do. I can write an implementation of this
programming language in one line of bash[*]. The easy way is to make
those features mutually exclusive. We don't have to sacrifice anything
by including more features until we want them to work together.

With that in mind, the interesting languages to "merge" aren't things
like SQL or regular expressions -- these are so easy to make work with
programming languages, that we do it all the time already (via string
manipulation, but first-class syntax would also be easily possible).
The hard problems are when trying to merge in the semantics of
languages that only "make sense" because they have drastically
different expectations of the world. The example that comes to mind is
Haskell, which relies incredibly strongly on the lack of side effects.
How do you merge Haskell and Python?

Well, you can't. As soon as you add side-effects, you can no longer
rely on the weak equivalence of things executed eagerly versus lazily,
and the semantics of Haskell go kaput. So the only actual effort (that
I am aware of) to implement side-effects with Haskell *deliberately*
makes mutability and laziness mutually exclusive. Anything else is
impossible. The effort mentioned here is called Disciple, and the
relevant thesis is very fun reading, check it out:
http://www.cse.unsw.edu.au/~benl/papers/thesis/lippmeier-impure-world.pdf

I guess what I really want to say is that the world looks, to me, to
be more optimistic than so many people think it is. If we wanted to,
we could absolutely take the best features from a bunch of things.
This is what C++ does, this is what Scheme does, this is what D does.
They sometimes do it in different ways, they have varying tradeoffs,
but this isn't a hard problem except when it is, and the examples you
mentioned are actually the easy cases. We can merge Python and C,
while keeping roughly the power of both, it's called Cython. We can
merge Python and PHP, in that PHP adds nothing incompatible with
Python technically (it'd be a lot of work and there would be many
tears shed because it's insane) -- but Python Server Pages probably
add the feature you want. We could merge SQL and Python, arguably we
already do via e.g. SQLAlchemy's query API (etc.) or DBAPI2's string
API. These can all becomes subsets of a language that interoperate
well with the rest of the language with no problems. These are
non-issues: the reasons for not doing so are not technical, they are
political or sociological (e.g., "bloat the language", "there should
be one obvious way to do it", "PHP's mixing of business logic with
presentation logic is bad", etc.)

There _are_ times when this is technical, and there are specific areas
of this that have technical difficulties, but... that's different, and
interesting, and being actively researched, and not really impossible
either.

I don't know. This is maybe a bit too rant-y and disorganized; if so I
apologize. I've been rethinking a lot of my views on programming
languages lately. :)  I hope at least the links help make this
interesting to someone.

-- Devin

[*] A "language" is really just a set of programs that compile. If we
assume that the set of haskell and C programs are disjoint, then we
can create a new language that combines both of them, by trying the C
(or Haskell) compiler first, and then running the other if that should
fail. This is really an argument from the absurd, though. I just said
it 'cause it sounds awesome.
-- 
http://mail.python.org/mailman/listinfo/python-list


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

2012-03-29 Thread Chris Angelico
On Fri, Mar 30, 2012 at 12:44 AM, Nathan Rice
 wrote:
> We would be better off if all the time that was spent on learning
> syntax, memorizing library organization and becoming proficient with
> new tools was spent learning the mathematics, logic and engineering
> sciences.  Those solve problems, languages are just representations.

Different languages are good at different things. REXX is an efficient
text parser and command executor. Pike allows live updates of running
code. Python promotes rapid development and simplicity. PHP makes it
easy to add small amounts of scripting to otherwise-static HTML pages.
C gives you all the power of assembly language with all the
readability of... assembly language. SQL describes a database request.

You can't merge all of them without making a language that's
suboptimal at most of those tasks - probably, one that's woeful at all
of them. I mention SQL because, even if you were to unify all
programming languages, you'd still need other non-application
languages to get the job done.

Keep the diversity and let each language focus on what it's best at.

ChrisA
who has lots and lots of hammers, so every problem looks like... lots
and lots of nails.
-- 
http://mail.python.org/mailman/listinfo/python-list


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

2012-03-29 Thread Nathan Rice
On Wed, Mar 28, 2012 at 9:33 PM, Chris Angelico  wrote:
> On Thu, Mar 29, 2012 at 11:59 AM, Rodrick Brown  
> wrote:
>> The best skill any developer can have is the ability to pickup languages 
>> very quickly and know what tools work well for which task.
>
> Definitely. Not just languages but all tools. The larger your toolkit
> and the better you know it, the more easily you'll be able to grasp
> the tool you need.

The thing that bothers me is that people spend time and mental energy
on a wide variety of syntax when the semantics are ~90% identical in
most cases (up to organization).

We would be better off if all the time that was spent on learning
syntax, memorizing library organization and becoming proficient with
new tools was spent learning the mathematics, logic and engineering
sciences.  Those solve problems, languages are just representations.

Unfortunately, programming languages seem to have become a way to
differentiate yourself and establish sub-cultural membership.  All the
cool kids are using XYZ, people who use LMN are dorks!  Who cares
about sharing or compatibility!

Human nature is depressingly self-defeating.
-- 
http://mail.python.org/mailman/listinfo/python-list


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

2012-03-28 Thread Chris Angelico
On Thu, Mar 29, 2012 at 11:59 AM, Rodrick Brown  wrote:
> The best skill any developer can have is the ability to pickup languages very 
> quickly and know what tools work well for which task.

Definitely. Not just languages but all tools. The larger your toolkit
and the better you know it, the more easily you'll be able to grasp
the tool you need.

ChrisA
-- 
http://mail.python.org/mailman/listinfo/python-list


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

2012-03-28 Thread Rodrick Brown
At my current firm we hire people who are efficient in one of the following and 
familiar with any another C#, Java, C++, Perl, Python or Ruby.

We then expect developers to quickly pick up any of the following languages we 
use in house which is very broad. In our source repository not including the 
languages I've already stated above I've seen Fortran, Erlang, Groovy, HTML, 
CSS, JavaScript, Mathlab, C, K, R, S, Q,  Excel, PHP, Bash, Ksh, PowerShell, 
Ruby, and Cuda.

We do heavy computational and statistical analysis type work so developers need 
to be able to use a vast army of programming tools to tackle the various work 
loads were faced with on a daily basis. 

The best skill any developer can have is the ability to pickup languages very 
quickly and know what tools work well for which task.

On Mar 22, 2012, at 3:14 PM, Chris Angelico  wrote:

> On Fri, Mar 23, 2012 at 4:44 AM, Steven D'Aprano
>  wrote:
>> The typical developer knows three, maybe four languages
>> moderately well, if you include SQL and regexes as languages, and might
>> have a nodding acquaintance with one or two more.
> 
> I'm not entirely sure what you mean by "moderately well", nor
> "languages", but I'm of the opinion that a good developer should be
> able to learn a new language very efficiently. Do you count Python 2
> and 3 as the same language? What about all the versions of the C
> standard?
> 
> In any case, though, I agree that there's a lot of people
> professionally writing code who would know about the 3-4 that you say.
> I'm just not sure that they're any good at coding, even in those few
> languages. All the best people I've ever known have had experience
> with quite a lot of languages.
> 
> ChrisA
> -- 
> http://mail.python.org/mailman/listinfo/python-list
-- 
http://mail.python.org/mailman/listinfo/python-list


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

2012-03-28 Thread Tim Delaney
On 25 March 2012 11:03, Tim Chase  wrote:

> On 03/24/12 17:08, Tim Delaney wrote:
>
>> Absolutely. 10 years ago (when I was just a young lad) I'd say that I'd
>> *forgotten* at least 20 programming languages. That number has only
>> increased.
>>
>
> And in the case of COBOL for me, it wasn't just forgotten, but actively
> repressed ;-)
>

2 weeks on work experience in year 10 (16 years old) was enough for me.
Although I did have a functional book catalogue program by the end of it.
Apparently the feedback was that if I'd wanted a job there I could have had
one ...

Tim Delaney
-- 
http://mail.python.org/mailman/listinfo/python-list


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

2012-03-24 Thread Tim Chase

On 03/24/12 17:08, Tim Delaney wrote:

Absolutely. 10 years ago (when I was just a young lad) I'd say that I'd
*forgotten* at least 20 programming languages. That number has only
increased.


And in the case of COBOL for me, it wasn't just forgotten, but 
actively repressed ;-)


-tkc



--
http://mail.python.org/mailman/listinfo/python-list


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

2012-03-24 Thread Chris Angelico
On Sun, Mar 25, 2012 at 9:08 AM, Tim Delaney
 wrote:
> Being able to pick up a new language (skill, technology, methodology, etc)
> is IMO the most important skill for a developer to have. Pick it up quickly,
> become proficient with it, leave it alone for a couple of years, pick up the
> new version when you need/want it.

Definitely. And along the way, you also (hopefully) remember what each
language's specialty is. When you're faced with a problem, you're then
able to "call" the ideal language for the task. The larger your
arsenal of "languages I have known", the less "all I have is a hammer,
this problem looks like a nail" code you end up seeing on
TheDailyWTF.com :)

ChrisA
-- 
http://mail.python.org/mailman/listinfo/python-list


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

2012-03-24 Thread Tim Delaney
On 23 March 2012 06:14, Chris Angelico  wrote:

> On Fri, Mar 23, 2012 at 4:44 AM, Steven D'Aprano
>  wrote:
> > The typical developer knows three, maybe four languages
> > moderately well, if you include SQL and regexes as languages, and might
> > have a nodding acquaintance with one or two more.
>
> I'm not entirely sure what you mean by "moderately well", nor
> "languages", but I'm of the opinion that a good developer should be
> able to learn a new language very efficiently. Do you count Python 2
> and 3 as the same language? What about all the versions of the C
> standard?
>

Absolutely. 10 years ago (when I was just a young lad) I'd say that I'd
*forgotten* at least 20 programming languages. That number has only
increased.

Being able to pick up a new language (skill, technology, methodology, etc)
is IMO the most important skill for a developer to have. Pick it up
quickly, become proficient with it, leave it alone for a couple of years,
pick up the new version when you need/want it.

Tim Delaney
-- 
http://mail.python.org/mailman/listinfo/python-list


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

2012-03-23 Thread Dave Angel

On 03/23/2012 02:28 PM, Peter Otten wrote:

Ethan Furman wrote:


Nathan Rice wrote:

Logo.  It's turtles all the way down.

+1 QOTW

Surely you're joking, Mr Furman!



Cracking safes was the best chapter.

--

DaveA

--
http://mail.python.org/mailman/listinfo/python-list


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

2012-03-23 Thread Peter Otten
Ethan Furman wrote:

> Nathan Rice wrote:
>> Logo.  It's turtles all the way down.
> 
> +1 QOTW

Surely you're joking, Mr Furman!

-- 
http://mail.python.org/mailman/listinfo/python-list


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

2012-03-23 Thread Ethan Furman

Nathan Rice wrote:

Logo.  It's turtles all the way down.


+1 QOTW
--
http://mail.python.org/mailman/listinfo/python-list


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

2012-03-23 Thread Prasad, Ramit
> Logo.  It's turtles all the way down.
I had forgotten all about that, I should add that to my resume!
I wonder what kind of job I could get writing primarily in Logo?

Ramit


Ramit Prasad | JPMorgan Chase Investment Bank | Currencies Technology
712 Main Street | Houston, TX 77002
work phone: 713 - 216 - 5423

--

This email is confidential and subject to important disclaimers and
conditions including on offers for the purchase or sale of
securities, accuracy and completeness of information, viruses,
confidentiality, legal privilege, and legal entity disclaimers,
available at http://www.jpmorgan.com/pages/disclosures/email.  
-- 
http://mail.python.org/mailman/listinfo/python-list


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

2012-03-23 Thread Prasad, Ramit
> I confess--I've never learned LilyPond, Modula-2, or LPC!  I mean, of
> course they're on my resume, just to get by HR screening, but that's
> just between you and me...

You mean, you, him, this mailing list, and anyone that looks on the
archives...

Ramit


Ramit Prasad | JPMorgan Chase Investment Bank | Currencies Technology
712 Main Street | Houston, TX 77002
work phone: 713 - 216 - 5423

--
This email is confidential and subject to important disclaimers and
conditions including on offers for the purchase or sale of
securities, accuracy and completeness of information, viruses,
confidentiality, legal privilege, and legal entity disclaimers,
available at http://www.jpmorgan.com/pages/disclosures/email.  
-- 
http://mail.python.org/mailman/listinfo/python-list


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

2012-03-23 Thread Nathan Rice
Logo.  It's turtles all the way down.
-- 
http://mail.python.org/mailman/listinfo/python-list


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

2012-03-23 Thread Chris Angelico
On Fri, Mar 23, 2012 at 7:04 PM, Steve Howell  wrote:
> If you're that adept at learning languages, then I recommend learning
> Ruby just for kicks, but you're not missing *that* much, trust me.
> I'd skip past Ruby and learn CoffeeScript.

Sure. When I have some spare time... lessee, I think I have two spare
minutes in the year 2015 that aren't allocated yet! Oops. There they
go.

> Of the languages that are in the scripting family, you already know
> REXX (supreme elegance for its time), Perl (I hate it now, but loved
> it before Python), PHP (truly easy to learn, you can never take that
> away from it), and Javascript (horrible syntax, awful platform, but at
> least they have first-class functions).
>
> You have the Assembly/C/C++/Java progression--definitely good stuff,
> even if the ending to the movie was a bit of a letdown.

+1 on the description, heh.

> COBOL/Fortran/Ada gives you instance "old school" street cred.
>
> Haskell/Erlang/Scheme means you can hang out with the cool grad school
> kids in the CS/Math departments (no oxymoron intended).

Ehh, the ones from COBOL on were because I ran out of languages that
I'm really familiar with, and enumerated a few famous ones. But the
rest, I do actually know, and that's why I thought of them.

> I confess--I've never learned LilyPond, Modula-2, or LPC!  I mean, of
> course they're on my resume, just to get by HR screening, but that's
> just between you and me...

GNU LilyPond is a music publishing language (it's to music what TeX is
to English, kinda). Awesome language and system. I can show you a few
pieces I've done with Ly, it's beautiful music score from a very clean
input file. Modula-2 is a Pascal-derived language that I haven't
actually used, but it's cited as an influence in the development of
several others that I have used. LPC is Lars Somebody's C, originally
written as the basis for Lars Somebody's MUD or LPMUD, and was the
basis for Pike (with which I'm very familiar, as readers of this list
probably know).

Half the above languages aren't on my resume, mainly because I don't
really care about HR screening :)

ChrisA
-- 
http://mail.python.org/mailman/listinfo/python-list


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

2012-03-23 Thread Steve Howell
On Mar 22, 6:11 pm, Steven D'Aprano  wrote:
> On Fri, 23 Mar 2012 06:14:46 +1100, Chris Angelico wrote:
> > On Fri, Mar 23, 2012 at 4:44 AM, Steven D'Aprano
> >  wrote:
> >> The typical developer knows three, maybe four languages moderately
> >> well, if you include SQL and regexes as languages, and might have a
> >> nodding acquaintance with one or two more.
>
> > I'm not entirely sure what you mean by "moderately well",
>
> I mean more than "poorly" but less than "very well".
>
> Until somebody invents a universal, objective scale for rating relative
> knowledge in a problem domain (in this case, knowledge of a programming
> language), we're stuck with fuzzy quantities like "guru", "expert", "deep
> and complete knowledge of the language and its idioms", all the way down
> to "can write Hello World" and "never used or seen the language before".
>
> Here's a joke version:
>
> http://www.ariel.com.au/jokes/The_Evolution_of_a_Programmer.html
>
> and here's a more serious version:
>
> http://www.yacoset.com/Home/signs-that-you-re-a-bad-programmer
>
> > nor
> > "languages", but I'm of the opinion that a good developer should be able
> > to learn a new language very efficiently.
>
> Should be, absolutely. Does, perhaps not. Some good developers spend
> their entire life working in one language and have become expert on every
> part of it. Some learn twenty different languages, and barely get beyond
> "Hello World" in any of them.
>
> > Do you count Python 2 and 3 as the same language?
>
> Absolutely.
>
> > What about all the versions of the C standard?
>
> Probably. I'm not familiar with the C standard.
>
> > In any case, though, I agree that there's a lot of people professionally
> > writing code who would know about the 3-4 that you say. I'm just not
> > sure that they're any good at coding, even in those few languages. All
> > the best people I've ever known have had experience with quite a lot of
> > languages.
>
> I dare say that experience with many languages is a good thing, but it's
> not a prerequisite for mastery of a single language.

I agree. It's certainly true for spoken languages.  The only
programming language that I ever learned without experience in other
languages was BASIC (because only one language can be our first).  I
believe I mastered BASIC, not that that is saying a whole lot.

> In any case, I'm not talking about the best developers. I'm talking about
> the typical developer, who by definition is just average. They probably
> know reasonably well one to three of the half dozen most popular
> languages (VB, Java, C, C+, Javascript, PHP, Perl?) plus regexes and SQL,
> and are unlikely to know any of Prolog, Lisp, Haskell, Hypertalk,
> Mercury, Cobra, Smalltalk, Ada, APL, Emerald, Inform, Forth, ...
>

VB, Java, C, C++, JS, PHP, and Perl are all 20th century languages
FWIW.  PHP, Java, and JS all emerged circa 1995 (17 years ago); C, C+
+, and VB are even older.  (And so is Python.)

A future version of Python itself, or some language largely inspired
by Python (CoffeeScript 3.0 maybe?), will eventually squeeze out Perl,
PHP, and JS in the popularity contests.  At least I'm crossing my
fingers.

VB will die with no obvious successors.

C++ was never very distinct from C to begin with, and the two
languages will eventually converge, die off, or be supplanted.

In ten years we'll basically have only three 20th-century-ish
languages in the top ten: Python', C', and Java'.  The rest of the top
ten most popular languages will be something truly 21st-century.
They'll be languages that either haven't been invented yet or
modernized derivatives of languages that we view as "fringe" today
(Lisp'/Haskell'/etc.).


-- 
http://mail.python.org/mailman/listinfo/python-list


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

2012-03-23 Thread Steve Howell
On Mar 23, 12:05 am, Chris Angelico  wrote:
> On Fri, Mar 23, 2012 at 1:48 PM, Steve Howell  wrote:
> > On Mar 22, 6:11 pm, Steven D'Aprano  > +comp.lang.pyt...@pearwood.info> wrote:
> >> In any case, I'm not talking about the best developers. I'm talking about
> >> the typical developer, who by definition is just average. They probably
> >> know reasonably well one to three of the half dozen most popular
> >> languages (VB, Java, C, C+, Javascript, PHP, Perl?) plus regexes and SQL,
> >> and are unlikely to know any of Prolog, Lisp, Haskell, Hypertalk,
> >> Mercury, Cobra, Smalltalk, Ada, APL, Emerald, Inform, Forth, ...
>
> > I love how you can rattle off 20 or so languages, just off the top of
> > your head, and not even mention Ruby. ;)
>
> If I were to rattle off a couple dozen languages, it probably wouldn't
> include Ruby either. Never learned it, don't (as yet) know what its
> advantage domain is.

Hype?

> My list "runs somewhat thus": BASIC, 80x86
> Assembly, C, C++, Java, REXX, Pascal, Pike, Perl, PHP, Javascript,
> DeScribe Macro Language, Scheme, Python, ActionScript, DOS Batch, Lua,
> COBOL, FORTRAN, Ada, Modula-2, LPC, Erlang, Haskell... and that's not
> counting things like POV-Ray or LilyPond that aren't exactly
> _programming_ languages, although in some cases you could shoehorn an
> application into them. Granted, I do have some rather strange and
> esoteric interests, and I'm sure that Ruby is far better known than
> DeScribe Macro Language (!!), but I think first of those I've used,
> and then of the most famous.
>
> Sorry Ruby. No slight meant! :)
>

If you're that adept at learning languages, then I recommend learning
Ruby just for kicks, but you're not missing *that* much, trust me.
I'd skip past Ruby and learn CoffeeScript.

Of the languages that are in the scripting family, you already know
REXX (supreme elegance for its time), Perl (I hate it now, but loved
it before Python), PHP (truly easy to learn, you can never take that
away from it), and Javascript (horrible syntax, awful platform, but at
least they have first-class functions).

You have the Assembly/C/C++/Java progression--definitely good stuff,
even if the ending to the movie was a bit of a letdown.

COBOL/Fortran/Ada gives you instance "old school" street cred.

Haskell/Erlang/Scheme means you can hang out with the cool grad school
kids in the CS/Math departments (no oxymoron intended).

I confess--I've never learned LilyPond, Modula-2, or LPC!  I mean, of
course they're on my resume, just to get by HR screening, but that's
just between you and me...


-- 
http://mail.python.org/mailman/listinfo/python-list


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

2012-03-23 Thread Chris Angelico
On Fri, Mar 23, 2012 at 1:48 PM, Steve Howell  wrote:
> On Mar 22, 6:11 pm, Steven D'Aprano  +comp.lang.pyt...@pearwood.info> wrote:
>> In any case, I'm not talking about the best developers. I'm talking about
>> the typical developer, who by definition is just average. They probably
>> know reasonably well one to three of the half dozen most popular
>> languages (VB, Java, C, C+, Javascript, PHP, Perl?) plus regexes and SQL,
>> and are unlikely to know any of Prolog, Lisp, Haskell, Hypertalk,
>> Mercury, Cobra, Smalltalk, Ada, APL, Emerald, Inform, Forth, ...
>
> I love how you can rattle off 20 or so languages, just off the top of
> your head, and not even mention Ruby. ;)

If I were to rattle off a couple dozen languages, it probably wouldn't
include Ruby either. Never learned it, don't (as yet) know what its
advantage domain is. My list "runs somewhat thus": BASIC, 80x86
Assembly, C, C++, Java, REXX, Pascal, Pike, Perl, PHP, Javascript,
DeScribe Macro Language, Scheme, Python, ActionScript, DOS Batch, Lua,
COBOL, FORTRAN, Ada, Modula-2, LPC, Erlang, Haskell... and that's not
counting things like POV-Ray or LilyPond that aren't exactly
_programming_ languages, although in some cases you could shoehorn an
application into them. Granted, I do have some rather strange and
esoteric interests, and I'm sure that Ruby is far better known than
DeScribe Macro Language (!!), but I think first of those I've used,
and then of the most famous.

Sorry Ruby. No slight meant! :)

ChrisA
-- 
http://mail.python.org/mailman/listinfo/python-list


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

2012-03-22 Thread Steve Howell
On Mar 22, 12:14 pm, Chris Angelico  wrote:
> On Fri, Mar 23, 2012 at 4:44 AM, Steven D'Aprano
>
>  wrote:
> > The typical developer knows three, maybe four languages
> > moderately well, if you include SQL and regexes as languages, and might
> > have a nodding acquaintance with one or two more.
>
> I'm not entirely sure what you mean by "moderately well", nor
> "languages", but I'm of the opinion that a good developer should be
> able to learn a new language very efficiently. Do you count Python 2
> and 3 as the same language? What about all the versions of the C
> standard?
>

Not only is it hard to define what we precisely mean when we say
"[knows] moderately well" or "[n number of] languages", but what in
the world are we talking about with respect to "the typical
developer"?  How do we even begin to define that term?



-- 
http://mail.python.org/mailman/listinfo/python-list


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

2012-03-22 Thread Steve Howell
On Mar 22, 6:11 pm, Steven D'Aprano  wrote:
> On Fri, 23 Mar 2012 06:14:46 +1100, Chris Angelico wrote:
> > In any case, though, I agree that there's a lot of people professionally
> > writing code who would know about the 3-4 that you say. I'm just not
> > sure that they're any good at coding, even in those few languages. All
> > the best people I've ever known have had experience with quite a lot of
> > languages.
>
> I dare say that experience with many languages is a good thing, but it's
> not a prerequisite for mastery of a single language.
>
> In any case, I'm not talking about the best developers. I'm talking about
> the typical developer, who by definition is just average. They probably
> know reasonably well one to three of the half dozen most popular
> languages (VB, Java, C, C+, Javascript, PHP, Perl?) plus regexes and SQL,
> and are unlikely to know any of Prolog, Lisp, Haskell, Hypertalk,
> Mercury, Cobra, Smalltalk, Ada, APL, Emerald, Inform, Forth, ...

I love how you can rattle off 20 or so languages, just off the top of
your head, and not even mention Ruby. ;)

(Although Perl was close enough.)





-- 
http://mail.python.org/mailman/listinfo/python-list


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

2012-03-22 Thread Steven D'Aprano
On Fri, 23 Mar 2012 06:14:46 +1100, Chris Angelico wrote:

> On Fri, Mar 23, 2012 at 4:44 AM, Steven D'Aprano
>  wrote:
>> The typical developer knows three, maybe four languages moderately
>> well, if you include SQL and regexes as languages, and might have a
>> nodding acquaintance with one or two more.
> 
> I'm not entirely sure what you mean by "moderately well", 

I mean more than "poorly" but less than "very well".

Until somebody invents a universal, objective scale for rating relative 
knowledge in a problem domain (in this case, knowledge of a programming 
language), we're stuck with fuzzy quantities like "guru", "expert", "deep 
and complete knowledge of the language and its idioms", all the way down 
to "can write Hello World" and "never used or seen the language before".

Here's a joke version:

http://www.ariel.com.au/jokes/The_Evolution_of_a_Programmer.html


and here's a more serious version:

http://www.yacoset.com/Home/signs-that-you-re-a-bad-programmer


> nor
> "languages", but I'm of the opinion that a good developer should be able
> to learn a new language very efficiently. 

Should be, absolutely. Does, perhaps not. Some good developers spend 
their entire life working in one language and have become expert on every 
part of it. Some learn twenty different languages, and barely get beyond 
"Hello World" in any of them.


> Do you count Python 2 and 3 as the same language? 

Absolutely.


> What about all the versions of the C standard?

Probably. I'm not familiar with the C standard.


> In any case, though, I agree that there's a lot of people professionally
> writing code who would know about the 3-4 that you say. I'm just not
> sure that they're any good at coding, even in those few languages. All
> the best people I've ever known have had experience with quite a lot of
> languages.

I dare say that experience with many languages is a good thing, but it's 
not a prerequisite for mastery of a single language.

In any case, I'm not talking about the best developers. I'm talking about 
the typical developer, who by definition is just average. They probably 
know reasonably well one to three of the half dozen most popular 
languages (VB, Java, C, C+, Javascript, PHP, Perl?) plus regexes and SQL, 
and are unlikely to know any of Prolog, Lisp, Haskell, Hypertalk, 
Mercury, Cobra, Smalltalk, Ada, APL, Emerald, Inform, Forth, ... 

Or even in most cases *heard* of them.


-- 
Steven
-- 
http://mail.python.org/mailman/listinfo/python-list


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

2012-03-22 Thread Chris Angelico
On Fri, Mar 23, 2012 at 4:44 AM, Steven D'Aprano
 wrote:
> The typical developer knows three, maybe four languages
> moderately well, if you include SQL and regexes as languages, and might
> have a nodding acquaintance with one or two more.

I'm not entirely sure what you mean by "moderately well", nor
"languages", but I'm of the opinion that a good developer should be
able to learn a new language very efficiently. Do you count Python 2
and 3 as the same language? What about all the versions of the C
standard?

In any case, though, I agree that there's a lot of people
professionally writing code who would know about the 3-4 that you say.
I'm just not sure that they're any good at coding, even in those few
languages. All the best people I've ever known have had experience
with quite a lot of languages.

ChrisA
-- 
http://mail.python.org/mailman/listinfo/python-list