Однією з вимог до clang — нового компілятора C++ — було надати користувачеві докладну інформацію про помилки. Розгляньмо невеликий приклад.
[]double UniversalGravitation(double G, double mass1, double mass2, double distance) { double F = G * ((mass1 * mass2)/(distance * dsitance)); return F; }
Тут допущено описку в ідентифікаторі. Що ж покаже нам clang?

По-перше, він дбайливо підкреслює місце в довгому виразі, який саме ідентифікатор він вважає незнайомим. По-друге, він чемно підказує можливе виправлення. Згадаймо, який вигляд мають схожі повідомлення в Microsoft Visual Studio 2010. (Хоча Visual Studio 2010 можна й похвалити: такий тип помилок вона підсвічує ще під час редагування.)

gcc показує щось на кшталт такого:
<font size="2" face="Consolas">/tmp/webcompile/_13952_0.cc: In function 'double UniversalGravitation(double, double, double, double)': /tmp/webcompile/_13952_0.cc:3: error: 'dsitance' was not declared in this scope</font>
Почитати про інші можливості діагностичного механізму компілятора clang можна в довідці: Expressive Diagnostics. Дуже цікаві випадки, коли він знаходить помилки в нерозгорнутих макросах або в тайпдефах.
Уже чекаю, коли компілятори в майбутньому самі виправлятимуть помилки. А потім і самі писатимуть код.