Pull to refresh
34
0

Программист-теоретик

Send message

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

(минутка тупых шуток)

Честно говоря, я совсем не понял, что именно предлагается в статье.

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

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

Тогда программу можно выразить через линии (например)

В полной общности это тоже уже делается последние 20 лет.

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

Спасибо, интересно, конечно.

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

кто принял решение изменить интерфейс, не руководствовался результатами объективного тестирования сам

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

Приведу пример такого контекста:

— Я недавно узнал, что у Хабра появилась новая версия. Попробовал её. Я считаю, что старый вариант интерфейса был удобнее, чем новый.

Я руководствовался результатами объективного тестирования? Нет. Но и не принимал решение об изменении интерфейса. Я принимаю решение, переключиться на старую версию или на новую, но это не требует А/В тестирования.

Если же контекст другой:

— Я просмотрел макет нового дизайна. Я считаю, что старый вариант интерфейса был удобнее, чем новый.

То более правильным (по моему мнению) является ответ

— Нам/вам надо провести А/В тестирование для того, чтобы понять, является ли старый вариант интерфейса действительно более удобным, чем новый. Ну и вспомнить, почему мы вообще приняли решение что-то поменять.

В этом случае нужно разделять тезисы «Я считаю / по моим представлениям / по моему вкусу / мне кажется, что …» и «Целевая группа в среднем считает, что …».

Хорошая подборка, но есть плохой пример:

  • Я считаю, что старый вариант интерфейса был удобнее, чем новый.

  • Покажите результаты A/B-тестов.

Смотрите: если я заявляю, что мне красный цвет нравится больше, чем зелёный, то ваша задача доказать, что мне зелёный цвет нравится больше. Если я заявляю, что считаю старый интерфейс более удобным, то какие А/В тесты вы с меня спрашиваете? Мне себя тестировать на консистентность своих вкусов?

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

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

А в примерах жалобы на нарушение приводится сообщения «del». На Хабре есть способ штатно удалить сообщение? Раньше ж не было.

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

Ключевая оговорка: если оно получено.

Конечно, есть огромный класс задач, которые нормально решаются и численно. Но есть и задачи, где наличие точного решения подзадачи может снизить размерность (а значит, и время расчёта), устранить нежелательную границу или исследовать свойства параметрической модели.

@Keeper13@dolovar@Ender2012Спасибо за пояснение.

Как истинный мимокрокодил, который об YUV знает примерно ничего, и прочитал процитированный абзац как замкнутый текст, ответственно заявляю, что студенты ответили же на поставленный (процитированный) вопрос так же, как я бы ответил.

В общем, преподаватели, не будьте, как некоторые: «я сказала одно, но ты должен был понять, что я имела в виду совсем другое!».

P.S. прочитал весь текст. Дельно. Проблемно.

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

Дальше этого абзаца не осилил. Я, видимо, из тех студентов, кто тоже в голосину кричит «четыре» и недоумевает, при чём тут яблоки, из которых первое целое, а второе и третье — по половинке.

Рассмотрим матрицу 2x2. У неё 4 элемента. Выбрасываем единственный чётный столбец и чётную строку. Остаётся один элемент (1,1). Коэффициент сжатия 1:4.

Рассмотрим матрицу 4x4. У неё 16 элементов. Выбрасываем столбцы 2 и 4, также и строки 2 и 4. Остаются элементы (1,1), (1,3), (3,1) и (3,3). Итого 4. Коэффициент сжатия 1:4.

Мне представляется очевидным, что для чётных n среди n^2 пар будет ровно (n/2)^2 = n^2 / 4 пар с нечётными компонентами.

ЧЯНТД?

Вот выше @vk220указал, что «требование» характеризуется словом «должно», я же утверждал бы, что эти слова в целом используются взаимозаменяемо (вопрос об источнике требований не рассматриваем, потому что иначе определение перестаёт работать).

Получается, что в данном определении нетривиальным местом являются «описание функции или свойства» и «разрабатываемое». Второе понятно (хотя мне как не аналитику неочевидно), но первое-то что значит? Что ещё, кроме функций и свойств, может быть у разрабатываемого ПО, чем она должна обладать, но при этом что не входит в требования к ПО?

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

Не знаю что за ранжирование в YaCy, наверное все-таки какое-то есть.

Разрабы занимали принципиальную позицию, что пользователь может контролировать состав выдачи, но не порядок. В какой-то момент официальный ответ был таков: порядок определяется тем, кто из узлов сети ответит раньше.

один агент создавал индекс [...] ответственность одного агента и вы доверяете его авторитету.

Этот момент мне не до конца понятен. Допустим, в сети есть несколько агентов. Я становлюсь участником сети и хочу 1) уметь формировать выдачу на основе только тех агентов, которым я доверяю и 2) пополнять индекс своими данными, выступая в качестве агента по отношению к другим.

Как это делается? Что происходит, когда один из агентов оказывается скомпроментированным?

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

Человеческое спасибо за поднятую тему и предложения.

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

Одна и, пожалуй, главнейшая проблема — ранжирование результатов. В YaCy ранжирования нет принципиально, что делает поиск непрактичным для обывателя. Как обстоят дела в предлагаемой системе? Пользователю нужно будет самому писать выражения на упомянутом в статье языке fasteval2?

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

Как подобные проблемы решаются в предлагаемой системе?

P.S. https://izihawa.github.io не существует — 404.

Видимо Вы не в курсе, что в логике бремя доказательства, существования чего либо, лежит на утверждающем это существование. :)

Это в каких логиках такое? По крайне мере в формальных бремя доказательства возлагается на того, кто первый пиз^W высказался.

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

К вёрстке имею опосредованное отношение, но осмелюсь предположить, почему сторонники семантичности себя так ведут.

Одна из важных технических задач — писать код, который не удивляет. Если есть <button>, зачем писать <div class='btn'>? Это было сделано специально? По незнанию? Артефакт слияния?

Это как писать let i = arr.length; while (i--) f(arr[i]) вместо map/forEach/for-of или на крайний случай for(let i = 0; i < arr.length; ++i) f(arr[i]). Видишь такое и сразу начинаешь искать повод, зачем именно так надо было делать, а не идиоматически.

Может, поборники семантики из тех же соображений исходят?

Примерно понятно.

Попробовал сейчас этот пример при n = -1, и он рухнул с ошибкой сегментирования памяти.

Это и не должно работать. Функция определена так, чтоб аргумент был положительным; а по-хорошему, сигнатура должна быть соответствующей, nat -> nat.

Наверное в каком нибудь Idris такое даже не скомпилировалось бы.

Как Int -> Int, конечно, нет, а Nat -> Nat — да, причём тотальна без доп. вопросов. В Idris бывает проблема, когда функция тотальна или рассматриваемый тип не населён, но компилятор не сразу догадывается, там надо доказывать, но Idris предоставляет средства логики первого порядка для доказательств, или believe_me накрайняк.

Вполне интересно. Можно подробнее описать систему типов? Есть операторы типов высших порядков, например? Какой используется полиморфизм?

Кстати, первый пример с fib удивляет. Кажется, что fib должна быть самой настоящей total, потому что она примитивно-рекурсивна. Как доказать компилятору, что она всегда завершается?

upd. Только что увидел заявление

  • отсутствие сборщика мусора

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

Я думаю, что если бы Стив не позиционировал свои математические построения, как открытие нового подхода к описанию нашей Вселенной и разгадки её устройства и происхождения, вопросов бы к нему не было, см. комментарий @Tirietв этой ветке.

Для сравнения, в семантике Крипке отдельные «части» модели модальной теории принято называть «мирами». Модальные операторы — это кванторы по мирам. Никто же не критикует математиков за то, что они рассматривают такие модели, потому что никто не говорит, что мир в модели — это наш самый мир.

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

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

  1. одни учёные носятся с теорией струн, другие критикуют первых, что их деятельность не имеет отношение к физике (пока что?);

  2. Стив носится с графами, а комментаторы хабра критикуют его, что его деятельность не имеет отношение к физике (пока что?).

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

Разве многие учёные не критикуют теорию струн как естественнонаучную именно за отсутствие предсказательной силы? Впрочем, какое это имеет отношение к деятельности Стива?

Information

Rating
4,104-th
Location
Красноармейск, Донецкая обл., Украина
Registered
Activity