The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Выпуск глобальной децентрализованной файловой системы IPFS 0.8"
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Заметили полезную информацию ? Пожалуйста добавьте в FAQ на WIKI.
. "Выпуск глобальной децентрализованной файловой системы IPFS 0..." +2 +/
Сообщение от Ordu (ok), 26-Фев-21, 18:05 
>> Что значит "не проблема CS"? А что тогда "проблема CS"? И, в
>> смысле, когда Кнут излагал разные способы менеджить память, и рассказывал как
>> ни один из этих способов не решает проблему на 100%, это
>> была не CS, а так, лирическое отступление?
> Интересно, следуя по Кнуту, я должен Тьюринга считать дураком за его "бесконечную"
> ленту? А теперь представьте, что есть "бесконечная" память, будут у вас
> проблемы с "менеджить память"?

Бесконечная лента -- это математическая абстракция. Как и любая абстракция она имеет ограниченную полезность. Полезность! Но ограниченную. Не надо некритично доверять всему, что тебе говорит какая-то там абстракция, ты же инженер, ты должен это понимать лучше любого учёного.

> Сначала все свалим в "кучу", а потом будем придумывать 1000500 способов разгребания
> этой кучи, создавая из этого проблемы. Сущность человека такова.

Да-да, я абсолютно согласен. Но это философия, а не информатика. ;) Информатика будет придумывать 100500 способов разгребания, а не рассуждать о сущности человека.

>> mm де факто автоматизируется. Может ли он быть автоматизирован или не может
>> уже не важно: он _де_факто_ автоматизируется, программист не просит пользователя просматривать
>> эпизодически кучу, и решать что там нужно, а что нет. А
>> это значит, что mm находится в области интересов CS. В том
>> числе и проблема "текучести кучи" находится в области интересов CS.
> Если программист не знает оценки "пространственной" сложности собственных алгоритмов,
> то что тут сказать? Оценка сложности - обязательна!!!

Это теория которая оторвана от практики. Это абстракция, полезность которой ограничена. Для работы с проблемами mm её недостаточно, тебе нужна другая абстракция.

> Сами говорите, что обнуляете, значить нужно условие проверки на обнуленность одного из
> указателей и в дополнение еще и обнулить второй указатель.

А как же инкапсуляция? Эти два указателя лежат в разных объектах, и из метода одного объекта добраться сначала до другого, а потом до указателя в нём, чтобы проверить? А как же инкапсуляция? Если ты забьёшь на инкапсуляцию, то к 10k SLOC ты не сможешь вообще ничего доказать про свою программу, не только отсутствия багов.

> В голове все может случиться, и это не проблема CS!

Это проблема CS. CS обслуживает IT. IT -- это технология. Основное отличие технологии от кустарщины -- это способность гарантированно получать воспроизводимый результат. "Всё может случится", "пути господни неисповедимы" -- это не путь технологий, не путь инженера, не путь творца. Случаться должно только то, что задумано, и не должно случаться ничего, что не задумано.

> А доказывается
> легко, альтернативным (эффективным) алгоритмом. Вот приведу цитату из вики:
> """
> Если ссылающейся на объект переменной будет присвоено новое значение и на объект
> нет других ссылок, он становится программно недоступным, но продолжает занимать память,
> поскольку команда его удаления не вызывалась. Такая ситуация и называется утечкой
> памяти (англ. memory leak).
> """
> И это все разве проблемы CS? Что только не придумали, чтобы избавить
> "программиста" от непосредственной работы с памятью,

Да. Это проблемы CS. Задача CS дать программисту надёжный способ работы с памятью. Если можно этот надёжный способ выстроить поверх C'шной адресной арифметики, то пускай он будет выстроен поверх C'шной адресной арифметики. Если он не может быть выстроен поверх C'шной адресной арифметики, значит надо выстроить его поверх чего-то ещё.

> и по мне это не правильно.

Это не правильно. Это любовно и прельстиво для программиста, потому как он может быть большим специалистом и носителем сакрального знания, и получать много денег за это. Но проблема в том, что технологии так не работают. Технологии не могут полагаться на людей, потому как люди непредсказуемы, а технологиям нужен предсказуемый результат. Именно поэтому я и говорю, что сегодня программирование -- это кустарное ремесленничество, а не технология.

> Я лучше буду "верить" в "бесконечную" ленту Тьюринга, и никаких проблем.

Это не ответ, а уход от ответа.

>> Проблема разрешима в некоторых частных случаях. Скажем, если тебе удастся обойтись стеком
>> и не использовать кучу, то проблема решаема.
> Какая проблема?????????

Проблема утечек памяти.

>[оверквотинг удален]
>> проблема решена. Можно эти ограничения ещё ослабить, и тем не менее
>> оставить локальность доказательства корректности -- тебе не придётся анализировать весь
>> код заново, после каждого патча на две строчки. Но как только
>> ты через эти ограничения перешагиваешь, внезапно оказывается, что доказательство теряет
>> локальность, и чтобы доказать, что вот этот вот free(p) не приводит
>> к double-free, тебе придётся строить рассуждения о том, как ведут себя
>> все 100k строк твоей программы, что никакой из возможных входов в
>> программу не приводит к тому, что этот free(p) освобождает кусок памяти
>> повторно.
> Про отладку не слышали?

Отладка -- это уровня "мамойклянус тестировал". Отладка -- это на тот случай, когда у тебя мозгов не хватает доказать корректность своей программы, и поэтому ты проводишь исследование типа "что же я там такого понаписал". Кстати, я в расте не использую дебуггер. Я могу рассуждать о коде достаточно свободно, так чтобы выяснять где проблема силой мысли, а не как-то там ещё.

> Говорю же проблема в головах, а не в CS. И всякие сборщики
> мусора, умные ссылки и всякая муть связанная с mm. решают, точнее
> пытаются решить, не проблему CS, а проблему тех "программистов", которые не
> представляют как "правильно" работать с памятью и как писать алгоритмы "эффективные"
> по памяти.

Угу. А ты носитель сакрального знания, и именно поэтому ты не отвечаешь на вопросы "как ты избавляешь программу от багов": это же сакральное знание, которым нельзя делиться с непосвящёнными, так? Так вот я говорю тебе: вся история технологий показывает, что сакральные знания уступают открытым. Где все секреты производства непобедимого оружия традиционных кузнецов? Сегодня сталь льют промышленно, получая очень точно выверенные сплавы, которые лучше всего того, что традиционные кузнецы могли делать. А на случай, когда есть сомнения (скажем с дамасской сталью), современные технологии могут посмотреть, понять в чём дело, и сделать то же самое, но в промышленном масштабе. Это вообще задача прикладной науки -- создавать и обслуживать технологии. В том числе и готовить инженеров, владеющих технологиями -- это тоже задача науки.

То же самое будет и с программированием. Бизнесу не нужны непредсказуемые ремесленники, он работает с ними только от безысходности. Бизнесу нужны предсказуемые технологии. И CS активно работает над тем, чтобы сделать IT предсказуемым и воспроизводимым.

Ответить | Правка | Наверх | Cообщить модератору

Оглавление
Выпуск глобальной децентрализованной файловой системы IPFS 0.8, opennews, 24-Фев-21, 18:27  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру