TypoScript is the subject of many discussions. Countless TYPO3 beginners (yours truly included) have sworn at its apparent weirdness and complexity. Many others wondered about its odd syntax. And why not use XML? And why not do the whole thing with PHP? On the other hand TypoScript was unanimously voted as the feature to preserve first and foremost in TYPO3 version 5.0, albeit with a more consistent syntax.
There are several issues with TypoScript when you first sit down and try to wrestle it. To start with you don't know about the existence of the documents called TypoScript Syntax and TypoScript by Example. This is an obvious shame since they do get you very neatly started with the whole thing. Then you have to start digging into the TypoScript reference, whose structure is not obvious at first. It is also apparently very much oriented towards programmers, a limitation that didn't strike me being a programmer myself, but which has been raised in the mailing lists. Furthermore TSRef notwithstanding some of the objects have a heap of properties sometimes inconsistent. Then you start thinking in terms of programming language, because TypoScript resembles one with its curly braces, but it's not. Things continue down the slope as you have to tackle your first "optionSplit" and go definitely down the drain as you attempt your first "if".
If you manage to imitate a well-known fiery bird and raise out of your own ashes, you generally reach some kind of illumination where it all starts making sense (except for inconsistencies which can sadly not be cast away that simply). The TSRef finally reveals its logic and you are able to jump from one reference to another and start using all the power of TypoScript. But what is that power exactly? For me it is the possibility to fully customise the output of TYPO3 without touching its code. Indeed all this could be achieved using plain PHP, but the advantage of TypoScript is to provide a layer between TYPO3's PHP code and your site. As long as backward compatibility (also known as "holy cow") is maintained, no matter what changes happen to the core of TYPO3, your TypoScript will be still be valid and hence your site will not be broken by updating to a newer version of the software. The reverse is also true: this layer makes it possible to fiddle with the set up of your web site while confident that nothing you do in TypoScript can break TYPO3 itself.
So is TypoScript a beauty or a beast? For my part I think it is a beautiful beast.
Mapping TypoScript content-object configurations to database columns and putting the result in a marker array is by far the most flexible, least php coding effort way of getting your plugin output. Talk about rapid development here.
Long story short: I love it.