You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

4.7 KiB

Python

What if pseudocode was actually code?

Python (name being a reference to Monty Python) is an exceptionally bloated, extremely popular high level interpreted programming language. Its priority is readability and making it easy and fast to bash together some code for anyone with at least one brain hemisphere, so it is eminently popular among beginners, children, women, non-programmers such as scientists and unqualified soydevs who can't handle real languages like C. Python just werks and is comfortable, but any program written in it is doomed to be bloated, slow, ugly, big and will unavoidably die without maintenance for Python's updates purposefully break backwards compatibility. At this moment it is the language most frequently used for programming "neural net AIs".

Python is extremely slow, even much slower than JavaScript and PHP (according to Computer Language Benchmarks Game). If you want to make your python programs faster, use the PyPy implementation over the default CPython.

Python was conceived in 1991 by a Dutchman Guido van Rossum who announced it on Usenet. Version 1.0 was released in 1994 and version 2.0 in 2000. A very important version was 2.7 released in 2010 -- this was used and supported for a long time but the support was ended in 2020 in favor of Python 3. As of writing this the latest version is 3.9.

Can we use python? There are certain use cases for it, mostly writing throwaway scripts and other quick, temporary code. Python can easily help you get into programming as well, so it may well serve as an educational language, however be sure to transition to a better language later on. Remember, python mustn't ever be used for a serious program.

The reference implementation, CPython, is at the same time the one in most widespread use; it is written in C and python itself. There also exist different implementations such as MicroPython (for embedded), PyPy (alternative implementation, often faster), Jython and so on.

What follows is a summary of the python language:

  • Emphasis is on "readability" and comfort, with a bit of stretch the aim is to create a "runnable pseudocode". To this end is sacrificed performance, elegance, maintainability and other important aspects.
  • It is interpreted and highly dynamic, i.e. data types of variables are dynamic, lists, strings and dictionaries are dynamic, since new versions there are even arbitrary size integers by default. There is automatic garbage collection, code can be modified at run time and so on. All this of course makes the language slow, with big memory footprint.
  • There is class-based OOP which can at least be avoided, it is not enforced.
  • Python revolves around dictionaries (a data type capable of storing key:value pairs), i.e. most things are internally implemented with dictionaries.
  • It doesn't keep backwards compatibility, i.e. new versions of Python won't generally be able to run programs written in old versions of Python. This is so that the devs can eliminate things that turned out to be a bad idea (probably happens often), but of course on the other hand you have to keep rewriting your programs to keep them working (python provides scripts that help automatize this).
  • Quite retardedly indentation is part of syntax, that's a shitty design choice that complicates programming (one liners, minification, compact code, code golf, temporary debugging indentation, ...).
  • There is no specification per se -- but at least there is online reference (The Python Language Reference) that kind of serves as one.
  • It has a gigantic standard library which handles things such as Unicode, GUI, databases, regular expressions, email, html, compression, communication with operating system, networking, multithreading and much, much more. This means it's almost impossible to implement Python in all its entirety without 100 programmers working full time for at least 10 years.
  • There are many other smaller fails, e.g. inconsistent/weird naming of built-in commands, absence of switch statement (well, in new versions there is one already, but only added later and looks kinda shitty) etc.

TODO: code, compare to C