Убедите меня что я прав
Jun. 15th, 2009 07:49 pmимхо, универсальный язык - это всего лишь язык, на котором можно написать свой собственный рантайм. С, С++, ассемблер - универсальные языки, а Ява или Хаскель - нет.
http://kika.livejournal.com/84936.html?thread=880072#t880072
truъ or false?
http://kika.livejournal.com/84936.html?thread=880072#t880072
truъ or false?
no subject
Date: 2009-06-18 03:33 pm (UTC)Вообще это классический способ бутстрапа всяких таких язычков типа
лиспиков и проч, если я правильно помню. Состоит он в том, что ты пишешь изначально очень мелкий сабсет языка, практически не имеющий рантайма -- в частности, раз уж мы о GC, не имеющий GC. И потом на этом уже сабсете ты пишешь рантайм. Для этого, очевидно, в общем случае не необходимо писать "другую яву" -- достаточно заменить в существующей минияве хук аллокатора. Or something.
То есть, совсем уж позитивистски: можно ли было написать llvm на яве? Конечно. Можно ли на этом llvm реализовать бутстрапную ява-машинку практически без рантайма? Почему нет. Можно ли потом над ней написать рантайм? Почему нет, опять же.
no subject
Date: 2009-06-18 03:40 pm (UTC)ОК, ты можешь написать ОС на Яве. И там не надо передавать указатель, там надо передавать String("хуй"). А кто запишет это слово в DMA буфер и дернет за регистр инициации трансфера?
no subject
Date: 2009-06-18 03:54 pm (UTC)no subject
Date: 2009-06-18 04:23 pm (UTC)no subject
Date: 2009-06-18 04:29 pm (UTC)Srsly, though: you're back to square one. Любой язык с ассемблерными вставками универсален, а без них -- нет, dong ma? :)
no subject
Date: 2009-06-18 04:35 pm (UTC)no subject
Date: 2009-06-18 06:21 pm (UTC)no subject
Date: 2009-06-18 04:37 pm (UTC)no subject
Date: 2009-06-18 06:09 pm (UTC)Это будет непортабельно, но не более непортабельно, чем ассемблерные вставки на си. Это сильно не "написать всю программу на ассемблере и обернуть её в яву" -- так, на глазок, там нужно несколько дырок просверлить, типа из oref2laddr и наоборот, плюс-минус типы, ну и прочее в таком же ключе.
При этом с "неинтересно обсуждать" я согласен -- чем дальше я уточняю предложенную идею "универсальности", тем больше я согласен с комментатром ниже (про "бессмысленный термин"). Твоё "неинтересно обсуждать" -- это же "impractical", так? Ну так это сильно более слабый термин, чем "универсальный". Если бы ты сказал, что писать рантайм к яве на целиком яве impractical -- дискуссии бы не вышло :)
Я могу ещё за само понятие "C runtime", а также за safety тут спеть, но, по-моему, все уже выдохлись.
no subject
Date: 2009-06-18 03:47 pm (UTC)no subject
Date: 2009-06-18 04:05 pm (UTC)Кто знает, может, у него сразу видны узкие места и он оптимизирует их на си за неимением ассемблера? Или, более практично, дешевле залеверейжить то, что уже сделано для си (в смысле библиотек, оптимизации и практик), чем изобретать велосипеды с бутстрапом явы.
(хмм, хотя вряд ли -- человек, который пишет OS в наше время, по построению фанат изобретения велосипедов. не бьётся, да)