Семантический редактор непременно столкнется с такой проблемой, как
бремя обратной совместимости. И я убежден, что качество решения этой проблемы - это решающий фактор эволюции и будущей популярности или забвения семантического редактора.
Сначала несколько цитат о недостатках
обратной совместимости:
Цитата:
Еще одно преимущество создания нового языка программирования по сравнению с расширением существующих заключается в том, что при создании нового языка нет необходимости заботиться о проблемах обратной совместимости, которые обычно заметно затрудняют исправление застарелых проблем и даже внесение новых свойств в стандарт языка...
http://www.intuit.ru/department/sa/compilersdev/2/В процессе развития языка некоторые его конструкции и функции устаревают. Однако с целью обратной совместимости новые версии должны поддерживать и все устаревающие возможности.
http://www.intuit.ru/department/pl/plintro/1/2.html Избрав однажды путь расширения старого языка с сохранением обратной совместимости, вы можете его только усложнять. Отказаться от чего-либо уже невозможно.
http://www.pcweek.ru/themes/detail.php?ID=49177Корни обратной совместимости держат, не дают подняться выше определённого потолка.
http://www.gotdotnet.ru/blogs/mihailik/3594/Если есть возможность улучшить язык ценой потери обратной совместимости - лучше улучшить язык.
http://www.opennet.ru/opennews/art.shtml?num=20047Вирт написав Модулу и Оберон отказался от обратной совместимости. Он написал конвертер паскаль -> модула-2, а затем модула-2 -> оберон
Написав пару раз код на Модуле, Обероне или Аде к паскалю возвращаться не хочется.
http://www.linux.org.ru/news/linux-gene ... 6527/page3Пришло время отбросить цепи обратной совместимости и уверенно двигаться в будущее.
http://www.javaportal.ru/articles/10_reasons_Java3.html Теперь о преимуществах
обратной совместимости:
Цитата:
Язык, каким бы замечательным он ни был, находится под властью требований обратной совместимости миллионов исходных строк, которые никто не будет переписывать с нуля.
http://www.insidepro.com/kk/315r.shtmlНарушение обратной совместимости означает одновременное сопровождение двух разных версий... Некоторые изменения — такие как нарушение обратной совместимости — удерживают многих от перехода к новой версии.
http://www.ibm.com/developerworks/ru/li ... python3-1/Вряд ли, Microsoft откажется от обратной совместимости – имеющаяся мощь Windows частично объясняется именно совместимостью, которая от версии к версии только увеличивается.
http://www.winzone.ru/articles/491/Короче говоря, надо как-то исхитриться обеспечить полную обратную совместимость во всех будущих версиях семантического редактора таким образом, чтобы это не препятствовало совершенствованию семантического редактора.
Я здесь не претендую на то, что у меня есть готовые рецепты, но могу поделиться некоторыми мыслями:
1. Обратная совместимость должна обеспечиваться примерно таким образом, как это сделано в MS Office: Вы всегда пользуетесь только самой свежей версией средств разработки, но в большинстве случаев можете читать файлы в старых форматах.
2. Компонентное программирование должно стать настолько удобным и хорошо документированным, чтобы в большинстве случаев отпала необходимость в чтении старых компонент программистом, а сами эти компоненты хранились в виде исполнимого кода.
3. Должны быть конвертеры в новые форматы кода и данных. Сконвертировал - и работай уже с новыми. Старые средства разработки, позволяющие полноценно работать со старыми форматами, должны быть недоступными в новых версиях семантического редактора.
4. Исходный программный код и данные (в т.ч. сериализованные) должны сохраняться в форме XML, так как это позволит легко вносить изменения в форматы без отрицательных последствий.
5. Контекстная справка и интуитивно понятный графический интерфейс должны помочь пользователям быстро адаптироваться к измененному синтаксису новых версий без штудирования документации.
6. Старые версии не должны поддерживаться, а апгрейд должен быть автоматическим и бесплатным, хотя само по себе пользование семантическим редактором может быть и платным. Т.е., у всех всегда должна быть самая свежая версия семантического редактора, как это делается с браузерами.
7. Стандартная библиотека должна быть неотделима от языка программирования и семантического редактора. Они должны составлять единое целое. Что касается сторонних библиотек, то для них должны обеспечиваться средства поиска, документирования, хранения в виде исполнимого кода, конвертации исходного кода в свежий формат.
8. Исходный код и данные должны содержать в себе указание на номер версии.