Construire Python 1.0

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.

Programmation de la série d'archéologie

Obtenir le code source

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

Construire

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

Essayez de bouger

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.

la prochaine fois

Bâtiment Ruby 0.49-Qiita

Les références

Recommended Posts

Construire Python 1.0
Python
construire Python sur Ubuntu
Créer un environnement python3 avec ubuntu 16.04
Créer un environnement Python sur Windows
Construire un environnement python avec direnv
[ev3dev × Python] Construction de l'environnement de développement ev3dev
Construire un environnement Python avec Windows
Créer un environnement Python hors ligne
python kafka
Les bases de Python ⑤
Résumé Python
Python intégré
Notation d'inclusion Python
Étudier Python
Compte à rebours Python 2.7
Mémorandum Python
Python FlowFishMaster
Service Python
astuces python
Mémo Python
Notation d'inclusion Python
Python Singleton
Les bases de Python ④
Mémorandum Python 2
Incrément Python
atCoder 173 Python
[Python] fonction
Installation de Python
Construire un environnement Mysql + Python avec docker
Installer Python 3.4.3.
Essayez Python
Mémo Python
Itératif Python
Algorithme Python
Python2 + mot2vec
[Python] Variables
Fonctions Python
Python sys.intern ()
Tutoriel Python
Fraction Python
underbar python C'est ce que
Résumé Python
Démarrer python
[Python] Trier
Remarque: Python
Les bases de Python ③
Sortie du journal python
Les bases de Python
mémo python
Construire mlpy avec python3.3 (64 bits) (Windows 64 bits)
Mémorandum Python
Python #sort
ufo-> python
Python nslookup
apprentissage de python
[Rpmbuild] Python 3.7.3.