несъвършенство 2
Името на операнда се използва за обозначаване на различни обекти на различни места в програмата, когато предишното срещане на името вече не е необходимо и следващото е в сила. Този подход спестява памет в машинния код, където няма начин да се посочи еквивалентността на имената на два операнда. Двусмисленото използване на имена на операнди обаче води до лошо разбиране на програмата, точно както в английския език използването на термини, чието значение трябва да се извлича от контекста, затруднява разбирането.
Пример е версия (8), тъй като операндът R първо се въвежда за представяне на сумата и след това на квадрата. В оригиналната си форма версия (8) е:
V´L = (N1 + N2) log2 (h1 + h2) ´


Подобрявайки тази версия чрез премахване на двусмислената употреба на R, получаваме:
откъдето: V´L = (N1 + N2) log2 (h1 + h2) ´


Тук отново подобреният резултат от 11.0 е по-близък до теоретичния 11.6, отколкото за версията с двусмислено използване. Версии (3) и (13) също съдържат това несъвършенство.
Несъвършенство 3. Синонимни операнди.
Точно обратното на неяснотата при именуване на операнда е да се зададат две различни имена за един и същи обект. Ако две или повече променливи се използват по такъв начин, че техните стойности винаги трябва да бъдат еднакви, тогава синонимните операнди са несъвършени. Това несъответствие съдържа версия (4) в оригиналната й форма:
защото Т1 и Т2 трябва да съвпадат. В такъв случай:
V´L = (N1 + N2) log2 (h1 + h2) ´


Подобрена версия (4) чрез премахване на синонимаоперанд T2, получаваме:
В резултат на това имаме:
V´L = (N1 + N2) log2 (h1 + h2) ´


В допълнение към версия (4), пример за използване на синонимни операнди е версия (14).
Несъвършенство 4. Общи подизрази.
В случаите, когато определена комбинация от изразни термини трябва да се използва повече от веднъж, обикновено й се дава ново име и след това се препраща към нея. При отклонение от това правило програмата съдържа общи подизрази. Фазата на оптимизация в компилатора може да е в състояние да елиминира общи подизрази, но ако не го направи, се извършват ненужни изчисления.
Таблица 7.1. версия (2) съдържа два екземпляра на израза (P + Q):
V´L = (N1 + N2) log2 (h1 + h2) ´


Подобрявайки версия (2) чрез елиминиране на общи подизрази, получаваме:
V´L = (N1 + N2) log2 (h1 + h2) ´


В допълнение към разглежданата версия, общите подизрази съдържат и версии (7) и (12).