Já mám takovou krásnou ukázku flexibility dynamického jazyka. Implementace funkce undo pro libovolné proměnné libovolného typu. Jak složité bude tohle implementovat ve statickém jazyce, který se používá v produkční sféře, tedy C, C++, Java, C#?
~ $ python2 history.py
var1: 4
var1 after undo: 2 <type 'int'>
var2: 4
var2 after undo: 2 <type 'str'>
~ $ cat history.py
import sys
def undo(name):
    undo.data[name].pop(-1)
    return undo.data[name][-1]
undo.data = {}
def history(frame, event, arg):
    for name,val in frame.f_locals.items():
        if name not in undo.data:
            undo.data[name] = []
        else:
            if undo.data[name][-1] is val:
                continue
        undo.data[name].append(val)
    return history
def main():
    for i in range(5):
        var1 = i
        var2 = str(i)
    print "var1:", var1
    var1 = undo('var1')
    var1 = undo('var1')
    print "var1 after undo:", var1, type(var1)
    print "var2:", var2
    var2 = undo('var2')
    var2 = undo('var2')
    print "var2 after undo:", var2, type(var2)
if  __name__ == '__main__':
    sys.settrace(history)
    main()
    sys.settrace(None)