Guido van Rossum writes the history of Python, covering the origins of its design choices and features.
HN commenters use it as a primary source for why Python works as it does and how it relates to other languages.
The FORTH-83 standard changed FIG-FORTH's official value of TRUE from 1 to -1 so all its bits were set. That was a rough transition like Python 2=>3, but worth it. It also defined /MOD integer division to be floored (rounded towards -infinity instead of zero like FIG-FORTH), which was also a tough change but the right one, especially for graphics.
https://python-history.blogspot.com/2010/08/why-pythons-integer-division-floors.html
https://forth-standard.org/standard/diff?utm_source=chatgpt.com
https://atariwiki.org/wiki/Wiki.jsp?page=Converting+FIG-Forth+Programs+to+Forth-83&utm_source=chatgpt.com
>4. For various reasons the definition of all divide functions general effect is that quotients are floored instead of rounded toward zero. This should cause no problems for most pre-existing application software. The new divide functions are marginally slower than the old (a few machine cycles under most circumstances). The side-effects of the redefinition for floored divide can be counter-intuitive under some circumstances. For example, in FIG-Forth the operation
-40 360 MOD >would return the obvious answer (-40) on the stack, while 83- Standard Forth will return the answer 320!
>5. The true flag returned by all logical operations has been changed from the value 1 (in FIG-Forth) to the value -1 (in Forth-83, all bits set). If your code used the 0 or 1 returned by a comparison in an arithmetic operation, you will need to interpolate the operator ABS after the logical…
Is Delphi's name any sort of reference to triumphing over the Python language? Delphi is where Apollo slew the Python: https://www2.classics.upenn.edu/myth/php/hymns/index.php?page=apollo
“The story of Apollo at Delphi begins with the god's conquest of the Python. According to some ancient accounts, the Python protected the oracle of Gaia, the mother of the gods and first inhabitant of the site. As described in the Homeric Hymn to Apollo, Apollo slew the serpent and then spent eight years on leave, in order to cleanse himself. Zeus also played a role in Delphi's mythological construction. Wanting to find the center of the Earth, Zeus sent out two eagles at opposite ends of the Earth. They collided at Delphi, and Zeus concluded Delphi was the "omphalos," or navel of the world.”
According to Guido's timeline, Python began development in 1989, had its first release to `alt.sources` in 1991, and had its 1-point-0 release in 1994, so it's possible that people at Borland could have been aware of it by 1995: https://python-history.blogspot.com/2009/01/brief-timeline-of-python.html
Wikipedia suggests not however: “Delphi was originally one of many codenames of a pre-release development tool project at Borland. Borland developer Danny Thorpe suggested the Delphi codename in reference to the Oracle at Delphi. One of the design goals of the product was to provide database connectivity to programmers as a key feature and a popular database package at the time was Oracle database;…
Sure.
PHP's "deep thought" was that in the context of building dynamic web pages, perhaps it made sense to embed a scripting language into HTML itself -- instead of calling out to an external program. There's an example of the initial idea being responsible for much of PHP's enduring success.
And here's an anecdote that explains how it was (lack of) readability in significant indentation that led to Python getting its colon:
> In 1978, in a design session in a mansion in Jabłonna (Poland),
> Robert Dewar, Peter King, Jack Schwartz and Lambert were
> comparing various alternative proposed syntaxes for B, by
> comparing (buggy) bubble sort implementations written down in
> each alternative. Since they couldn't agree, Robert Dewar's wife
> was called from her room and asked for her opinion, like a
> modern-day Paris asked to compare the beauty of Hera, Athena,
> and Aphrodite. But after the first version was explained to her,
> she remarked: "You mean, in the line where it says: 'FOR i ... ',
> that it has to be done for the lines that follow; not just for
> that line?!" And here the scientists realized that the
> misunderstanding would have been avoided if there had been a colon
> at the end of that line.
(from http://python-history.blogspot.com/)
> in fact, I would have gone a step further and made integer division return fractions rather than floats by default, as well
This was decided against in Python:
> ABC had two types of numbers at run time; exact numbers which were represented as arbitrary precision rational numbers and approximate numbers which were represented as binary floating point with extended exponent range. The rational numbers didn’t pan out in my view. (Anecdote: I tried to compute my taxes once using ABC. The program, which seemed fairly straightforward, was taking way too long to compute a few simple numbers. Upon investigation it turned out that it was doing arithmetic on numers with thousands of digits of precision, which were to be rounded to guilders and cents for printing.)
https://python-history.blogspot.com/2009/02/early-language-design-and-development.html
>>... Python (which was, after all, originally designed as a language for teaching OO concepts).
This isn't quite right. The teaching language was ABC, a different project that Guido worked on. Python was his own language, created for the Amoeba project (an OS research project), inspired and influenced by, but not the same as, ABC, which was not object oriented. Guido says that the purpose of python for the Amoeba project was to: "bridge the gap between C and the shell"
http://en.wikipedia.org/wiki/ABC_%28programming_language%29
http://python-history.blogspot.com/2009/01/personal-history-part-1-cwi.html
However, if you have additional information, I'd love to hear about it. I've heard the "Python was originally a teaching language" several times, but as far as I can tell, that's not actually true.
Actually, Python does have that :) It's called __slots__:
The presence of __slots__ does several things. First, it restricts the valid set of attribute names on an object to exactly those names listed. Second, since the attributes are now fixed, it is no longer necessary to store attributes in an instance dictionary, so the __dict__ attribute is removed. Instead, the attributes can be stored in predetermined locations within an array. Thus, every slot attribute is actually a descriptor object that knows how to set/get each attribute using an array index. Underneath the covers, the implementation of this feature is done entirely in C and is highly efficient.
http://python-history.blogspot.be/2010/06/inside-story-on-new-style-classes.html