Реальная история, основанная на вымышленных событиях.
Все совпадения — неслучайны.
Все шутки — несмешны.
Рубрика «Программирование» - 280
И повелел Господь: «собеседуйтесь и принимайте офферы»
2019-07-03 в 20:46, admin, рубрики: Карьера в IT-индустрии, Программирование, собеседование, собеседование в IT, собеседование на работу, управление персоналом, Читальный залБольшое интервью с Клиффом Кликом — отцом JIT-компиляции в Java
2019-07-03 в 15:15, admin, рубрики: hydra, java, Блог компании JUG.ru Group, конференции, Программирование, распределенные системы
Клифф Клик — CTO компании Cratus (IoT сенсоры для улучшения процессов), основатель и сооснователь нескольких стартапов (включая Rocket Realtime School, Neurensic и H2O.ai) с несколькими успешными экзитами. Клифф написал свой первый компилятор в 15 лет (Pascal для TRS Z-80)! Наиболее известен за работу над С2 в Java (the Sea of Nodes IR). Этот компилятор показал миру, что JIT может производить качественный код, что стало одним из факторов становления Java как одной из основных современных программных платформ. Потом Клифф помог компании Azul Systems построить 864-ядерный мейнфрейм с софтом на чистой Java, который поддерживал паузы GC на 500-гигабайтной куче в пределах 10 миллисекунд. Вообще, Клифф успел поработать над всеми аспектами JVM.
Этот хабрапост — большое интервью с Клиффом. Мы поговорим на следующие темы:
- Переход к низкоуровневым оптимизациям
- Как делать большой рефакторинг
- Модель стоимости
- Обучение низкоуровневым оптимизациям
- Практические примеры улучшения производительности
- Зачем создавать свой язык программирования
- Карьера перформанс-инженера
- Технические челленжи
- Немного про аллокацию регистров и многоядерность
- Самый большой челленж в жизни
Интервью ведут:
- Андрей Сатарин из Amazon Web Services. В своей карьере успел поработать в совершенно разных проектах: тестировал распределенную базу данных NewSQL в Яндексе, систему облачного детектирования в Лаборатории Касперского, многопользовательскую игру в Mail.ru и сервис расчёта валютных цен в Deutsche Bank. Интересуется тестированием крупномасштабных backend- и распределённых систем.
- Владимир Ситников из Netcracker. Десять лет работает над производительностью и масштабируемостью NetCracker OS — ПО, используемого операторами связи для автоматизации процессов управления сетью и сетевым оборудованием. Увлекается вопросами производительности Java и Oracle Database. Автор более десятка улучшений производительности в официальном PostgreSQL JDBC-драйвере.Читать полностью »
Действительно ли Python GIL уже мертв?
2019-07-03 в 12:07, admin, рубрики: Global Interpreter Lock, programming, python, Python Gil, Блог компании OTUS. Онлайн-образование, ПрограммированиеВсем привет! Уже в следующий понедельник начинаются занятия в новой группе курса «Разработчик Python», а это значит, что у нас есть время для публикации еще одного интересного материала, чем мы сейчас и займемся. Приятного прочтения.

В далеком 2003 году Intel выпустил новый процессор Pentium 4 “HT”. Этот процессор разгонялся до 3ГГц и поддерживал технологию гиперпоточности. Читать полностью »
Зачем нам UML? Или как сохранить себе нервы и время
2019-07-03 в 10:33, admin, рубрики: UML, UML Design, Анализ и проектирование систем, Программирование, проектированиеМногие программисты, столкнувшись со сложной задачей, пренебрегают этапом проектирования, ссылаясь на то, что проектирование — это потеря времени, и в данном случае оно будет мне только мешать.

Зачастую это утверждение оказывается верным, если задача и правда небольшая и квалификации программиста достаточно для определения наиболее оптимального решения.
Программисты, не использующие UML, делятся на несколько групп:
- начну писать код, а в процессе пойму, что да как;
- почитаю форумы, хабр, medium, stack overflow, книгу, записи на стенах, знаки свыше…;
- поспрашиваю у коллег, может, кто-то знает, как решить подобную задачу;
- начну рисовать квадратики и схематично покажу, какое видение задачи сформировалось у меня в сознании.
Мины под производительностью ждут своего часа: часть 2
2019-07-03 в 8:43, admin, рубрики: java, java performance, Программирование, производительностьПри подготовке прошлой статьи от моего внимания ускользнул один любопытный пример, выловленный в одном из наших приложений. Его я оформил в виде отдельной статьи, которую вы сейчас читаете.
Peephole микрооптимизации в С++ и C# компиляторах
2019-07-03 в 8:35, admin, рубрики: .net, C#, c++, CoreCLR, gcc, LLVM, Программирование, системное программированиеВ школе, когда мы решали уравнения или считали формулы, мы пытались их сперва сократить несколько раз, к примеру Z = X - (Y + X) сокращается в Z = -Y. В современных компиляторах это подмножество так называемых peephole-оптимизаций, в которых мы по, грубо говоря, набору шаблонов сокращаем выражения, заменяем инструкции на более быстрые для конкретного процессора и т.п. В этой статье я собрал наборчик таких оптимизаций, которые удалось найти в исходниках LLVM, GCC и .NET Core (CoreCLR).
Начнем с простых примеров:
X * 1 => X
-X * -Y => X * Y
-(X - Y) => Y - X
X * Z - Y * Z => Z * (X - Y)
проверим последний пример в С++ и в C#:
int Test(int x, int y, int z) {
return x * z - y * z; // => z * (x - y)
}
и посмотрим на ассемблер от Clang (LLVM), GCC, MSVC и .NET Core:

Теория вместо эвристики: становимся лучше как frontend-разработчики
2019-07-03 в 8:34, admin, рубрики: Блог компании NIX Solutions, Программирование, разработка, Учебный процесс в IT, фронтенд
Перевод Becoming a better front-end developer using fundamentals instead of heuristics
Наш опыт показывает, что не имеющие технического образования разработчики и самоучки чаще полагаются не на теоретические принципы, а на эвристические методы.
Эвристика — шаблоны и проверенные правила, которые разработчик вынес из практики. Они могут работать неидеально или ограниченно, но в достаточной мере, и не требуют серьёзных размышлений. Вот некоторые примеры эвристики:
- «Используй
$(document).ready(function(){})для инициализации кода на jQuery-сайтах» - «Конструкция
var self = thisнеобходима для вызова метода в функции обратного вызова» - «У стрелочных функций нет операторов
return»
В то же время, теоретический принцип может быть использован для поиска решений других проблем. Он неизменно верен и часто определяет само устройство работы того или иного элемента. К теоретическим принципам относятся, например:
- Официальный синтаксис стрелочных функций
- API-документация к Lodash
- Правила применения и функции vertical-align
Обратите внимание: мы заключили в кавычки только примеры эвристики — для того, чтобы подчеркнуть кустарный характер эвристики по сравнению со строгостью теоретических основ. Ни один из примеров эвристики не является универсальным для всех случаев, но они работают в достаточном количестве ситуаций, чтобы применяющие их разработчики получали рабочий код без полного понимания его работы.
Читать полностью »
Дайджест новостей машинного обучения и искусственного интеллекта за июнь
2019-07-02 в 17:20, admin, рубрики: big data, data mining, будущее, дайджест, данные, искусственный интеллект, машинное обучение, ПрограммированиеХабр, привет.
Отфильтровав большое количество источников и подписок — собрал для вас все наиболее значимые новости из мира машинного обучения и искусственного интеллекта за июнь. Всем приятного чтения!
1. Команда исследователей из Карнеги-Меллона сделала прорыв в области неинвазивного управления роботизированными устройствами.
Используя неинвазивный интерфейс мозг-компьютер, они разработали первую в мире успешную роботизированную руку, которая управляется с помощью мыслей и без хирургического (!) вмешательства. Технология продемонстрировала способность непрерывно отслеживать и следовать за курсором компьютера.

2. Facebook AI опубликовали работу, в которой проверяли нейросети на способность следовать принципу взаимной исключительности при принятии решений. И выяснили, чем отличается процесс принятия решений у нейросети и ребенка.

3. Waymo публикует данные для обучения автопилотных автомобилей. Данные включают в себя 3,000 видеозаписей вождения, которые в сумме длятся 16.7 часов, 600,000 фреймов, около 25 миллионов 3D границ объектов и 22 миллионов 2D границ объектов. Сенсоры на автомобилях, которые собирали данные, включали в себя 5 LiDARs, 5 камер и радары, количество которых не разглашается. Компания заявила, что им удалось точнее синхронизировать LiDAR и записи камер, чем в открытых данных (KITTI, NuScenes).

Метаморфоза тестирования redux-saga
2019-07-02 в 15:18, admin, рубрики: Dodo Pizza Engineering, dodopizza, javascript, React, react.js, ReactJS, redux, redux middleware, redux-saga, Блог компании Dodo Pizza Engineering, Программирование, тестирование, Тестирование IT-системФреймворк redux-saga предоставляет кучу интересных паттернов для работы с сайд-эффектами, но, как истинные кроваво-энтерпрайзные разработчики, мы должны покрывать весь свой код тестами. Давайте разберёмся, как мы будем тестировать наши саги.
Ямы на пути становления программистом
2019-07-02 в 13:52, admin, рубрики: Карьера в IT-индустрии, обучение, Программирование, Учебный процесс в ITПривет!
На досуге, читая интересную статью о становлении программистом, я задумался, что в целом мы с вами проходим по одному и тому же минному полю с граблями на карьерном пути. Оно начинается с ненависти к системе образования, которая из нас якобы «должна» сделать сеньоров и заканчивая осознанием того, что тяжкий груз обучения ложится только на наши плечи, но зачастую это осознание приходит поздно.


