Diff: [root] @ 6e20ae4e189 | faq | css

Ocaml vs python, ruby vs python...

File: nopython [Diff]

-- a/nopython++ b/nopython
@@ -2,7 +2,7 @@

Python is a broken programming language. Why broken?

h2.

h1. Python brokenness from user's point of view.

Have you ever tried to use Python app? For example, Gajim, lastmp, debtorrent, deluge?


@@ -10,8 +10,10 @@

Lastmp, for example, crashes "wherever it encounters broken Unicode":http://bitcheese.net/vlog/post/580. Looks like you need to surround every string loading with try..catch in python for that not to happen. Good design, eh?

h2.

h1. Python brokenness from developer's point of view.

h2. Python's broken syntax

h3. Indentation

Indenting code properly is good. But why make it part of syntax? To understand codemonkeys' code? They can write in one line anyway, and while you can convert this to proper indentation, you cannot do that vice-versa if indentation is wrong, and compiler wouldn't even complain.


@@ -38,17 +40,27 @@

h3. List. list? __list? the_list? thelist...

Python uses and/or encourages no naming convention with classes/functions. list <- what is that? A local variable? A class? A *typeclass*? who Who knows. Python's only promoted and used naming convention is 'your_shift_is_for_underscopes', which is totally lame. Also, __more___underscores_____means_more____________coolness_______________.

Speaking of inconsistency, Python does not follow 'the least surprise' principle. What is xrange? Why it's 'x'? Why not name it zfoobar?

h3.

h2. Too slow to fly, too low-level to ride.

Python is considered to be 'glue-language'. Despite this claim, it gets used in maths and high-loaded stuff. When the snake people discover the suckiness of their language, they augment it with C code and even make forks, incompatible with reference implementations. So you have to kludge your code to make it work a bit better. The only any reliable implementation effectively disables thread concurrency, thanks to "GIL":http://en.wikipedia.org/wiki/Global_Interpreter_Lock.

On the other hand, you have all the good-known stuff from C like parentheses all over the place and segfaults. Do you see segfaults often in dynamic languages? Well in python you do. Also, its libraries require *compilation*. What a nonsense.

h2. OCaml vs Python

* No static typization. It makes impossible to apply "correct by construction" principle in python. Althought, exceptions just don't work (see above).
* No pattern matching. And even no switches — actually PHP has it. Some people recommend to use "if - else if" constructions instead...
* Python prerfomance sucks. Just one implentation of OCaml works much faster than any implentation of python.

h2. Ruby vs Python

* Python appear to be an object-orientied language, but OOP system is just a syntax extension for basic imperative syntax. No manner of "everything is object" design.

h1. Conclusion

Python is totally broken. Please don't write crappy apps with it or use other people's ones. If you still think it's a really good language, ask yourself:

By Alexander Markov on 2009-06-01 15:01:46 +0000