Страницы

Документирование подпрограмм естественным языком — это идейная беспомощность

Описание сути кода подпрограмм на естественном языке — это распространённая практика. Многими разработчиками она почитается за образец поведения. Вот типичный пример части официальной документации Java

public int codePointBefore(int index)

Returns the character (Unicode code point) before the specified index. The index refers to char values (Unicode code units) and ranges from 1 to length. If the char value at (index - 1) is in the low-surrogate range, (index - 2) is not negative, and the char value at (index - 2) is in the high-surrogate range, then the supplementary code point value of the surrogate pair is returned. If the char value at index - 1 is an unpaired low-surrogate or a high-surrogate, the surrogate value is returned.

Parameters:

index - the index following the code point that should be returned

Returns:

the Unicode code point value before the given index.

Throws:

IndexOutOfBoundsException - if the index argument is less than 1 or greater than the length of this string.

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

Предприниматели тоже создают добавленную ценность

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

Финализированный кольцевой список на Java + концепция

Обратная связь представляет собой определённую сложность для финализированного списка в Java, ведь все элементы должны косвенно ссылаться друг на друга, а установка финализированного значения возможна только внутри конструктора. Это препятствие можно преодолеть с помощью простого советского ...

Почему владельцы генеративных моделей — нарушители

(+ Мнение ChatGPT)

Когда создатели протестуют против неправомерного использования их творений в обучении распространённых генеративных моделей, некоторые людеи начинает удивляться. «А в чём разница?» — спрашивают они — «Вы, творцы, тоже ведь не изобретали всего с нуля и тоже обучались на образцах, благодаря которым вы и смогли создать свои произведения. Генеративная модель делает то же самое». Говоря так, эти люди совершают большую подмену понятий.

Неправильные правильные ответы. Парадокс убитого дедушки

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

И практически везде этот парадокс рассматривается неправильно, хотя всё просто и только лишь необычно.

Аудио-шум при не проигрывании звука на ноутбуке

На ноутбуке Acer TravelMate P6 (TMP614P-52-798G), на котором в качестве ОС используется GNU/Linux Ubuntu 24.04, при отсутствии в необходимости звука в течении чуть менее 6 секунд в аудио выход начинает подаваться весьма громкий шум помех.

Первой мыслью было проигрывание произвольного аудио с 0-й громкостью, но решил поискать «нормальное» решение, подобное правке конфигураций или установке драйверов. Так как быстро ничего не помогло, то всё равно остановился на первоначальном костыле.

Пассивный доход

Пассивного дохода не существует. Если быть точнее, почти не существует. Практически за любым «пассивным» доходом стоят активные действия других людей, а значит, речь снова всего лишь о несправедливом распределении активных доходов, но никак не о пассивном.

Утиная типизация обманывает

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

Язык программирования для людей

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

Про удачные метафоры

Однажды, когда я в очередной раз улышал мудрость про то, что бесплатный сыр бывает только в мышеловке, я задумался – сколько же платит мышка за сыр в кладовке? Неужели капитализм добрался и до неё? Осторожность осторожностью, но нередко этой метафорой оправдывают продажу воздуха[0] или чего-то ненужного человеку в условиях существования хороших бесплатных альтернатив. И наоборот, мышки часто платят за то, чтобы засунуть свою голову в мышеловку.

Почтии рок-опера

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

В основном, тексты мне приходят в голову наполовину случайно и сразу в виде напевов. Самостоятельно я не собирался превращать это в полноценные песни, которыми можно было бы поделиться, так как для меня это требует куда больших усилий, чем я готов приложить. Генеративная же модель позволяет получить приемлемый результат сравнительно легко. Конечно, она игнорирует исходные мелодии, но с другой стороны, это тоже интересно, и позволяет и мне посмотреть на исходные песни с другой стороны.

Divanus Expertus

Divanus Expertus,
Взлетая, видят далеко!

Divanus Expertus —
И мыслят тоже широко!

Настанет время!
Над миром грянет стройный хор.

Divanus Expertus
В эфире вновь ведут дозор!

Нелицензионная копиR 3

ЕИ: Попросил Claude 3 Opus написать рассказ про нелицензионную копию ПО. Он начал писать, но в конечном итоге сам испугался того, что вышло. Тогда я о том же попросил предыдущую версию — Claude 3 Sonnet. История повторилась, но в этот раз модель продвинулась дальше, поэтому оставил эту историю. Рассказ писался частями, которые модель завершала так, словно хотела создать интригу.

Последствия возврата значения через неявную ссылку

В Active Oberon в процедурах-функциях доступна локальная переменная RESULT. Она представляет собой ссылку на переменную, в которую возвращают значение. Это сделано для возможности экономить ресурсы при возврате структур (массивов, записей и указателей на них), но такое решение хранит в себе подвох.

Лингвистическая относительность — не гипотеза

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

Дело в том, что язык (не обязательно естественный) — это единственный способ представления мало-мальски сложных знаний, и сам является некоторым знанием, передающим представление о мире, например, о времени. И если переформулировать вопрос на то, влияют ли знания и способ работы с ними на мышление, глупость вопроса станет практически очевидной. Поэтому возникает другой логичный вопрос — как можно всерьёз сомневаться в весомом влияния языка?

Ограничиваемый запуск программ в GNU/Linux

Как известно, работа программ в GNU/Linux основана на предоставлении им избыточных возможностей в оптимистичном ожидании, что они воспользуются ими исключительно во благо. Оперативная память может выдаваться авансом в надежде на то, что удастся вывезти за счёт сброса блоков данных на накопитель. В результате любая программа, пытающаяся выполнить невозможное для данной системы, способна вывести её из строя.

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

Уведомление о свободном месте

По рекомендациям производителей SSD можно сделать вывод, что для поддержания скорости работы и продолжительности жизни таких накопителей важно поддерживать свободное место около 25% от их объёма. В то же время предупреждение пользователей GNU/Linux о нехватке места происходит гораздо позже необходимого срока — тогда, когда состояние совсем уже критическое. Всё потому что в настройках систем обычно фигурируют гораздо меньшие числа.

Пользователи рабочей среды Gnome могут легко поменять настройки предупреждения: