Pull to refresh

С добавлением лямбда-функций язык программирования Excel стал полным по Тьюрингу

Programming *Functional Programming *Software


Microsoft теперь называет электронные таблицы Excel языком программирования, а с добавлением лямбд он стал полным по Тьюрингу.

Язык программирования считается полным по Тьюрингу, если на нём можно реализовать любой возможный алгоритм. Именно эту возможность реализуют лямбды.
Total votes 25: ↑24 and ↓1 +23
Views 14K
Comments 17

Lambda и Razer представили ноутбук на Linux для разработчиков в сфере машинного обучения

Algorithms *Machine learning *Gadgets Popular science Laptops

Игровой бренд Razer совместно с компанией Lambda выпустил ноутбук TensorBook, ориентированный на разработчиков в сфере машинного обучения. Его поставляют со специальным ПО.

Читать далее
Total votes 2: ↑2 and ↓0 +2
Views 3.5K
Comments 4

Лямбды

.NET *
Некоторое время назад я узнал о лямбдах, но не совсем понимал принципов построения выражений с лямбдой. Но сегодня наткнулся на пост Charlie Calvert'а и всё для себя прояснил.
я тоже хочу прояснить для себя лямбды
Total votes 21: ↑19 and ↓2 +17
Views 2.9K
Comments 9

C++0x (С++11). Лямбда-выражения

C++ *
Tutorial
Буквально на днях случайно наткнулся на Хабре на статью о лямбда-выражениях из нового (будущего) стандарта C++. Статья хорошая и даёт понять преимущества лямбда-выражений, однако, мне показалось, что статья недостаточно полная, поэтому я решил попробовать более детально изложить материал.

Читать дальше
Total votes 75: ↑71 and ↓4 +67
Views 276K
Comments 83

(Зло)употребление C# 4.0 Dynamic – Бестиповое Лямбда-Исчисление, Нумералы Чёрча, и все-все-все… (ч.1)

.NET *
Translation

Введение


Воскресное утро, время для еще одного эпизода в серии Безумные Воскресения. Еще раз в одной категории с риском разрыва мозгов, но ведь это как раз то, что нам нравится, не так ли? На этот раз мы рассмотрим бестиповое лямбда-исчисление в C#. Но погодите, разве C# не типизированный язык? Действительно. Но значит ли это, что все, что вы делаете на C# должно быть статически типизировано? Не обязательно: типизация присутствует в языке как инструмент, который вы можете либо не трогать, либо применить. В этом топике мы рассмотрим как новое ключевое слово dynamic из C# 4.0 под несколько странным углом…
Читать дальше →
Total votes 57: ↑41 and ↓16 +25
Views 4.9K
Comments 22

Что такое лямбда?

Lisp *


14й выпуск computer science student и второй, посвященный языку Scheme. В сегодняшнем коротком скринкасте я расскажу о том, что такое лямбда в функциональном языке программирования.

Видео доступно на vimeo, youtube и rpod.
Total votes 40: ↑29 and ↓11 +18
Views 8K
Comments 25

3 богатыря от Fischer Audio

Computer hardware


Как говорится, «Классика не умирает». Этому девизу решили последовать и дизайнеры из Fischer, выпустив 3 пары новых, качественных, удобных, но достаточно старых по виду и конструкции наушников. Так сказать, олдскул. Кстати, одна из моделей так и называется Oldskool ‘70

Но, начну по порядку и расскажу Вам про все наушники этой серии.
Читать дальше →
Total votes 55: ↑43 and ↓12 +31
Views 3.3K
Comments 84

C++0x: Конвертируем лямбда-выражение в указатель на функцию

C++ *
Sandbox
По роду деятельности мне часто приходится иметь дело с вычислительными задачами. В них нередко нужно передавать указатель на функцию, чтобы, например, построить график этой функции, или решить уравнение. Кроме того, указатели на функцию обычно используются в различных GUI фреймворках, чтобы указать, какое действие будет совершено при нажатии на определённую кнопку.

В новом стандарте C++0x появились зымыкания. Не вдаваясь в подробности, замыкания — это такие объекты, которые позволяют создавать функции прямо в теле других функций. Если подробнее — замыкания позволяют создавать функциональные объекты — то есть объекты, для которых определён operator(). На хабре уже писали о них: например тут.

Мне очень понравилось нововведение и я начал им пользоваться. Но только вот незадача: по смыслу, замыкания и функции — почти одно и то же, а использовать замыкания там, где должны использоваться указатели на функции, сходу не получается. По стандарту, замыкания без списка захвата должны свободно конвертироваться в указатели на функции, но на практике такого не наблюдалось, видимо ещё не реализовано. И я задался вопросом, можно ли использовать замыкания там, где используются указатели на функции?
Решение появилось у меня после недолгих раздумий.
Total votes 30: ↑27 and ↓3 +24
Views 6.4K
Comments 19

Аппликация Expressions

.NET *
Добрый день.

Просматривая недавно чужой код, наткнулся на довольно интересную задачу о IQueryable и Expession trees. Надеюсь, решение будет кому-нибудь полезно.

Задача заключается в том, чтобы повторно использовать некоторый Expression внутри другого Expression, например, у нас есть некий f:

Expression<Func<int, int, int>> f = (a, b) => a + b;


И мы бы хотели использовать этот f внтури другого expression, например так:

Expression<Func<int, int, int, int>> g = (a, b, c) => f(a+b,b)*c;


Причем необходимо, чтобы результирующий expression был «чистым», т.е. пригодным для использования внутри IQueryable (без скомпилированных функций и т.п.)

Решение
Total votes 35: ↑33 and ↓2 +31
Views 4.3K
Comments 16

Closures и полное копирование объекта

.NET *
Sandbox
Сегодня передо мной встала задача сделать полную копию объекта, то есть DeepClone. Рассмотрим некоторый код и я покажу какие проблемы при этом могут возникнуть и как их решить.
Читать дальше →
Total votes 23: ↑20 and ↓3 +17
Views 9.7K
Comments 54

Java 8 Lambda vs LambdaJ vs Guava vs Iterative approach

Java *
В середине 2013 года выходит Java 8 с реализацией лямбда-выражений. Лямбда-выражения предоставляют широкие возможности для применения функционального стиля программирования. Правда функциональный стиль можно использовать уже сегодня в JDK 7, 6 или 5 с помощью библиотек LambdaJ и Guava.
Iterative Lambdaj JDK 8 lambda Guava
Print all brands 79 472* 113 79
Select all sales of a Ferrari 25 146 44 31
Find buys of youngest person 1,209 1,775 1,242 1,218
Find most costly sale 8 123 55 72
Sum costs where both are males 23 973* 40 45
Age of youngest who bought for > 50,000 1,521 2,576* 1,560 1,511
Sort sales by cost 350 1,187 473 453
Extract cars original cost 29 61 31 31
Index cars by brand 57 70 89 415
Group sales by buyers and sellers 2,586 3,748* 2,862 1,601
Find most bought car 744 1,023* CRASH 1,435
подробнее о производительности
Total votes 26: ↑24 and ↓2 +22
Views 11K
Comments 36

Релиз Java 8 передвинут на март 2014 года

Java *
Главный архитектор платформы Java Марк Рейнхольд сегодня объявил в своём блоге, что выпуск Java 8 переехал с сентября этого года на март следующего. В последнее время много сил инженеров Oracle было переброшено на то, чтобы сделать платформу Java более безопасной. Люди брались не из ниоткуда, а перебрасывались с других фич, в частности, с лямбды. Поэтому процесс разработки новых фич в Java 8 в последнее время шёл медленнее ожидаемого, и дата релиза уехала на полгода.

Читать дальше →
Total votes 34: ↑32 and ↓2 +30
Views 19K
Comments 103

Ruby 2.1 в деталях (Часть 2)

Ruby *
Translation

Refinements

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

Теперь к методу #using для активации уточнений на уровне файла добавился метод Module#using для активации в пределах модуля. Однако использование уточнений по-прежнему ограничено лексической областью видимости, т.е. они не будут активны при повторном открытии модуля.
Читать дальше →
Total votes 36: ↑36 and ↓0 +36
Views 11K
Comments 7

Создание простой программы с RMI и параллельным доступом на графический интерфейс в Java

Programming *Java *
Sandbox
Когда мне пришлось сильно углубиться в использование RMI, я поняла, какое большое значение играет умение правильно реализовать параллельность в самом графическом интерфейсе программы. На мое удивление в интернете не было достаточно материала на эту тему и особенно качественных примеров, хотя тема для любого программиста несоменно очень важная. Именно поэтому я решила поделиться своим опытом.

Кратко о RMI: программный интерфейс вызова удаленных методов в языке Java (источник). С помощью него можно например управлять данными на программе сервера с одного или множества компьютеров. Подробнее можно почитать на Хабре. Будем исходить из того, что с его основами вы уже знакомы. Необходимо так же иметь представление о нововведениях в Java 8, а именно — вам понадобятся лямбда-выражения. Хорошее объяснение есть здесь.
Читать дальше →
Total votes 19: ↑15 and ↓4 +11
Views 20K
Comments 7

Wicket+лямбды: типобезопасная и лаконичная реализация IModel

Website development *Java *
Sandbox
Стандартная задача при разработке веб-приложения: есть объект данных, требуется эти данные отобразить (вывести в HTML). В Apache Wicket данные для этого привязываются к компонентам (которые и будут заниматься отображением) с помощью моделей (реализующих интерфейс IModel).

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

    T getObject();

Абстракция простая и лаконичная, но не всё так просто на практике. Под катом — сказ о том, как Java 8 помогла победить многословность и небезопасность стандартных подходов.
Читать дальше →
Total votes 9: ↑9 and ↓0 +9
Views 4.7K
Comments 5

Установка свойства объекта с использованием лямбда-выражений

.NET *
Если возникает необходимость одинаковой обработки присвоения значения свойству объекта, то можно воспользоваться лямбда выражениями. Такая задача может возникнуть при проверке или обработке значений, логгировании присвоения и т.д.
Читать дальше →
Total votes 19: ↑7 and ↓12 -5
Views 3.8K
Comments 7

Использование lambda в качестве локальных функций

Ruby *Perfect code *Ruby on Rails *

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


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

Читать дальше →
Total votes 14: ↑9 and ↓5 +4
Views 8.9K
Comments 51

Встраивание функциональных объектов, функций и лямбд через шаблоны и унификация при помощи virtual на C++

C++ *
Sandbox
В этой статье показаны некоторые механизмы, позволяющие получить достаточно производительный (встраиваемый во время компиляции) и легко масштабируемый код для управления вызовами различных объектов при помощи стандартных технологий С++.

О задаче


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

Для большей простоты и читабельности в примерах кода будут показаны только наиболее сложные ключевые механизмы. Примеры машинного кода приводятся для компилятора майкрософт при оптимизации О2.
Читать дальше →
Total votes 25: ↑21 and ↓4 +17
Views 13K
Comments 31

Преобразование Method Reference в Method в языке Java

Abnormal programming *Java *
Sandbox

Представьте, что есть у нас объект Function<A, B> foo = SomeClass::someMethod; Это лямбда, которая гарантированно является ссылкой на не статический метод. Как можно из объекта foo достать экземпляр класса Method, соответствующий написанному методу?


Если в кратце, то никак, информация о конкретном методе хранится исключительно в байткоде (всякие там инструментации я не учитываю). Но это не мешает нам в определённых случаях получить желаемое в обход.


Читать дальше →
Total votes 22: ↑20 and ↓2 +18
Views 15K
Comments 12