Здравствуйте, Андрей Хропов, Вы писали:
АХ>Ну хорошо, выражусь по-другому: в системном языке должна быть возможность спуститься на низкий уровень и контролировать каждый бит. Все время это делать не надо, но, скажем, критические части ядра ОС по-другому не напишешь.
Ну загрузчик по любому нужно писать на асме. Тут даже С не подходит.
А вот то что пишут на С уже можно писать на чемто болие высокоуровневом.
WH>>Все что нужно это value-типы, поддержка двоичных данных на уровне виртуальной машины и оптимизатор который умеет делать region-inference. Еще нужно иметь несколько различных алгоритмов сборщика мусора в том числе подсчет ссылок и вобще отсутствие сборщика мусора (работает только region-inference).
АХ>Не согласен.
АХ>Помимо этого должна быть возможность вообще не пользоваться сборщиком мусора,
Перечитай еще раз что я сказал.
АХ>не должно быть обязательной зависимости от большого рантайма (для встроенных систем и вообще где мало памяти),
Это совсем не проблема.
АХ>должен быть встроенный ассемблер (желательно с легко настраиваемым под конкретную архитектуру набором инструкций)
Только для загрузчика. А для этого проще внешний язычек прикрутить.
АХ>и указатели (можно (и даже неплохо) их конечно поместить в отдельный unsafe-загон, как в C#, но они должны быть, хотя бы для того чтобы реализовывать сборщики мусора).
У меня есть некоторые мысли на эту тему но я их сейчас думаю. Кгда додумаю напишу.
АХ>Также должны быть средства жесткого задания бинарного представления в структурах (в D есть шаги в этом направлении).
Я про это и говорил когда говорил про работу с битами на уровне ВМ.
АХ>На языке для системного программирования должно быть можно написать ядро ОС.
Есть только один язык на котором можно полностью написать ядро ОС. Это асм...
Если же С/С++ возводим в ранг системнах то и C# (и оберон) попадает тудаже...
АХ>Ядро в Singularity написано на assembler + C++ + С# (safe и unsafe).
АХ>Хотя неверифицируемая часть состоит всего из 5% кода.
5% это много. Должно быть много меньше.
АХ>Как в текущей реализации D.
АХ>Да, вот и надо приделать к D точный копирующий GC.
hint: union
АХ>Почему? Надо только разобраться с вопросом можно ли (и как) работать с указателями на GC объекты.
С указателями на ГЦ объект работать нельзя никак.
Иначе ни какого точного ГЦ не будет ни когда.
АХ>Дизайн D вообще говоря меняется.
Дык. Надо же с самого начала все продумывать, собирать информацию о других языках... проанализировать к чему приведет то или иное решение.
А автор D этого не сделал... вот теперь и мучается...
С языками программирования как и интерфейсами объектов. Есть толстые и есть тонкие.
Толстые с виду проще но если нужно сделать что-то чего не предусмотрено то все... тушите свет...
Вот D это толстый язык, а немерле тонкий.
Вот попробуй к D прикрутить
late.
Что не можешь? Нужно уговаривать автора?
А к немерле его прикрутил человек не имеющий к самому компилятору никакого отношения.
Таким образом ребята сейчас фиксят баги в ядре, а фенечки наворачивают совершенно посторонние люди.
Причем если к D прикрутить что-то типа late то он появится у всех. Даже у тех кому он не нужен. В случае с немерле все это прекрасно рулится при помощи подключения библиотек с расширениями и using.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>