Здравствуйте, anokata, Вы писали:
A>Меня всегда удивляет почему многие компиляторы/интерпретаторы языков программирования (и среды для них и софт) написаны на С, С++ , а не на них самих. Почем так редко применяют раскрутку компилятора? или я неправо? К тому же там где применяют не редко остаётся ядро на С.
A>Неужели это свидетельствует о их слабости или недоразвитости? или просто на остальных ЯВУ трудно писать компиляторы?
A>Единственно вижу что на хаскеле пишут другие языки, но он опять же частично написан на С. Есть другие примеры?
Все очень просто. Бутстрапинг — это геморрой в начальной стадии проекта. Ведь очень легко получить компилятор которым нельзя будет скомпилировать самого себя. По сему нужна многопроходная (хотя бы двупроходная) компиляция. Усиленное тестирование.
Вторая причина — это сложность переноса на другие платформы. Если компилятор написан на С и это нэйтив-компилятор, то перенести его на другую платформу (в идеале) можно тупой перекомпиляцией.
Но все же главная причина — дурь. Те кто не использует бутсрапинга (и при этом пытается создать новый язык который будет удобен другим) делает огромную ошибку, на мой взгляд.
Бутстрапинг очень полезен по двум причинам.
1. Это отличный тест самого компилятора. Причем тест который постоянно развивается.
2. Это возможность создателям языка больше использовать этот самый язык. А без этого трудно сделать язык который был бы нужен другим.
На самом деле почти все популярные сегодня языки когда-то бутсрапились или стремятся к этому.
Вот тутАвтор: x-code
Дата: 23.05.11
товарищ перечислял "нормальные языки", по его мнению, языки (С++, D, ObjC, Java, C#, Delphi). Так среди них только C# и D не бутстрапились. Причем для C# уже пишется компилятор на C#, а D в этот список явно попал случайно (так как под нормальными языками явно понимаются популярные ныне или в недавнем прошлом).
А вот с D все сложнее. Его автор хотел создать лучшего потомка С, но пока что народ его не воспринимает. И, возможно, что от части происходит это потому, что D не пишется на D.