-Поиск по дневнику

Поиск сообщений в rss_forum_sources_ru

 -Подписка по e-mail

 

 -Постоянные читатели

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 29.07.2007
Записей:
Комментариев:
Написано: 80




Форум на Исходниках.RU


Добавить любой RSS - источник (включая журнал LiveJournal) в свою ленту друзей вы можете на странице синдикации.

Исходная информация - http://forum.sources.ru.
Данный дневник сформирован из открытого RSS-источника по адресу http://forum.sources.ru/yandex.php, и дополняется в соответствии с дополнением данного источника. Он может не соответствовать содержимому оригинальной страницы. Трансляция создана автоматически по запросу читателей этой RSS ленты.
По всем вопросам о работе данного сервиса обращаться со страницы контактной информации.

[Обновить трансляцию]

Что делать с жунами

Пятница, 23 Апреля 2021 г. 02:02 + в цитатник
korvin: sergioK, кто тебя вообще на работу взял? Джуны, видимо

    Benchmark (itemsToAdd) (type) Mode Cnt Score Error Units
    Queues.addMany 1000000 LinkedList avgt 15 10204.559 ± 1692.646 us/op
    Queues.addMany 1000000 ArrayQueue avgt 15 5026.365 ± 609.288 us/op


LinkedList в два раза менее производительный, чем ArrayDeque в качестве очереди. :facepalm:
Ты не «практик», ты — практикант. Максимум.

Добавлено
Цитата sergioK @
и сравни с вектором

Нахер с этим говном сравнивать? Его никакой адекватный человек использовать не станет.

https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846695


Метки:  

Что делать с жунами

Пятница, 23 Апреля 2021 г. 01:03 + в цитатник
korvin:
Цитата D_KEY @
А почему? И какой толк от последовательности инструкций, если мы убираем изменение состояния?

Присоединяюсь к вопросу.

applegame, чем это:

    bool contains(T)(const T[] arr, const T e) pure {
    foreach(const x; arr) if(x == e) return true;
    return false;
    }

отличается от
    contains [] e = False
    contains (x:xs) e = x == e || contains xs e

?

https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846690


Метки:  

Что делать с жунами

Пятница, 23 Апреля 2021 г. 00:30 + в цитатник
D_KEY:
Цитата applegame @
А я вот останавливаюсь на последовательном выполнении инструкций.

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

Цитата
Ну а мутабельное состояние-то есть?

Насколько я вижу, нет. Но это просто функция. Программу-то полноценную если ты начнешь писать без мутабельности, то не скатишься ли ты к функциональному стилю, по сути?

https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846688


Метки:  

Что делать с жунами

Пятница, 23 Апреля 2021 г. 00:08 + в цитатник
korvin:
Цитата applegame @
Вот тебе
другой пример:
foo(bar(), baz())
Что выполнится раньше: bar() или baz()?

Странный вопрос. Для чистого ФП разницы нет (разве что одна из функций bar, baz значительно дольше вычисляется, чем другая). Для императивного зависит от порядка вычисления аргументов функции и стратегии вычисления (call-by-value vs call-by-name).

Цитата applegame @
Это ФП или ИП? И есть ли тут мутабельное состояние?
    bool contains(T)(const T[] arr, const T e) pure {
    foreach(const x; arr) if(x == e) return true;
    return false;
    }


Это может быть как ФП, так и ИП, внезапно.

Вот тебе другой пример:

    public static void main(String[] args) {
    System.out.println(foo(1));
    }
    private static int foo(int i) {
    return bar(gee(++i));
    }
    private static int bar(int x) {
    return ++x+1;
    }
    private static int gee(int x) {
    return ++x*2;
    }


— это композиция функций? ФП, значит?

Цитата applegame @
Ох уж эта высокомерная надменность.

Никакой надменности, простая констатация фактов.

Цитата applegame @
Полная уверенность, что именно твое определение "действительность", а оппонент новичок с ложным впечатлением.

Это общепринятое определение.

----------------------------------------------------------------

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

Процесс такой: составление упорядоченного набора чисел, потом фильтрация по (x < max/2), потом суммирование.
Вариантов распределения входных значений 5:
– по возрастанию
– по убыванию
– по возрастанию до середины, потом по убыванию (например: 1 2 3 4 5 4 3 2 1)
– по убыванию до середины, потом по возрастанию (например: 5 4 3 2 1 2 3 4 5)
– псевдослучайное

ожидаемо ArrayList слил во всех кейсах, кроме первого (добавление в конец):

    Benchmark (itemMapperType) (itemsToAdd) (type) Mode Cnt Score Error Units
    CollectionsBenchmark2.addMany ascending 100000 LinkedList avgt 10 1998.600 ± 825.551 us/op
    CollectionsBenchmark2.addMany ascending 100000 ArrayList avgt 10 1158.352 ± 630.132 us/op
    CollectionsBenchmark2.addMany descending 100000 LinkedList avgt 10 1984.810 ± 819.924 us/op
    CollectionsBenchmark2.addMany descending 100000 ArrayList avgt 10 380804.497 ± 4571.318 us/op
    CollectionsBenchmark2.addMany asc->desc 100000 LinkedList avgt 10 2121.230 ± 736.523 us/op
    CollectionsBenchmark2.addMany asc->desc 100000 ArrayList avgt 10 191833.039 ± 3449.825 us/op
    CollectionsBenchmark2.addMany desc->asc 100000 LinkedList avgt 10 1876.418 ± 727.067 us/op
    CollectionsBenchmark2.addMany desc->asc 100000 ArrayList avgt 10 168997.600 ± 4365.277 us/op
    CollectionsBenchmark2.addMany random 100000 LinkedList avgt 10 3463.063 ± 908.374 us/op
    CollectionsBenchmark2.addMany random 100000 ArrayList avgt 10 195038.198 ± 3059.551 us/op


Однако, если поменять алгоритм наполнения ArrayList на добавление всегда в конец с сортировкой в финале, то сливает уже LinkedList, кроме последнего метода:
    Benchmark (itemMapperType) (itemsToAdd) (type) Mode Cnt Score Error Units
    CollectionsBenchmark2.addMany ascending 100000 LinkedList avgt 10 1998.600 ± 825.551 us/op
    CollectionsBenchmark2.addMany ascending 100000 ArrayList.Sort avgt 10 1167.463 ± 521.571 us/op
    CollectionsBenchmark2.addMany descending 100000 LinkedList avgt 10 1984.810 ± 819.924 us/op
    CollectionsBenchmark2.addMany descending 100000 ArrayList.Sort avgt 10 1348.757 ± 585.568 us/op
    CollectionsBenchmark2.addMany asc->desc 100000 LinkedList avgt 10 2121.230 ± 736.523 us/op
    CollectionsBenchmark2.addMany asc->desc 100000 ArrayList.Sort avgt 10 1791.563 ± 622.418 us/op
    CollectionsBenchmark2.addMany desc->asc 100000 LinkedList avgt 10 1876.418 ± 727.067 us/op
    CollectionsBenchmark2.addMany desc->asc 100000 ArrayList.Sort avgt 10 1348.264 ± 629.691 us/op
    CollectionsBenchmark2.addMany random 100000 LinkedList avgt 10 3463.063 ± 908.374 us/op
    CollectionsBenchmark2.addMany random 100000 ArrayList.Sort avgt 10 19608.787 ± 316.377 us/op

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

И как бонус, сравнение LL с OpenLL, IntrusiveLL и TreeMap (SortedMap):
    Benchmark (itemMapperType) (itemsToAdd) (type) Mode Cnt Score Error Units
    CollectionsBenchmark2.addMany ascending 100000 LinkedList avgt 10 1998.600 ± 825.551 us/op
    CollectionsBenchmark2.addMany ascending 100000 OpenLinkedList avgt 10 1590.634 ± 771.149 us/op
    CollectionsBenchmark2.addMany ascending 100000 TreeMap avgt 10 16178.317 ± 352.460 us/op
    CollectionsBenchmark2.addMany ascending 100000 IntrusiveLinkedList avgt 10 958.116 ± 459.509 us/op
    CollectionsBenchmark2.addMany descending 100000 LinkedList avgt 10 1984.810 ± 819.924 us/op
    CollectionsBenchmark2.addMany descending 100000 OpenLinkedList avgt 10 1560.737 ± 783.328 us/op
    CollectionsBenchmark2.addMany descending 100000 TreeMap avgt 10 15963.631 ± 658.773 us/op
    CollectionsBenchmark2.addMany descending 100000 IntrusiveLinkedList avgt 10 940.864 ± 433.400 us/op
    CollectionsBenchmark2.addMany asc->desc 100000 LinkedList avgt 10 2121.230 ± 736.523 us/op
    CollectionsBenchmark2.addMany asc->desc 100000 OpenLinkedList avgt 10 1584.023 ± 841.150 us/op
    CollectionsBenchmark2.addMany asc->desc 100000 TreeMap avgt 10 11919.388 ± 287.896 us/op
    CollectionsBenchmark2.addMany asc->desc 100000 IntrusiveLinkedList avgt 10 947.756 ± 473.614 us/op
    CollectionsBenchmark2.addMany desc->asc 100000 LinkedList avgt 10 1876.418 ± 727.067 us/op
    CollectionsBenchmark2.addMany desc->asc 100000 OpenLinkedList avgt 10 1503.495 ± 891.668 us/op
    CollectionsBenchmark2.addMany desc->asc 100000 TreeMap avgt 10 8444.099 ± 744.990 us/op
    CollectionsBenchmark2.addMany desc->asc 100000 IntrusiveLinkedList avgt 10 917.276 ± 511.321 us/op
    CollectionsBenchmark2.addMany random 100000 LinkedList avgt 10 3463.063 ± 908.374 us/op
    CollectionsBenchmark2.addMany random 100000 OpenLinkedList avgt 10 1700.960 ± 795.577 us/op
    CollectionsBenchmark2.addMany random 100000 TreeMap avgt 10 33226.797 ± 1511.600 us/op
    CollectionsBenchmark2.addMany random 100000 IntrusiveLinkedList avgt 10 1301.572 ± 462.545 us/op

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

segioK, я, конечно, не специалист по бенчмаркам и всё такое, но если ты всё ещё считаешь, что java.util.LinkedList для чего-то будет лучшим выбором, предлагай кейс, а иначе прекрати нести чушь.

https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846687


Метки:  

Не поздно ли начать изучать С++?

Пятница, 23 Апреля 2021 г. 00:03 + в цитатник
scrambrella:
Цитата Qraizer @
Кто пробовал писать под *никсы, сами могут рассказать, каково там писать графические приложения в условиях кучи графических морд их ОСей.

В линухе с созданием морд ещё хуже чем в винде. Если надо чтоб работало и там и там осваивать QT придётся неизбежно.

Добавлено
Цитата Qraizer @
Qt Core
Что-то я вижу там кучу классов... которые мапятся буквально на десяток аспектов. Серьёзно? И ради этого мне предлагается тащить в приложение библиотек на десятки мегабайт? Спасибо, обойдусь.

Мегабайты сегодня не экономят.

В QT реализованы наиболее употребляемые контейнеры STL. В ряде случаев они более удобные. В QVector есть метод fill - заполнить заданным значением. В std::vector его нет.
Портирование с STL на QT осуществляется всего лишь заменой имени класса контейнера, так как есть дублирующие методы с названиями из STL.

Добавлено
Нативные сеть и потоки это полный ад, независимо от ОС. Писать нативный код на C++ качественно и быстро практически не реально.

https://forum.sources.ru/index.php?showtopic=421325&view=findpost&p=3846686


Метки:  

Интересные задачки

Четверг, 22 Апреля 2021 г. 23:23 + в цитатник
ya2500:
Цитата
На входе задана схема склада — прямоугольная сетка размером n x m (3 <= n, m <= 8)


Думаю, здесь имелось ввиду, что обе стороны - в пределах от 3 до 8 включительно )) в таком случае, нет смысла слишком углубляться в хитрые методы сокращения перебора; но остаётся крайне критичным быстрое распознание повторения позиции. Потому как иначе наш "грузчик" может по 10000 ходов ящики туда-сюда кантовать. А хотелось бы почаще находить решение уровня до достижения конца строки. И у меня, вроде бы, есть годные идеи по этому поводу.

Добавлено
Однако, пока что есть другие проекты в очереди. Условное полное название текущего проекта: "7 мастей пустыни Руб-Эль-Хали" - и, да, это текстовая игра ))

https://forum.sources.ru/index.php?showtopic=316466&view=findpost&p=3846683


Метки:  

Как загрузить в регистр CPU значения указателя

Четверг, 22 Апреля 2021 г. 23:04 + в цитатник
Jin X: По поводу отладки асм-кода в VS я скажу, что это полное дно.
Я нечасто юзаю студию для отладки кода на асме, но точки останова там постоянно ставятся мимо и курсор ходит мимо (открываешь отладчик Ctrl+Alt+D и видишь, что код исходника там один, а дизасм другой).
Сбивают всё пустые строки (и закомментированные соответственно), насколько я помню (полгода уже, наверное, не отлаживал там асм-код).

Плюс ко всему, регистры ebx, esi, edi, ebp нужно сохранять и восстанавливать при изменении (или не использовать их). На этот счёт есть соглашение о вызовах.
Исключение может возникнуть по этой причине, но не в самом асм-коде, а уже после него (либо если вызывать какие-то функции из асм-кода).

Не знаю, дело ли в обновлении или в том, что отладчик тупо показывает не ту строку, а по факту из-за изменения ebx возникает исключение в коде за асм-блоком.

https://forum.sources.ru/index.php?showtopic=421354&view=findpost&p=3846682


Метки:  

Неисправное заземление электросети - может убить технику?

Четверг, 22 Апреля 2021 г. 22:45 + в цитатник
Prince: Не балуйся с розетками 220. Здоровее будешь сам, и окружающие не пострадают.

https://forum.sources.ru/index.php?showtopic=421370&view=findpost&p=3846681


Метки:  

Не поздно ли начать изучать С++?

Четверг, 22 Апреля 2021 г. 22:22 + в цитатник
shm:
Цитата Qraizer @
WinAPI является одним из лучших ОС API в мире.

Не смог сдержаться. На мой взгляд WinAPI - это как раз таки пример как не надо делать api. Сравнить ту же модель синхронизации Event'ах и *nix CV: можно посмотреть различия на примере consumer-producer. А костыли вроде PulseEvent и SignalObjectAndWait откуда взялись? Именно из-за абсолютно кривой архитектуры. Правда со временем до MS это начало доходить и теперь даже futex'ы появились.
Цитата Qraizer @
Графический API операционных систем семейства Windows является самым гибким графическим API в мире.

Жирно. Даже очень. Даже далекому от WinAPI человеку стоит просто взглянуть на ту же CreateWindowEx и все становится понятно. Видимо из-за "удобности" этой графической подсистемы добрая половина десктопоного ПО (причем иногда той же MS)сейчас рендерит пользовательский интерфейс на web-движке, не редко даже вставляют прямо хромиум целиком. И опять же тот же Qt что-то отличное от примитивной кнопки рендерит через OGL.

https://forum.sources.ru/index.php?showtopic=421325&view=findpost&p=3846680


Метки:  

Что делать с жунами

Четверг, 22 Апреля 2021 г. 21:44 + в цитатник
Qraizer:
Цитата sergioK @
...программист сделавший глупость юридически никак за это не отвечает
Это потому что в лицензии так написано. А не приняв оферту лицензии, не имеешь права использовать (потенциально багованное) ПО. Ты всерьёз думаешь, что лицензия поможет программисту – хотя скорее исцом будет компания, в которой программист работает, но не суть, внутренние корпоративные разборки тоже бывают по-разному оканчиваются – уйти от уголовной ответственности, если дело примет такой оборот? Сочувствую, но ты плохо себе представляешь, как работает закон и каким образом лицензии с ним взаимодействуют.
Цитата sergioK @
Вот и придумали шутку про дроздов, а в каждой шутке доля правды, as smaller as better
Это потому что никто в суды не подавал. А если и подавал, то всё обычно решалось в досудебном порядке, чтоб никто ничего никому внешне не попортил, ни в репутации, ни на физиономии. Нынче другие времена, и суды вполне себе, бывает, выигрываются. И – да, мы о бизнесе. В области высококритичного ПО понятия лицензий просто нет. Там никто не будет просить прочитать и согласиться. Там всё куда проще: спасибо за деньги, вот вам копия, циркулярный №XXX-YYY, документация во вложении; и там чёрным по-человеческому все-все-все планы, методики, правила, мануалы итд итп — всё, что касается эксплуатации такого ПО и в рамках чего поставщик отвечает за качество.
Когда-то, не спорю, программы были маленькими и простыми. Потому что компьютеры обладали малыми ресурсами, а у программистов были в использовании простые инструменты. Увы, приходилось многое перекладывать на плечи юзеров. Нынче ситуация далеко не та, время дроздов в контексте той поговорки ушло где-то уже на рубеже веков, а с тех пор ещё 20 лет прошло.
Цитата sergioK @
В вашей это в какой ? ты же програмист или нет ?
:wacko: Авионика. По должности да, более подходящих в ЕТКС нет. По сфере деятельности нет. Самое короткое описание – "технический специалист". И список длиною в пол-листа в должностной инструкции. Хотя программированием занимаюсь, но не высококритичного кода как такового, а различного инструментария для его верификации и сертификации. Включая проектирование, создание и саппорт испытательных стендов с исходным аппаратным и исполнительным окружением flight-кода under inspection, тестового окружения на базе ПК и различных инструментов статистического анализа, генерации итоговой документации, управления артефактами, автоматизации процессов итп.

Добавлено
Цитата sergioK @
И какая связь ? после второй прививки нельзя работать?
Можно. Но не хочется, хочется кофе и спать.
Цитата sergioK @
Таганрог это столица IT ? Или это была ирония ?
В какой-то мере да. Видосик не смотрел? Посмотри, меня тоже улыбало.

https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846677


Метки:  

Неисправное заземление электросети - может убить технику?

Четверг, 22 Апреля 2021 г. 21:06 + в цитатник
Сергей85: Исходные данные:
- адаптер питания 5В;
- минус адаптера соединен напрямую с заземляющим зелено-желтым проводом розетки 230В;
- адаптер питает простую схему: транзистор замыкает обмотку реле, обмотка реле замыкает провода 230В, провода 230В идут к нагрузке1;
- если при разомкнутом реле (нагрузка1 обесточена) играться проводами 230В руками (искрение при подключении-отключении высокоамперной нагрузки2 в соседней розетке) - то каким-то образом идут наводки в управляющую цепь 5В схемы;
- в итоге транзистор на короткое время включается-выключается циклично (судя по светодиоду, очень похоже на 50Гц) - а потом умирает.

Что за природа помехи? Из GND розетки пришла или от контактов 230В передалась каким-то магнитным образом в контакты реле 5В из разомкнутых контактов резе 230В?

https://forum.sources.ru/index.php?showtopic=421370&view=findpost&p=3846675


Метки:  

Не поздно ли начать изучать С++?

Четверг, 22 Апреля 2021 г. 21:06 + в цитатник
Qraizer: WinAPI является одним из лучших ОС API в мире. Объём его документации превышает таковой для любых других API вместе взятых, количество аспектов, охватываемых WinAPI, от безопасности и криптографии до робастности 24/7 приложений, сравним с суммой аспектов остальных API вместе взятых, и то при условии навешивания поверх них ассетов сторонней разработки. Неудивительно, что регулярно попадаются неосилившие его индивидуумы.
Графический API операционных систем семейства Windows является самым гибким графическим API в мире. Имея в своей основе процедурный подход, он требует от программиста серьёзных усилий для вхождения, это оборотная сторона медали. Личное дело каждого выбрать: простота или гибкость. Любой фрейморк для Windows способен покрыть лишь некоторый срез графического API. И зачастую он весьма невелик: чуть в сторону, и никуда от API не деться.
Фреймворки выбирают обычно из-за простоты в ущерб гибкости, когда последняя невосстребована. Что до конкретно QT, его выбирают из-за кроссплатформенности, а не простоты. Кто пробовал писать под *никсы, сами могут рассказать, каково там писать графические приложения в условиях кучи графических морд их ОСей.
M
И снова спрашиваю: какое это имеет отношение в тезису о ненужности стандартной библиотеки C++? Третий раз повторять вопрос не буду, просто вкачу за флуд.

Добавлено
Цитата scrambrella @
QT как фреймыворк применять вы не обязаны. Можно взять только контейнеры.
Пф.
C++ Standard Library headers
Qt Core
Что-то я вижу там кучу классов... которые мапятся буквально на десяток аспектов. Серьёзно? И ради этого мне предлагается тащить в приложение библиотек на десятки мегабайт? Спасибо, обойдусь.

https://forum.sources.ru/index.php?showtopic=421325&view=findpost&p=3846674


Метки:  

Что делать с жунами

Четверг, 22 Апреля 2021 г. 20:30 + в цитатник
applegame:
Цитата D_KEY @
ИП - это подход с последовательным выполнением инструкций, которые модифицируют данные(состояние), теоретическая модель - машина Тьюринга.
А я вот останавливаюсь на последовательном выполнении инструкций. Мутабельное состояние мне представляется необязательным.
Цитата D_KEY @
В ФП вопрос не имеет смысла
Именно.
Цитата D_KEY @
Это функция. Судя по всему, чистая. Значит могла бы быть и в ФП. Правда если всматриваться в тело функции, то можно увидеть инструкции, т.е. формально, наверное, не чистое ФП. Такой подход свойственнен гибридным языкам
Ну а мутабельное состояние-то есть?

https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846673


Метки:  

Что делать с жунами

Четверг, 22 Апреля 2021 г. 18:42 + в цитатник
D_KEY:
Цитата applegame @
Что является главным отличием ИП от ФП?

Если кратко, то
ИП - это подход с последовательным выполнением инструкций, которые модифицируют данные(состояние), теоретическая модель - машина Тьюринга.
ФП - это подход с вычислением функций, теоретическая модель - лямбда исчисления Черча.

Добавлено
Цитата applegame @
Является ли иммутабельность/мутабельность этим главным отличием?

Одним из. Главным или нет - не понимаю вопроса.

Цитата
Может ли ИП существовать без мутабельности?

Думаю, что нет

Добавлено
Цитата applegame @
Вот тебе
другой пример:
foo(bar(), baz())
Что выполнится раньше: bar() или baz()? ;)

В ФП вопрос не имеет смысла, в ИП зависит от языка или даже компилятора.

Добавлено
Цитата applegame @
Это ФП или ИП?

Это функция. Судя по всему, чистая. Значит могла бы быть и в ФП. Правда если всматриваться в тело функции, то можно увидеть инструкции, т.е. формально, наверное, не чистое ФП. Такой подход свойственнен гибридным языкам :-?

https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846670


Метки:  

Что делать с жунами

Четверг, 22 Апреля 2021 г. 18:39 + в цитатник
applegame:
Цитата korvin @
— тоже некоторая «последовательность», и что?
Это не последовательность, это композиция функций. ФП абстрагируется от порядка выполнения максимально, пока не придется столкнуться с реальным императивным миром и тут-то волшебные замки рушатся. Вот тебе
другой пример:
foo(bar(), baz())
Что выполнится раньше: bar() или baz()? ;)
Цитата korvin @
Снова приходим к тому, что это ключевое отличие.
Это ФП или ИП? И есть ли тут мутабельное состояние?
    bool contains(T)(const T[] arr, const T e) pure {
    foreach(const x; arr) if(x == e) return true;
    return false;
    }

Цитата korvin @
Ну, ты, конечно, можешь считать что угодно, только действительность от этого не меняется. Потому и не рекомендуют новичкам объяснять монады вообще и монаду IO в частности с демонстрации do-нотации, т.к. это создаёт у них такое вот ложное впечатление.
Ох уж эта высокомерная надменность. Полная уверенность, что именно твое определение "действительность", а оппонент новичок с ложным впечатлением. При этом выпад содержит ноль аргументов. :)

https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846669


Метки:  

Что делать с жунами

Четверг, 22 Апреля 2021 г. 17:51 + в цитатник
korvin:
Цитата applegame @
Но таки в моем примере запросто может появиться императивщина. В Elixir/Erlang функции запросто могут быть грязными с сайд эффектами, а в моем коде идет вызов функции foo(), причем два раза и в определенной ПОСЛЕДОВАТЕЛЬНОСТИ.

Вложенный вызов чистых функций в «чистом» функциональном языке
    x = foo (bar (gee (qux 42)))

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

Цитата applegame @
Я в целом считаю, что даже в хацкеле как только ты задействовал do-нотацию, считай начал писать императивно.

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

https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846668


Метки:  

Интересные задачки

Четверг, 22 Апреля 2021 г. 17:17 + в цитатник
Славян:
Цитата ya2500 @
запретить двигать ящик обратно
Крайне туманная формулировка, а в строгом соответствии с вашими словами вообще ошибочная! Ибо есть куча лабиринтов, где ящик двигается, давая проход челу, а потом возвращается назад. Так что надо аккуратнее с этой фразой.

Цитата ya2500 @
и вообще, запретить повторение ситуации.
Тоже чутка размытая формулировка. Если ситуация - с положением грузов и человека, то да, можно и запретить. А если только с положением грузов, то ошибочный запрет. (см. выше).

Но все эти запретики - крохотное количество в образующихся вариантах, так что спасения не несут никакого. Так что не:
Цитата ya2500 @
перебор точно до шахмат не дотянется и близко.
, а перебор переплюнет шахматы на раз-два. ;)

https://forum.sources.ru/index.php?showtopic=316466&view=findpost&p=3846665


Метки:  

Что делать с жунами

Четверг, 22 Апреля 2021 г. 16:31 + в цитатник
applegame:
Цитата D_KEY @
applegame, ещё ты почему-то смешиваешь языки и парадигмы. То, что в каком-то языке с поддержкой ФП, есть поддержка ИП, не делает фичи ИП фичами ФП.
Да нет, тебе показалось. Вот главные вопросы:
Что является главным отличием ИП от ФП?
Является ли иммутабельность/мутабельность этим главным отличием?
Ну и как бонус:
Может ли ИП существовать без мутабельности?

Добавлено
Цитата korvin @
applegame, так, пажди, ёмана, это просто создание нового скоупа, тут нет ничего императивного, то что оно записывается линейно, а не вложено — это просто синтаксический сахар, чтобы не было больших лестниц, а по сути это:
Ага, это был прикол. Но таки в моем примере запросто может появиться императивщина. В Elixir/Erlang функции запросто могут быть грязными с сайд эффектами, а в моем коде идет вызов функции foo(), причем два раза и в определенной ПОСЛЕДОВАТЕЛЬНОСТИ.
Я в целом считаю, что даже в хацкеле как только ты задействовал do-нотацию, считай начал писать императивно.

https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846664


Метки:  

Что делать с жунами

Четверг, 22 Апреля 2021 г. 16:01 + в цитатник
korvin: applegame, так, пажди, ёмана, это просто создание нового скоупа, тут нет ничего императивного, то что оно записывается линейно, а не вложено — это просто синтаксический сахар, чтобы не было больших лестниц, а по сути это:

    let a = 1 in
    let b = 2 in
    let (b, a) = (a, b) in
    ....


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

Никакой императивщины тут нет.

Вот, например, в Go похожее выражение:

    var a, b int
    a = 1
    b = 2
    a, b = b, a


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

https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846663


Метки:  

Что делать с жунами

Четверг, 22 Апреля 2021 г. 15:36 + в цитатник
D_KEY:
Цитата applegame @
Просто в эликсире можно, так сказать, "ребиндить" имена переменных. То есть в одной строке переменная указывает на одни данные, в другой ее можно перебиндить и она будет указывать уже на другие данные. А сами данные строго иммутабельны.

Т.е. это "другие" a и b? Тогда не понимаю, в чем проблема.

Добавлено
Цитата applegame @
Изменение состояние программы - это не признак императивного программирования. Это признак программирования вообще, в том числе и ФП.

А мне вот кажется, ты ошибаешься :)

Добавлено
applegame, ещё ты почему-то смешиваешь языки и парадигмы. То, что в каком-то языке с поддержкой ФП, есть поддержка ИП, не делает фичи ИП фичами ФП.

https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846662


Метки:  

Поиск сообщений в rss_forum_sources_ru
Страницы: 2628 ... 2534 2533 [2532] 2531 2530 ..
.. 1 Календарь