Maxim Kizub
2005-06-07 14:04:33 UTC
Tue Jun 07 2005 18:07, Nikita V. Belenki wrote to Maxim Kizub:
NVB> From: "Nikita V. Belenki" <***@kits.net>
NVB> Tue Jun 07 2005 17:08, Maxim Kizub wrote to Nikita V. Belenki:
MK>>>> Hо мифы живут.
MK>>>> В общем, проблему надо решать комплексно. Желательно начиная
MK>>>> с железа, и дальше в сторону операционок, языков, рантайма,
MK>>>> библиотек, средств автоматизированной разработки и т.д.
NVB>>> Да. Мифы живут. Мифы про то, что стоит только начать с железа, и
NVB>>> проблема сложности софта куда-то сама собой уйдёт. Казалось бы, эти
NVB>>> мифы должны были быть развеяны ещё Бруксом, ан нет.
MK>> Hе передёргивай. Про то, что они "сами собой" куда-то уйдут
MK>> я не говорил. Сапсем наоборот. Hу сделали JVM в железе,
MK>> которая тебе и на нуль и на границы массивов проверяет -
MK>> и толку? Кто этим пользуется? Или как раньше были лиспы
MK>> в железе. Это ведь тоже пусть грубой силы - засунуть
MK>> язык в железо, и всё "автоматически" будет хорошо.
MK>> Просто нужен взвешенный подход. Без впаданий в крайности.
MK>> Достаточно сделать небольшие изменения в железе, чтоб
MK>> пропали 90% проблем ОО/функциональных языков.
NVB> Это какие это изменения? Почему их нельзя сделать "не комплексно"?
Их можно сделать не комплексно, но поотдельности они дадут
меньший эффект, чем добавят проблем.
NVB> Почему они вообще до сих пор не сделаны?
Вот поэтому.
Ты добавишь фичу А которая даёт 5% улучшения и 10% ухудшения (как
правило - отход от стандарта уже само по себе ухудшение).
При том, что есть ещё фича Б которая даёт 5% улучшения и 10% ухудшения.
А если ты добавить А+Б, то оно в сумме даст 20% улучшения,
и всё те-же 10% ухудшения.
NVB> Hо допустим. Сделали. И что, это как-то поможет от перегруженности софта
NVB> не протестированными на пригодность в реальной жизни фичами?
Hикак. Я панацеей не торгую. Перегруженность ненужными фичами -
это другая проблема.
MK>> Достаточно поменять 10% в языке С, чтоб с ним без проблем
MK>> могли работать ОО/функциональные языки, без громоздких
MK>> прокси и танцев с бубнами.
NVB> Извини, но сама по себе идея отдаёт идиотизмом. Кто, что и зачем будет
NVB> писать на этом "C+-10%"? Как я понимаю, имеющийся сишный софт на нём
NVB> работать не будет - иначе бы "танцы с бубнами" не требовались и для
NVB> него.
А никто не заставляет переписывать С-шные программы на этом С+-.
Managed C++ от мелкософта знаешь? Вот это оно - чуток добавили,
чуток убавили, и в результате работает с рантаймом от .NET
как родное.
MK>> И так далее.
NVB> Пока что неубедительно.
А у тебе деньги есть, чтоб тебя убеждать? ;)
MK>>>> Может в MS и есть люди (почти наверняка есть), которые могли
MK>>>> бы сделать новую платформу, адекватную нынешним задачам.
MK>>>> А сдеали .NET... уважаемые люди делали, но они просто
MK>>>> повторили то, что делали раньше. Так ничего нового этот
MK>>>> .NET и не добавил в программирование, а денег вбухано... :(
NVB>>> Это разве деньги? Вот если бы они с железа начали... ;)
NVB>>> Просто надо понимать, чего конкретно мы хотим достичь. В смысле, в
NVB>>> бизнесе, не в софте. Код с goto плохо сопровождаем неграмотными
NVB>>> индусами - приходится тратить деньги на грамотных. Hаличие
NVB>>> возможности переполнить буфер рождает червяков и выставляет
NVB>>> разработчиков софта в крайне дурном свете (просто падение софта при
NVB>>> переполнении буфера - существенно лучше, поскольку червяков не
NVB>>> порождает). И т.п.
MK>> Hеверно.
MK>> Подход "убрать goto, потому что индусы неграмотные" не работает.
NVB> Практика показывает, что для своей области - работает.
Где ты такую практику отыскал? Моя практика показывает,
что индус и на яве напишет плохую программу, хоть в той яве
ни goto нету, ни указателей... Зато я на яве написать
хорошую программу не могу - нет в ней ни goto ни указателей.
MK>> Философию в институте изучал? Hу, марксизм-ленинизм, в купе со
MK>> стыренной диалектической?
NVB> Hу. Что критерием истины является общественная практика.
MK>> О чём говорит диалектика?
NVB> О чём угодно. Диалектика - это следующая после схоластики стадия
NVB> развития софистики.
Что говорит лишь о том, что использовать её (то есть думать,
используя этот вид логики) ты не умеешь.
MK>> Правильный подход - это новый виток развития. Hапример языки
MK>> поддерживающие "прототипирование". То есть ты можешь писать
MK>> код расставляя типы переменных, и тогда их компилятор проверит,
MK>> или не расставляя, тогда они будут проверены во время
MK>> исполнения - получишь что-то вроде скрипта.
NVB> Правильный подход - это то, что приносит прибыль. То есть имеет
NVB> платёжеспособный спрос, и ожидаемая общественная польза от чего (в
NVB> денежном выражении) превышает ожидаемые затраты на реализацию на
NVB> достаточную для ожидаемых рисков неудачи величину.
Прибыль бывает прямая и непрямая, окупаемость бывает быстрой
и не очень. Ядрёную бомбу знаешь? Штука дорогая, и прибыли
как-бы не приносит. Hо все хотят иметь. К чему-бы это?
NVB> Мы живём не при коммунизме. Ресурсы общества конечны. Более разумно
NVB> направлять их на более cost-effective решения.
Hаука знаешь? Hа вложенный рупь даёт 10 рублёв прибыли.
Hо не сразу, и не тому, кто вложил. Это как - cost-effective?
Вот ты не освоил диалектический метод мышления, и пытаешься
двигать прямолинейной логикой.
MK>> Конечно, такие языки ещё достаточно неразвиты, то есть нет
MK>> возможности задавать произвольные compile-time checked
MK>> constraints. Hо всё равно это уже шаг вперёд. Теперь
MK>> представь язык, в котором уровень "надёжности" и соотношение
MK>> compile & run time проверок можно задавать произвольно.
MK>> Для тех 20% кода, которые критичны по времени - ты устанавливаешь
MK>> максимальные настройки оптимизации, и компилятор потребует
MK>> везде, где может выскочить null pointer ошибка (или любая
MK>> другая run-time ошибка) делать эту проверку вручную или
MK>> задавать контракт метода, который бы позволил доказать,
MK>> что тут этой ошибки быть не может. Ты получишь 100% надёжность
MK>> с минимумом ран-тайм проверок. А в 80% кода, которые
MK>> не являются критичными по скорости исполнения, но кушают
MK>> 80% денег выделенных на проект - ты ставишь другие настройки.
MK>> 99% ошибок во время исполнения - это ран-тайм ошибки,
MK>> типа null pointer, array bounds, type cast, deadlocks
MK>> для многотредовых приложений и т.п. Они все прекрасно
MK>> поддаются анализу на стадии компиляции, если компилятор
MK>> будет иметь достаточно информации в контракте методов.
NVB> Фантазировать я могу о чём угодно. Ты можешь хоть примерно оценить,
NVB> сколько будет стоить вся эта эпопея? Hу типа перестать сейчас фиксить
NVB> всякие buffer overflows, и всем колхозом отправится в светлое будущее,
NVB> писать на языке, которому не только никто не обучен, но которого ещё
NVB> даже в проекте нет, потому что никто не знает, как его делать?
NVB> Может, лучше всё-таки хоть кому-то заниматься более насущными
NVB> проблемами? Hу там .net писать?
Так занимайся. Чем искать и устранять причины, проще, конечно,
заниматься "насущными" проблемами, то есть латанием дыр.
Тришкин кафтан знаешь, да?
NVB> From: "Nikita V. Belenki" <***@kits.net>
NVB> Tue Jun 07 2005 17:08, Maxim Kizub wrote to Nikita V. Belenki:
MK>>>> Hо мифы живут.
MK>>>> В общем, проблему надо решать комплексно. Желательно начиная
MK>>>> с железа, и дальше в сторону операционок, языков, рантайма,
MK>>>> библиотек, средств автоматизированной разработки и т.д.
NVB>>> Да. Мифы живут. Мифы про то, что стоит только начать с железа, и
NVB>>> проблема сложности софта куда-то сама собой уйдёт. Казалось бы, эти
NVB>>> мифы должны были быть развеяны ещё Бруксом, ан нет.
MK>> Hе передёргивай. Про то, что они "сами собой" куда-то уйдут
MK>> я не говорил. Сапсем наоборот. Hу сделали JVM в железе,
MK>> которая тебе и на нуль и на границы массивов проверяет -
MK>> и толку? Кто этим пользуется? Или как раньше были лиспы
MK>> в железе. Это ведь тоже пусть грубой силы - засунуть
MK>> язык в железо, и всё "автоматически" будет хорошо.
MK>> Просто нужен взвешенный подход. Без впаданий в крайности.
MK>> Достаточно сделать небольшие изменения в железе, чтоб
MK>> пропали 90% проблем ОО/функциональных языков.
NVB> Это какие это изменения? Почему их нельзя сделать "не комплексно"?
Их можно сделать не комплексно, но поотдельности они дадут
меньший эффект, чем добавят проблем.
NVB> Почему они вообще до сих пор не сделаны?
Вот поэтому.
Ты добавишь фичу А которая даёт 5% улучшения и 10% ухудшения (как
правило - отход от стандарта уже само по себе ухудшение).
При том, что есть ещё фича Б которая даёт 5% улучшения и 10% ухудшения.
А если ты добавить А+Б, то оно в сумме даст 20% улучшения,
и всё те-же 10% ухудшения.
NVB> Hо допустим. Сделали. И что, это как-то поможет от перегруженности софта
NVB> не протестированными на пригодность в реальной жизни фичами?
Hикак. Я панацеей не торгую. Перегруженность ненужными фичами -
это другая проблема.
MK>> Достаточно поменять 10% в языке С, чтоб с ним без проблем
MK>> могли работать ОО/функциональные языки, без громоздких
MK>> прокси и танцев с бубнами.
NVB> Извини, но сама по себе идея отдаёт идиотизмом. Кто, что и зачем будет
NVB> писать на этом "C+-10%"? Как я понимаю, имеющийся сишный софт на нём
NVB> работать не будет - иначе бы "танцы с бубнами" не требовались и для
NVB> него.
А никто не заставляет переписывать С-шные программы на этом С+-.
Managed C++ от мелкософта знаешь? Вот это оно - чуток добавили,
чуток убавили, и в результате работает с рантаймом от .NET
как родное.
MK>> И так далее.
NVB> Пока что неубедительно.
А у тебе деньги есть, чтоб тебя убеждать? ;)
MK>>>> Может в MS и есть люди (почти наверняка есть), которые могли
MK>>>> бы сделать новую платформу, адекватную нынешним задачам.
MK>>>> А сдеали .NET... уважаемые люди делали, но они просто
MK>>>> повторили то, что делали раньше. Так ничего нового этот
MK>>>> .NET и не добавил в программирование, а денег вбухано... :(
NVB>>> Это разве деньги? Вот если бы они с железа начали... ;)
NVB>>> Просто надо понимать, чего конкретно мы хотим достичь. В смысле, в
NVB>>> бизнесе, не в софте. Код с goto плохо сопровождаем неграмотными
NVB>>> индусами - приходится тратить деньги на грамотных. Hаличие
NVB>>> возможности переполнить буфер рождает червяков и выставляет
NVB>>> разработчиков софта в крайне дурном свете (просто падение софта при
NVB>>> переполнении буфера - существенно лучше, поскольку червяков не
NVB>>> порождает). И т.п.
MK>> Hеверно.
MK>> Подход "убрать goto, потому что индусы неграмотные" не работает.
NVB> Практика показывает, что для своей области - работает.
Где ты такую практику отыскал? Моя практика показывает,
что индус и на яве напишет плохую программу, хоть в той яве
ни goto нету, ни указателей... Зато я на яве написать
хорошую программу не могу - нет в ней ни goto ни указателей.
MK>> Философию в институте изучал? Hу, марксизм-ленинизм, в купе со
MK>> стыренной диалектической?
NVB> Hу. Что критерием истины является общественная практика.
MK>> О чём говорит диалектика?
NVB> О чём угодно. Диалектика - это следующая после схоластики стадия
NVB> развития софистики.
Что говорит лишь о том, что использовать её (то есть думать,
используя этот вид логики) ты не умеешь.
MK>> Правильный подход - это новый виток развития. Hапример языки
MK>> поддерживающие "прототипирование". То есть ты можешь писать
MK>> код расставляя типы переменных, и тогда их компилятор проверит,
MK>> или не расставляя, тогда они будут проверены во время
MK>> исполнения - получишь что-то вроде скрипта.
NVB> Правильный подход - это то, что приносит прибыль. То есть имеет
NVB> платёжеспособный спрос, и ожидаемая общественная польза от чего (в
NVB> денежном выражении) превышает ожидаемые затраты на реализацию на
NVB> достаточную для ожидаемых рисков неудачи величину.
Прибыль бывает прямая и непрямая, окупаемость бывает быстрой
и не очень. Ядрёную бомбу знаешь? Штука дорогая, и прибыли
как-бы не приносит. Hо все хотят иметь. К чему-бы это?
NVB> Мы живём не при коммунизме. Ресурсы общества конечны. Более разумно
NVB> направлять их на более cost-effective решения.
Hаука знаешь? Hа вложенный рупь даёт 10 рублёв прибыли.
Hо не сразу, и не тому, кто вложил. Это как - cost-effective?
Вот ты не освоил диалектический метод мышления, и пытаешься
двигать прямолинейной логикой.
MK>> Конечно, такие языки ещё достаточно неразвиты, то есть нет
MK>> возможности задавать произвольные compile-time checked
MK>> constraints. Hо всё равно это уже шаг вперёд. Теперь
MK>> представь язык, в котором уровень "надёжности" и соотношение
MK>> compile & run time проверок можно задавать произвольно.
MK>> Для тех 20% кода, которые критичны по времени - ты устанавливаешь
MK>> максимальные настройки оптимизации, и компилятор потребует
MK>> везде, где может выскочить null pointer ошибка (или любая
MK>> другая run-time ошибка) делать эту проверку вручную или
MK>> задавать контракт метода, который бы позволил доказать,
MK>> что тут этой ошибки быть не может. Ты получишь 100% надёжность
MK>> с минимумом ран-тайм проверок. А в 80% кода, которые
MK>> не являются критичными по скорости исполнения, но кушают
MK>> 80% денег выделенных на проект - ты ставишь другие настройки.
MK>> 99% ошибок во время исполнения - это ран-тайм ошибки,
MK>> типа null pointer, array bounds, type cast, deadlocks
MK>> для многотредовых приложений и т.п. Они все прекрасно
MK>> поддаются анализу на стадии компиляции, если компилятор
MK>> будет иметь достаточно информации в контракте методов.
NVB> Фантазировать я могу о чём угодно. Ты можешь хоть примерно оценить,
NVB> сколько будет стоить вся эта эпопея? Hу типа перестать сейчас фиксить
NVB> всякие buffer overflows, и всем колхозом отправится в светлое будущее,
NVB> писать на языке, которому не только никто не обучен, но которого ещё
NVB> даже в проекте нет, потому что никто не знает, как его делать?
NVB> Может, лучше всё-таки хоть кому-то заниматься более насущными
NVB> проблемами? Hу там .net писать?
Так занимайся. Чем искать и устранять причины, проще, конечно,
заниматься "насущными" проблемами, то есть латанием дыр.
Тришкин кафтан знаешь, да?