less_retarded_wiki/python.md
2024-11-07 20:33:28 +01:00

6.8 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, popularity and making it easy and fast to bash code for anyone with at least half a brain hemisphere (that's quarter of a whole brain), so it is very popular among beginners, children, women, non-programmers such as scientists and unqualified soydevs who can't handle real languages like C. It is highly retarded^[sic] as a beginner friendly language. Python just werks and is comfortable -- writing "code" in Python is practically on the level of explaining to ChatGPT what you want to have programmed for you -- but any program written in it is forever doomed to be bloated, slow, ugly, big, depressing and will unavoidably die without maintenance, for Python's updates purposefully break backwards compatibility on a weekly basis. Python loves to update constantly so you have to keep rewriting your old programs every day and in fact you must constantly update your operating system so that Python has all the newest dependencies that it didn't need yesterday but today it does -- today your Python program works, tomorrow there's only 50% chance it will keep working and the probability further halves every consecutive day, and sometimes it just randomly breaks because why not, you must just constantly pray and update (just a note: this will never happen to you with C). Being based around hype, it is used for anything that comes to fashion, for example 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.

Programming in python is not real programming. Making a program in Python versus writing a real program is like making a house in Minetest vs making a real house. Python was in fact made exactly for people who CANNOT program, such as women, economists and professional programmers, it is basically a wheelchair -- those who can program don't need Python just like those who can walk don't need a wheelchair.

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 numerous 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.

Example

Here is the divisor tree program implemented in Python3, it showcases most of the basic language features:

# recursive function, prints the divisor tree of a number
def printDivisorTree(x):
  a = -1
  b = -1

  for i in range(2,int(x / 2) + 1): # find closest divisors
    if x % i == 0:
      a = i
      b = int(x / i)

      if a >= b:
        break

  print("(",end="")

  if a > 1:
    printDivisorTree(a)
    print(" " + str(x) + " ",end="")
    printDivisorTree(b)
  else:
    print(x,end="")

  print(")",end="")

while True: # main loop, read numbers
  try:
    x = int(input("enter a number: "))
  except ValueError:
    break

  printDivisorTree(x)
  print("")