.. how well is the programming aspect handled?
Depends of what you want to get. For example, it's not an ordinary task to scan the whole surrounding surface to use this data later with something like
A*, but, for most cases, interactive return values of target-detection and movement functions read through loops should be sufficient. The language itself is pretty much object-oriented, existing in-game classes/objects have a number of standartized attributes (inheritance used properly), enough to, say, write a script that helps moving bot's turret remain aimed despite yaw and pitch created by surface's bumps and gaps. Declaration of custom classes is also available. Normally programs are executed on a program-per-bot basis, but there is workaround somewhere to turn a single bot to the slightly laggy but all-seeing control-center.
Language / class reference manual / index included in-game, working examples provided. There are some handy undocumented functions though. They can be found
there, among the many community-uploaded handy scripts. <edit: seems that files are removed, all that's left on this page to do is read descriptions and tremble in awe

>
language's very basics (link is to Colobot's brother CeeBot, but the language is pretty the same).
If anyone decides to give it a try - be adviced: release date is somewhere around 2001, so expect some kind of relaxing puzzle-quest to get it working.