>>1044669
Oops, I misread the first question.
> What makes a normal programming language better than a mark-up language?
They serve totally different purposes, so the question doesn't really make sense. A programming language is for implementing program logic, for making things happen. A markup language is for when you already have a thing (i.e. some text), but you need a way of expressing it in a machine-readable way. The machine can then take your markup and process it into another thing. For example, if you have a food recipe in mind you write it down as HTML and a web browser then transforms it into a nice graphical representation.
The downside of pure markup languages is that due to the lack of logic you cannot automate anything. Let's say you often want to repeat some piece of text:
< All work and no play makes Jack a dull boy
< All work and no play makes Jack a dull boy
< All work and no play makes Jack a dull boy
< All work and no play makes Jack a dull boy
< All work and no play makes Jack a dull boy
I have had to write this explicitly down five times. What if I made a typo? I would have to correct each line individually. What if I want it written 12 times, but I don't know how many times I have already written it? I would first have to count how many times I have written it, then subtract that number from the target number, and finally copy paste one line that many times. Now what if every line had a little variation (like printing the line number)? Now even copy-paste has failed me.
If the markup language had logic capabilities I could embed a loop like
for i in 1 .. 6: printf("%i) All work and no play makes Jack a dull boy", i);
and have the programming language generate all those lines for me. However, programming language bring with them complexity and security issues, now you have to be careful that your text document does not contain malware.
A middle ground could be to use a programming language to generate a markup document. The person doing the generation still has to be careful that the program does not contain malware, but the generated output (in a markup language) can then be given out to people without concern. Static site generators for example generate static HTML pages that way. If you want to play around with generation you could give the Jinja Python library a try:
http://jinja.pocoo.org/
You write a template, which is a markup file with little placeholder inserted, then run the generator to have those placeholder in the template filled in. The Lisp languages can do something similar and have it built right into the language.