5 языков программирования со светлым (возможно) будущим

Каждый раз начиная разговор о популярных языках программирования можно быть уверенным, что холивар неизбежен. Одним нравится С++, другим Python, третьим Rust. Как говорится, на вкус и цвет фломастеры разные. Тем не менее, попробуем и мы покопаться в апельсинах.

Если рассортировать языки программирования по их популярности, то можно условно выделить три группы. В верхнюю группу войдут такие мейнстримовые языки, как Java, JavaScript, Python, Ruby, PHP, C#, C++ и Objective-C. Учитывая, что популярность языков может со временем снижаться, то чтобы быть востребованным программистом, всегда лучше знать один-два языка из верхней группы.

Во второй группе оказываются языки, которые с большой вероятностью могут стать мейнстримом, но ещё не стали. Они уже доказали свою ценность, вокруг них выросло сильное сообщество поддержки, но многие консервативные компании пока не используют их при создании продуктов. Пожалуй, к этой группе можно отнести Scala, Go, Swift, Clojure и Haskell. Хотя ряд компаний уже используют их для создания своих сервисов, однако в целом в индустрии их присутствие не так заметно (за исключением Swift, который сейчас замещается Objective-C на роли основного языка iOS). Больше всего шансов перейти в верхнюю группу у Go и Swift, это может произойти в течение ближайших двух-трёх лет.

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

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

Почему именно эти языки?

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

Elm становится всё популярнее среди JavaScript-программистов, в основном среди тех, кто отдаёт предпочтение функциональному программированию. Как и Babel, TypeScript и Dart, Elm транспилируется в JavaScript.

Rust — это язык для создания систем, который призван был во многом заменить С и С++. Тем удивительнее наблюдать стремительный рост его популярности среди веб-разработчиков. Но если вспомнить, что Rust был разработан в Mozilla, то всё становится на свои места: авторы языка хотели дать веб-разработчикам более производительный язык по сравнению с PHP, Ruby, Python или JavaScript. По результатам опросов на StackOverflow в 2016 году Rust завоевал титул «самой любимой» разработчиками технологии. Так что многие, вероятно, не согласятся с тем, что здесь он отнесён в третью группу. Вполне возможно, что его место — уже во второй.

Kotlin существует около пяти лет, но только в этом году наконец добрался до версии 1.0. Хотя язык не так популярен, как Scala, Groovy или Clojure — одни из наиболее зрелых JVM-языков, — он дистанцируется от массы конкурентов и, похоже, готов влиться в ряды лидеров этой группы. Kotlin разрабатывается компанией, создавшей популярный IDE IntelliJ IDEA. Авторы языка руководствуются принципом повышения продуктивности разработчиков. Ещё одна причина, почему Kotlin может стать широко популярен — простота создания на нём Android-приложений.

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

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

Давайте теперь посмотрим, как растёт популярность этих пяти языков, согласно данным StackOverflow и GitHub.

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

Elm

Функциональный язык, в котором уделяется большое внимание usability. Код Elm компилируется в высокопроизводительный JavaScript. Вы можете использовать этот язык для создания пользовательских интерфейсов в вебе как совместно с JavaScript, так и без него. Основные преимущества Elm по сравнению с JavaScript — надёжность, удобство в сопровождении, комфорт при написании кода.

Отсутствие исключений во время runtime: код Elm имеет репутацию никогда не выкидывающего исключения во время runtime’а. Никаких «undefined is not a function.»

Невероятно полезный компилятор: многие восхищаются компилятором Elm с точки зрения полезности сообщений об ошибках. Зачастую можно услышать «если он скомпилировал, то обычно всё просто работает», даже после серьёзного рефакторинга. Это делает кодовые базы на Elm куда приятнее в сопровождении, чем JS.

Автоматическое выполнение семантического версионирования: elm-package автоматически выполняет семантическое версионирование. Если автор пакета пытается внести в API критическое изменение без учёта номера основной версии, то elm-package это заметит от откажется публиковать. Ни один другой диспетчер пакетов не выполняет так надёжно семантическое версионирование.

Быстрый и функциональный: Elm — чисто функциональный язык, гарантирующий отсутствие трансформаций или побочных эффектов. Это не только обеспечивает качественное масштабирование кода, но и позволяет отрисовывать пользовательский интерфейс быстрее, чем React, Angular и Ember.

Мощный инструментарийelm-format позволяет форматировать исходный код в соответствии с принятыми стандартами. Больше не нужно спорить о соглашениях по стилям. Просто нажмите в редакторе Save, и ваш код станет прекрасно выглядеть. elm-test поддерживает модульное и нечёткое тестирование (fuzz testing). elm-css позволяет писать Elm-код, который компилируется в .css, так что вы можете использовать код совместно и в приложении, и в таблицах стилей, что не позволит возникнуть несогласованности данных.

Код на Elm может взаимодействовать с JavaScript, то есть его можно в небольших количествах использовать в JS-кодовой базе. Поэтому можно продолжать пользоваться гигантской экосистемой JavaScript и не изобретать колесо.

Для ознакомления с языком можно начать с guide.elm-lang.org, а продолжить с Elm in Action. В официальном блоге можно почитать и о способах применения Elm в вашей работе.

Rust

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

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

Скорость: почти все языки работают медленнее С, потому что предоставляют абстракции, облегчающие разработку ПО, но повышающие издержки во время runtime (например, сборка мусора и динамическая диспетчеризация). В Rust упор сделан на «бесплатных абстракциях», или методах облегчения программирования, которые ничего не стоят во время runtime. Например, управление памятью выполняется в ходе компилирования, а для дженериков применяется статическая диспетчеризация (аналогично шаблонам в С++, но более безопасно по типам).

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

У Rust есть несколько отличительных особенностей: 

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

Принцип Composition over inheritance: вместо использования системы классов, основанной на наследовании, как в C++ или Java, Rust для поддержки модульного программирования использует трейты (trait) — компонуемые интерфейсы. Вместо того, чтобы определять, является ли конкретный тип частью иерархии классов, программист может описать возможности типа. Например, сказать, что тип должен быть Printable и Hashable, вместо наследования от класса PrintableHashable.

Потрясающий инструментарий: каждый ветеран C/C++ знает, какая это боль — устанавливать зависимости, компилировать код под разные платформы и сражаться с мудрёными конфигурациями CMake. Благодарая разумному диспетчеру пакетов и API с кроссплатформенной совместимостью, Rust позволяет избежать многих часов истошных криков на GCC.

Полезные ресурсы: The Rust Book и Rust by Example.

Kotlin

Kotlin — статически типизированный язык, выполняющийся поверх JVM и компилируемый в JavaScript. Он появился как решение потребностей компании JetBrains, искавшей подходящий новый язык для переписывания своего инструментария, который был по большей части создан на Java. Им нужно было что-то, позволявшее работать с существующей кодовой базой, но в то же время, позволявшее решить ряд проблем с Java.

Что хотели авторы Kotlin:
Краткость: уменьшить количество шаблонного кода, необходимого для выражения определённых конструкций. 

Универсальность: язык должен подходить для разработки любых промышленных приложений — веб, мобильных, настольных или серверных.

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

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

Удобство автоматизации: JetBrains создаёт программные инструменты, и в компании считают, что многие рутинные операции можно автоматизировать ради повышения эффективности и продуктивности разработки. Поэтому язык должен быть удобен с этих точек зрения.

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

По умолчанию безопасен с точки зрения неопределённых значений (null): типы в Kotlin по умолчанию не допускают неопределённых значений, что позволяет избегать ситуаций с нулевыми ссылками или исключениями указателей.

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

Kotlin 1.0 вышел в феврале 2016, спустя пять лет разработки и масштабного тестирования на реальных проектах. На данный момент более 10 продуктов JetBrains написаны на этом языке, также его используют ряд других компаний.

Офсайт: kotlinlang.org

Crystal

Crystal — язык общего назначения, чей девиз: «Быстро, как C, приятно, как Ruby».

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

Цели разработки Crystal:
• Синтаксис, аналогичный Ruby (но без учёта совместимости с ним)
• Статическая проверка типов, но без необходимости определять тип переменных или аргументов метода
• Возможность вызывать код на C с помощью биндингов
• Во время компилирования код оценивается на наличие шаблонных кусков и перегенерируется
• Компилирование выполняется в эффективный нативный код

Особенности языка:
Каналы: внедрение каналов в Crystal было вдохновлено CSP, они обеспечивают согласованность (concurrency). Это лёгкие потоки исполнения (thread), называющиеся Fiber, с их помощью можно легко выполнять операции в асинхронном/неблокируемом режиме.
Макросы: они позволяют избежать использования шаблонных кусков кода и обеспечивают возможность метапрограммирования. Макросы обрабатываются во время компилирования, поэтому не влияют на производительность.
Команда Crystal: мощная команда, идущая со встроенными инструментами. Она используется для создания нового проекта, компилирования, запуска набора тестов и много другого. Также доступно встроенное средство форматирования. crystal play — интерактивная песочница для быстрого прототипирования, как irb.
Выразительность: благодаря Ruby, Crystal получился очень выразительным и лёгким в понимании. Новичкам будет просто его освоить. К тому же в перспективе простота языка окупается лёгкостью сопровождения.

Полезные ссылки: Crystal Book и Crystal for Rubyists.

Elixir

Elixir появился в 2012, это функциональный язык общего назначения, созданный исходя из принципов продуктивности работы, масштабируемости и удобства в сопровождении. Поскольку язык относительно новый, он компилируется в байткод, выполняемый на виртуальной машине Erlang (BEAM). Она была создана в телекоммуникационной отрасли и развивалась почти 25 лет. Сегодня виртуальная машина Erlang работает во многих крупных системах с высокой доступностью и низким уровнем задержки.

На данный момент Elixir в основном используется для создания веб-приложений, с использованием Cowboy (примитивный HTTP-сервер) или Phoenix (полноценный фреймворк для создания веб-приложений). Благодаря фреймворку Nerves, Elixir постепенно проникает в сферу встроенного оборудования.

Синтаксис языка чем-то похож на Ruby, а инструменты Elixir вообще покажутся знакомыми каждому «рубиисту». Команды хорошо продуманы, просты в использовании и позволяют работать с высокой продуктивностью.

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

Отличительные черты:
Неизменяемые структуры данных и отсутствие побочных эффектов помогают создавать большие системы, удобные в поддержке.
Инспектирование позволяет определять дерево внутренних процессов и настраивать правила автоматического восстановления работоспособности системы.
Поиск по шаблонам является альтернативой условным конструкциям и граничным операторам (guard clauses).
Согласованность процессов без разделения ресурсов, на основе акторов, хорошо подходит для решения современных проблем с согласованностью. См. «Путь к двум миллионам подключений».
Очень эффективное управление ресурсами позволяет обслуживать большое количество пользователей даже на достаточно скромном оборудовании. См. «Почему WhatsApp нужно всего 50 инженеров для обслуживания 900 миллионов пользователей".
Код, поддерживающий возможность горячей замены, позволяет минимизировать продолжительность простоев при развёртывании.

Популярность комбинации Elixir и Phoenix растёт благодаря тому, что она позволяет создавать сложные, устойчивые веб-приложения и API, очень удобные в сопровождении, с прекрасной производительность и масштабируемостью. Поэтому многие компании, включая Pinterest и Bleacher Reports, начали использовать Elixir в ключевых компонентах своей продуктовой инфраструктуры.

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


ссылка на оригинал статьи https://habrahabr.ru/post/319070/

Приложение Linkedin больше недоступно для скачивания на территории РФ

image

Российские пользователи потеряли возможность скачать приложение профессиональной социальной сети Linkedin через магазины appStore или Google Play, сообщает New York Times. Причиной этому стало решение суда, которым Linkedin был заблокирован на территории Российской Федерации из-за нарушения закона о «персональных данных».

Напомним, 17 ноября 2016 года Роскомнадзор, руководствуясь решением суда, внес социальную сеть Linkedin в список запрещенных сайтов. Необходимо отметить, что за неделю до блокировки, 10 ноября, юристы Liunkedin подавали апелляцию в Мосгорсуд, которая, однако, была отклонена. При этом представители социальной сети отмечают, что судебный процесс проводился с нарушениями.

На запрос редакции New York Times представитель Apple частично подтвердил изъятие приложения Linkedin из AppStore, ответив, что компания всегда стремится соблюдать законодательство стран, в которых работает. Каких-либо официальных комментариев со стороны Google получить не удалось.

Инициатором разбирательства против Linkedin стал сам Роскомнадзор, который и усмотрел в действиях социальной сети нарушения закона о «персональных данных». При этом официально компания никогда не работала в РФ и не имеет представительства на территории страны, что, однако, не помешало начать процесс против Linkedin Corporation.

По словам юристов компании, разбирательство проходило в экстремально сжатые сроки, а все просьбы представителей социальной сети сменить ответчика по делу (иск был направлен против Linkedin Corporation, которая работает только в США, за действия ресурса на территории Европы отвечает другая компания) или перенести сроки слушания из-за трудностей перевода документации, игнорировались. Как итог, юристы компании не смогли подготовиться ни к самому слушанию, ни к апелляции из-за нежелания властей идти на встречу. При этом был проигнорирован факт того, что пользователи самостоятельно передавали на обработку свои персональные данные, а часть фигурируемой в деле информации, такая, как информация об IP-адресах или файлы cookie, вообще являются техническими, а не персональными данными.
ссылка на оригинал статьи https://geektimes.ru/post/284362/

Новинки CES 2017: ThinkPad X1, ноутбук с тремя экранами Razer, 6-дюймовый десктоп Ockel и новые смартфоны

5 января в Лас-Вегасе стартовала ежегодная выставка Consumer Electronics Show 2017. В этом году основными трендами стали дополненная и виртуальная реальность — производители стали затачивать смартфоны специально под Tango и Daydream VR, а также привезли множество новых шлемов. Из других новинок: игровые ноутбуки, обновлённая линейка ThinkPad X1, умные очки от Lenovo и портативный десктоп со встроенным экраном.

image

ThinkPad X1

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

Ультрабук ThinkPad X1 Carbon является самым лёгким в мире 14-дюймовым ноутбуком в классе корпоративных устройств. Lenovo к CES 2017 подготовила обновлённую линейку устройств X1, в которую входят трансформер Yoga X1 и планшет X1 Tablet.

ThinkPad X1 Carbon весит 1,14 килограмма. В форм-фактор 13-дюймового ультрабука Lenovo поместила 14-дюймовый дисплей — это было сделано за счёт сужения рамок. Аккумулятор по заверению производителя проработает около 15 часов. Под капотом — процессор нового поколения Intel Core i7 Kaby Lake, до 16 гигабайт оперативной памяти, до 1024 гигабайт SSD. Разрешение дисплея — 1920×1080 или 2560×1440. С целью обеспечения безопасности ультрабук оснастили сканером отпечатка пальца и системой распознавания лиц.

image

Lenovo X1 Yoga имеет схожие характеристики и отличается только наличием сенсорного дисплея, форм-фактором трансформера, поддержкой стилуса и немного большим весом — 1,36 кг против 1,12 кг у обычного ультрабука.

Планшет-трансформер ThinkPad X1 Tablet получил 12-дюймовый дисплей с разрешением 2150х1440 пикселей, Intel Core 7-го поколения, до 16 ГБ оперативной памяти и до 1024 гигабайта SSD. Без клавиатуры X1 весит 767 граммов, с клавиатурой — 1,07 кг.

image

image

image

Трансформеры

Dell представила свой ответ Lenovo Yoga — трансформер Dell XPS 13. Крепления компания выбрала такие же, как использовались в самом начале Lenovo и HP 360 — классический вариант. Процессор в новом ультрабуке — Intel Core i5 или i7, до 16 гигабайт оперативной памяти и до 1 терабайта SSD, а экраны — Full HD или QuadHD+. Система распознавания лиц Windows Hello есть и здесь, как в X1 от Lenovo.

image

image

Asus также привезла свой трансформер — Chromebook Flip C302A на Chrome OS. Ноутбук работает на процессорах Core M3 или M7, имеет 12,5-дюймовый экран с разрешением 1920×1080 пикселей, 4 или 8 гигабайт оперативной памяти, от 32 до 128 гигабайт SSD. Устройство будет бюджетным — цена за младшую комплектацию будет начинаться с 500 долларов.

image

Планшеты

Грань между планшетами и ноутбуками в плане технических характеристик всё сильнее размывается. Планшет Lenovo Miix 720 в максимальной комплектации построен на базе Intel Core i7 седьмого поколения, имеет 16 гигабайт оперативной памяти и 1024 гигабайт SSD. Разрешение 12-дюймового дисплея — 2880х1920. Здесь разве что графика интегрированная — Intel HD Graphics 620. Аккумулятора должно хватать на 8 часов работы. Всё это вместе с клавиатурой весит 1,1 килограмма, а без клавиатуры — 780 граммов.

image

image
Фото: источник

Ещё один пример устройства, максимально приближенного к ноутбуку, но при этом более портативного — это Ockel Sirius A Pro. Очень толстый планшет с 6-дюймовым сенсорным экраном оснащён процессором Intel Atom x7, 8 гигабайтами оперативной памяти и 128 ГБ SSD и работает на Windows 10 Pro. Гаджет можно просто носить с собой в качестве портативного ПК и при необходимости подсоединять к нормальному монитору.

Сейчас стартап собирает деньги на производство с помощью Indiegogo. Причём план уже перевыполнен на 300%.

image

image

Трансформер Yoga Book

Yoga Book — чуть менее обычный гаджет. Здесь мы имеем трансформер, как Yoga, только без физической клавиатуры.

Сразу встаёт вопрос: удобно ли на нём печатать? Менее удобно, чем на стандартной клавиатуре. Но клавиатура Halo учится. Я на себе её тестировал, когда гаджет представили в Москве — даже на английском получалось печатать довольно быстро. Издание Engadget с этим не согласно и назвало Yoga Book одним из худших гаджетов 2016 года.

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

Преимущество устройства в его портативности: весит Yoga Book 690 граммов, примерно как планшет такого же размера.

image
image

Устройство распознаёт 2048 вариантов нажима пера Real Pen.

image

Игровые ноутбуки

В 2014 году Lenovo представила линейку игровых ноутбуков и компьютеров. К CES 2017 компания запустила новый бренд — Legion. Первыми ноутбуками обновлённой линейки стали Lenovo Legion Y520 и Y720.

Оба ноутбука получили 15,6-дюймовые дисплеи, но у Y720 его разрешение может составлять 3840х2160 пикселей вместо стандартных 1920×1080.

Y520 работает на процессоре Intel Core i7 седьмого поколения, имеет в максимальной комплектации новейшую видеокарту NVIDIA GTX 1050 Ti, которая также была представлена на CES в этом году, до 16 гигабайт оперативной памяти и 512 ГБ SSD или 2 ТБ HDD.

Y720 получил такой же процессор, видеокарту NVIDIA GeForce GTX 1060 с 6 гигабайтами памяти, до 16 ГБ оперативной памяти. Весит он больше — 3,2 кг против 2,4 кг у Y520.

Razer решила не мелочиться и вместо одного дисплея с 1920×1080 пикселями встроила в ноутбук Project Valerie сразу три 17-дюймовых Ultra HD экрана — по 3840×2160 точек каждый. Суммарное разрешение составляет 11520×2160

В этом игровом ноутбуке за графику отвечает NVIDIA GeForce GTX 1080. Весит гаджет почти пять с половиной килограммов. Подробностей о других параметрах устройства на данный момент нет. Остаётся надеяться, что ноутбук выйдет из состояния концепта и начнёт выпускаться в ближайшее время.

image

image

Acer вместо того, чтобы оснащать игровой ноутбук 17-дюймовым дисплеем, выбрала 21-дюймовый. Причём изогнутый. Predator 21 X выглядит ещё более футуристично и аляповато, чем вышеобозначенные новинки. И стоит дороже — 9 тысяч долларов, и весит больше — 8,8 килограмма.

Разрешение экрана — 2560×1080 пикселей, за видео отвечают сразу две карты Nvidia GeForce GTX 1080, процессор — Intel Core i7 седьмоого поколения. Также здесь есть пять кулеров, четыре колонки и два сабвуфера, механическая клавиатура и тачпад, который можно достать и перевернуть, чтобы получить цифровой блок.

image

image

На новый для себя рынок вошла компания Samsung с линейкой игровых ноутбуков Odyssey. В линейку входят модели с экранами диагональю 15,6 и 17,3 дюйма с разрешением 1920×1080. Оперативной памяти — до 64 гигабайт у старшей модели и до 32 гигабайт у младшей.

В старшей модели оперативная память достигает 64 гигабайт, в младшей — 32 гигабайта. Процессоры — до Intel Core i7 седьмого поколения.

image

image

image

Смартфоны

В 2016 году Lenovo представила смартфоны Moto Z и Moto Z Play с подключаемыми к ним с помощью магнитной защёлке модулями Moto Mods.

Среди модулей: Hasselblad True Zoom с 12-мегапиксельным сенсором, объективом с оптическим зумом и поддержкой съёмки в формате RAW, Insta-Share Projector, который выдаёт изображение диагональю до 70 дюймов и передаёт звук по Bluetooth, акустическая панель от JBL и дополнительный аккумулятор.

ASUS привезла смартфон ZenFone AR, заточенный под работу с дополненной и виртуальной реальностью. Устройство при покупке будет иметь Android 7.0 Nougat. Если Lenovo Phab 2 Pro стал первым смартфоном с Google Tango, то ZenFone AR совместил в себе и эту платформу, и Daydream VR.

Смартфон получил четырёхъядерный процессор Qualcomm Snapdragon 821 с частотой 2,4 ГГц, 8 гигабайт оперативной памяти (первый в мире) и до 256 гигабайт встроенной, 5,7-дюймовый экран с разрешением 2560×1440. Это железо вместе с 23-мегапиксельной камерой, датчиками глубины и движения должно обеспечивать работу приложений дополненной реальности, таких как Lowe’s Vision, предназначенное для измерения расстояний в помещении и визуализации расстановки мебели, и игру Slingshot Island, превращающий смартфон в рогатку для того, чтобы вы могли стрелять по яйцам дракона.

Единственный минус — аккумулятор на 3300 мА·ч. Так что надо будет испытывать гаджет, чтобы понять, надолго ли его хватит.

image

image

Ещё один заточенный под Daydream VR смартфон представила ZTE. Это Axon 7 с процессором Qualcomm Snapdragon 820 с частотой 2,15 ГГц, 4 ГБ или 6 ГБ оперативной памяти, 64 ГБ или 128 ГБ встроенной памяти, 5,5 дюймовым AMOLED экраном с разрешением 2560×1440 точек.

По заверению ZTE, аккумулятор на 3250 мА·ч обеспечит работу устройства в режиме разговора длительностью в сутки.

image

image

Носимые гаджеты

В 2017 году на CES самыми популярными темами стали не носимые гаджеты, а дополненная и виртуальная реальность. Но одних телефонов мало — так что на выставку попали средства управления движением и множество очков виртуальной реальности — от HP, Lenovo, Dell, Asus, Acer.

Так выглядят очки от Dell.

image

Acer представила шлем в красном цвете.

image

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

image
Фото: источник

И Huawei не осталась в стороне. Но снова речь о шлеме, мозгом которого является смартфон.

image

image

Теперь о дополненной реальности. Lenovo добавила в портфолио умные очки New Glass C200 и программное обеспечение для дополненной реальности. Когда-то Google Glass провалился как массовый продукт, но врачи с помощью такого гаджета пытались лечить аутизм и помогать людям с болезнью Паркинсона, а полицейские — бороться с нарушителями ПДД. То есть смысл в таких устройствах есть, и самое главное — выбрать правильную целевую аудиторию.

Очки от Lenovo состоят из двух модулей: собственно очки-монокуляр и основной блок Pocket Unit, который крепится на поясе или кладётся в карман. После скачивания приложения New Glass на смартфон можно подключить к нему устройство и таким образом увеличить мощность, а также добавить к очкам поддержку 4G.

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

Очки весят менее 60 граммов. Серийное производство гаджета должно стартовать в июне 2017 года. Для разработчиков создана платформа Lenovo NBD Titan.

image

image

Роботы от LG

LG представила несколько роботов — домашних LG Hub Robot и Hub Robot Mini с поддержкой голосового ассистента Alexa, робота-гида для работы в аэропортах Airport Guide Robot и промышленный пылесос для аэропортов Airport Cleaning Robot.

image

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

ссылка на оригинал статьи https://geektimes.ru/post/284306/

Microsoft MVP Global Summit 2016, заметки на полях

Саммит в этом году проходил как обычно. Почти как обычно. Hyatt Regency Bellevue отель и все остальные отели Bellevue c 7 по 10 ноября были заполнены гиками и нердами.
Но 8 ноября я зашел в центральный зал Hyatt и вдруг понял, что вокруг не гики, а нормально выглядящие люди, хотя с такими же восторженными лицами. Через минуту я понял, что нахожусь на собрании Республиканской партии, а на сцене объявляют что республиканцы сравнялись с демократами. Все вопили от восторга, хотя никто еще не верил в победу…

Саммит прошел под знаком Azure, Microsoft клауд технологий. Плотина рухнула, небеса упали, и практически все сессии были об Azure. Еще пару лет назад мало кто из программистов сталкивался с разработкой, установкой и сопровождением программ в клауде. Все это происходило локально, под боком, на рабочих станциях или на серверах. Но похоже, что скоро на локальных компьютерах уже не останется больших программ. Локальные компьютеры будут использоваться только как терминалы во времена мэйнфреймов. Спираль-спираль.
Azure сейчас насчитывает больше сотни разных сервисов. Я вряд ли уже знаю даже приблизительно, что все они делают и за что отвечают. И с каждым месяцем их становится больше и больше. Один список preview сервисов больше 20 штук. Ребята в Microsoft показывали нам новые версии сервисов и много раз это было Wow! Mы видели что-то, что еще никто до этого не делал. Microsoft в последние годы сплавила свой опыт промышленного программирования со свежими методами и идеями open source community. Ребята несутся вперед совсем не со старой, привычной скоростью enterprise монстров и держатся в седле крепко.
Visual Studio Code — легкая версия VS, работает под Mac, Linux, Windows, поддерживает массу языков. И не беспокойтесь о деньгах, VS Core бесплатная. Повторюсь, она легкая, гиковская и похожа на произведения JetBrain, но никак на произведение Microsoft.
Никто не ждет больших изменений от SQL Server, но что можно сказать про Data Lake Store или про SimpleStore, про Data Factory? Можно сказать, что пришла пора все это пробовать.
Попробуйте теперь найти на своем сервере что-то, что не найдет своего аналога в Azure. Нашли? Вряд ли. А теперь попробуем наоборот. Каков результат?
Пришла, пришла пора начать разбираться с ценами на cloud-сервисы. Уже и не дорого, и имеет смысл. Между прочим Price Calculator теперь не в пример проще и понятнее.
Но лучше не обращать внимания на калькулятор, так как все Azure сервисы можно опробовать бесплатно. Многие сервисы имеют начальный бесплатный уровень.
И забудьте про опасения попасть в зависимость от Microsoft. Поддерживаются разумные наборы языков программирования и операционных систем.
Хотите чего-то такого, чего пока нет? Идите на сайт Feedback размещайте свою идею и если за нее проголосует достаточное количество людей, то она будет реализована.
Меня сейчас интересует Machine Learning, а в нем Microsoft на передовых позициях. Azure ML Studio не имеет аналогов. Редактор работает в браузере, а модели тренируются и работают на серверах Microsoft. Готовые модели для обработки речи, языков, видео, поиска сведены воедино под шапкой Microsoft Cognitive Services. Если вы сами создаете Neural Network модели, то Cognitive Toolkit, известный как CNTK, поможет. А если вы — hard-core programmer, то есть еще Distributed Machine Learning Toolkit с великолепным LightGBM. Не забудем про R Server, который теперь поддерживается Microsoft.
В общем, по результатам саммита можно сделать вывод, что сейчас в тренде два направления. Cloud уже вышел из ребячьих штанишек, готов к production и начинает напирать на привычные, standalone приложения. Machine Learning — самое горячее направление, многое еще впереди, и еще не поздно запрыгнуть во второй вагон.

ссылка на оригинал статьи https://habrahabr.ru/post/319062/

Спектроскоп Салтана: лапласианы для фана

Рождественские дни — время отложить привычные дела и вспомнить забавы — калейдоскопы, мозаики, снежинки… Кто нарисует самую красивую звезду?

Симметрия радует глаз. Создать красоту нам помогли математика лапласианов, язык Питон и его библиотеки — математический numpy и графический matplotlib.

Спектры невозможных решеток

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

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

Уже красиво, только несколько однообразно.

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

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

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

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

Допустим, что наша функция расстояния имеет следующий вид:

f(R2) = w*Rd + 1/Rd, где w = dist/n^2, Rd = R2^degree.

Здесь dist и degree — два варьируемых параметра возмущения. Тогда первые 9 вырожденных уровней для представленной выше базовой конфигурации (гексагональной решетки размера 7) при параметрах возмущения dist = -2, degree = 1 имеют вид:

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

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

Можно взять в качестве исходного набора квадратную решетку. Тогда симметрия будет квадратной:

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

Добавляем цвет и размер

Выше мы рисовали просто точки (кружки). Если придать этим точкам цвет и размер, то снежинки (узоры) станут веселее и разнообразнее. Фишка в том, что цвет и размер точек мы также можем формировать на основе собственных векторов данного набора.

Алгоритм формирования цвета простой. Мы используем некую цветовую карту (из доступных наборов в matplotlib), которая преобразует значение точки в цвет, а само значение точки берем из какого-нибудь невырожденного собственного вектора. То же самое и для размера точки. Тогда можно получить примерно такое веселое кружево:

Если варьировать только цвет, то можно поиграть в детскую мозаику:

Это математика разукрасила базовую конфигурацию точек в разные цвета. А шестиугольные маркеры мы взяли из доступных в matplotlib.

Паутинки

Если близкие точки соединить линиями, то мы получим нечто вроде паутины. По научному такая операция называется триангуляцией. Достоинство пакета matplotlib в том, что там такая операция доступна «из коробки». Паутинки красивы:

Можно удалить часть треугольников на основе масок:

Мозаики

Триангуляция становится цветной, если треугольники залить разными цветами:

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

Использование масок обостряет контуры узоров:

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

Контуры

Возможно, что самыми изысканными являются узоры, полученные с помощью рисования контуров на основе триангуляции. Данные узоры получаются с помощью метода tricontour() библиотеки matplotlib. Даже самые невзрачные и скучные наборы точек приобретают совершенно неожиданные вариации.

Симметрия может быть любой, например, 5-го порядка:

На наш взгляд, это магия.

Спектроскоп

Все приведенные узоры создавались с помощью программы "Spectroscope" написанной нами на Питоне. Код программы не идеален, но доступен.

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

Вверху панели управления можно выбрать один из базовых наборов распределений точек (Base). Базовое распределение всегда имеет индекс один, если параметры возмущения равны соответственно -2 (Disturb) и 1 (Degree), поэтому на него можно всегда посмотреть.
Наиболее мощными являются базовые наборы Hex (гекс) и Square (квадрат), так как в них больше всего точек. Поэтому и разнообразных узоров они дают больше. А вот наборы x-border (границы многоугольников) и особенно Circle (окружность) наоборот — выхолощены и интересны больше для исследовательских целей.

Для базового набора можно указать его размер (Order) с помощью слайдера (ползунка). Следующее поле (Index) задает номера отображаемых спектров (уровней) из доступных для данного набора. В данной версии можно выводить 1, 4 или 9 узоров одновременно.
Важный параметр — тип узора (Plot type). Именно он задает способ (режим) отображения наших собственных векторов. Доступные мы перечислили выше (Points, Web, Mosaic, Contour).
Флажок "Titles" выводит над каждым спектром его числовые параметры, порядковый номер в общем составе уровней и значение собственного числа данного уровня. Это для тех, кому интересна не только графика.
Ниже мы видим два слайдера для параметров варьирования. При их изменении спектры оживают. Напомним, что правая кнопка мыши на слайдере — сдвигает его к текущему положению, левая — инкрементирует.

Далее следуют параметры, влияющие на вид спектров — цвет, маркеры и маска. Не во всех режимах отображения они задействованы. Маркеры, например, имеют значение только для «точечного» режима, а маски — наоборот,- для всех, кроме точечного.
Наиболее важен, пожалуй, цвет (Color). Для его задания необходимо указать цветовую карту (Map). Но играют цветом с помощью вектора (слайдер с флажком Use). Вектор цвета (и размера маркеров тоже) выбирается, как уже отмечалось, из невырожденных уровней.

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

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

Математические аспекты

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

Расчет количества вырожденных спектров

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

Для гексагональной решетки количество «снежинок» Ns связано с общим количеством точек (узлов) N как:

Ns = (N-1)/3

В свою очередь количество точек квадратично зависит от размера решетки a:

N(a) = 3a(a-1) + 1. Отсюда Ns(a) = a(a-1).

В квадратной решетке количество вырожденных спектров связано с количеством точек аналогичным образом:

Ns = N/4 = a^2/4

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

Идентификация уровней спектра

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

Фазовые переходы

Явление бурного изменения узоров происходит в узкой полосе параметра возмущения. Похоже чем-то на фазовый переход. Возможно, что это известное явление. При фазовом переходе меняется как вид спектров, так и их относительное расположение. Мы специально выбрали вид возмущаемой функции таким, чтобы при изменении параметра возмущения Disturb функция меняла знак. Можно видеть, что базовое распределение при изменении параметра с минимального на максимальный переходит с первого индекса на последний. Этот переход осуществляется вроде бы перемещением базового узора по индексам от меньшего к большему. Через какое-то время мы видим измененный базовый узор на последнем индексе. Который затем эволюционирует к исходной базовой конфигурации.
Однако в больших конфигурациях, похоже, никто никуда не перемещается (ну или мы не можем отследить). Просто в определенный момент возникает зачаток новой базовой конфигурации в нужном месте (на максимальном индексе). Короче, интересно — посмотрите ).
Если бы у нас был какой-то параметр идентификации собственных уровней — мы бы более точно могли отслеживать перемещение (или смерть и рождение?) спектров. И показывать на картинке всегда заданные спектры независимо от значений их собственных чисел.

Стабилизация картинки

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

Делители

Когда базовой конфигурацией является простая окружность (точки в вершинах правильных многоугольников), то мы сталкиваемся с феноменом делителей целых чисел. В такой конфигурации все точки равноправны. Соответственно все вырожденные уровни (а других тут и нет) также являются координатами вершин многоугольников (лежат на окружности). Но при этом спектры простых многоугольников (число вершин простое число) отличаются от составных. В спектрах простых все уровни — это тоже простые многоугольники с таким же числом вершин. А в спектрах составных уровни состоят из делителей вершин базового многоугольника.
Например, спектр 30-угольника состоит из 14 вырожденных уровней. Из них четыре 30-угольника, четыре 15-угольника, два 10-угольника, один 6-угольник, два 5-угольника и один 3-угольник. Почему именно такое распределение уровней по делителям — нам не ясно (но мы сильно и не вникали). Возможно, это уже объяснено где-то в теории групп.

На этом пока все. Удачи в творческом поиске и с Рождеством!
ссылка на оригинал статьи https://habrahabr.ru/post/319060/