каждый по-своему, правда. в идеале - чтобы можно было это все делать в одном языке. но оно в теории и можно. только там не реализовали одно, там другое
spec выглядит прикольно, хотя там тоже есть свои проблемы (например, сообщения об ошибках могут быть стремноватые, но это общая проблема кложи, которая потихоньку как-то решается)