История изменений
Исправление SZT, (текущая версия) :
Потому что жизнь становится гораздо проще, когда у тебя всего один эталонный парсер языка. Особенно если это язык типа C++.
Ну вот не факт. Парсер должен соответствовать некоей спецификации, описанной в стандарте. Где гарантии, что эталонный парсер языка точно соответствует этой спецификации? И почему бы не иметь несколько разных эталонных парсеров, написанных разными людьми на основе одного текста стандарта, и сравнивать их на предмет одинаковости их поведения?
Нет, если у тебя корректно описаны интерфейсы и взаимодействие.
Это опять-таки спорно. Как оценивать уровень корректности? И даже если всё корректно, есть ли строгие пруфы того, что модульность не мешает реализовывать некие нетривиальные фичи, и не усложняет код из-за необходимости делать всякие «места стыков» этих модулей, и что это всё не порождает неких багов?
Может надо провести некий научный эксперимент, ну скажем взять две группы программистов одинаковой квалификации, одну группу попросить с нуля написать свой компилятор в модульном стиле, другую в монолитном, а потом сравнить количество багов и время разработки. И при этом такой эксперимент проделать несколько раз. Вот тогда можно сделать какие-то выводы. А так - это просто слова.
Исправление SZT, :
Потому что жизнь становится гораздо проще, когда у тебя всего один эталонный парсер языка. Особенно если это язык типа C++.
Ну вот не факт. Парсер должен соответствовать некоей спецификации, описанной в стандарте. Где гарантии, что эталонный парсер языка этой спецификации точно соответствует? И почему бы не иметь несколько разных эталонных парсеров, написанных разными людьми на основе одного текста стандарта, и сравнивать их на предмет одинаковости их поведения?
Нет, если у тебя корректно описаны интерфейсы и взаимодействие.
Это опять-таки спорно. Как оценивать уровень корректности? И даже если всё корректно, есть ли строгие пруфы того, что модульность не мешает реализовывать некие нетривиальные фичи, и не усложняет код из-за необходимости делать всякие «места стыков» этих модулей, и что это всё не порождает неких багов?
Может надо провести некий научный эксперимент, ну скажем взять две группы программистов одинаковой квалификации, одну группу попросить с нуля написать свой компилятор в модульном стиле, другую в монолитном, а потом сравнить количество багов и время разработки. И при этом такой эксперимент проделать несколько раз. Вот тогда можно сделать какие-то выводы. А так - это просто слова.
Исходная версия SZT, :
Потому что жизнь становится гораздо проще, когда у тебя всего один эталонный парсер языка. Особенно если это язык типа C++.
Ну вот не факт. Парсер должен соответствовать некоей спецификации, описанной в стандарте. Где гарантии, что эталонный парсер языка этой спецификации точно соответствует? И почему бы не иметь несколько разных эталонных парсеров, написанных разными людьми на основе одного текста стандарта, и сравнивать их на предмет одинаковости их поведения?
Нет, если у тебя корректно описаны интерфейсы и взаимодействие.
Это опять-таки спорно. Как оценивать уровень корректности? И даже если всё корректно, есть ли строгие пруфы того, что модульность не мешает реализовывать некие нетривиальные фичи, и не усложняет код из-за необходимости делать всякие «места стыков» этих модулей?
Может надо провести некий научный эксперимент, ну скажем взять две группы программистов одинаковой квалификации, одну группу попросить с нуля написать свой компилятор в модульном стиле, другую в монолитном, а потом сравнить количество багов и время разработки. И при этом такой эксперимент проделать несколько раз. Вот тогда можно сделать какие-то выводы. А так - это просто слова.