Раз не важно, значит вывод из вашего коммента только что вы помножили на ноль.
Вы не объяснили, как из того, что что-то там не важно, следует, что вывод помножен на 0.
Вы сказали, что кто-то там чего-то гарантирует относительно ВО.
Я же говорю, что здесь важна вероятность, что понимание у человека будет на другом уровне, если ему придётся пройти через процедуры для получения ВО.
И требование наличия ВО повышает вероятность, что понимание у человека будет относительно вменяемое.
Прямая смысловая связка, никак не связанная ни с тем, что там кто-то гарантирует, ни даже с тем, правда ли то, что этот кто-то что-то там гарантирует или нет.
Что лишает смысла все 2к подводки к нему.
Это — не подводка, это — аргументация. Потому что авторитетов не существует, и поэтому необходимо аргументировать.
РАЕН гарантирует, что не только ВО, но и научные степени ничего не меняют в принципе.
Здесь не так важно, кто там чего гарантирует.
Важно, что для того, чтобы получить ВО, необходимо пройти через определённые длительные процедуры. А прохождение через них сильно повышает вероятность, что понимание у человека, в результате, будет совсем на другом уровне.
Вот у меня 22+ опыта в IT сфере, могу писать на 17 языках, и много чего ещё...
Что-то меня здесь насторожило.
Опыта - как у 10 сеньоров.
Смотрю - у вас статьи есть, решил почитать. С таким-то опытом человек, 17 языков, опыта на 10 сеньоров...
В статье "Сильный ИИ. Элира1" вам в комментариях объясняют простые вещи, а вы понять не можете. Пикселей — всего 360 000, а символов — 1.5 миллиона, и вы рассказываете, что в этих условиях ChatGPT распознаёт все символы оптически, потому что формат —векторный, а не потому что там текст прямым текстом записан, хоть и слегка сжат компрессором, и поэтому там распознавать нечего, надо только разжать декомпрессором текст назад из сжатого вида.
Установите под Linux утилиту Midnight Commander, возьмите свой pdf-файл и посмотрите его, можно прямо запустить mcview VOINA_I_MIR_1_2.pdf.
Или вы хотите сказать, что в утилиту mcview тоже OCR-распознавалка встроена?
Утверждаете, что в 20 МБайтный pdf влезет 1 миллиард символов. Возьмите 1 ГБайт текста (1 миллиард символов) и сожмите любым архиватором. Получится ли у вас 20 МБайт (сжатие в 50 раз)?
Я достал чистый текст из вашего файла VOINA_I_MIR_1_2.pdf утилитой pdf2txt (получилось, где-то, 2.7 МБайта) и сжал с максимальным сжатием утилитами rar и xz. Утилита rar сжала в 4.7 раза, до 575 КБайт, xz — в 5.2 раза, до 520 КБайт.
Вот на этой странице есть текстовые файлы для проверки архиваторов, один файл на 100 МБайт, другой — как раз, на 1 ГБайт. Также там есть описание результатов тестирования на этих файлах различных компрессоров.
Я скачал файлы оттуда и также сжал их rar'ом и xz'ом на максимальной компрессии.
100 МБайтный файл rar сжал в 3.4 раза, xz — в 4 раза. 1 ГБайтный файл rar сжал в 3.9 раза, xz — в 4.7 раза, до 212 МБайт. Не до 20 МБайт, а только до 212 МБайт! На максимальной компрессии.
В 50 раз не повторяющийся текст вы не сожмёте. Самый лучший в мире компрессор тот 1 ГБайтный файл чуть менее, чем в 7 раз сжимает.
А, по-вашему, получается, что можно текст в pdf-файле хранить в векторном виде — лучше самого лучшего компрессора сжимает, 1 ГБайт — в 20 МБайт. Чудеса, да и только.
И, главное, что больше всего поражает, вы остаётесь при своём мнении, то есть, не понимаете, что люди хотят вам сказать, в чём тут подвох, хотя тут и понимать-то особо нечего. Но факт остаётся фактом, приходится принять, что так бывает.
Не зря меня насторожило "могу писать на 17 языках". Не уверен, что такой уровень понимания, который вы продемонстрировали в той статье и потом в комментариях к ней, даже до джуна дотягивает.
А люди, смотрю, вам здесь на слово верят.
Выходит, требование иметь хотя бы незаконченное ВО не лишено смысла. Хоть какая-то гарантия от таких случаев.
Все нормальные агрегатные типы, вроде struct и union, но кроме массива, позволяют инициализацию переменной значением другой переменной того же типа, откуда сразу следует возможность передачи по значению в функцию и возврата из неё также по значению, потому что передача и возврат по значению — суть инициализация.
Все нормальные агрегатные типы, кроме массивов, позволяют присваивание переменной значения другой переменной такого же типа.
Массив же нельзя инициализировать другим массивом того же типа, и нельзя одному массиву присвоить значение массива другого типа.
При этом существует "особо специальный массив", которым массив проинициализировать всё-таки можно, — строковый литерал.
Проинициализировать можно, а присвоить уже нельзя.
Приводится к указателю на первый элемент в подавляющем большинстве случаев.
Само по себе это не проблема, проблемой является слишком большой набор случаев.
Приводится же функция неявно к указателю на такую функцию? Приводится же лямбда без захвата неявно к указателю на функцию?
Факт того, что неявное приведение в выражении допускается сколько угодно раз, а также, что разыменование даёт lvalue, позволяет писать:
В 16-ой строке лямбда инициализируется значением другой лямбды. В 19-ой строке одна лямбда присваивается другой.
В 25-ой строке лямбда передаётся в функцию fun0 по значению. В 26-ой строке лямбда неявно приводится к указателю на функцию и потом передаётся в функцию fun1.
Нет вот этого "недотипства", как у массива, и неявное приведение не мешает, а когда надо — работает.
Хотя, конечно, для лямбд без захвата эти действия смысла особого не имеют, но недотипом в смысле массивов лямбды не назвать.
При этом, если массив "обернуть" в struct или union, то это обёрнутое начинает прекрасно использоваться для инициализации переменной того же типа, а посему и прекрасно передаваться и возвращаться из функции по значению, а также прекрасно присваиваться одно другому.
Но сделанного не воротишь, массив — недотип. Хоть он и недотип, но — никакой он не указатель.
Я думал оно позволяет свапать индекс и имя переменной из-за ассоциативности.
Да, в "обычном" виде пришлось бы использовать скобки, чтобы "преодолеть" приоритеты и заставить операции выполняться в нужном порядке: (&a)[1].
А вот так не понял. Как оно превращается в адрес конца?
Требуется понимание адресной арифметики и типов.
Преобразуем к независимому виду: *(&a + 1). Приоритет & выше бинарного +.
Итак, раз берём адрес, то &a — указатель, но на элемент — какого типа? Мы берём адрес массива, значит на массив. На массив из 3-х элементов типа int.
Далее идёт адресная арифметика, поэтому жизненно необходимо знать sizeof элемента, к указателю на который применяется адресная арифметика, ибо указатель будет "шагать" именно на этот размер, и этот размер есть sizeof целого массива a, массива из 3-х элементов типа int.
К указателю прибавляется 1, значит указатель "шагнёт" на 1 такой массив. И получится адрес сразу за концом массива.
После этого данный адрес разыменовывается. Поскольку указатель — на массив, то, в результате разыменования получится массив (того же типа, что и массив a, то есть, из 3-х элементов типа int).
При попытке проинициализировать массивом переменную типа указатель на int с именем end, этот массив неявно приводится к указателю на свой первый элемент, который как раз тоже имеет тип int, поэтому никаких дополнительных приведений не требуется, точно так же, как этого не потребовалось при "инициализации массивом a" указателя itr.
Но адрес этого элемента как раз находится сразу за концом массива a, что и требовалось получить.
Для единообразия можно написать так:
for (int const *itr = 0[&a], *const end = 1[&a]; itr != end; ++itr) {
Или, в более привычном виде, так:
for (int const *itr = (&a)[0], *const end = (&a)[1]; itr != end; ++itr) {
Типы выражений a, (&a)[0] и (&a)[1] — одинаковы. Это всё — массивы из 3-х элементов типа int. И каждый из них может быть неявно приведён к указателю на свой первый элемент.
А вы не думали, что некоторые вещи в статье специально так написаны, чтобы вы комментировали, цеплялись к словам и даже бесились, тем самым продвигая эту самую статью
...
Значит, цель статьи достигнута.
...
Но пассивно, случайно для меня, трафик за 2 дня на сайт вырос на 300%.
Вы, видимо, предпочитаете выиграть бой, но проиграть войну. Как сказал ещё Греф: "люди не хотят быть манипулируемыми". И - да, доверие теряется один раз.
Здесь вы практически прямым текстом признались, что использовали людей для своих целей.
Термин "душнила" специально придуман теми, кто не хочет аргументировать свою позицию, вместо этого хочет, чтобы собеседник просто безоговорочно принял эту, навязываемую ему позицию и даже не пытался возражать.
При этом используются безапелляционные заявления, якобы тема интересна только "душниле".
Как ни парадоксально, что в этом смысле "душнилой" являетесь именно вы, потому что вы игнорируете мои вопросы, а вместо этого навязываете свои манипуляции, которые интересны только вам.
Очевидно, у вас нет аргументов, поэтому вы и придумываете способы избежать их приведения.
Вы не объяснили, как из того, что что-то там не важно, следует, что вывод помножен на 0.
Вы сказали, что кто-то там чего-то гарантирует относительно ВО.
Я же говорю, что здесь важна вероятность, что понимание у человека будет на другом уровне, если ему придётся пройти через процедуры для получения ВО.
И требование наличия ВО повышает вероятность, что понимание у человека будет относительно вменяемое.
Прямая смысловая связка, никак не связанная ни с тем, что там кто-то гарантирует, ни даже с тем, правда ли то, что этот кто-то что-то там гарантирует или нет.
Это — не подводка, это — аргументация.
Потому что авторитетов не существует, и поэтому необходимо аргументировать.
Здесь не так важно, кто там чего гарантирует.
Важно, что для того, чтобы получить ВО, необходимо пройти через определённые длительные процедуры.
А прохождение через них сильно повышает вероятность, что понимание у человека, в результате, будет совсем на другом уровне.
В этом смысл, а не в чьих-то там гарантиях.
Что-то меня здесь насторожило.
Смотрю - у вас статьи есть, решил почитать.
С таким-то опытом человек, 17 языков, опыта на 10 сеньоров...
В статье "Сильный ИИ. Элира1" вам в комментариях объясняют простые вещи, а вы понять не можете. Пикселей — всего 360 000, а символов — 1.5 миллиона, и вы рассказываете, что в этих условиях ChatGPT распознаёт все символы оптически, потому что формат —векторный, а не потому что там текст прямым текстом записан, хоть и слегка сжат компрессором, и поэтому там распознавать нечего, надо только разжать декомпрессором текст назад из сжатого вида.
Установите под Linux утилиту Midnight Commander, возьмите свой pdf-файл и посмотрите его, можно прямо запустить
mcview VOINA_I_MIR_1_2.pdf
.Или вы хотите сказать, что в утилиту
mcview
тоже OCR-распознавалка встроена?Утверждаете, что в 20 МБайтный pdf влезет 1 миллиард символов.
Возьмите 1 ГБайт текста (1 миллиард символов) и сожмите любым архиватором.
Получится ли у вас 20 МБайт (сжатие в 50 раз)?
Я достал чистый текст из вашего файла
VOINA_I_MIR_1_2.pdf
утилитойpdf2txt
(получилось, где-то, 2.7 МБайта) и сжал с максимальным сжатием утилитамиrar
иxz
. Утилитаrar
сжала в 4.7 раза, до 575 КБайт,xz
— в 5.2 раза, до 520 КБайт.Вот на этой странице есть текстовые файлы для проверки архиваторов, один файл на 100 МБайт, другой — как раз, на 1 ГБайт. Также там есть описание результатов тестирования на этих файлах различных компрессоров.
Я скачал файлы оттуда и также сжал их
rar
'ом иxz
'ом на максимальной компрессии.100 МБайтный файл
rar
сжал в 3.4 раза,xz
— в 4 раза.1 ГБайтный файл
rar
сжал в 3.9 раза,xz
— в 4.7 раза, до 212 МБайт.Не до 20 МБайт, а только до 212 МБайт!
На максимальной компрессии.
В 50 раз не повторяющийся текст вы не сожмёте.
Самый лучший в мире компрессор тот 1 ГБайтный файл чуть менее, чем в 7 раз сжимает.
А, по-вашему, получается, что можно текст в pdf-файле хранить в векторном виде — лучше самого лучшего компрессора сжимает, 1 ГБайт — в 20 МБайт. Чудеса, да и только.
И, главное, что больше всего поражает, вы остаётесь при своём мнении, то есть, не понимаете, что люди хотят вам сказать, в чём тут подвох, хотя тут и понимать-то особо нечего. Но факт остаётся фактом, приходится принять, что так бывает.
Не зря меня насторожило "могу писать на 17 языках".
Не уверен, что такой уровень понимания, который вы продемонстрировали в той статье и потом в комментариях к ней, даже до джуна дотягивает.
А люди, смотрю, вам здесь на слово верят.
Выходит, требование иметь хотя бы незаконченное ВО не лишено смысла.
Хоть какая-то гарантия от таких случаев.
В том, что это — недотип.
Все нормальные агрегатные типы, вроде
struct
иunion
, но кроме массива, позволяют инициализацию переменной значением другой переменной того же типа, откуда сразу следует возможность передачи по значению в функцию и возврата из неё также по значению, потому что передача и возврат по значению — суть инициализация.Все нормальные агрегатные типы, кроме массивов, позволяют присваивание переменной значения другой переменной такого же типа.
Массив же нельзя инициализировать другим массивом того же типа, и нельзя одному массиву присвоить значение массива другого типа.
При этом существует "особо специальный массив", которым массив проинициализировать всё-таки можно, — строковый литерал.
Проинициализировать можно, а присвоить уже нельзя.
Само по себе это не проблема, проблемой является слишком большой набор случаев.
Приводится же функция неявно к указателю на такую функцию?
Приводится же лямбда без захвата неявно к указателю на функцию?
Факт того, что неявное приведение в выражении допускается сколько угодно раз, а также, что разыменование даёт lvalue, позволяет писать:
В 7-ой строке функция неявно приводится к указателю на неё и этим значением инициализируется указатель
f
.В 9-ой строке указатель на функцию разыменовывается сначала один раз, получается функция.
Затем получившаяся функция неявно приводится к указателю на функцию и разыменовывается ещё раз.
Процесс повторяется 10 раз, но можно сделать, чтобы процесс повторялся значительно большее количество раз.
В 10-ой строке, для лямбды, после её неявного приведения к указателю на функцию, процесс аналогичен.
Набор случаев, когда функция/лямбда приводится к указателю на функцию, сбалансирован.
Например, для лямбд:
В 16-ой строке лямбда инициализируется значением другой лямбды.
В 19-ой строке одна лямбда присваивается другой.
В 25-ой строке лямбда передаётся в функцию
fun0
по значению.В 26-ой строке лямбда неявно приводится к указателю на функцию и потом передаётся в функцию
fun1
.Нет вот этого "недотипства", как у массива, и неявное приведение не мешает, а когда надо — работает.
Хотя, конечно, для лямбд без захвата эти действия смысла особого не имеют, но недотипом в смысле массивов лямбды не назвать.
При этом, если массив "обернуть" в
struct
илиunion
, то это обёрнутое начинает прекрасно использоваться для инициализации переменной того же типа, а посему и прекрасно передаваться и возвращаться из функции по значению, а также прекрасно присваиваться одно другому.Но сделанного не воротишь, массив — недотип.
Хоть он и недотип, но — никакой он не указатель.
Да, в "обычном" виде пришлось бы использовать скобки, чтобы "преодолеть" приоритеты и заставить операции выполняться в нужном порядке:
(&a)[1]
.Требуется понимание адресной арифметики и типов.
Преобразуем к независимому виду:
*(&a + 1)
.Приоритет
&
выше бинарного+
.Итак, раз берём адрес, то
&a
— указатель, но на элемент — какого типа?Мы берём адрес массива, значит на массив.
На массив из 3-х элементов типа
int
.Далее идёт адресная арифметика, поэтому жизненно необходимо знать
sizeof
элемента, к указателю на который применяется адресная арифметика, ибо указатель будет "шагать" именно на этот размер, и этот размер естьsizeof
целого массиваa
, массива из 3-х элементов типаint
.К указателю прибавляется 1, значит указатель "шагнёт" на 1 такой массив.
И получится адрес сразу за концом массива.
После этого данный адрес разыменовывается.
Поскольку указатель — на массив, то, в результате разыменования получится массив (того же типа, что и массив
a
, то есть, из 3-х элементов типаint
).При попытке проинициализировать массивом переменную типа указатель на
int
с именемend
, этот массив неявно приводится к указателю на свой первый элемент, который как раз тоже имеет типint
, поэтому никаких дополнительных приведений не требуется, точно так же, как этого не потребовалось при "инициализации массивомa
" указателяitr
.Но адрес этого элемента как раз находится сразу за концом массива
a
, что и требовалось получить.Для единообразия можно написать так:
Или, в более привычном виде, так:
Типы выражений
a
,(&a)[0]
и(&a)[1]
— одинаковы.Это всё — массивы из 3-х элементов типа
int
.И каждый из них может быть неявно приведён к указателю на свой первый элемент.
Теперь, думаю, всё должно быть полностью понятно.
Если вздумаете применять в коде, который потом отправляется на review, скорее всего, узнаете много новых слов.
Это больше для собственного развития и только для своего личного кода.
Адрес массива, полученный с помощью
&
, и адрес первого элемента массива дают совершенно разные типы указателя.Имя массива не является адресом его первого элемента.
Ошибка дизайна C касательно массивов — в другом.
А что мешает записать так:
"0123456789ABCDEF"[(n >> i) % 16]
?Как раз на лишнюю пару круглых скобок короче.
Вариант для C:
Неверно.
Она не решает ваших задач.
Вы же привыкли использовать других людей без их согласия.
Видимо, это профессиональная деформация.
Про "возвышение" вам уже было сказано, но вы предпочитаете делать вид, что лучше знаете. Тоже, видимо, профессиональная деформация.
Вы, видимо, предпочитаете выиграть бой, но проиграть войну.
Как сказал ещё Греф: "люди не хотят быть манипулируемыми".
И - да, доверие теряется один раз.
Здесь вы практически прямым текстом признались, что использовали людей для своих целей.
Термин "душнила" специально придуман теми, кто не хочет аргументировать свою позицию, вместо этого хочет, чтобы собеседник просто безоговорочно принял эту, навязываемую ему позицию и даже не пытался возражать.
При этом используются безапелляционные заявления, якобы тема интересна только "душниле".
Как ни парадоксально, что в этом смысле "душнилой" являетесь именно вы, потому что вы игнорируете мои вопросы, а вместо этого навязываете свои манипуляции, которые интересны только вам.
Очевидно, у вас нет аргументов, поэтому вы и придумываете способы избежать их приведения.
Есть, кстати, такое выражение "слив засчитан".
Кто "мы" ждём, и какое интервью, и почему оно должно быть?
Сами придумали и на основании придуманного пытаетесь примитивно манипулировать?
Это, видимо, тоже для придания комичности статье.
Герой статьи считает, что читатель — везде одинаковый и везде "атрофировался".
Вы знакомы с эффектом Даннинга-Крюгера?
Почему вы решили, что именно выше?
У меня же ясно написано: "другой", а не "выше".
И почему вы мне рассказываете, что мне (не) делать?
Вы специально написали так, чтобы было непонятно, кого вы подразумеваете под "нам", себя с супругой, всех здесь, или какой-либо другой круг людей?
На данном ресурсе читатель немного другой.
Кому надо?
Это уже попахивает, вряд ли разрешат зарегистрировать.
Наверное, как уже отвечали по поводу диплома, для комичности статьи.
Это только с одной стороны.
А если она одновременно является сестрой матери?
Тогда сыну она приходится не только мачехой, но и тёткой.
Вынужден с вами не согласиться: