Erstellen Sie Python 1.0

Aufgrund eines kleinen archäologischen Interesses wollte ich das frühe Python erkunden, also habe ich Python 1.0.1 erstellt und ausgeführt.

Programmierung archäologischer Reihen

Quellcode abrufen

Der älteste Quellcode, der derzeit auf der offiziellen Python-Seite (http://legacy.python.org/download/releases/src/) verfügbar ist, ist Python 1.0.1. Es wurde 1994 veröffentlicht, fast fünf Jahre nachdem die Python-Entwicklung im Dezember 1989 begonnen hatte. Laut README

Older sources

If you find an older Python release (e.g. 0.9.8), we're interested in getting a copy! [email protected]

Daher scheinen Daten in früheren Versionen verloren gegangen zu sein. Apropos 1989, es gab kein Git, SVN oder CVS, daher gibt es keine Hilfe dafür.

Herunterladen und entpacken.

$ 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

Bauen

Der Tarball enthält "configure" und "Makefile.in", und die Erstellungsprozedur ist genau die gleiche wie heute.

Die intern verwendete Funktion "getline" steht jedoch in Konflikt mit modernen Standardbibliotheken, sodass Sie den Namen ersetzen müssen.

$ sed -i 's/^getline/my_getline/' Objects/fileobject.c
$ sed -i 's/ getline/ my_getline/' Objects/fileobject.c

Alles was Sie tun müssen, ist wie gewohnt zu bauen.

$ ./configure
$ make

Versuche dich zu bewegen

Spielen wir mit der Binärdatei "Python", die herauskam.

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

Es hat nicht viel Funktionalität, kann aber auf die gleiche Weise wie modernes Python verwendet werden.

nächstes Mal

Building Ruby 0.49-Qiita

Verweise

Recommended Posts

Erstellen Sie Python 1.0
Python
Build Python auf Ubuntu
Erstellen Sie eine Python3-Umgebung mit Ubuntu 16.04
Erstellen Sie eine Python-Umgebung unter Windows
Erstellen Sie mit direnv eine Python-Umgebung
[ev3dev × Python] Aufbau einer ev3dev-Entwicklungsumgebung
Erstellen Sie eine Python-Umgebung mit Windows
Erstellen Sie die Python-Umgebung offline
Kafka Python
Python-Grundlagen ⑤
Python-Zusammenfassung
Eingebaute Python
Python-Einschlussnotation
Python studieren
Python 2.7 Countdown
Python-Memorandum
Python FlowFishMaster
Python-Dienst
Python-Tipps
Python-Memo
Python-Einschlussnotation
Python Singleton
Python-Grundlagen ④
Python-Memorandum 2
Python-Inkrement
atCoder 173 Python
[Python] -Funktion
Python-Installation
Erstellen Sie eine MySQL + Python-Umgebung mit Docker
Python installieren 3.4.3.
Versuchen Sie Python
Python-Memo
Python iterativ
Python-Algorithmus
Python2 + word2vec
[Python] -Variablen
Python-Funktionen
Python sys.intern ()
Python-Tutorial
Python-Fraktion
Python Underbar Das ist was
Python-Zusammenfassung
Starten Sie Python
[Python] Sortieren
Hinweis: Python
Python-Grundlagen ③
Python-Protokoll ausgeben
Python-Grundlagen
Python-Memo
Erstellen Sie mlpy mit python3.3 (64bit) (Windows 64bit)
Python-Memorandum
Python #sort
Ufo-> Python
Python nslookup
Python lernen
[Rpmbuild] Python 3.7.3.