Re: Choosing programming language
Well, I don't know why you wouldn't use name mapping as that would probably solve your problem. If either the ID or ControlID are static those would be ideal properties for mapping the object.
If mapping is not an option then in scripts you could find and work with the buttons using FindChild. Look at the examples in this topic: FindChild Method | TestComplete Documentation (smartbear.com)
I would probably use WndClass and WndCaption for identification properties with FindChild. There should never be more than one object at the same level in the object hierarchy with the same WndClass and WndCaption.
I agree index is not ideal since it could change if the UI in the application changed due to the addition of a new control that would shift all the indexes.