Здравствуйте, GlebZ, Вы писали:
GZ>Специально подчеркнул. Уже давно настали времена, когда софтварно большинство вещей делается намного дешевле (и быстрей если брать отношение стоимости и производительности) чем на аппаратном уровне. Это стало понятно, еще когда была бадяга между пентюхом и risk процами.
Ага. Поэтому х86, несмотря на свою неимоверную кривость, до сих пор поддерживается на аппаратном уровне.
Здравствуйте, Сергей Губанов, Вы писали:
СГ>Просто GC+runtime реализуются непосредственно поверх железа, а уже все остальное (включая операционку) пишется на языке высокого уровня. Например, именно так и было сделано в операционке Aos BlueBottle
Здравствуйте, Сергей Губанов, Вы писали:
СГ>...Бортовой компьютер (получивший, кстати, имя OLGA = Oberon Language Goes Airborne) оказался настолько компактным благодаря компактности и эффективности получившихся программ (использовалось подмножество языка Оберон), что вес машины удалось резко снизить по сравнению с предыдущими версиями конструкции — всего до 15 кг. (Потомки компьютера OLGA используются в компании weControl.) СГ>[/q]
Ты действительно уверен, что это из-за Оберона? Это к другому спору "если би Пушкин родился в Германии, стал бы он писать стихи".
Здравствуйте, Сергей Губанов, Вы писали:
СГ>Написать три строчки кода: СГ>
СГ> NEW(tmp, LEN(a) + 100);
СГ> FOR i := 0 TO LEN(tmp)-1 DO tmp[i] := a[i] END;
СГ> a := tmp;
СГ>
СГ>это что теперь проблемой называется????
Да. Сравни с
a.push_back(123);
или если нужно добюавить не один элемент в хвост а именно 100 то
a.resize(a.size()+100);
отдельной функции нет ибо нужно очень редко.
А теперь представь это в разных сочетаниях в 1000 мест...
СГ>А я то думал, что проблема, это, например, придумать хорошую эвристику для NP-задачи...
А зачем ее придумывать? С вероятность 99% она уже придумана надо только потрясти гугль. А если и нет то раз в несколько лет можно и попридумывать...
Просто у современных программистов другие проблемы... и ты похоже это никане не можешь/не хочешь понять.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, Сергей Губанов, Вы писали:
P>>Ты действительно уверен, что это из-за Оберона? СГ>Да.
Хотя это уже становится не смешно. Это уже становится интересно. Давай ты попробуешь привести немного другую аргументацию. Тогда, вероятно, когда ты в очередной раз повторишь "Oberon — системный язык", я скажу "Ааааа... Понял!" .
Здравствуйте, WolfHound, Вы писали:
WH>Здравствуйте, Сергей Губанов, Вы писали:
WH>Да. Сравни с WH>
WH>a.push_back(123);
WH>
WH>или если нужно добюавить не один элемент в хвост а именно 100 то WH>
WH>a.resize(a.size()+100);
WH>
WH>отдельной функции нет ибо нужно очень редко.
WH>А теперь представь это в разных сочетаниях в 1000 мест...
СГ>>А я то думал, что проблема, это, например, придумать хорошую эвристику для NP-задачи... WH>А зачем ее придумывать? С вероятность 99% она уже придумана надо только потрясти гугль. А если и нет то раз в несколько лет можно и попридумывать... WH>Просто у современных программистов другие проблемы... и ты похоже это никане не можешь/не хочешь понять.
В точности также все это можно писать на обероноподобных языках:
a.PushBack(123);
a.Resize(a.length + 100);
так что хватит Вам выдумывать никогда не существовавших проблем.
Здравствуйте, Poudy, Вы писали:
P>Здравствуйте, Сергей Губанов, Вы писали:
P>>>Ты действительно уверен, что это из-за Оберона? СГ>>Да. P>Хотя это уже становится не смешно. Это уже становится интересно. Давай ты попробуешь привести немного другую аргументацию. Тогда, вероятно, когда ты в очередной раз повторишь "Oberon — системный язык", я скажу "Ааааа... Понял!" .
...Компилятор для Oberon’а был реализован для процессоров семейства NS32000 и был встроен в операционную среду Oberon [GuW89]. Этот компилятор требует менее 50 Кбайт памяти, состоит из 6 модулей, общим размером около 4000 строк исходного текста и сам себя компилирует примерно за 15 секунд на рабочей станции с 25 МГц процессором типа NS32532...
Здравствуйте, Сергей Губанов, Вы писали:
WH>>Типизировано? Или как всегда полиморфно? СГ>Как пожелаете.
А типизированно как всегда ручками для каждого типа? Если да то в лес такое решение.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
СГ>...Компилятор для Oberon’а был реализован для процессоров семейства NS32000 и был встроен в операционную среду Oberon [GuW89]. Этот компилятор требует менее 50 Кбайт памяти, состоит из 6 модулей, общим размером около 4000 строк исходного текста и сам себя компилирует примерно за 15 секунд на рабочей станции с 25 МГц процессором типа NS32532...
И? А что мешает на мощьной станции откомпилировать и оптимизировать по самые не балуйся программу, а потом залить ее в железку?
ЗЫ Я не верю что в 4000 строк мог поместится оптимизирующий компилятор. А отсутствие оптимизации это как ни крути приговор.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
СГ>...Компилятор для Oberon’а был реализован для процессоров семейства NS32000 и был встроен в операционную среду Oberon [GuW89]. Этот компилятор требует менее 50 Кбайт памяти, состоит из 6 модулей, общим размером около 4000 строк исходного текста и сам себя компилирует примерно за 15 секунд на рабочей станции с 25 МГц процессором типа NS32532...
И что? Сколько времени и сил отнимает разработка приложений, если в распоряжении разработчика есть только голый компилятор, даже если он так мал? Этот вопрос уже обсуждался не раз. Не вижу смысла к нему возвращаться. Скажу только, что компилятор — только составная часть системы программирования.
Если следовать по пути авторов тех статей, то надо выбросить миллионы строк реально работающих программ и перейти к "правильному программированию". Но реалии таковы, что никто этого не позволит.
В реальных проектах (в НИИ, банках), код работает десятки лет. Переходя на новые технологии, с этим обязаны считаться, иначе здорово возрастают затраты на создание нового продукта.
Вирт стоит выше всего этого, он уже может позволить себе фантазировать.
Здравствуйте, WolfHound, Вы писали:
СГ>>...Компилятор для Oberon’а был реализован для процессоров семейства NS32000 и был встроен в операционную среду Oberon [GuW89]. Этот компилятор требует менее 50 Кбайт памяти, состоит из 6 модулей, общим размером около 4000 строк исходного текста и сам себя компилирует примерно за 15 секунд на рабочей станции с 25 МГц процессором типа NS32532... СГ>>[/q] WH>И? А что мешает на мощьной станции откомпилировать и оптимизировать по самые не балуйся программу, а потом залить ее в железку?
Я что-то не понял Вашего вопроса. В какую железку?
Oberon, о котором идет речь, — операционная система для рабочей станции Ceres.
Компилятор — часть этой операционной системы.
То, вся операционная система занимает 200K, из них 50K — компилятор, это достоинство дизайна системы.
Что Вы хотели сказать — осталось загадкой.
WH>ЗЫ Я не верю что в 4000 строк мог поместится оптимизирующий компилятор. А отсутствие оптимизации это как ни крути приговор.
Опять же, приговор — чему, кому?
Оберону, что ли? Так компиляторы Модулы-2 и Оберона-2 лучше оптимизируют код, чем компиляторы Си++. (Впрочем, это неудивительно. Причина названа в "красном драконе" Ахо, Ульмана и Сети. Почитайте.)
На днях скачал из интереса старую версию компилятора XDS (для некоммерческого использования). Прогнал drystone для MS Visual C++ и XDS Modula-2.
Результат: разница была даже не в процентах. XDS "покрыл" Visual в три раза. Возможно, надо было поизощреннее выставлять ключи оптимизации для Visual C++, но ему это все равно было бы что мертвому припарки.
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
AVC пишет:
> Результат: разница была даже не в процентах. XDS "покрыл" Visual в > *три раза*. Возможно, надо было поизощреннее выставлять ключи > оптимизации для Visual C++, но ему это все равно было бы что мертвому > припарки.
ROTFL...
Тестовый пример и ключи компиляторов — *В СТУДИЮ!*
Здравствуйте, Cyberax, Вы писали:
>> Результат: разница была даже не в процентах. XDS "покрыл" Visual в >> *три раза*. Возможно, надо было поизощреннее выставлять ключи >> оптимизации для Visual C++, но ему это все равно было бы что мертвому >> припарки.
C>ROTFL... C>Тестовый пример и ключи компиляторов — *В СТУДИЮ!*
Ой, какие мы смелые!
Впрочем, это правильный подход.
Для проверки, наверное, лучше всего поступить так.
1) Скачать бесплатную версию XDS 1999 года с сайта http://www.excelsior-usa.com/xdsdlpers.html
2) В подкаталоге SAMPLES\BENCH найти файлы Dry.c и Dry.mod
3) Откомпилировать их. Ключи компиляции для Dry.mod указаны в самом файле.
Запуск компилятора: xc =m Dry.mod
Для исходника на Си можете сами выбрать ключи компиляции.
Как говорится, enjoy!
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Здравствуйте, WolfHound, Вы писали:
WH>ЗЫ Я не верю что в 4000 строк мог поместится оптимизирующий компилятор.
О-о-о... Значит ЗАЦЕПИЛО наконец-то!!!!!!!!!!!
Ну сейчас я наподдам еще, не смогу отказать себе в таком удовольствии...
Компилятор Oberon for Aos (в Aos BlueBottle, та самая в которой минимальный системный вызов в 30 раз быстрее чем в Linux), так вот тот компилятор занимает 8'667 строчек.
Можно еще сравнить размеры исходных кодов операционных систем
For a native multiprocessor operating system, Aos is small, with a
kernel of 7,210 lines of source or about 50KB of object code. For comparison,
the 4.4BSD kernel (cf. 8.1.2) consists of 58,289 lines of C code
(excluding file systems, network protocols and device drivers, which
add another 143,962 lines) [65]. Version 2.4 of the Linux kernel consists
of approximately 420,000 lines of C code (excluding drivers, file systems
and architecture-specific code, which bring the total to 2.4 million
lines) [128], and has a minimum size of around 500KB on Intel processors.
Microsoft boasts that Windows 2000 “consists of over 29 million
lines of code”, but does not say what is included in this figure, so it is
not possible to compare specifics.
Aos subsystem sizes.
Subsystem Var Const Code Lines
Kernel 18088 1296 48434 7210
Service support 164 1620 30001 2532
File system 96 1928 55462 4624
User interface 128 792 20468 2204
Network 1512 3368 62126 6200
Oberon for Aos 2396 3332 112893 8667
Total 22384 12336 329384 31437
Сергей Губанов пишет:
> WH>ЗЫ Я не верю что в 4000 строк мог поместится *оптимизирующий* > компилятор. > О-о-о... Значит *ЗАЦЕПИЛО* наконец-то!!!!!!!!!!!
Я его посмотрел. По сравнению с GCC — десткий лепет. Где в нем
планирование регистров, распараллеливание кода, учет фишек разных
архитектур, оптимизация выражений? Правильно, нету. Так как в 50Кб кода
это не вместится, даже если написать на Перле.
А простой неоптимизирующий компилятор в нейтив на С++ пишется где-то
килобайт в 20 кода (сам видел).
> Компилятор Oberon for Aos (в Aos BlueBottle, та самая в которой > минимальный системный вызов в 30 раз быстрее чем в Linux), так вот тот > компилятор занимает 8'667 строчек.
В _30_ раз быстрее Линукса? А защита памяти там есть? Ну вот...
ЗЫ: все это не тянет даже на серьезный продукт, и уж точно не тянет на
"систему, которая должна заменить С".