Ближе к весне картошка дорожает, полагаю, из-за того, что она гниёт, и часть её выбрасывается. Можно, в принципе, осенью купить 7 вёдер по 30 рублей/кг, поместить в подвал, периодически перебирать, и к весне получить 3 ведра по 70 руб./кг (условно). Не думаю, что в овощехранилищах картошка хранится как-то иначе.
Так вроде бы и в обычном (нефункциональном) программировании можно было бы передать алгоритму ссылку на функцию и реализовать то же самое, разве нет?
Естественно, но реализовано это менее удобно. Как минимум нужно передавать ссылку на функцию, чаще - ссылку на функцию и на общую область памяти, чтобы передать замыкание. В паттернах GoF (команда, стратегия, шаблонный метод, посетитель) вообще рекомендуется писать класс, создавать объект класса, и передавать объект. В ранних версиях java так и делали, потом появились анонимные вложенные классы, сильно позже - лямбда-выражения.
в какой-то статье про ФП была связка с какой-то более абстрактной математической теорией.
Теория есть, да, но если слишком углубляться в неё и пытаться применить на практике, почему-то получается сложный и медленный код (несмотря на то, что теория местами обещает более быстрый код).
Обычно на практике погружаются не слишком глубоко (без всяких "моноидов" и т.п.), ограничиваются например передачей функций/замыканий, pattern matching, иммутабельность стараются использовать. Это практически во всех современных языках доступно.
Ну... В ООП основное средство выражения абстракций - объекты, в ФП - функции. Это не следующий уровень абстракции, они примерно эквивалентны (в ООП можно сделать объект "функция", который будет вести себя как функция, в ФП можно сделать функцию obj: (State,Args) -> (NextState,Result), которая преобразовывает состояние "объекта"). Для практического примера использования ФП можно посмотреть, как используется map() на python (или на scala, или на другом языке): ```
ys = list(map(lambda x:x*2),xs)
или, в ООП-стиле:
ys=[]
for x in xs:
ys.append(x.__mul__(2))
Здесь мы передали функцию lambda x:x*2 в типовой цикл преобразования списка в другой список, реализованный в функции map(). Точно так же могли передать метод (2).__mul__вместо анонимной функции.
Это не вся суть ФП, но наиболее частоиспользуемая, очевидная и полезная.
Что было целью и что стало результатом определения ценностей?
Ничего, что 4 выделенные ценности несколько противоречивы? Например, если опыт людей будет противоречить здравому смыслу, что выберете?
Чтобы никто не путался в толкованиях, каждую ценность мы дополнили метафорами, <...>
Метафоры - как раз такая вещь, как дорога в тысячу ли которая может всеми восприниматься по-разному (вы и сами это отмечаете). Вероятно, путаться не перестали.
Также замечу, что толкование ценности здравый смысл больше подходит понятию эффективность, а не здравый смысл (а в википедии этому сочетанию слов дано ещё несколько других определений).
К тому же я, как бывалый водитель, инстинктивно снижаю скорость в местах, где теоретически пешеход может внезапно оказаться на дороге: куст на обочине, будка, короче, там, где я не контролирую пространство у дороги на 100%.
ЕМНИП мне такое рассказывали в автошколе (или читал в книжке по контраварийному вождению), так что это даже вопрос обучения, а не опыта. Жаль, что в ПДД формулировка расплывчатая, наподобие "вести со скоростью, соответствующей дорожным условиям".
Автопилот этого не делает.
Если бы делал - ехал бы медленно, если смотреть с позиции "бывалых" водителей. Другое дело, что "бывалые" водители бывает водят ни разу не безопасно, но думают, что безопасно (не за каждым кустом прячется пешеход, поэтому в условных 99.9% всё отлично). Похоже, выбрать адекватную скорость непросто.
...а если стрелок в трёх километрах? Или с орбиты лупит по защищённому щитом объекту?
Не знаю, что в каноне Герберта, но в нашей реальности для фотонов время не течёт, и поэтому, если допустить возможность этого "субатомного взрыва", из-за квантовых эффектов орудие может взрываться прямо в момент выстрела в щит, а цель - в момент, когда фотоны долетели бы до щита. Такое вот интересное поведение полуфантастической физики.
А вообще, у них там варп есть, так что наши рассуждения весьма спекулятивны)
Ближе к весне картошка дорожает, полагаю, из-за того, что она гниёт, и часть её выбрасывается. Можно, в принципе, осенью купить 7 вёдер по 30 рублей/кг, поместить в подвал, периодически перебирать, и к весне получить 3 ведра по 70 руб./кг (условно). Не думаю, что в овощехранилищах картошка хранится как-то иначе.
How do they call pull requests?
Возможно, они до сих пор спорят.
Естественно, но реализовано это менее удобно. Как минимум нужно передавать ссылку на функцию, чаще - ссылку на функцию и на общую область памяти, чтобы передать замыкание. В паттернах GoF (команда, стратегия, шаблонный метод, посетитель) вообще рекомендуется писать класс, создавать объект класса, и передавать объект. В ранних версиях java так и делали, потом появились анонимные вложенные классы, сильно позже - лямбда-выражения.
Теория есть, да, но если слишком углубляться в неё и пытаться применить на практике, почему-то получается сложный и медленный код (несмотря на то, что теория местами обещает более быстрый код).
Обычно на практике погружаются не слишком глубоко (без всяких "моноидов" и т.п.), ограничиваются например передачей функций/замыканий, pattern matching, иммутабельность стараются использовать. Это практически во всех современных языках доступно.
В процедурном стиле не было бы методов.
Scala - как раз смесь ООП и ФП. Имхо, очень удобно. Даже немного жаль, что сейчас она
не нужнапрактически не используется, т.к. есть java, kotlin.Современный python к ней приближается по удобству, для меня эти языки похожи по гибкости.
Так и знал, что при обсуждении ООП начнётся обсуждение дебилов :)
Ну... В ООП основное средство выражения абстракций - объекты, в ФП - функции. Это не следующий уровень абстракции, они примерно эквивалентны (в ООП можно сделать объект "функция", который будет вести себя как функция, в ФП можно сделать функцию obj: (State,Args) -> (NextState,Result), которая преобразовывает состояние "объекта").
Для практического примера использования ФП можно посмотреть, как используется map() на python (или на scala, или на другом языке):
```
или, в ООП-стиле:
Здесь мы передали функцию
lambda x:x*2
в типовой цикл преобразования списка в другой список, реализованный в функции map(). Точно так же могли передать метод(2).__mul__
вместо анонимной функции.Это не вся суть ФП, но наиболее частоиспользуемая, очевидная и полезная.
В одной компании, где я работал, был переходящий кубок за некоторые спортивные достижения. Ничего страшного в этом не было.
Если эту идею развивать, такая дичь получается :D
Интересная история.
Что было целью и что стало результатом определения ценностей?
Ничего, что 4 выделенные ценности несколько противоречивы? Например, если опыт людей будет противоречить здравому смыслу, что выберете?
Метафоры - как раз такая вещь,
как дорога в тысячу ликоторая может всеми восприниматься по-разному (вы и сами это отмечаете). Вероятно, путаться не перестали.Также замечу, что толкование ценности здравый смысл больше подходит понятию эффективность, а не здравый смысл (а в википедии этому сочетанию слов дано ещё несколько других определений).
В уровнях автономности 1-3 (из 5) так и предусмотрено.
ЕМНИП мне такое рассказывали в автошколе (или читал в книжке по контраварийному вождению), так что это даже вопрос обучения, а не опыта. Жаль, что в ПДД формулировка расплывчатая, наподобие "вести со скоростью, соответствующей дорожным условиям".
Если бы делал - ехал бы медленно, если смотреть с позиции "бывалых" водителей. Другое дело, что "бывалые" водители бывает водят ни разу не безопасно, но думают, что безопасно (не за каждым кустом прячется пешеход, поэтому в условных 99.9% всё отлично). Похоже, выбрать адекватную скорость непросто.
Точно!..
Человеки и с тем, и с тем одновременно справляются :(
Какое время - такие и герои. Это как ретрофутуризм - произведение больше говорит об авторе(-ах), чем о героях.
Не знаю, что в каноне Герберта, но в нашей реальности для фотонов время не течёт, и поэтому, если допустить возможность этого "субатомного взрыва", из-за квантовых эффектов орудие может взрываться прямо в момент выстрела в щит, а цель - в момент, когда фотоны долетели бы до щита. Такое вот интересное поведение полуфантастической физики.
А вообще, у них там варп есть, так что наши рассуждения весьма спекулятивны)
это ж придётся драйвера интернета реализовывать...
...нейрополимер
Не более нелогично, чем требования называть рисунки "Рисунок 1. Подпись", а в тексте ссылаться как "(рис. 1)". Word такую нумерацию не автоматизирует.