Python Notes: Introduction

  1. The information presented here is intended for educational use.
  2. The information presented here is provided free of charge, as-is, with no warranty of any kind.
  3. Edit: 2022-08-14

Introduction

Hacking - Noodling with BASIC

Anyone who played with BASIC on personal computers in the 1970s and 1980s will recognize the importance of the BASIC language for noodling around. The creators of BASIC intended it to be used to teach computer programming concepts to FORTRAN students at Dartmouth College, but noodling around made BASIC ideal for teaching other concepts in science, engineering, and math everywhere.

BASIC on personal computers of the 1970s was usually implemented in ROM, and every implementation was different (Apple2, TRS-80, HeathKit-H8). Starting with the IBM-PC in 1981, Microsoft, began publishing 16-bit software products like GW-BASIC (1983),  QuickBASIC (1985) and QBASIC (1991) which worked well on 16-bit operating systems like MS-DOS (1981) up through Windows-3.11 (1992). These 16-bit language interpreters were also supported on 32-bit operating systems starting with Windows-95 through to Windows-7 via a OS technique known as THUNKING.

The big problem today is that 64-bit computers run 64-bit operating systems, like Windows-10, where 32-bit programs are THUNKED but not 16-bit programs. Technical work-arounds exist including "setting up a virtual machine" on your 64-bit OS but why go to all that bother when all you want to do is noodle around? Perhaps it is time to ditch BASIC for Python

Hacking - Noodling with Python

Many people reading this will not know that Python was first created in 1990 to replace BASIC. Today, Python is primarily used to do server-side scripting on the internet/world-wide-web but also has many other uses. Here is a short list:

  • popular in the scientific analysis of large data sets since the creation of a free third-party Python libraries known as NumPy and SciPy (just two of many)
  • popular in many financial circles after Wall Street programmers noticed (during/after the 2008 financial melt down) that many "business case" decisions were based upon "questionable data" produced from ad-hoc spreadsheet imports (some estimates questioned the investment decisions at somewhere between $500M and $1B). This was one of the reasons for the creation of a free third-party Python library known as Pandas which can import almost any spreadsheet format using only 5-6 lines of code
  • popular on almost every computer platform (Windows, Macintosh, Linux, UNIX, or others) for any purpose including noodling around because it is available free of charge -AND- appears to be more consistently implemented than BASIC ever was
Python does not have these BASIC imitations:
  • In BASIC, this statement PRINT 2^31 (two raised to the thirty-first power) fails with 32-bit signed integers (longword)
    • I have used more than a dozen different flavors of BASIC (on mainframes, minicomputers and microcomputers) and none of them supported unsigned integers.
  • In BASIC, this statement PRINT 2^63 fails with 64-bit signed integers (quadword)
    • this was never available on 32-bit VAX but was available on 64-bit Alpha then later on 64-bit Itanium2
  • Some modern BASIC implementations now support 128-bit signed integers (octaword) but most do not support exponentiation past 64-bits.
Python3 (which runs on a virtual machine) has no difficulty with these statements:
  • Typing PRINT(2**9999) (e.g. 2^9999) in the IDLE interpreter instantly yields 37x80+50 characters.
  • Typing PRINT(2**99999) (e.g. 2^99999) in the IDLE interpreter instantly yields a yellow alert with the phrase "Squeezed Text (377 lines)" which can be optionally display or copied to another app via the clipboard.
  • Typing PRINT(2**999999) (e.g. 2^999999) in the IDLE interpreter requires a few seconds to yield a yellow alert with the phrase "Squeezed Text (3763 lines)"

Imagine using numbers this size to index your data arrays

(my) Example Programs (alphabetical order)

link description Notes
calendar a very simple calendar generator BASIC-to-Python conversion examples
compiling caching Python compiling - Python file caching article for nerds and speed demons
dft-fft Discrete Fourier Transform -
Fast Fourier Transform
BASIC-to-Python conversion examples
dh standalone Diffie-Hellman key exchange demo (interactive) Python interactive standalone application
dh web Diffie-Hellman key exchange demo (web) Python web application (just to show you how)
Easter compute the date of Easter for any given year it all starts with determining the date of the first full moon on, or after. the Spring equinox.
fun with floats fun with floats and decimals be careful how you initialize float and decimal data; this program also shows how to properly use the exec() function in python3
money rounding money rounding demo required for GAAP (generally accepted accounting principles)
pix-of-day picture of the day generator extracts picture-of-the-day info from a relational database which is then passed JavaScript) click here to see it in action: http://neilrieck.net
0) picture it in the top right corner 1) the top right corner will show a NASA chart for last month's CO2 readings
2) eight seconds later, the image and text will switch to something extracted from my database
3) eight seconds later the picture switches back to the CO2 readings
4) this will cycle back an forth for ten iterations
5) punch PF12 on your browser then click CONSOLE to observe log messages

Shifting over to Python

Machine Learning - Deep Learning

Executive Summary
  1. Just as it is nearly impossible to develop a working knowledge of Calculus without a working knowledge of Algebra, I am now convinced that you cannot develop a working knowledge Deep Machine Learning without a working knowledge of Probability, Statistics and Python
  2. Unlike other programming projects, you cannot develop a deep machine learning application, then publish it, then move onto something else. These systems are only as good as their training data which means they should constantly be updated with new information. (so the programmer becomes a teacher?)
  3. Artificial Intelligence does not mean Artificial Consciousness. While some modern A.I. systems might pass a Turing Test by Joe citizen, a specialist will always be able to do a better job.
    (think about the Voight-Kampf interview between Rick Deckard and Rachel in the movie Bladerunner. Rachel knew that eating raw oysters was okay but didn't know it was wrong to be served 'boiled dog')

Anyone considering a course on machine learning or deep learning should learn Python immediately where most examples will include one (or more) of these free Python libraries

NumPy Library to add array support to Python2
Also adds support for matrix mathematics
https://en.wikipedia.org/wiki/NumPy Community - 2006
scikit-learn first generation learning library https://en.wikipedia.org/wiki/Scikit-learn Google Summer of Code - 2007
TensorFlow second generation learning library https://en.wikipedia.org/wiki/TensorFlow Google - 2015
Keras second generation learning library https://en.wikipedia.org/wiki/Keras Google - 2015
PyTorch second generation learning library https://en.wikipedia.org/wiki/PyTorch Facebook - 2017

The roots of artificial intelligence (and expert systems, and machine learning) go back to the 1940s and 1950s so contain a lot of non-computer terminology. Modern computer technologists wishing to learn more might wish to start here:

External Links


 Back to Home
 Neil Rieck
 Waterloo, Ontario, Canada.