|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Andrew Kadatch 2:5020/400 22 Jul 2001 11:08:16 To : All Subject : Re: Компилятор --------------------------------------------------------------------------------
> Я не o тoм, я хoчу узнать, пoчему не cледует пpи pазpабoтке кoмпилятopа
> начинать c pазбopoв гнуевых иcхoдникoв ?
Disclaimer: я никоим образом не хочу оскорбить любителей gcc и проч. в
лучших
чувствах (т.е. пинайте меня в email); все сказанное ниже -- мое личное
мнение.
Coding style -- это полбеды (хотя за условные операторы на 4 экрана,
испещренные
&&-ми и ||-ми без единой скобки, нужно выдергивать руки).
Основная проблема, на мой взгляд, заключается в безнадежно запущенной
болезни
ГЦЦ, давно перешедшей в хроническую стадию и лечению не поддающейся. Болезнь
эта называется "идиотский дизайн". Сначала ребята героически переводят
убогое
синтаксическое дерево в RTL (Register Transfer Language -- достаточно
неудачная
попытка упростить retargetting кодогенератора на другие платформы, BURG с
этой
задачей справляется гораздо лучше), теряя при этом всю информацию об
исходной
программе (особая прелесть заключается в том, что RTL указатель и целое
одной
длины неотличимы), а потом data flow analysis не менее героически пытается
извлечь
хоть какую-нибудь информацию из этого убожества. Hу просто классика жанра --
сначала создать себе трудности, а потом их героически преодолевать. И так в
ГЦЦ
везде, куда ни кинь взгляд... Четкого разделения машинно-зависимых и
машинно-
независимых оптимизаций нет (и начинается весь этот бардак еще в парсере),
никто
не знает, как различные фазы оптимизатора зависят друг от друга, море
спагетти-кода,
и проч. и проч.
Короче, это вещь, на которой тренировалось 10 поколений студентов не
обладающих,
увы, должным опытом и квалификацией -- отсюда и все ляпы в дизайне: чтобы
узнать,
где грабли лежат, на них надо разок наступить; история хождения по минному
полю
хорошо отражена в исходниках ГЦЦ. Hу а потом слегка недоделанные кусочки
(как
правило, при переносе, когда все ляпы и машинная зависимость начинают,
подобно
тараканам, лезть из всех щелей) наскоро доделывались (столь же часто без
малейшего
понимания происходящего), что сделало изначально не самый лучший код
нечитаемым
окончательно и бесповоротно.
Сия проблема, кстати, имеет место быть не только в ГЦЦ. Взгляните на любой
старый
город сверху, и вам тоже станет страшно -- все улицы кривые, как турецкая
сабля, и
коротенькие, как штанишки первоклассника. Hеизбежное следствие
неконтролируемого
роста -- в остутствие садовника, безжалостно вырезающего кривые веточки,
постоянный
рост энтропии рано или поздно приводит к хаосу.
Разумеется, каждый опытный проектировщик города должен знать о лондонском
сити --
с тем, чтобы знать, как города делать не надо, -- однако, на мой взгляд, это
не то, с чего
следует начинать обучение.
Удачи,
АК
--- ifmail v.2.15dev5
* Origin: Demos online service (2:5020/400)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/6577b9042445.html, оценка из 5, голосов 10
|