Un peu d'intérêt archéologique m'a donné envie d'explorer les premiers Python, j'ai donc construit et exécuté Python 1.0.1.
Le code source le plus ancien actuellement disponible sur la page officielle Python (http://legacy.python.org/download/releases/src/) est Python 1.0.1. Il est sorti en 1994, près de cinq ans après le début du développement de Python en décembre 1989. Selon README
Older sources
If you find an older Python release (e.g. 0.9.8), we're interested in getting a copy! [email protected]
Par conséquent, il semble que des données aient été perdues dans les versions antérieures. En parlant de 1989, il n'y avait pas de Git, SVN ou CVS, donc il n'y a pas d'aide.
Téléchargez et décompressez.
$ curl http://legacy.python.org/download/releases/src/python1.0.1.tar.gz -O
$ tar xzf python1.0.1.tar.gz
$ cd python-1.0.1
L'archive tar contient configure
et Makefile.in
, et la procédure de construction est exactement la même qu'aujourd'hui.
Cependant, la fonction getline
utilisée en interne entre en conflit avec les bibliothèques standard modernes, vous devez donc remplacer le nom.
$ sed -i 's/^getline/my_getline/' Objects/fileobject.c
$ sed -i 's/ getline/ my_getline/' Objects/fileobject.c
Tout ce que vous avez à faire est de construire comme d'habitude.
$ ./configure
$ make
Jouons avec le fichier binaire python
qui est sorti.
$ ./python
Python 1.0.1 (Jan 11 2017)
Copyright 1991-1994 Stichting Mathematisch Centrum, Amsterdam
>>> hex(12345678901234567890)
OverflowError: integer literal too large
>>> hex(12345678901234567890L)
'0xAB54A98CEB1F0AD2L'
>>> int('100')
Traceback (innermost last):
File "<stdin>", line 1
TypeError: int() argument can't be converted to int
>>> int(1.5)
1
>>> def fibonatti(n):
... if n == 1 or n == 2:
... return 1
... else:
... return fibonatti(n - 1) + fibonatti(n - 2)
...
>>> fibonatti(5)
5
>>> o = {'foo': 1, 'bar': 'baz'}
>>> o
{'foo': 1, 'bar': 'baz'}
>>> for i in range(5):
... print(i)
...
0
1
2
3
4
>>> range(100)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99]
>>> [i * 2 for i in range(10)]
/home/esolang/python: line 3: 7 Segmentation fault ./python
$
Il n'a pas beaucoup de fonctionnalités, mais il peut être utilisé de la même manière que Python moderne.
Recommended Posts