Например, Object Pascal (Delphi) вроде как диалект паскаля, но отличия
от паскаля примерно такие, как отличия C++ от C, а это отдельные
языки...
В общем, граница очень размытая, и, по-видимому, придется отдельно
разбираться в каждом конкретном случае (опираясь на общепринятую
практику).
Например, если Object Pascal вынести в отдельный язык, то Turbo Pascal
5.0 будет как бы реализацией двух языков: просто Pascal и Object
Pascal, что неудобно.
И описание элементов синтаксиса будет практически дублироваться.
Опять же, по условию "он не поддерживает изменения и дополнения,
вносимые в язык-прародитель", получится куча бейсиков в качестве
самостоятельных языков.
И как быть с Lisp, Common Lisp и Scheme - непонятно. На Common Lisp и
Scheme есть стандарты, и языки достаточно различны, чтобы не считать
их диалектами. Но что тогда такое Lisp до стандартизации? Получится
три языка, просто Lisp, Common Lisp и Scheme, что некрасиво... А есть
еще Emacs Lisp, Autocad Lisp, которые довольно сильно отличаются.
Можно вообще структуру хранения информации переделать, если она не
подходит.
Подумал на досуге - я тоже не против, чтоб убрать диалекты. Чёрт ногу
сломит и то не определит, что есть язык, а что диалект. =)
Вообще, подход язык-диалект-реализация-версия изначально был обречён
на провал. Столь строгой формализации добиться не возможно...
Думалось ещё, что можно группировать языки по принципы принадлежности
к определённому сеймейству. Для примеру,
- Oberon-семейство (Active Oberon, Component Pascal, Oberon, ...)
- Prolog-семейство (Prolog, Mercury, Oz, ...)
- LISP-семейство (LISP, Scheme, AutoLISP, ...)
- ML-семейство (SML, OCaml, F#, ...)
- Haskell-семейство (Haskell-98, O'Haskell, Haskell++, Mondrian, ...)
Тоже не выход. Но очень похоже на то, что предложил Crosspath чуть
выше (РодственныеЯзыки).
Подход с диалектами наиболее явным образом демонстрирует свою
непригодность на языках, у которых (исторически) несколько стандартов:
Ada (диалекты: Ada 2005, Ada 83, Ada 95)
C# (диалекты: ECMA-334, ISO/IEC 23270:2003)
FORTRAN (диалекты: FORTRAN 66, FORTRAN 77, Fortran 2003, Fortran
2008, Fortran 90, Fortran 95, High Performance Fortran)
То, что стоит в скобках и значится как диалекты, как раз (даже по всем
формальным признакам) и есть языки. На то у них и стандарты имеются.
P.S. С C# вообще надо срочно что-то делать. Там, простите, бред
полнейший.