Pull to refresh
  • by relevance
  • by date
  • by rating

Три основных направления разработки ПО в будущем

Lumber room
(Перевод поста: Top 3 paradigm shifts that will shape the future of developers — Enes TAYLAN)


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

Читать дальше →
Total votes 38: ↑25 and ↓13 +12
Views 5.4K
Comments 61

Летняя школа Microsoft Research по параллельным вычислениям открывает регистрацию участников

Microsoft corporate blog
Во время летних каникул исследовательское подразделение компании Microsoft – Microsoft Research проводит ежегодное крупнейшее мероприятие, ориентированное на аспирантов, студентов старших курсов и молодых ученых – Летнюю Школу. В этом году школа будет проходить в Санкт-Петербурге в сотрудничестве с НИУ ИТМО с 22 по 29 августа 2012 года.



Цель школы
  • Предоставить студентам из ведущих вузов страны уникальную возможность узнать о новейших достижениях в области параллельных вычислений.
  • Предоставить уникальные условия для обмена опытом между студентами и преподавателями в течение недели интенсивных занятий под руководством ведущих международных экспертов в области вычислительных наук.

Тематика школы: параллельные вычисления (Concurrency and Parallelism in Software).
Читать дальше →
Total votes 23: ↑17 and ↓6 +11
Views 5K
Comments 3

Rivertrail: параллелизм в JavaScript

Intel corporate blog JavaScript *Concurrent computing *
Translation


Использование возможностей параллелизма в настоящее время стало уже обычной практикой в программировании. Однако все языки можно разделить на два типа: те, в которых параллельность применяется вовсю и активно (например, С), и те, которые не вкусили еще в полной мере радостей многопоточности. К последним, в частности, относится JavaScript. Чтобы восполнить этот досадный пробел и пополнить копилку прогрессивного опыта, предлагаем вашему вниманию перевод сообщения из блога Ника Матсакиса, программиста Mozilla Foundation, в котором он делится первыми личными впечатлениями от использования Rivertrail — инструмента параллелизации в JavaScript, созданным Intel.
Читать дальше →
Total votes 43: ↑41 and ↓2 +39
Views 15K
Comments 6

Parallelism vs Concurrency: правильно подбираем инструменты

Издательский дом «Питер» corporate blog High performance *Erlang/OTP *Concurrent computing *
Translation
Здравствуйте, уважаемые хабровчане! Мы решили возобновить публикации еще до окончания больших праздников, но в сегодняшней статье все-таки раскрыта тема справедливой раздачи подарков. Сама же статья, как понятно из названия, посвящена сравнительному анализу параллелизма и конкурентности.

Читать дальше →
Total votes 17: ↑16 and ↓1 +15
Views 32K
Comments 5

Визуализация concurrency в Go с WebGL

Programming *Go *Concurrent computing *Data visualization
Одной из самых сильных сторон языка программирования Go является встроенная поддержка concurrency, основанная на труде Тони Хоара «Communicating Sequential Processes». Go создан для удобной работы с многопоточным программированием и позволяет очень легко строить довольно сложные concurrent-программы. Но задумывались ли вы когда-нибудь, как выглядят различные паттерны concurrency визуально?

Конечно, задумывались. Все мы, так или иначе, мыслим визуальными образами. Если я попрошу вас о чём-то, что включает числа «от 1 до 100», вы мгновенно их «увидите» в своей голове в той или иной форме, вероятно даже не отдавая себе в этом отчёт. Я, к примеру, ряд от 1 до 100 вижу как линия с числами уходящая от меня, поворачивающая на 90 градусов вправо на числе 20 и продолжающая до 1000+. И, покопавшись в памяти, я вспоминаю, что в самом первом детском саду в раздевалке вдоль стены были написаны номерки, и число 20 было как-раз в углу. У вас же, вероятно, какое-то свое представление. Или вот, другой частый пример — представьте круглый год и 4 сезона года — кто-то их видит как квадрат, каждая грань которого принадлежит сезону, кто-то — как круг, кто-то ещё как-то.

Так или иначе, позвольте мне показать мою попытку визуализировать основные паттерны concurrency с помощью Go и WebGL. Эти интерактивные визуализации более-менее отражают то, как я вижу это в своей голове. Интересно будет услышать, насколько это отличается от визуализаций читателей.

Читать дальше →
Total votes 91: ↑88 and ↓3 +85
Views 28K
Comments 21

man!( Go => D ).concurrency

Programming *Go *Concurrent computing *D *

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

Если вы уже наигрались с Go, устали от копипасты, ручного жонглирования мьютексами и всерьёз подумываете о приобретении протезов для рук, то позвольте предложить вашему вниманию перевод Tour of the Go с эквивалентным кодом на D и краткими пояснениями.


Часть первая. Основы.


Часть пятая. Сопрограммы.

Читать дальше →
Total votes 28: ↑22 and ↓6 +16
Views 12K
Comments 93

$mol: reactive micromodular ui-framework

Website development *CSS *JavaScript *Development of mobile applications *Node.JS *

Сколько нужно времени, чтобы просто вывести на экран большой список, используя современные фреймворки?


Список на 2000 строк ReactJS AngularJS Raw HTML SAPUI5 $mol
Появление списка 170 ms 420 ms 260 ms 1200 ms 50 ms
Обновление всех его данных 75 ms 75 ms 260 ms 1200 ms 10 ms

Напишем нехитрое приложение — личный список задач. Какие у него будут характеристики?


ToDoMVC ReactJS AngularJS PolymerJS VanillaJS $mol
Размер ( html + js + css + templates ) * gzip 322 KB 326 KB 56 KB 20 KB 23 KB
Время загрузки 1.4 s 1.5 s 1.0 s 1.7 s 0.7 s
Время создания и удаления 100 задач 1.3 s 1.7 s 1.4 s 1.6 s 0.5s

Небольшая головоломка: перед вами синхронный код, загружающий и обрабатывающий содержимое 4 файлов, но с сервера они грузятся параллельно. Как такое может быть?


Синхронная параллельная загрузка ресурсов


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


Читать дальше →
Total votes 54: ↑46 and ↓8 +38
Views 18K
Comments 150

Stream API & ForkJoinPool

OTUS corporate blog Programming *Java *Concurrent computing *
Продолжаем серию полезностей, которыми мы делимся с вами. Теперь уже вновь по Java.

Если вы уже знакомы со Stream API и использовали его, то знаете, что это удобный способ обработки данных. С помощью различных встроенных операций, таких как map, filter, sort и других можно преобразовать входящие данные и получить результат. До появления стримов разработчик был вынужден императивно описывать процесс обработки, то есть создавать цикл for по элементам, затем сравнивать, анализировать и сортировать при необходимости. Stream API позволяет декларативно описать, что требуется получить без необходимости описывать, как это делать. Чем-то это напоминает SQL при работе с базами данных.



Стримы сделали Java-код компактнее и читаемее. Еще одной идеей при создании Stream API было предоставить разработчику простой способ распараллеливания задач, чтобы можно было получить выигрыш в производительности на многоядерных машинах. При этом нужно было избежать сложности, присущей многопоточному программированию. И это удалось сделать, в Stream API есть методы BaseStream::parallel и Collection.parallelStream(), которые возвращают параллельный стрим.
Читать дальше →
Total votes 8: ↑8 and ↓0 +8
Views 23K
Comments 5

Разбор основных концепций параллелизма

OTUS corporate blog Programming *Java *Concurrent computing *
Translation
Всем кофе!

Завтра у нас плавненько стартует практически юбилейный поток курс «Разработчик Java» — уже шестой по счёту начиная с апреля прошлого года. А это значит, что мы снова подобрали, перевели интереснейший материал, которым делимся с вами.

Поехали!

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

РАЗДЕЛ 1

Вступление

С момента своего создания Java поддерживает ключевые концепции параллелизма, такие как потоки и блокировки. Эта памятка поможет Java-разработчикам, работающим с многопоточными программами, понять основные концепции параллелизма и способы их применения.

РАЗДЕЛ 2

Концепции

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

Таблица 1: Концепции параллелизма

Читать дальше →
Total votes 17: ↑15 and ↓2 +13
Views 29K
Comments 12

Асинхронный Python: различные формы конкурентности

Python *Programming *Learning languages
Recovery mode
Translation
С появлением Python 3 довольно много шума об “асинхронности” и “параллелизме”, можно полагать, что Python недавно представил эти возможности/концепции. Но это не так. Мы много раз использовали эти операции. Кроме того, новички могут подумать, что asyncio является единственным или лучшим способом воссоздать и использовать асинхронные/параллельные операции. В этой статье мы рассмотрим различные способы достижения параллелизма, их преимущества и недостатки.
Читать дальше →
Total votes 23: ↑21 and ↓2 +19
Views 84K
Comments 36

.NET: Инструменты для работы с многопоточностью и асинхронностью. Часть 1

System administration *.NET *ASP *C# *
Публикую на Хабр оригинал статьи, перевод которой размещен в блоге Codingsight.
Вторая часть доступна здесь

Необходимость делать что-то асинхронно, не дожидаясь результат здесь и сейчас, или разделять большую работу между несколькими выполняющими ее единицами была и до появления компьютеров. С их появлением такая необходимость стала очень ощутимой. Сейчас, в 2019, набирая эту статью на ноутбуке с 8 ядерным процессором Intel Core, на котором параллельно этому работает не одна сотня процессов, а потоков и того больше. Рядом, лежит уже немного потрепанный, купленный пару лет назад телефон, у него на борту 8 ядерный процессор. На тематических ресурсах полно статей и видео, где их авторы восхищаются флагманскими смартфонами этого года куда ставят 16ти-ядерные процессоры. MS Azure предоставляет менее чем за 20$/час виртуальную машину со 128 ядерным процессором и 2 TB RAM. К сожалению невозможно извлечь максимум и обуздать эту мощь не умея управлять взаимодействием потоков.
Читать дальше →
Total votes 34: ↑34 and ↓0 +34
Views 41K
Comments 5

.NET: Tools for working with multi-threading and asynchrony – Part 1

.NET *System Programming *ASP *C# *
I have originally posted this article in CodingSight blog
The second part of the article is available here

The need to do things in an asynchronous way – that is, dividing big tasks between multiple working units – was present long before the appearance of computers. However, when they did appear, this need became even more obvious. It is now 2019, and I’m writing this article on a laptop powered by an 8-core Intel Core CPU which, in addition to this, is simultaneously working on hundreds of processes, with the number of threads being even larger. Next to me, there lies a slightly outdated smartphone which I bought a couple of years ago – and it also houses an 8-core processor. Specialized web resources contain a wide variety of articles praising this year’s flagship smartphones equipped with 16-core CPUs. For less then $20 per hour, MS Azure can give you access to a 128-core virtual machine with 2 TB RAM. But, unfortunately, you cannot get the most out of this power unless you know how to control interaction between threads.
Read more →
Total votes 8: ↑6 and ↓2 +4
Views 17K
Comments 4

.NET: Инструменты для работы с многопоточностью и асинхронностью. Часть 2

System administration *.NET *ASP *C# *
Публикую на Хабр оригинал статьи, перевод которой размещен в блоге Codingsight.

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

Содержание



Читать дальше →
Total votes 10: ↑10 and ↓0 +10
Views 30K
Comments 5

.NET – Tools for working with multithreading and asynchrony – Part 2

.NET *ASP *C# *
I have originally posted this article in CodingSight blog.
It's also available in Russian here.


This article comprises the second part of my speech at the multithreading meetup. You can have a look at the first part here and here. In the first part, I focused on the basic set of tools used to start a thread or a Task, the ways to track their state, and some additional neat things such as PLinq. In this part, I will fix on the issues you may encounter in a multi-threaded environment and some of the ways to resolve them.

Contents



Read more →
Total votes 7: ↑6 and ↓1 +5
Views 4.8K
Comments 1

CLRium #6: Concurrency & Parallelism. Обучение магии распараллеливания задач

Seminars by Stanislav Sidristy corporate blog Programming *.NET *C# *

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


Наша задача звучит очень просто: за два полных дня научить вас всем слоям многопоточки.


Открыть программу
Total votes 24: ↑23 and ↓1 +22
Views 6.7K
Comments 2

CLRium #7: Практический. Семинар, домашние задания с проверкой, менторинг

Seminars by Stanislav Sidristy corporate blog Programming *.NET *C# *


18 апреля 2020 в Санкт-Петербурге и 16 мая в Москве пройдёт семинар по платформе .NET CLRium #7 на котором мы продолжим тему многопоточки: на этот раз с точки зрения практики. Первую часть посетило более 700 человек. Основные темы семинара (программа формируется):

  • Архитектура распараллеленного кода
  • Тестирование распараллеленного кода, алгоритмов и примитивов синхронизации
  • Отладка распараллеленного кода

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

  • Сам семинар будет идти день;
  • После чего вы получите домашние задания и мы в течение двух недель будем их вместе решать, проверять и давать советы по их улучшению (также будет создана группа в Телеграмм для их динамичного обсуждения);

Также возможна работа в формате собеседований с личным ментором
Обо всём по порядку
Total votes 17: ↑14 and ↓3 +11
Views 1.6K
Comments 0

PostgreSQL 13: параллельный VACUUM

Postgres Professional corporate blog PostgreSQL *SQL *
На днях Амит Капила закоммитил патч Масахико Савады, который позволяет выполнять очистку в параллельном режиме. Сама таблица по-прежнему очищается одним (ведущим) процессом, но для очистки индексов он теперь может запускать фоновые рабочие процессы, по одному на каждый индекс. В ручном режиме это позволяет ускорить очистку больших таблиц с несколькими индексами; автоматическая очистка пока не использует эту возможность.
Некоторые подробности
Total votes 27: ↑27 and ↓0 +27
Views 7.8K
Comments 5

Как SQL Server использует bitmap-фильтры

OTUS corporate blog SQL *Microsoft SQL Server *
Translation
Перевод статьи подготовлен в преддверии старта курса «MS SQL Server Developer».





Может ли запрос, выполняющийся параллельно, использовать меньше CPU и выполняться быстрее, чем такой же запрос, выполняющийся последовательно?

Да! Для демонстрации я буду использовать две таблицы с одной колонкой типа integer.


Примечание — TSQL скрипт в виде текста находится в конце статьи.
Читать дальше →
Total votes 12: ↑10 and ↓2 +8
Views 3.2K
Comments 1

OOX 2.0: Out of order execution made easy

Intel corporate blog Programming *C++ *Concurrent computing *

As Intel Threading Building Blocks (TBB) is being refreshed using new C++ standard, deprecating tbb::task interface, the need for high-level tasking interface becomes more obvious. In this article, I’m proposing yet another way of defining what a high-level parallel task programming model can look like in modern C++. I created it in 2014 and it was my last contribution to TBB project as its core developer after 9 wonderful years of working there. However, this proposal has not been used in production yet, so a new discussion might help it to be adopted.

Read more
Total votes 10: ↑10 and ↓0 +10
Views 1.1K
Comments 1

Разгоняем REACTOR

Java *Kotlin *
Sandbox

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

Читать далее
Total votes 8: ↑7 and ↓1 +6
Views 4.1K
Comments 30
1