Здравствуйте, AndreiF, Вы писали:
АХ>>Просто он один работает над компилятором (причем он еще и занимается другими своими проектами!), который написан в основном на низкоуровневом C, причем он работает еще и без IDE.
AF>А почему не на D? Не забываем о принципе dogfood. В общем, выглядит подозрительно.
Объективности ради: компилятор D написан на C++ (в каталоге src файлы с расширениями .c и .h, но в них C++ный код).
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, ie, Вы писали:
FR>>Вас (поклоников Немерле) по моему уже не просто клинит, а окончательно переклинило.
ie>А поклоников чего бы то нибыло всегда клинит. Впрочем, я этого и не отрицаю. А как еще можно назвать ситуацию, когда я пишу какой-нибудь код и думаю, а как бы его можно было покрасивей переписать на Немерл? Одним словом — клинануло. При всем при этом я стараюсь быть объективен. Не всегда получается, что ж теперь
А у тебя легкая форма (надеюсь у меня тоже)
Но на всякий случай перед тем как писать в темы никакого отношения к Немерле не имеющие про Немерле, глубоко вдохни и медленно cчитай в уме до десяти
Еще почти любой код можно красивше переписать, и без Немерле
FR>>В общем я теперь твердо убежден функциональщина очень опасна для психики, срывает крышу, особенно если упертые императивщики резко на нее переходят
ie>Дык, функциональщина тут как бы не причем. Думаю любой шаг эволюции сопровождается таким клином если не у всех, то уж точно не у единиц.
Ты разве не слышал про "злобных функциональщиков"?
Здравствуйте, Vermicious Knid, Вы писали:
VK>Здравствуйте, ie, Вы писали:
E>>>Да ладно сравнивать императивное решение с функциональным: ie>>Точно-точно! ie>>
ie>>makeDist _ 0 = []
ie>>makeDist n m = let r = round (fromIntegral n / m) in r : makeDist (n-r) (m-1)
ie>>
VK>Ну и Nemerle можно таким образом ужать: VK>
VK>def makeDist(n, m)
VK> if (n == 0) [] else
VK> def r = (n / m:>double).Round():>int; r :: makeDist(n-r, m-1)
VK>
и D:
int[] makeDistrib(int n, int m)
{
if(m == 0) return [];
int r = cast(int)round(cast(float)n / m); return [r] ~ makeDistrib(n - r, m - 1);
}
и питон:
def make_dist(n, m):
if m == 0: return []
r = int(round(float(n) / m)); return [r] + make_dist(n - r, m - 1)
Здравствуйте, VladD2, Вы писали:
АХ>>А зачем C/C++ если есть лучше их — D?
VD>По-меому, все очевидно. С++ потому что на работу за это взяли. А не D, помтоу, что если он будет выбирать сам и другие условия будут позволять, то он как разумный и перспективно мыслящий человек несомненно выберет Nemerle.
VD>А ты сам бы разве не так же поступил бы?
Ответил здесь
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, Андрей Хропов, Вы писали:
АХ>>C + inline asm
VD>Ты меня извини, но "C + inline asm" == C и asm, т.е. два языка. Это можно и в Немрле встроить поддержку IL-блоков. Причем ты сам можешь это сделать.
Не, тут не в IL дело. Надо возможность пользоваться командами специфичными для данной архитектуры. IL тут не причем.
АХ>>Можно, но возможность спуститься на низкий уровень должна быть.
VD>Зачем? Чтобы смотреть как толпы ежиков лезут туда где их убьет током?
VD>Ты серьезно собрался ОС писать? Нет?
Мы не про меня говорим, а про то каким должен быть язык для системного ПО. Которое в себя включает в том числе написание менеджеров памяти, GC и т.п.
АХ>>>>Хотя неверифицируемая часть состоит всего из 5% кода. WH>>>5% это много. Должно быть много меньше. АХ>>Откуда такие выводы?
VD>Лучше скажи откуда взял цифру — 5%?
Singularity’s I/O system consists of three layers: HAL, I/O manager, and drivers. The HAL
is a small, trusted abstraction of PC hardware: IoPorts, IoDma, IoIrq, and IoMemory
abstractions to access devices; interfaces to the timer, interrupt controller, real-time clock, and
debug console; kernel debugging stub; event logger; interrupt and exception vector; BIOS
resource discovery; and stack linking code. It is written in C#, C++, and assembler. The
assembler and C++ portions of the HAL represent approximately 5% of the trusted code in the
system (35 out of 561 files).
Это правда только I/O, но более четких цифр там вроде нет.
АХ>>Да выкинуть их давно надо. Я ими никогда не пользовался.
VD>Скажи автору Ди. Посмотрим на рекцию.
Скажу
VD>За одно скжи про указатели.
АХ>>Хороший оптимизатор все равно в случае чего (если это безопасно) может соптимизировать распределение памяти.
VD>Очень хороший. Такой способны породить только Sun, IBM, MS ну может еще кто-то. Но никак не кустари одиночки.
Интересно, почему DMD на недавних тестах был быстрее компиляторов и рантаймов от MS и Sun?
АХ>>Если бы я сам выбирал на чем разрабатывать, я бы выбрал Nemerle основным языком и С++ или D для критических по скорости и затратам памяти частей.
VD>И скоро понял бы, что давно забыл что как писать на С++ и Dю
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, Андрей Хропов, Вы писали:
АХ>>Ну хорошо, выражусь по-другому: в системном языке должна быть возможность спуститься на низкий уровень и контролировать каждый бит.
VD>Тогда единственный выход это ассемблер.
inline assembler
АХ>> Все время это делать не надо, но, скажем, критические части ядра ОС по-другому не напишешь.
VD>Вот авторы Сингулярити уже доказали, что подобные слова — заблуждение.
В смысле?
Singularity’s I/O system consists of three layers: HAL, I/O manager, and drivers. The HAL
is a small, trusted abstraction of PC hardware: IoPorts, IoDma, IoIrq, and IoMemory
abstractions to access devices; interfaces to the timer, interrupt controller, real-time clock, and
debug console; kernel debugging stub; event logger; interrupt and exception vector; BIOS
resource discovery; and stack linking code. It is written in C#, C++, and assembler. The
assembler and C++ portions of the HAL represent approximately 5% of the trusted code in the
system (35 out of 561 files).
Итак, 5% хотя бы I/O (про ядро непонятно) написаны на asm + C++. Немного, но тем не менее.
VD> Да и не ясно почему нельзя какие-то критические места написать на низгоуровневом языке? Их же очень мало.
АХ>>Помимо этого должна быть возможность вообще не пользоваться сборщиком мусора,
VD>Это почему?
Потому что от него оверхед (для ядра это существенно) и к тому же он приводит к недетерминированному поведению.
В real-time системах бывает так, что вообще вся память статически распределяется.
АХ>>не должно быть обязательной зависимости от большого рантайма
VD>А ничего, что рантайм Висты составляет где-то 3 гига?
Что значит рантайм Висты?
Язык для системного ПО должен позволять писать с минимально возможным оверхедом — для встроенных устройств, для смарт-карт и т.п.
АХ>>(для встроенных систем и вообще где мало памяти), должен быть встроенный ассемблер
VD>Нда. Твои представления сильно устарели. Да и вообще странные рассуждения. Неуже ли в этом мире не хватит мест где нужно качество и удобство и все упирается в объем памяти?
Хватит, но я про языки для системного ПО, где производительность — одна из важнейших характеристик.
Здравствуйте, FR, Вы писали:
FR>Кстати где модераторы, раньше злобных функциональщиков за такое же поведение банили.
Модераторы здесь. А функциональщиков банили не за рекламу ФП, пусть и неуемную, а за потоки хамства, которыми эта реклама сопровождалась. И, уж коли ты первый о модераторах вспомнил, то предупреждаю: общаться в тоне, подобном Re[2]: Ой, чо с D деется-то!?
Здравствуйте, FR, Вы писали:
FR>Странно как ты мог раньше восхищаться таким убогим и не сделанным на четких научных принципах C#?
Он был лучше С++ и остается лучше Ди во многом. Так что не странно, что пока на горизонте не было чего-то более стоящего (по совокупности причин) Шарп был моим фаворитом. Но время идет вперед и все вокруг изменяется. Изменяется состав языков. Изменяюсь я. И только вы с eao197 не меняетесь. Я искренне рад за вас!
FR>Мне кажется Немерле с такими горе агитаторами может оказатся в полной ж...
Я вот уверен, что даже такие не очень опытные агитаторы приносят Nemerle только пользу. Ведь с техническими проблемами мы справимся. А вот популяризация языка очень важни. И вы вносите реальный вклад в нее. Так держать товарищи!
FR>В общем ничего кроме медвежьей услуги таким спамом не по теме вы Немерле не оказываете.
Неумение оценивать реалии окружающего мира это конечно недостаток. Но думаю, он тебе не помешает в нашем деле. Так что продолжайте господа. Удивительно только то, что вы даже не замечаете, что вы соллисты в этом процессе.
FR>Кстати где модераторы, раньше злобных функциональщиков за такое же поведение банили.
Ябиднячать не хорошо. А кливетать и подавно.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Андрей Хропов, Вы писали:
АХ>Не, тут не в IL дело. Надо возможность пользоваться командами специфичными для данной архитектуры. IL тут не причем.
Ничего что код с встроенным ассемблером не переносимый? Как раз при создании ОС люди обычно выделяют ассемблер в отдельный файлы и стараются минимизировать их число.
АХ>Мы не про меня говорим, а про то каким должен быть язык для системного ПО. Которое в себя включает в том числе написание менеджеров памяти, GC и т.п.
Системное ПО включает намного больший класс задач нежели написание менеджеров памяти.
VD>>И скоро понял бы, что давно забыл что как писать на С++ и Dю АХ>
Ну, я типа такой же умный как ты был. Тоже думал, что если чё, то С++ нам поможет. Вот только любое столкновение с этим низким уровнем наталкивало меня на мысль, что ну его на...
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
АХ>Singularity’s I/O system consists of three layers: HAL, I/O manager, and drivers. The HAL
АХ>is a small, trusted abstraction of PC hardware: IoPorts, IoDma, IoIrq, and IoMemory
АХ>abstractions to access devices; interfaces to the timer, interrupt controller, real-time clock, and
АХ>debug console; kernel debugging stub; event logger; interrupt and exception vector; BIOS
АХ>resource discovery; and stack linking code. It is written in C#, C++, and assembler. The
АХ>assembler and C++ portions of the HAL represent approximately 5% of the trusted code in the
АХ>system (35 out of 561 files).
АХ>Итак, 5% хотя бы I/O (про ядро непонятно) написаны на asm + C++. Немного, но тем не менее.
Ты явно неверно интерпретируещь эти слова. Слова "5% of the trusted code" означают, что 5% небезопасного кода (коду которому приходится доверять) написано на С++ и ассемблере. Это значит, что 95% небезопасного кода написано на C# (с использованием unsafe-блока).
Эти слова ничего не говорят об отностельном объеме небезопасного кода. Можно только с уверенгстью утверждать, что на момент написания этих слов код с небезопасными файлами занимал 561 файл.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, FR, Вы писали:
FR>Хотя бы потому что он как я понимаю также участвует в разработке Digital Mars C++ и с его стороны было бы просто глупо не использовать общий code base.
Глупо использовать язык более низкого уровня если можно использовать более высокого.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, FR, Вы писали:
FR>>Хотя бы потому что он как я понимаю также участвует в разработке Digital Mars C++ и с его стороны было бы просто глупо не использовать общий code base.
VD>Глупо использовать язык более низкого уровня если можно использовать более высокого.
Если пишешь с нуля то да, но у него не такая ситуация.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, FR, Вы писали:
FR>>Странно как ты мог раньше восхищаться таким убогим и не сделанным на четких научных принципах C#?
VD>Он был лучше С++ и остается лучше Ди во многом. Так что не странно, что пока на горизонте не было чего-то более стоящего (по совокупности причин) Шарп был моим фаворитом. Но время идет вперед и все вокруг изменяется. Изменяется состав языков. Изменяюсь я. И только вы с eao197 не меняетесь. Я искренне рад за вас!
Все таки D и C# идут в разных направлениях, но согласен что примерно равны по возможностям (не считая библиотек конечно).
За eao197 отвечать не могу, но я меняюсь, в душе я уже почти злобный функциональщик Вообще за последние пару лет у меня стиль кодирования сильно изменился, а новые языки это фигня , если знаешь принципы начать писать на них не так сложно как мне раньше казалось.
FR>>Мне кажется Немерле с такими горе агитаторами может оказатся в полной ж...
VD>Я вот уверен, что даже такие не очень опытные агитаторы приносят Nemerle только пользу. Ведь с техническими проблемами мы справимся. А вот популяризация языка очень важни. И вы вносите реальный вклад в нее. Так держать товарищи!
От такого влезания не по теме, по моему только вред, ничего кроме отвращения, поливание помоями других технологий у читателя вызвать не может. Другое дело что у вас есть и нормальная пропоганда, статьи, топики по теме, это хорошо и приносит пользу. Но излишний фанатизм только вредит, все-таки у многих есть рефлекс на излишнюю рекламу и спам.
FR>>В общем ничего кроме медвежьей услуги таким спамом не по теме вы Немерле не оказываете.
VD>Неумение оценивать реалии окружающего мира это конечно недостаток. Но думаю, он тебе не помешает в нашем деле. Так что продолжайте господа.
Угу вы абсолютно неадекватно оцениваете и возможности и главное место в IT мире и популярность любимой вами технологии
VD>Удивительно только то, что вы даже не замечаете, что вы соллисты в этом процессе.
Значит люди мирно беседуют о D, к ним заваливается фанат и орет про "жалкое подобие" вместо нормального разговора возникает свара, и после этого всех спорщиков еще и записывают в пропагандисты Немерле.
FR>>Кстати где модераторы, раньше злобных функциональщиков за такое же поведение банили.
VD>Ябиднячать не хорошо. А кливетать и подавно.
Это я тебе намекаю чтобы ты сам себя забанил
Если бы здесь любой другой язык продвигали так же упорно как Немерле, уверен все продвигальщики давно уже сидели бы в бане.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, eao197, Вы писали:
E>>Объективности ради: компилятор D написан на C++ (в каталоге src файлы с расширениями .c и .h, но в них C++ный код).
VD>И почему же Ди не пишется на Ди? Может из-за этого все проблемы?
Это front end его разумно писать именно на C++ чтобы легко переносить например на тот-же gcc. Можно конечно возится с раскруткой но в случае D когда уже существует паралельно C++ компилятор это будет только потерей времени.
Раскрутка и использование gcc в качестве back-end никак друг друга не исключают. Более того — они даже могли бы выгодно друг друга дополнять. Именно поэтому вопрос "если этот язык так хорош, то почему автор сам его не использует?" так и вертится у меня на языке.
Здравствуйте, AndreiF, Вы писали:
AF>Здравствуйте, FR, Вы писали:
AF>Раскрутка и использование gcc в качестве back-end никак друг друга не исключают. Более того — они даже могли бы выгодно друг друга дополнять. Именно поэтому вопрос "если этот язык так хорош, то почему автор сам его не использует?" так и вертится у меня на языке.
Откуда ты взял что автор его не использует?
Весь RTL D написан на D. Кроме того на D уже переписан DMDScript:
Why is the D front end written in C++ rather than D?
The front end is in C++ in order to interface to the existing gcc and dmd back ends. It's also meant to be easily interfaced to other existing back ends, which are likely written in C++. The D implementation of DMDScript, which performs better than the C++ version, shows that there is no problem writing a professional quality compiler in 100% D.
Why aren't all Digital Mars programs translated to D?
There is little benefit to translating a complex, debugged, working application from one language to another. But new Digital Mars apps are implemented in D.
Здравствуйте, VladD2, Вы писали:
АХ>>Итак, 5% хотя бы I/O (про ядро непонятно) написаны на asm + C++. Немного, но тем не менее.
VD>Ты явно неверно интерпретируещь эти слова. Слова "5% of the trusted code" означают, что 5% небезопасного кода (коду которому приходится доверять) написано на С++ и ассемблере. Это значит, что 95% небезопасного кода написано на C# (с использованием unsafe-блока).
VD>Эти слова ничего не говорят об отностельном объеме небезопасного кода. Можно только с уверенгстью утверждать, что на момент написания этих слов код с небезопасными файлами занимал 561 файл.
ИМХО, твой английский здесь тебя подвёл. Обычно слово trusted (trusted code, trusted zone) означают нечто, которому МОЖНО без опасений доверять, а не ПРИХОДИТСЯ надеяться, что там всё нормально.
Сергей Туленцев wrote: > VD>Ты явно неверно интерпретируещь эти слова. Слова "5% of the trusted > code" означают, что 5% небезопасного кода (коду которому приходится > доверять) написано на С++ и ассемблере. Это значит, что 95% > небезопасного кода написано на C# (с использованием unsafe-блока). > > ИМХО, твой английский здесь тебя подвёл. Обычно слово trusted (trusted > code, trusted zone) означают нечто, которому МОЖНО без опасений > доверять, а не ПРИХОДИТСЯ надеяться, что там всё нормально.
Кажется, в разработке отказоустойчивых систем как раз терминология
такая, как использует VladD2 — есть trusted часть, в которую мы верим,
так как отлаживали. И остальное, которому мы не верим, поэтому
используем trusted часть для его контроля. То есть мы знаем, что ничего
плохого не должно случиться, источник этого — внедрённые проверки... или
"trust".