>>13
>>1,13
Same person
Troll
I'm offended that you take world4ch seriously.
Formalities aside, here's my serious answer:
Unfortunately, there's no formal definitions for most programming language categories or feature names. You won't find a clear, single definition of functional programming, object-oriented programming, weak typing, polymorphism, etc. However, you eventually get a notion of every concept and an idea of what's everything good for.
Functional programming is based on Lambda calculus, and deals with some of the most advanced, abstract programming concepts. They aim at you specifying what you want to do, but not how to do it, although don't take this rigurously. Requisites of functional langauges include most notably first-class functions (functions must be values like any other, and you can store, copy, pass and return these values). Functional programming requires that you think on functions as any other value and pass them from one to another. A notable feature of FP, though not a requisite, is known as referential transparency. In some FP languages, all functions must/should be pure, which means that they have no side effects, and that they evaluate to the same result given the same parameters anytime. An example of a pure function is sin(x). An example of a non-pure function is time(): you call it with the same parameters every time, yet it returns different values. Another feature of many FP languages is lazy evaluation: if you use pure functions, it doesn't matter when you actually evaluate them, so they get called when necessary. FP is great for implementing complex algorithms and Maths, and it has an awesome productivity (think about 20 times better than C), although they are not so good for I/O, and they are harder to learn.
Functional languages include Haskell, Erlang or ML. Other languages allow you to combine different programming techniques to solve every problem with the right tool, which is the approach I recommend. They are not purely functional, not purely object-oriented, not purely traditional imperative, not purely anything, but you can do everything. Examples of these languages are Scheme, Python and Lua.