Сучасна диджитал-освіта для дітей — безоплатне заняття в GoITeens ×
Mazda CX 5
×

Эвристика vs математика

Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті

В статье «Динамическое программирование: что это, как работает и где применяют» (dou.ua/...​bout-dynamic-programming) есть показательный момент,
что на практике полезнее чем тру математика (о тренировке ума математикой — другой вопрос)

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

См пример «Задача 3. О поиске N-го уродливого числа», «Решение № 2 — подход с помощью динамического программирования»
пп 1-3.
Мы там видим — обнаружение частностей в задаче. Я такое называю «эвристическими закономерностями», или «эмпириками» (вольная трактовка Эмпири́зм)

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

Потому что:

Вики:
Эвристический алгоритм (эвристика) — алгоритм решения задачи, включающий практический метод, не являющийся гарантированно точным или оптимальным, но достаточный для решения поставленной задачи. Позволяет ускорить решение задачи в тех случаях, когда точное решение не может быть найдено.
...
Проще говоря, эвристика — это не полностью математически обоснованный (или даже «не совсем корректный»), но при этом практически полезный алгоритм.

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

Она не гарантирует нахождение лучшего решения.
Она не гарантирует нахождение решения, даже если оно заведомо существует (возможен «пропуск цели»).
Она может дать неверное решение в некоторых случаях.
(конец цитаты)

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

И для их обеспечения и требуется — выявить более элементарные элементы в задаче (спуститься на уровень абстракции −1), с помощью которых можно закодировать обобщенное решение — подняться на уровень абстрации +1
Но — не ниже и не выше! Обычно, выше/ниже не окупится, а приведет либо к оверинжинирингу, либо к архитектурной астронавтике

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

P.S. А случаи конечно бывают когда легче оказалось DSL создать.
И бывают что без серьезного анализа — никак.

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному1
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

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

вот, вот, я об том!
а в свое время играясь с освоением рекурсии — не додумался.
и на 486ом отлаживал на поле 6×6, игрался на поле 7×7, а на 8×8 — просто терпения не хватало дождаться.

Интересно — это правило выбора хода накладывает ограничение. Всего ходов у коня 8 но только если он в центре где-нибудь, а у краев меньше. Постоянно применяя такое правило ограничиваем полет фантазии. У тебя конь оставлял следы на доске?

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

а2 не заполнилось. не подсказывай. И g2 тоже.
Весело, когда хочется отдохнуть от вникания в тайны движка.

ох сколько потом багов лезет из этих «эвристик»

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

Вот маленькая программка, спокойно бегающая в эмбедеде. И ее список поддерживаемых стандартов trac.pjsip.org/...​epos/wiki/PJSIP-Datasheet
Сможете сформулировать алгоритм? Хотя бы

упрощенный, приблизительный

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

То есть, Ваши рассуждения о пользе алгоритмов не применимы к составлению компьютерных программ?

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

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

Что такое произвольная задача?

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

Я решал очень много задач из реального мира. Дайте конкретный пример.

Реальный пример: SIP клиент с поддержкой современных RFC. Как здесь trac.pjsip.org/...​epos/wiki/PJSIP-Datasheet
Там писали, кажется, 3 человека на С.
Если считаете, что математика может такое сделать — опишите, пожалуйста, Ваш подход к решению этой задачи, и оценку трудозатрат на каждый этап.

1. Преобразовать текстовое описание в в многомерную матрицу требований, влияний и зависимостей, чтоб синтезировать модель для MVP.
2. Найти лучшие совпадения экспертов в каждой из предметной области.
3. Получить оценочное мнение от экспертов и внести показатели в матрицу.
4. Взять среднее значение и перевести его на человекочасы.
5. Помножить человекочасы на рейт и получить оценку для MVP.

1. Преобразовать текстовое описание в в многомерную матрицу требований, влияний и зависимостей, чтоб синтезировать модель для MVP.

Можете оценить трудозатраты на матрицу требований «с потолка» (из даташита, там линки на документы)? Потому что как раз составление такой матрицы в данном случае выглядит проблематичным из-за объема домена.

2. Найти лучшие совпадения экспертов в каждой из предметной области.

Одна предметная область, но экспертов на рынке нет. Зато стандартизированы требования, но каждые пол-года добавляются новые.

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

2. Раз эти стандартны кто-то издает и кто-то пользуется, то как минимум два направления — разработчики стандартов и производители решений.

Тогда как математика может помочь в программировании систем со сложными доменами, если она не в состоянии такой домен проанализировать?

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

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

А по поводу матрицы — может, без знания химии красителей нельзя использовать монитор?

У любой задачи есть быстрое и неверное решение.

Монитор не является продуктом творческой деятельности.

Не понял связи. Для заполнения матрицы в экселе нужна математика?

Это возможность осуществима благодаря математике.

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

А это — все результаты фундаментальной науки, в основе которой лежит та самая математика.

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

Достаточно знать математику и тогда остальное можно будет сделать самостоятельно в рамках разработки той-же программы для анализа химических соединений.
А без математики просто не посчитаешь электроны на орбитах :)

А без математики просто не посчитаешь электроны на орбитах :)

А их и с математикой не посчитаешь — нет мощностей даже для средних молекул.

А еще — химия развилась до компьютеров.

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

И какое отношение имеет математика к написанию SIP клиента? Такое же, как цикл Карно к умению водить?

Самое прямое, например core.ac.uk/...​download/pdf/11036538.pdf

1) Эта модель необходима для написания SIP клиента?
2) Вы будете строить мат модели для написания SIP клиента?
3) Как построение мат моделей скажется на графике проекта по написанию SIP клиента?

Это был ответ на вопрос про связь SIP и математики.
Как именно скажется — я описал в самом начале.
Круг замкнулся :)

Это был ответ на вопрос про связь SIP и математики.
Как именно скажется — я описал в самом начале.
Круг замкнулся :)

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

Я ее показал, но вы ее не разглядели. Бывает.

Ну покажите еще раз, одним связным текстом

У любой задачи есть быстрое и неверное решение.

Скорее наоборот. Хороший архитектор грамотно борется с сложностью в проекте. Любой проект рано или поздно скатится в сложное, плохо поддерживаемое УГ. Основная задача отодвинуть этот час «Ч».

Не все архитекторы — шарлатаны, не все проекты — безграмотны.

Если считаете, что математика может такое сделать

расшифруйте ваше «математика может такое сделать».

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

Вот я хочу, чтобы для этой задачи очертили «упрощенный, приблизительный алгоритм с понятными границами применения»

я не совсем понимаю, про «прощенный, приблизительный алгоритм» — там список конкретных RFC, которые нужно реализовать.

Если допустить, что текущая реализация на С «блин ну вроде работает», и вопрос про корректную реалицию RFC (с мат доказательством), то можно было бы взять более адекватный язык, чем С, например F*
По трудозатратам, в идеальном случае, будет сопоставимо, но в реальности, думаю, там куча багов в самих RFC.

Определите критерии приемлемости, тогда можно будет рассчитать нужный результат.

Критерии — работает, достаточно стабильно для использования в продуктах. То есть, падает раз в месяц, или раз в год, а не раз в день.

Примерно от 1 до 12 процентов состояния инвесторов.

Можете предложить лучший критерий применимости программы на практике?
Например, для Виндовс или Убунты?

Как показывает практика — надо найти уже нечто существующее и изучить.

Как это поможет с

Определите критерии приемлемости, тогда можно будет рассчитать нужный результат.

если Вам не нравится

Критерии — работает, достаточно стабильно для использования в продуктах.

Значит надо изучить существующие продукты, которые работают достаточно стабильно и выяснить сколько в среднем ушло на их разработку.

Значит надо изучить существующие продукты, которые работают достаточно стабильно и выяснить сколько в среднем ушло на их разработку.

Как это поможет, если при разработке Вы (или другие поклонники математики) собираются применять другие подходы к проектированию и другие языки?

Более того, если Ваш подход не более эффективный, чем инкрементальное написание на С, то зачем программистам знать математику?

Почему это — другие?

Почему это — другие?

То есть, Вы предлагаете:
1) Узнать, сколько времени ушло у людей, не использующих математику, для написания программы
2) Найти подобных людей на рынке
3) Дать этим людям писать программу на С
4) Заявить общественности: «Математика крайне необходима всем программистам — вы все видите, что при помощи математики мы смогли написать программу, которую писали люди без математики, не медленнее, чем они».

Так все кто пишут программы — так или иначе ее используют. Вот в чем фокус.

Так все кто пишут программы — так или иначе ее используют. Вот в чем фокус.

А те, кто водят автомобиль — используют цикл Карно.
А те, кто играют на мобилке — используют химию красителей.

Нужно ли знание цикла Карно и термодинамики, чтобы быть автогонщиком?

Нужно ли знание химии красителей, чтобы победить в старкрафт? Или даже, будет ли оно полезным на чемпионате?

вы привели ссылку на «калькулятор», а не на математику — как метод

калькулятором и бабушка Бо с деревни УньХу умеет пользоваться. и прекрасно продает свои овощи с плакатиком на котором цена в виде QR кода и ее счет в банке.

речь же о выращивании овощей для продажи, а не о калькуляторе.

вы привели ссылку на «калькулятор», а не на математику — как метод

я попросил расшифровать, поставленную задачу.

калькулятором и бабушка Бо с деревни УньХу умеет

вижу, вы большой спец по бабушкам, деревням, и калькуляторам

вижу, вы большой спец по бабушкам, деревням, и калькуляторам

ну почему. на доу я часто тролю колег — что знают математику не лучше этой бабушки :)

я попросил расшифровать, поставленный вопрос

а что там расшифровывать?

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

«Калькулятор» — точно не справится.
Тогда может поможет метод?

Покажите как. Можно и на своем примере.

Но, как тролил уже
То что математика не учит сама по себе абстракному мышлению — хорошо видно по многим ее «адептам/евангелистам». они не понимают о каком уровне абстракции вообще речь.

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

На таких скоростях время обработки связано с количеством информации что очень похоже на вещество.

Имхо У Дениса маркетинг слабоват. Я смотрел ссылку — скушно. А из рук в руки реклама когда не скушно. Тогда начинает работать телефон «слухов» — бесплатная и кроме того наиболее эффективная реклама — от одного человека другому, более или менее доверительно.
Кстати, всегда интересовало, почему бесплатные проекты так пресны?

А про бред все очень просто: свет или частица или волна. Не и, а или.

Ну ладно и и и или. Это и есть моя четырехмерная логика. Угощайся. Лучше пива, водки и селедки.

Это уже куда-то к нейросетям

То есть у нас в головах (где тоже есть нейроны) информация представлена количественно? Но ведь мы говорим в эти микрофоны? Количественно? Тогда и модель надо делать с учетом всего этого количественного.
Аналоговое это фикция. Бесконечность выдумана. Количество точек у окружности строго определено размерами наблюдательской условной точки.

(Продолжение)
И тут я внезапно открыл для себя, что это два разных состояния вещества — неопределенное — волна — аналоговое.
и определенное — частицы — количество.

Ну я не учил логику

да их вообще мало кто учил. еще меньше чем математику.
логик же много, даже не математических :)

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

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

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

PJSIP attempts to provide you, the developer, with everything you need to build real-time multimedia communication application.
Сможете сформулировать алгоритм? Хотя бы

Спрашивать алгоритм „everything you need”, несколько толстовато)
С другой стороны, можно ткнуть в любой баг и заявить, что „attempts failed”.

Спрашивать алгоритм «everything you need», несколько толстовато)

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

С другой стороны, можно ткнуть в любой баг и заявить, что «attempts failed».

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

как математики подходят к обработке информации

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

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

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

Думаю, если бы здесь использовали научный подход, то ее еще бы 100 лет писали.

Лучше день потерять, потом за 5 минут долететь. ©

Лучше день потерять, потом за 5 минут долететь. ©

с таким лицом подходом тебе денех никто не даст. ©

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

математикой занимаются из любви к искуству

разумеется. поэтому математикам так мало платят.

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

это не выбор кодерков. а ограничение действительности.
которое можно назвать
ты ИЛИ программу сделай в срок ИЛИ иди в науку, потому что «научно» ты ее в срок не сделаешь.

и «иди в науку» будет звучать с коннотацией — на йух

так что кодерок может и хотел бы заняться интеллектуальным творчеством — но для этого он должен зарабатывать достаточно, и при этом иметь — свободное время и силы заниматься таким творчеством.
а для этого — он должен повышать свою эффективность в quick & dirty analysis. а не пересказывать басни ширнармасс о математике, и науке, как о каком-то рае.

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

В заключении своей статьи Брайан Дэвис так описывает характер происходящих в математике изменений. «В 1875 году каждый человек, способный к математике, мог за несколько месяцев полностью разобраться в доказательстве большинства известных теорем. К 1975 году ... математики еще могли полностью понять доказательство любой доказанной теоремы. К 2075 году многие области чистой математики будут зависеть от теорем, которые не понимает никто из математиков — ни индивидуально, ни коллективно. ... Обычным делом станет формальная верификация сложных доказательств, но при этом будет много результатов, признание которых будет основано на социальном консенсусе в не меньшей мере, чем на строгом доказательстве».

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

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

поэтому математикам так мало платят.

В развитых странах сопоставимо с программистами.
В Украине платят мало, но тут и математиков нет почти, от силы десяток-два на всю страну. Последние кое-как перебиваются визитами зарубеж и заграничными грантами.

ох сколько потом багов лезет из этих «эвристик»

а — сколько? я сам серьезной «типизации» багов по частоте встречаемости не проводил, но баги встречаю чаще — «баг последней строки» — копипаста в качестве шаблона, все исправлено, а вот последняя строка «забывается»

«блин ну вроде работает, пусть тестировщики попинают и в прод»

«блин ну вроде работает» — не эвристика. а метод тыка.

у quick & dirty analysis тоже есть правила проверки. и свое интуитивное чутье — нужно хотя бы себе доказывать.
одно из правил я бы и назвал — грязным правилом фальсифицируемости: ты должен найти случай(-и) когда эта эвристика не будет работать, или приведет к багу. грязным — потому что достаточно найти качественное описание этого типа случаев, а не количественное.

Общее решение это паттерны, частности это костыли.

Паттерны тоже частные — у каждого из них есть «силы» в описании.
За все нужно платить. Одни силы ты удовлетворяешь, другим — наоборот, вредишь.
Например, если если кодить на Питоне, то напишешь быстрее, но работать будет медленнее, чем на С++.

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

Но есть еще у меня такая мыслишка: а что если усвоения не нужно на самом деле, а достаточно одного только факта взгляда? Как в сериале NZT и фильме — там парень взглянул один раз всего на корешок книжки и потом ее название легко вспомнил.
В этом случае понадобится только просмотр всего нового и знакового и важного. Быстрый просмотр. Гораздо быстрее, чем с усвоением в ходе множества повторов.
Но для проверки этого всего надо писать код.
P.S.
Запутывание с новой областью возникает в 1 милисекунде соприкосновения. Но, как я полагаю, берется абстракт — иначе все бы выигрывали в лотерею.

Для такого делают картинки. Если разбираешься в теме, и картинка правильно сделана — ловится с одного взгляда.
upload.wikimedia.org/...​g/800px-Skip_list.svg.png
www.pvsm.ru/...​d-linked-list-na-Java.png
koenig-media.raywenderlich.com/...​gClub_TrieData-trie-1.png

Вот что пришло на ум, когда смотрел на трие картинку:
...Если хранить некие содержания (контенты) в памяти, привязав к этим содержаниям ключи из общего словаря для всех содержаний. То есть: дерево, иголка, хвойные = елка. Три измерения у нас для елка. В одном елка дерево. В другом елка с иголками. В третье речь идет о хвойном. Пересечение всех трех дадут для елка более полную картину.
Так вот елка — это может быть и изображение елки. Тогда добавим еще одно измерение — еще один ключ:
дерево, хвойные, иголки, изображение = елка...
А вот формат PNG:
PNG, формат, изображение, RGB
И как видишь, два этих кортежа можно пересечь для получения более точной информации.

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

Не понял, но есть штука, представляющая дерево смыслов слов языка
en.wikipedia.org/wiki/FrameNet

У двух (и более) кортежей идентификаторов, некоторые идентификаторы могут совпадать. В первом кортеже моего примера, есть слово — оно же идентификатор — «изображение» и во втором кортеже, оно тоже есть.
Тут еще такой момент, что в SQL есть требование уникальности для primary key, а значит, существуют некоторые шансы, что реляционная модель именно этого тонкого момента никак не понимает — пересечения двух облаков (или кортежей) тегов.

Покрытие тестами гарантирует работу использованных эвристик.
Но есть еще вот какой момент. Реляционные базы данных могут быть легко и просто преобразованы до 5-той нормальной формы (делал такой диплом «Автоматизация нормализации»)
Но также реляционные таблицы тесно связаны с булевой логикой. Евристика это набор условий, которые проверятся и выполняется некий алгоритм. Набор эвристик похож на (*клубок змей)
Набор эвристик это некий набор логических условий (правил) и вот что можно: правила не связанные друг с другом, независимые, применять одновременно. А это значит, можно эвристики нормализовать. Превращая их в максимально элементарные условия, максимально простые для проверки и преобразования входных данных в выходные и или промежуточные.
Да, я вот сейчас реально говорю о построении алгоритма (да что там алгоритма — исполняемого кода!) решения некоей задачи в ходе начальной простой оценки того, что вообще можно сделать с предоставленными данными таким образом чтобы это стало хоть немного напоминать искомое решение.
Часть этого внезапно стали какие-то совсем уж простые операции со входными данными с оценкой насколько ближе или дальше стал искомый результат.
То есть — ищется функция методом итеративного приближения.
Что самое интересное такие операции можно проводить случайным выбором. Math.random()

Эволюция кода: код, размышляющий о собственной эффективности.

«Вот так думаешь, думаешь — и изобретаешь порох...» ([АБС])

Однажды мне привиделось или примечталось такое: Time Tower — сюжет для фантастики.
Суть вот в чем: берем пророка и в анабиоз. Раз в 5 лет будим его и рассказываем события,
которые произошли. А заодно расспрашиваем о событиях, которые еще не произошли.
И снова его в анабиоз. Или к Альфе Центавра со скоростью света.
Таким образом, время жизни пророка можно растянуть лет на двести. И получить живой тоннель передачи данных из будущего в настоящее.
К чему это я? У меня не только порох имеется. Но все это пропадает сейчас в убогой неотапливаемой комнатушке 4×4.
В общем, мои научные проекты мечтают об инвестициях. И да, официальная наука о таком ни-гу-гу. А почему? Ну конешно — интриги склоки гранты и как будем нобелевку делить.
А это всего лишь квантовые штучки на нейронах, которые внутри черепов.
Вот например книгу издать об ужасах четвертого измерения.. Уже гешефт будет.

Мы там видим — обнаружение частностей в задаче. Я такое называю «эвристическими закономерностями», или «эмпириками» (вольная трактовка Эмпири́зм)

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

А как иначе ты предлагаешь удовлетворить заказчика?

А как иначе ты предлагаешь удовлетворить заказчика?

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

Ну иначе зачем все эти красивые слова, типа частных случаев, эвристики и прочего. Весь смысл поста сводится к «надо хренакать в прод и излишне не рефлексировать».

Но этот путь не единственный.

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

А математика к архитектуре, насколько я понимаю, имеет такое же отношение, как стоп-сигнал к зайцу.

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

Нет. Математика это язык. Язык формул. Как и положено языку — математика описывает реальность. Любую реальность. В том числе и любую архитектуру любого продукта. То есть можно любое предложение естественного языка представить в виде соответствующей математической формулы. Или абстракцию этого предложения — общее для класса этих предложений.

Забавное прочтение «смысла» :) вообще-то рефлексия и является одним из основных инструментов нахождения эвристик.

А путь да, не единственный. Просто -основной в мире ограничений.

Человек науки конечно не согласен. Потому что наука не является производственной дисциплиной, и живёт вне времени. Особенно математика.

О, философия на dou.

Пока что очень абстрактно, нужны эвристики :)

Если серьёзно, то такими эвристиками и железо, и софт заполнены чуть более чем полностью. Кэширование — эвристика: для, грубо говоря, 99% случаев, пространственная и временна́я локальность работают на пользу — но элементарно замусорить кэш ненужными данными (а с другой стороны получить Meltdown/Spectre). Предсказание переходов — эвристика, обычно работает, но легко придумать, как затормозить плохой логикой или случайными данными в разы. Copy-on-write — эвристика (и запросто может работать во вред, когда OOM killer приходит только за то, что меняешь какие-то данные без их выделения). Медианный поиск разделяющего элемента в qsort — эвристика (с отваливанием в heapsort, если она не сработала). Чем выше «хитрость» и специализация алгоритма, тем больше таких эвристик.

А дальше таки идут тяжёлые задачи выбора: применять их или нет? Насколько доверять результатам? Если есть полиномиальное решение задачи о рюкзаке на 98% случаев, останавливаться на нём или перепроверять? А если можно покупкой HPC кластера на 200K$ и гонянием на нём N^4 вместо N^2 методов — экономить по 100K$ ежемесячно на пробеге фур?

Пока что очень абстрактно, нужны эвристики :)

да, я понимаю...

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

не раз доводилось например видеть код парсинга заголовков http. Спеку не читали, да? Не-а, а на кой, вот я вижу ответ, вот его и парсю.
или о, более массово — парсинг емайла. Кто читал ту спеку то о формате? я и сам не читал, увидел на стекоферфлов регесп монстра, со ссылкой на спеку, глянул ее, и все, больше не парсю, а ищу библиотеку которая это делает :)

Если серьёзно, то такими эвристиками и железо, и софт заполнены чуть более чем полностью.

да :) в том то и дело что эвристики — чуть ли единственный способ сделать что-то в реальном мире: на реальном(огранниченном — всегда) железе, в ограниченные(всегда) сроки, программистами уж которые есть("тру программистов выгребли фаанги«) :)

Copy-on-write — эвристика (и запросто может работать во вред, когда OOM killer приходит только за то, что меняешь какие-то данные без их выделения)

да. поэтому на серьезном собеседовании на должность php программиста обязательно будет вопросик по передаче по ссылке, по значению, и — copy-on-write

а с другой стороны получить Meltdown/Spectre

да, этот пример у меня из мира железа проходит как «тролинг математиков»:
«и почему же Intel не смогли нанять математиков, призвать computer sciencе» когда проектировали?

А дальше таки идут тяжёлые задачи выбора: применять их или нет? Насколько доверять результатам?

трижды да.
поэтому и — peopleware.
в конечном счете все сведется к доверию — людям, исполнителям.

И не только у нас в программировании. Как Степанов(автор STL), на лекции в Яндексе ошарашил молодой зал — наука вообще социальный институт: репутаций, коллегиальных согласий, диспутов школ, интриг, .... Даже математика вот ...
(КАК?? Богом данное, абсолютное, незыблемое и единственно верное знание — зависит от совещательного мнения людей?)

Если есть полиномиальное решение задачи о рюкзаке на 98% случаев, останавливаться на нём или перепроверять?

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

поэтому дальше,
случайно в ленте у меня, развитие темы уже не о причинах поиска эвристик, а о «методе» их поиска:
хлопское конечно, не монография, как понял чел недавно узнал, прочитав что-то глубокое :)
Іван Семесюк:
Стикнувся з інтересним.
Дедукція, аналіз, синтез, взагалі логіка — ці інструменти є набутком філософії, яка можливо й не є наукою, але ж очевидним чином заклала саму можливість існування науки, наукового методу, і саме завдяки цим своїм інструментам які й передала науці як прапір пізнання.
Математика так само варилася в цьому горнилі, і більше того, по суті в горнилі богословському, як і граматика і багато інших дисциплін. Як математика спирається на нуль, так західна філософія (яка й породила науку) у своїй тяглості спирається на бога (чи Бога) як опорну категорію, і ніякої науки без попереднього богословського досвіду просто не було би. Наука вийшла з монастирських сутінків — значною мірою, прямо, опосередковано, іноді й всупереч, але звідти.
Виявляються є люди які настільки гостро шанують науку, що аж заперечують, відкидають яко непотріб усю історію людської думки до виникнення наукового методу як такого. Вважають Арістотеля (Спінозу, Оккама, Декарта і тд.) папуасом, дикуном, дурником, пиздлом і балаболом, та протиставляють йому винайдення пеніциліну.
І не вірять, що ніякого пеніциліну без Арістотеля не було би, і ржуть, і сердяться, і гостро не вірять.
Це дуже дивно, достатньо ж лише просто ознайомитися з історією питання. Але ніт.
Втім, такі срачі в коментах мені нравляться більше, ніж кінська залупа навколо політичної олігофренії. Хоча політичність людської природи теж визначено філософією.

Математика так само варилася в цьому горнилі, і більше того, по суті в горнилі богословському

«давайте примем на веру это утверждение и будем двигаться дальше» © рандомный мат. доклад

не раз доводилось например видеть код парсинга заголовков http. Спеку не читали, да?

При компилировании кода, надо, чтобы компилятор заодно с notice about deprecation показывал ссылки из интернета на аналоги примененных в коде решений. Велосипедов поуменьшится.

не раз доводилось например видеть код парсинга заголовков http. Спеку не читали, да? Не-а, а на кой, вот я вижу ответ, вот его и парсю.

Это не эвристика, а специфика африканского ИТ (поверхностность + незнание матчасти + «тяп-ляп и в продакшн») — в итоге, ничем хорошим не заканчивается.

А что касается математики — это-таки вещь совершено объективная. Поскольку, не наука, а вполне предсказуемая дисциплина, работающая по правилам установленным не природой/богом/высшим, а человеками. Лишь благодаря этому, списанный научным миром, опустившийся и сваливший на рашку бомж Гриша Перельман — может задвинуть свою мат-теорию на нескольких листиках, которую затем перепроверит толпа трудолюбивых китайцев, после чего объявят Перельмана гением и выдадут ему премию Филдса.
В реальной науке, такое невозможно — т.к. всё работает иначе. Не от теории к проверке (как у математика Гриши) — а наоборот.

П.С. А в принципе да, эвристика — это шорткат. Время вычисления всё ещё существенный фактор для подавляющего большинства программ. Соответственно, если есть возможность найти 80% точности за 20% времени — это чаще всего будет более предпочтительнee, чем найти 100% точности за 80+% времени.

В реальной науке, такое невозможно — т.к. всё работает иначе. Не от теории к проверке (как у математика Гриши) — а наоборот.

Что есть «реальная наука»? Чем тут Перельман будет отличаться от Менделеева или Гелл-Манна?
Нет ничего практичнее хорошей теории.

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

И вот об этих правилах и спорят столетиями. Доверять ли заведомо несовместимым дырявым системам аксиом, когда иного выхода нет, как их использовать. Какие теоретические конструкты имеют право на жизнь, а какие нет. Имеет какое-то значение работа по специфике бурбуляторов 3-го рода в квакающем пространстве, или автору просто нечем заняться, лучше бы на 1% улучшил расчёт маршрутов перевозок... да, и как таки наконец нарисовать множество?

Нет ничего практичнее хорошей теории.

В любой науке, теорию без каких-либо практических/экспериментальных подтверждений — никто даже не будет рассматривать. Т.к. сперва эксперимент — затем теория, объясняющая результат.

Иное дело, в «игре ума» математике. В ней эксперимент не нужен — достаточно непротиворечивости, в виде цепочки «доказательств».

Т.к. сперва эксперимент — затем теория, объясняющая результат.

Перигелий Меркурия. Открытие Нептуна. Бозон Хиггса.
Да те же кварки были экспериментально подтверждены лет через 10, когда весь мир принял теорию.
Можно продолжать сотнями.

Иное дело, в «игре ума» математике. В ней эксперимент не нужен — достаточно непротиворечивости, в виде цепочки «доказательств».

Сэр явно никогда не пытался решить квазивырожденную систему уравнений.

Сэр явно никогда не пытался

Сэр известный местный городской сумасшедший)

Перигелий Меркурия. Открытие Нептуна. Бозон Хиггса.
Да те же кварки были экспериментально подтверждены лет через 10, когда весь мир принял теорию.
Можно продолжать сотнями.

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

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

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

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

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

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

Не царица, а тотальная служанка (если не резче выразиться).

Дали «лычку», чтобы пользовать неограниченно и бесплатно. :)

не дали. а эта философская система — математика — стала основой научного рассуждения.

последним правда И математиком И философом считается Пуанкаре. В 20ом веке постмодерн развел пути дорожки математики и философии.

и философия математики — стала тоже ее частью. которой занимаются, в свободное от основной работы время — сами математики :)

математика — стала основой научного рассуждения.

Не основой, а лишь полезным инструментом.

А что касается философии — бесполезным словоблудам (т.н. «философам») баблоса дай, они тебе не только «философию математики», а и «философию философии» изобразят. За ваши деньги — любой концерт.

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

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

нет.
Особенно наглядна история с фетишем науковерцев — теорией Коперника.
Она давала худшие количественные результаты чем система Птолемея.

Кеплеру потом пришлось приложить немало труда чтобы расчет движения по элиптическим орбитам был такой же точности.

При этом никаких новых эксперментальных данных не было, Коперник просто считал систему Птолемея — сложной, некрасивой.

Но не существует научных моделей, без предварительных данных/экспериментов.

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

В отличии от математики

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

и, в экспериментальной части науки тоже эвристики рулят — как придумать эксперимент который стоит дешевле.

говорю ж — двойка по методологии науки.
но это — нормально. большинство верует что наука=эксперимент

науковерие — основная религия «золотого миллиарда».
а относится она к монотеистическим религиям.

При этом никаких эксперментальных данных не было, Коперник просто считал систему Птолемея — сложной, некрасивой.

В смысле, «никаких эксперментальных данных не было»? :)

Ты неознакомлен с предметом и неподготовлен к обсуждению собственных тезисов. Чувствуется «тяп-ляп и в продакшн» стайл...

В смысле, «никаких эксперментальных данных не было»? :)

в том смысле что не было данных показывающих неверность системы Птолемея

Сам Коперник потому и не публиковал свою работу. Он видел ее прогностическую дефективность. а не потому что церкви боялся. (хотя и не без этого)

Ты неознакомлен с предметом и неподготовлен к обсуждению собственных тезисов.

ну, мнение обывателя=двоечника по научной методологии да, важно.

в том смысле что не было данных показывающих неверность системы Птолемея

В этом смысле — были какие-то мелочи, с которым система Коперника справлялась лучше (или Птолемея вообще не справлялась).

Но тем не менее, система Коперника появилась не на пустом месте. A на экспериментальных данных наблюдений самого Коперника — за Солнцем, Венерой, Марсом, Юпитером, Сатурном. С составлением таблиц движения планет более точными, чем у Птолемея.

A на экспериментальных данных наблюдений самого Коперника — за Солнцем, Венерой, Марсом, Юпитером, Сатурном

Систем Птолемея — на них же.

Вики:
... с современной точки зрения, модель Коперника недостаточно радикальна. Все орбиты в ней круговые, движение по ним равномерное, так что эпициклы* сохранялись (хотя их стало меньше, чем у Птолемея). Механизм, обеспечивавший движение планет, также оставлен прежним — вращение сфер, к которым планеты прикреплены. На границу мира Коперник поместил сферу неподвижных звёзд. Строго говоря, модель Коперника даже не была гелиоцентрической, так как Солнце он расположил не в центре планетных сфер.
... Из-за этого таблицы Коперника (первоначально более точные, чем таблицы Птолемея) вскоре существенно разошлись с наблюдениями, что немало озадачило и охладило восторженных сторонников новой системы. Точные гелиоцентрические (Рудольфовы) таблицы издал позже Иоганн Кеплер, который открыл истинную форму орбит планет (эллипс), а также признал и математически выразил неравномерность их движения.

* Эпицикл (греч. epíkykios, от epí — на и kýkios — круг, окружность), вспомогательная окружность в геоцентрической системе мира Птолемея.

«тяп-ляп и в продакшн»

это не эвристика.
см dou.ua/...​rums/topic/32738/#2058153

В любой науке, теорию без каких-либо практических/экспериментальных подтверждений — никто даже не будет рассматривать

двойка по научной методологии :)

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

В ней эксперимент не нужен

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

Вспомнилось меткое о X
... Затем из этих исходных соглашений автор дедуцирует теоремы, которые, по сути дела, представляют собой раскрытие, развертывание первоначальных определений и аксиом. И так X поступает в каждой из пяти частей своего труда. Он не обращается к фактам, он ничего не проверяет, он только дедуцирует. Вся система, таким образом, представляет собой громадную совокупность конвенций о значении и смысле понятий, об употреблении, терминов. И это — существенная черта каждой философской системы

Гипотезу научное сообщество начинает рассматривать задолго до того чтобы задумываться об эксперементальном ее подтвержении.

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

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

П.С. Поппер — философ-словоблуд. К чему он тут вообще? Словоблудию есть некоторое место в мире, но к науке всё это приплетать незачем.

К чему он тут вообще?

ru.wikipedia.org/wiki/Фальсифицируемость

на остальное извините — влом отвечать. мнение миллионов мух о науке мне известно, чтобы тратить время на его рассмотрение.

ru.wikipedia.org/wiki/Фальсифицируемость

«Теория удовлетворяет критерию Поппера (является фальсифицируемой и, соответственно, научной в отношении теста этим критерием) в том случае, если существует возможность её экспериментального или иного опровержения.»

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

бесполезный словоблуд

я в курсе как науковерцы относятся к философии, при этом невежественно филосфствуя.

это примерно как демагоги рассуждают о логике.

списанный научным миром

Он не был списан никаким научным миром. Продолжаешь черпать инфу из жёлтой прессы?

Он не был списан никаким научным миром.

Был списн, свалил на рашко, поселился на маминой квартирке, вёл жизнь опустившегося бомжа. Но в «науке» математике — возможно и от бомжа (если он мыслит хм... своеобразно) получить теорию, которая будет признана другими математиками.

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

Был списн

Смотри меньше помоечных телеканалов.
В 1996 был награждён EMS prize. Дальше был бы теньюр в Стэнфорде, Беркли или другом универе такого уровня. Медаль Филдса списанному челу тоже не дали бы.

Медаль Филдса списанному челу тоже не дали бы.

Медаль Филдса дали за «Гипотезу Пуанкаре». Её бы дали, даже если бы чел возник вообще ниоткуда и изложил решение.

В этом и отличие математики от науки — что эксперименты не нужны, бэкграунд не нужен. Достаточно иметь своеобразный мозг/мышление.

блаблабла

Был списн

доказательства этого так и не было предъявлено

не раз доводилось например видеть код парсинга заголовков http. Спеку не читали, да? Не-а, а на кой, вот я вижу ответ, вот его и парсю.
или о, более массово — парсинг емайла. Кто читал ту спеку то о формате? я и сам не читал, увидел на стекоферфлов регесп монстра, со ссылкой на спеку, глянул ее, и все, больше не парсю, а ищу библиотеку которая это делает :)

Чорд :) я сопровождаю продукт с собственным SIP стеком, это то же самое :) но приходится таки поддерживать... там несложно, но логика такая, что не укладывается ни в один стандартный инструмент. Зато регэкспами работает — ибо не рекурсивно :)

Но это лирика и в чём-то седая древность. Сейчас проблемы более... мнэээ... интересные :)

да, этот пример у меня из мира железа проходит как «тролинг математиков»:
«и почему же Intel не смогли нанять математиков, призвать computer sciencе» когда проектировали?

Да всё они могли. Просто не хотели. Это ж Intel. Успех x86 (на 90% обязанный Гейтсу) застил глаза. Зачем ещё стараться искать у самого себя проблемы?

И не только у нас в программировании. Как Степанов(автор STL), на лекции в Яндексе ошарашил молодой зал — наука вообще социальный институт: репутаций, коллегиальных согласий, диспутов школ, интриг, .... Даже математика вот ...
(КАК?? Богом данное, абсолютное, незыблемое и единственно верное знание — зависит от совещательного мнения людей?)

Куда идти и как — таки зависит...

Вобщем с вами неинтересно, вы и так все знаете :)

Ага, если бы :)
Я ещё дальше от народа... а значит все эти наши сверхзнания просто становятся ни о чём...

Як математика спирається на нуль, так західна філософія (яка й породила науку) у своїй тяглості спирається на бога (чи Бога) як опорну категорію, і ніякої науки без попереднього богословського досвіду просто не було би. Наука вийшла з монастирських сутінків — значною мірою, прямо, опосередковано, іноді й всупереч, але звідти.

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

Но вообще это одна из тех вещей, которые ну очень легко потерять просто в силу её природы (а также позднейшего противоречия между наукой и религией).
Поэтому такую связь можно и для себя заново открывать каждые десять лет, узнавая как что-то новое. Увы. По работе сегодня такую же вещь увидел — в вопросе «почему X?» с ходу назвал 3 причины, а ещё одну забыл, хотя сам же 4 месяца тому назад её находил...

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

На тему эвристик: сравним внутренние технологии и отношения у двух например софтовых фирм с очень схожими продуктами, но основанных в 2000, 2010 и 2020. Будет ли у них что-то общее?

Да всё они могли. Просто не хотели. Это ж Intel.

думаю что не могли :)

Из фейлов научного подхода у нас, в программировании, можно вспомнить тягомотину с Алгол, получение сложностей с созданием компилятора, а потом — да пошли вы все, ученые, и появление С
Или фейл с VLIW — оказалось ученые не могут написать компилятор.

С проектированием процессоров думаю та же история.

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

Да, наука — уникальна, сравнивать не с чем.

Но вот базисы, относящиеся к религиям — есть разные.
Почему науку оказалось строить эффективно на этом конкретном — уф интересный вопросище.
Может вообще потому что
ru.wikipedia.org/...​ki/Ружья,_микробы_и_сталь

Но вообще это одна из тех вещей, которые ну очень легко потерять просто в силу её природы

это да. культура — штука хрупкая. культура рационального рассуждения поэтому тоже.

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

пишут уже — что сама идея прогресса фикция. она родилась в 18ом-19ом веке,
как contra идее движения мира к краху, концу света, Кали-Юга, и т.п. — в будущем, от «золотого времени» в прошлом.
а в 20ом оказалось что как-то наивно она выглядит. Но ессно — красиво! Как все наивно-абстрактное.

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

На тему эвристик: сравним внутренние технологии и отношения у двух например софтовых фирм с очень схожими продуктами, но основанных в 2000, 2010 и 2020. Будет ли у них что-то общее?

Будет конечно. Если ставится цель — найти общее — то его можно найти. Если — разное — то и оно найдется.
Хотя вот есть старая задачка, от математика, Льюиса Кэрролла
что общего у письменного стола и черного ворона...

ох уж эти философы/математики, только порадуешься какой идее — они тебе под дых лукаво:
— А комарика то убили...
(Чехов Толстому, во время чаепития на веранде, когда Толстой рассуждая о непротивлении злу насилием хлопнул комара на своей щеке)

Из фейлов научного подхода у нас, в программировании, можно вспомнить тягомотину с Алгол, получение сложностей с созданием компилятора, а потом — да пошли вы все, ученые, и появление С

Немного не так, C выстрелил по другой причине: он был сделан для Unix, и выстрелила Unix. А вот почему она выстрелила — потому что оказалась объективно оптимальной по массе параметров, включая открытость исходников (ещё без открытой лицензии) и понятную реализацию. Даже возможность как можно больше кода написать на C выстрелила позже — в исторических исходниках например есть сырцы /bin/cat как два экрана ассемблера PDP-7 :)

И ранний C был чудовищно кошмарен как раз против нормальной теории — чего стоят одни =- вместо -= и тому подобное. По пути развития CPL -> BCPL -> B -> C видно, как его упрощали ради запуска на игрушечных машинах, превращая в игрушку (в какой-то момент вообще считаем типов данных не было, был только int). Но из такого минимума они начали выкарабкиваться уже когда полученный флакон заинтересовал остальных потому, что всё прочее было в тяжёлом кризисе. На C образца 70-х современный сишник не стал бы писать, язык стал нормальным уже только с 80-х.

Что авторы C и Unix знали передовые разработки — описано в их мемуарах. Ну и по датам: например LR это 1965 (Кнут), TDOP Пратта это 1973, Паскаль Вирта это 1970... рукопашные парсеры к этому времени умели писать даже студенты... вопрос был только в мощностях. Algol 68 просто никто не тянул. Написать даже простой линкер для мощностей того времени было на грани подъёмности.

Мне из примеров этой эпохи ещё вспоминается Forth — если бы его изобрели до Fortran, PL/1 и прочих — то развитие пошло бы совсем иначе, но в том и фигня, что изобрести его смогли только отталкиваясь от этих разработок как от того, что показало свою несовершенность...

Такая же история с ужиманием в минимум, а затем расширением оттуда после завоевания народной любви повторялась неоднократно — сюда же вписать 8080/8086 в конце 70-х, Windows 3 в районе 1990, ARM от 80-х и к сейчас, Linux в 90-х... вон сейчас RISC-V в затылок дышит...

Или фейл с VLIW — оказалось ученые не могут написать компилятор.

Если речь про Itanium, фейл в другом, и это тоже Intel: сочетание амбиций кого-то из главных (Гроув?) и неумеренных обещаний, которые не сбылись (Rambus). EPIC не мог в принципе нормально выстрелить, если память тормозная как сейчас (37 нс лучшее время на переоткрытие строки). Учёные могут хоть ужом извернуться — или тормози процессор до 20МГц, или переходи на SRAM (с удорожанием в 10-20 раз), иначе заранее рассчитанная параллельность работать не будет. Там, где она есть — успешно пишут тот компилятор, работают себе несколько видов DSP на VLIW-EPIC.

С проектированием процессоров думаю та же история.

То, что оно крайне сложно — факт. А вот что тайминги кэша могут помочь извлечь чужие данные — любому инженеру было очевидно на стадии первого подключения того кэша. Вот что эта мысль не была развита вовремя и, даже если отрапортована, то прочно забыта — это уже проблема процессов в фирме. AMD почему-то хотя бы мимо Meltdown проскочил...

Может вообще потому что Ружья,_микробы_и_сталь

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

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

А это уже выводы уровня «к 2000 Лондон будет завален 4 метрами навоза». И ведь авторы подобных выводов просто честно экстраполировали, что знали.

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

ох уж эти философы/математики, только порадуешься какой идее — они тебе под дых лукаво:
— А комарика то убили...
(Чехов Толстому, во время чаепития на веранде, когда Толстой рассуждая о непротивлении злу насилием хлопнул комара на своей щеке)

:))

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

Підписатись на коментарі