All streams
Search
Write a publication
Pull to refresh
291
0.4
Send message

Некто N создал и руководит(!) некоторой инфраструктурой для того, чтобы ей пользовались люди. Некто N соблюдает права людей на неприкосновенность. Некоторые люди начинают использовать инфраструктуру для противоправных и/или антиморальных действий. К некому N приходят власти страны X, ставят его в известность (на случай, если он не знал), что его инфраструктура используется для нарушения закона. Теперь он знает, что его инфраструктура используется для нарушения закона. После этого власти требуют дать им возможность, используя инфраструктуру, поймать нарушителей закона. Некто N отказывается, в связи с тем, что это нарушит права людей и создаст опасный прецендент — ведь власти могут злоупотреблять и сами использовать возможность вмешательства в инфраструктуру для нарушения прав людей. Власти страны X обвиняют N в соучастии в преступлениях, ведь он знает про преступления, но отказывается содействовать.

Прав ли N?

Собственно, сыр-бор весь из-за этого. А практическое влияние значения X на ответ (не теоретическое, а именно практическое) является маркером идеологизированности мышления.

Моё имхо — если берёшь на себя функции государства (а Паша взял) — будь готов, что другим государствам это не понравится.

Вы ещё скажите, что водомёты им не для того, чтобы мыть тротуары

Я предположил, что он сам ответит лучше меня, и задал ему этот вопрос:

size_t fread(void* buffer, size_t count, size_t elemsize, FILE* file)

{

memset(buffer, 0, 1);

return 0;

}

Гарантирует ли этот код, что все байты буфера buffer будут инициализированы?

ChatGPT:

Нет, данный код не гарантирует, что все байты буфера buffer будут инициализированы.

Функция fread из стандартной библиотеки C предназначена для чтения данных из файла в буфер. Однако в приведённом коде функция выполняет всего два действия:

  1. memset(buffer, 0, 1);: Это инициализирует только первый байт буфера значением 0.

  2. return 0;: Это возвращает 0, что указывает на то, что функция ничего не прочитала.

Проблемы этого кода:

  • Не весь буфер инициализируется: Функция memset инициализирует только первый байт буфера, а остальные байты остаются неинициализированными.

  • Возврат 0: Возвращаемое значение 0 указывает на то, что ничего не было прочитано из файла, но это не инициализирует оставшиеся байты буфера.

Таким образом, все остальные байты буфера за исключением первого могут содержать мусорные значения, если до вызова функции fread они не были явно инициализированы.

Я:

Пользователь @qw1 поинтересовался у меня: «А как он [в смысле ты — прим. я] это [факт того, что код не гарантирует присвоение всех значений] в принципе может установить, если первый байт буфера заполнен, а информацию о размере буфера он не получил.» Что мне ему написать?

ChatGPT:

Вот что можно ответить пользователю @qw1

«Действительно, без информации о размере буфера сложно точно утверждать, что весь буфер был инициализирован. Однако в данном случае анализируется сам код функции fread, где явно видно, что инициализируется только первый байт буфера. Вызов memset(buffer, 0, 1); заполняет нулём только один байт, и если ничего больше в буфере не меняется, это означает, что все остальные байты остаются неинициализированными.

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

...на устройствах, в которых закладок больше, чем транзисторов :)

А Вы не могли бы подробнее рассказать, почему?

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

Ну там хотя бы митинги не разгоняют, и на улицах чисто. Европа всё‑таки, не то, что у нас.

  1. Не должна, так как буферу не присвоено значение

  2. Не должна, так как встроенный в компилятор кодревью‑ИИ установил, что этот код не гарантирует присвоение всех значений буфера

Вся физика процесса изучена и подтверждена, чего-то нового в районе обычных элементов ждать не стоит

Раньше люди думали, что хорошо знают свойства песка, что из него стекло можно делать, витражи там, всякие бутылки. А мосты не надо. А потом оказалось, что можно сделать из песка думающий волшебный кристалл, делающий сотни триллионов вычислений в секунду (!), который считает аэродинамику для машин, которые летают (!) сами (!).

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

И, кстати, не факт, что эти новые законы откроет именно человеческий мозг.

А можно подробности? С какими проблемами столкнулись, как решили и т. п.

3422°C ведь и правда не шутки, многие металлы кипят при меньшей температуре.

Ну можно пофантазировать. Первое что пришло в голову:

fread(*out buffer, 2, 256, file);
//не путать с out *buffer

Вообще у меня стойкое ощущение, что в компиляторы в будущем должен быть встроен ИИ, хотя бы для оптимизаций и варнингов, а может и ещё чего‑нибудь. И не так уж ужасно будет недетерминированное поведение, как его малюют.

Дорого это не невозможно. Завтра откроют что‑нибудь и станет $1000.

Для интереса можно прикинуть, сколько бы стоило в 1940 году построить компьютер с мощностью 230 терафлопс. Там тоже сумма забавная бы была и что‑нибудь про «на всей Земле нет столько минералов чтобы...» и прочие «никогда» и «невозможно». А сейчас я в батлфилды играю на такой штуке.

Если у нас уйдёт на это 100 тысяч лет, это будет почти мгновенно по меркам Вселенной

«Строгое доказательство» ≠ «Эксперементальное подтверждение»

В C# для такого есть ref и out. Первый просто передаёт по ссылке, а вот второй требует и гарантирует, что значение будет присвоено:

// Модуль A

void foo(out int m);
//foo не скомпилируется,
//если есть хоть одна ветка,
//где m не присваивается значение 

// Модуль B

int main()
{
  int a;
  foo(out a);
 //a гарантированно присвоено значение

  ++a;
}

Соответственно, либо мы тащим эту штуку в c++, либо просто говорим, что больше делать вот так

int a;
foo(a);

нельзя, можно только вот так

int a = 0; 
foo(a);

даже если это не имеет смысла. Это уже пусть компилятор разбирается и оптимизирует.

Наука так не работает. Есть строгое доказательство что для любой частицы с массой невозможно перемещение со световой скоростью или быстрее. А для любой частицы без массы передвижение со скоростью света является обязательным.

Строго доказано, что электрон должен упасть на ядро атома, потому что он заряженная частица, двигающаяся с ускорением, а значит должен терять энергию. А значит существование материи из атомов невозможно. А значит существование людей, в частности Эйнштейна невозможно. А значит существование его теории тоже.

Не путайте физику и математику. В физике строгих доказательств не бывает. Есть эксперименты, каждый следующий уменьшает вероятность того, что теория неверна в пределах её применимости. Всё. Никаких абсолютов тут нет.

Внутри какой‑либо физической модели уже может быть строгое математическое доказательство чего‑либо — это так. Но это доказательство в рамках модели, внутри неё. Оно не доказывает автоматически, что данная теория применима везде.

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

Возможно жизнь не самая продвинутая и усложнённая форма материи, и есть что‑то ещё круче, чему гораздо проще заселять Вселенную. Может оно уже её заселило, может оно для нас непознаваемо, а может жизнь лишь промежуточный этап эволюции на пути к этому.

Так как сверхсветовое перемещение невозможно

Смелое заявление. То, что мы сейчас не знаем (или знаем?) как это сделать и даже собственноручно выдумали законы, которые это запрещают, не значит, что это невозможно в принципе. Просто на данном этапе развития науки, техники и нашего миропонимания эта проблема нерешаема.

Задача науки и технологий — давать возможности, а не ограничивать их.

«Я не предвижу "космических кораблей" на Луне или Марсе. Смертные должны жить и умирать на Земле или в ее атмосфере!»

Американский изобретатель Ли де Форест, 1952

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

Ну как бы и сейчас весь мир катится далеко не к дружбе‑жвачке :(

Содержание этих цитат актуально вне зависимости от их подлинности.

© Джейсон Стетхем

Information

Rating
2,121-st
Registered
Activity