I voted this up because I agree with Zed's criticisms of HTML/XML/CSS/Javascript etc.<p>But he loses me when he starts critiquing object-oriented programming.<p>This is how I "arrive" at object-oriented programming:<p>* I begin writing an application to implement an idea.<p>* My hurriedly written code starts out as a whole lot of functions acting on various bits of data.<p>* At some point I realise that certain functions are really methods on one or more classes of object.<p>* I refactor my code into class definitions.<p>* My code is now better organised and more readable.<p>I don't have to put _all_ my code into classes - there are often a few utility functions that end up just floating around by themselves, not belonging to any particular class. (So I prefer languages that "allow" me to do object-oriented programming over languages that _require_ me to do it.)<p>But, for me, object-oriented programming is a natural way of organising code. Despite what Zed says, "things" do exist in the real world, and in our applications, and "types of things" (i.e. classes) exist in our heads as ways to think about those things.<p>If I have to write code in some programming language that doesn't "do" objects, I get frustrated and annoyed (because I will eventually want to organise my code as classes and methods, but I won't be able to).