I've been doing socket programming for a while in C++, and kind of got tired of having to write the same code to handle for errors, serializing / deserializing data, etc.
Are there programming languages out there that have first-class support for distributed system?
Erlang, as described by Wikipedia:
It was designed by Ericsson to support distributed, fault-tolerant, soft-real-time, non-stop applications.
You might also want to read the Distributed Erlang section of their manual.
However, note that Erlang is a functional language and will require a much different paradigm of thought as compared to C++.