Charm++ – równoległy, zorientowany obiektowo język programowania bazujący na C++ i stworzony w Laboratorium Programowania Równoległego na Uniwersytecie Illinois. Charm++ powstał w celu zwiększenia produktywności programisty poprzez udostępnienie abstrakcji wysokiego poziomu w programowaniu równoległym, przy jednoczesnym zachowaniu wysokiej wydajności dla większości stosowanych platform sprzętowych.
Programy pisane w Charm++ są dekomponowane na wiele sterowanych komunikatami obiektów, zwanych kontenerami (chares). Kiedy programista wywołuje metodę obiektu, system uruchomieniowy Charm++ (Charm++ runtime system) wysyła odpowiednie komunikaty do wywołanych obiektów, które mogą byś przechowywane zarówno na lokalnej jednostce, jak i jednostce zdalnej, będącej w strukturze równoległej. Wysłany komunikat uruchamia wykonywanie kodu zawartego w kontenerze w celu asynchronicznego jego przetworzenia.
Kontenery mogą być grupowane w postaci indeksowanych tablic kontenerów (chare arrays), a komunikaty mogą być wysyłane do pojedynczych kontenerów lub do wszystkich znajdujących się w tablicy jednocześnie.