Обновить
1361.8

Программирование *

Искусство создания компьютерных программ

Сначала показывать
Порог рейтинга
Уровень сложности

Привычка Stack Overflow

Время на прочтение4 мин
Охват и читатели43K
Stackoverlow уже стал незаменимым инструментом для множества разработчиков. Продвигаемая авторами модель использования – это “база знаний”. Набираем вопрос в гугле → попадаем на stackoverlow → читаем ответ → profit! Так сайт работает для большинства – за счет гораздо меньшей группы разработчиков, которая отвечает на вопросы. Зачем они это делают? Большинство – для повышения собственной квалификации и социальной реализации. И для карьеры полезно, и комплексы стороной обходят, и кризис среднего возраста не придет. Под катом – перевод статьи одного такого разработчика, который делится своими практическими наработками о том, как ему удалось отвечать на вопросы начинающих разработчиков каждый день.

stackoverflow for fun and profit!

HoloLens, Xbox One Dev Mode и возможности для разработчиков с конференции //Build

Время на прочтение23 мин
Охват и читатели9.9K
Здравствуйте, дорогие читатели!

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


HoloLens и Holographic Academy, Xbox One Developer Mode и подробности интересных технологических проектов с финала Imagine Cup США — об этом я хочу рассказать вам в данной статье.
Читать дальше →

GECOn 2016: Первая Гомельская IT-конференция (24 апреля)

Время на прочтение2 мин
Охват и читатели4.6K

Признайтесь себе, когда вы в последний раз были на IT конференции? Такой, чтобы от профессионалов и для профессионалов? А такой, чтоб взять и никуда не ехать, а сходить на нее прямо в Гомеле? То то же. Значит, у меня есть, что вам предложить :)
Первая Гомельская IT-конференция!



Что это


Минимум воды, максимум технической начинки:


  • 24 апреля – это уже совсем скоро;
  • ОКЦ, ул. Ланге 17 – самый центр города;
  • 13 докладов – на актуальные темы, затрагивающих все аспекты разработки программного обеспечения;
  • 3 потока – докладов много, часов в сутках мало, а рассказать хочется обо всем;
  • 17 экспертов – и я не вру, когда называю их экспертами – это было доказано и подтверждено годами опыта и количеством успешных проектов;
  • 250 участников, среди которых вас до сих пор нет?!
  • Цена – бесплатно, нужна только регистрация.
Читать дальше →

Краткий обзор Kotlin и сравнение с C#

Время на прочтение10 мин
Охват и читатели43K

От автора:


Эта статья представляет собой заметки на коленке и является скорее кратким обзором Kotlin, включая небольшое сравнение с языком С# с точки зрения синтаксиса. Это мое мнение и мои размышления по поводу этого сравнительно молодого языка в мире Java-платформы, который на мой взгляд имеет хорошие шансы добиться успеха.

Читать дальше

Объяснение эксперимента о ветвлениях, или философские изыскания на тему бенчмарков в вакууме и в… реальности

Время на прочтение11 мин
Охват и читатели7.2K
Надеюсь, кто хотел, ознакомился с моим пробным экспериментом на Хабре в этой статье. Теперь я считаю, что будет правильным огласить его результаты и даже дать более детальное объяснения причин, по которым вообще подобные эксперименты проводятся. Пост будет наполовину философским, поскольку сейчас в компьютерном мире всё настолько сложно, что без философского осмысления принять какие-то осмысленные решения просто невозможно. Я постараюсь вообще выразить своё мнение о сферических измерениях в вакууме, поэтому будет много букв. В статье есть опрос, проводимый до 1-го мая 2016. Под катом целиком ИМХО.

Читать дальше →

Новости мира IT. Апрель

Время на прочтение4 мин
Охват и читатели18K
Мы в GeekBrains стараемся не отставать от жизни и предлагаем вам нашу подборку новостей и новинок мира IT за апрель, которые обратили на себя наше внимание.



Новости компаний


XP живее всех живых


Не новость, но факт интересный.

Два года назад официально прекратилась поддержка Windows XP. Тем не менее, согласно свежей статистике, система по-прежнему функционирует на 181 миллионе машин, что составляет 11% от всех существующих компьютеров. Цифра оказывается ещё значительнее, если сказать, что вплоть до октября 2015 года версий Windows XP использовалось больше, чем OS X (а это подавляющее большинство MacBook-ов).

Согласно ирландскому статистическому агентству StatCounter около 47 миллионов машин с XP на борту работает в Китае. И это тоже удивительный факт, если вспомнить. какие усилия прилагал Microsoft для продвижения 10-й версии именно в КНР (например, контракт с крупнейшим поисковиком в регионе Baidu).
Читать дальше →

Сортировка слиянием по-простому

Время на прочтение4 мин
Охват и читатели227K
Кто-то сказал однажды, что
...any scientist who couldn't explain to an eight-year-old what he was doing was a charlatan.

Оказывается, это был Курт Воннегут.

Я не стремился доказать это высказывание. Я стремился опровергнуть свою тупость.


Допустим у нас есть два массива чисел, отсортированных по возрастанию.

int[] a1 = new int[] {21, 23, 24, 40, 75, 76, 78, 77, 900, 2100, 2200, 2300, 2400, 2500};
int[] a2 = new int[] {10, 11, 41, 50, 65, 86, 98, 101, 190, 1100, 1200, 3000, 5000};

Необходимо слить их в один упорядоченный массив.

int[] a3 = new int[a1.length + a2.length];

Это задача для сортировки слиянием.

Что это такое? В интернете есть ответ, есть описание алгоритма, но я его не понял с одного присеста и решил разобраться сам. Для этого необходимо понять базовый принцип алгоритма, чтобы можно было по памяти воссоздать алгоритм применительно к своей задаче.
Читать дальше →

Подробности завершения периода беты Stack Overflow на русском языке

Время на прочтение1 мин
Охват и читатели7.8K
Подробный рассказ о том, как Stack Overflow на русском вышел из статуса беты, появился на днях в блоге компании.

К моменту завершения аттестации, статистика была следующей:

  • 115.7 вопросов задают в день
  • 82% вопросов отвечены
  • 1,499 постоянных пользователей и 33,678 пользователей всего
  • 1.7 ответа на вопрос в среднем
  • 42,464 визита в день

Помимо этого:

  • Больше 2,000 участников в месяц присоединяется к сообществу.
  • Сайт наиболее популярен (по убыванию) в: Москве, Киеве, Санкт-Петербурге, Минске и Харькове.
  • Более 3,000 участников в месяц получают правильные ответы.
  • Чтобы получить столько внимания, как на Stack Overflow на русском, вам пришлось бы нанять 23,000 разработчиков на полный рабочий день.

Запуск бета-версии SO на русском состоялся в 2015 году, став результатом поглощения сайта ХэшКод. Таким образом, процесс становления равноправным участником сети Stack Exchange занял у сервиса менее восьми месяцев.
Читать дальше →

Сравнение языков программирования относительно работы на фриланс-бирже upwork.com + опрос

Время на прочтение3 мин
Охват и читатели86K

Недавно (в конце марта 2016 года) делал исследование перспективности языков программирования на upwork.com для одного из своих проектов и подумал, что это может быть интересно кому-нибудь ещё.


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


image
Процентное соотношение офферов по популярным языкам программирования

Узнать ответ на главный вопрос жизни, вселенной и всего такого

Так ли нужно избавляться от ветвлений? — На примере sign, abs, min и max

Время на прочтение6 мин
Охват и читатели16K
Я бы хотел предложить сообществу поучаствовать в пробном эксперименте. Суть его состоит в том, чтобы прогнать на своём компьютере программу, написанную на C++, и поделиться результатом измерения времени, которое она выдаёт, сравнивая скорость работы функций sign(x), abs(x), min(a,b) и max(a,b) в исполнении с ветвлением и без него. В статье я объясню свою мотивацию, покажу сами функции, а в конце предложу условия участия в эксперименте и его (увы) ограничения.
Читать дальше →

Я не знаю как это сделать! Честно-честно

Время на прочтение5 мин
Охват и читатели53K
Это статья о простом приеме мотивации молодого специалиста. Если коротко: сильный специалист признается, что не знает как решить задачу, чтобы мотивировать новичка. О паре случаев из жизни под катом.
Читать дальше →

Анонс Rust 1.8

Время на прочтение3 мин
Охват и читатели9K

Мы рады представить новую версию Rust — 1.8. Rust — это системный язык программирования, нацеленный на безопасную работу с памятью, скорость и параллельное выполнение кода.

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

Читать дальше →

v3.14.1592-beta2: все, что вы хотели знать о семантическом версионировании

Время на прочтение5 мин
Охват и читатели38K
Усилия и деньги, вкладываемые в продвижение языка Go, часто приносят пользу и другим разработчикам. В конце прошлого года на сайте gopheracademy была опубликована очень удачная статья о семантическом версионировании. Том самом, которое используется в npm, начинается с домика ^ и все ломает. Под катом спрятан перевод, который поможет вам быстро осмотреть сад граблей версионирования и как сейчас принято им пользоваться. И немного примеров на Go. Передаем слово автору!
go? какой go? зачем go?!

Ближайшие события

Введение в программирование шейдеров: часть 2

Время на прочтение8 мин
Охват и читатели24K
Научившись писать шейдеры, вы сможете максимально эффективно использовать всю вычислительную мощь современных графических чипов, тысячи ядер которых работают параллельно в одном потоке, ведь все шейдерные вычисления производятся на GPU, а не на CPU. Программирование шейдеров требует другого мышления и подхода к написанию кода, нежели написание обычных программ, однако их практически безграничный потенциал с лихвой окупает все проблемы на начальных этапах.


Читать дальше →

Перспективы языка го для программиста

Время на прочтение2 мин
Охват и читатели31K


Статья написана по мотивам одного не очень приятного разговора на последнем IT global митапе в Питере.
Читать дальше →

Исследование скорости вызова метода различными способами

Время на прочтение7 мин
Охват и читатели12K

Результат и выводы для тех кто не любит длинный текст



100.000 вызовов, 20 итераций теста, x86 100.000 вызовов, 20 итераций теста, x64 1.000.000 вызовов, 10 итераций теста, x86 1.000.000 вызовов, 10 итераций теста, x64
Прямой вызов
Min:	1 ms
Max:	1 ms
Mean:	1 ms
Median:	1 ms
Abs: 1

Min:	1 ms
Max:	1 ms
Mean:	1 ms
Median:	1 ms
Abs: 1

Min:	7 ms
Max:	8 ms
Mean:	7,5 ms
Median:	7,5 ms
Abs: 1

Min:	5 ms
Max:	6 ms
Mean:	5,2 ms
Median:	5 ms
Abs: 1

Вызов через отражение
Min:	32 ms
Max:	36 ms
Mean:	32,75 ms
Median:	32,5 ms
Rel: 32

Min:	35 ms
Max:	44 ms
Mean:	36,5 ms
Median:	36 ms
Rel: 36

Min:	333 ms
Max:	399 ms
Mean:	345,5 ms
Median:	338 ms
Rel: 45

Min:	362 ms
Max:	385 ms
Mean:	373,6 ms
Median:	376 ms
Rel: 75

Вызов через делегат
Min:	64 ms
Max:	71 ms
Mean:	65,05 ms
Median:	64,5 ms
Rel: 64

Min:	72 ms
Max:	86 ms
Mean:	75,95 ms
Median:	75 ms
Rel: 75

Min:	659 ms
Max:	730 ms
Mean:	688,8 ms
Median:	689,5 ms
Rel: 92

Min:	746 ms
Max:	869 ms
Mean:	773,4 ms
Median:	765 ms
Rel: 153

Вызов через делегат с оптимизациями
Min:	16 ms
Max:	18 ms
Mean:	16,2 ms
Median:	16 ms
Rel: 16

Min:	21 ms
Max:	25 ms
Mean:	22,15 ms
Median:	22 ms
Rel: 22

Min:	168 ms
Max:	187 ms
Mean:	172,8 ms
Median:	170,5 ms
Rel: 22.7

Min:	218 ms
Max:	245 ms
Mean:	228,8 ms
Median:	227 ms
Rel: 45.4

Вызов через dynamic
Min:	11 ms
Max:	14 ms
Mean:	11,5 ms
Median:	11 ms
Rel: 11

Min:	12 ms
Max:	14 ms
Mean:	12,5 ms
Median:	12 ms
Rel: 12

Min:	124 ms
Max:	147 ms
Mean:	132,1 ms
Median:	130 ms
Rel: 17

Min:	127 ms
Max:	144 ms
Mean:	131,5 ms
Median:	129,5 ms
Rel: 26

Вызов через Expression
Min:	4 ms
Max:	4 ms
Mean:	4 ms
Median:	4 ms
Rel: 4

Min:	4 ms
Max:	5 ms
Mean:	4,15 ms
Median:	4 ms
Rel: 4

Min:	46 ms
Max:	55 ms
Mean:	50 ms
Median:	50,5 ms
Rel: 6.7

Min:	47 ms
Max:	51 ms
Mean:	47,7 ms
Median:	47 ms
Rel: 9.4



При использованиии .NET Framework 3.5 лучше всего использовать вызов методов через делегат с оптимизацией вызова. Для .NET Framework 4.0+ отличным выбором будет использование dynamic.
UPD: новый вывод от mayorovp: лучше всего использовать Expression

UPD: и как подсказал CdEmON, такое исследование было опубликовано на хабре ранее

Читать дальше →

Чего нам не хватает в Java

Время на прочтение8 мин
Охват и читатели21K


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

Отсутствуют материализованные дженерики (reified generics). Об этом не писал только ленивый, причём большинство комментариев свидетельствуют о непонимании сути затирания типов. Если Java-разработчик говорит: «Я не люблю затирание типов», то в большинстве случаев это означает «Мне нужен List int». Вопрос примитивной специализации дженериков лишь косвенно связан с затиранием, а польза от дженериков, видимых в ходе исполнения, сильно преувеличена молвой.

Беззнаковые вычисления (unsigned arithmetic) на уровне виртуальной машины. Отсутствие в Java поддержки беззнаковых арифметических типов вызывает недовольство разработчиков уже многие годы. Но это является обдуманным решением создателей языка. Наличие лишь знаковых вычислений существенно упрощает язык. Если сегодня начать внедрять беззнаковые типы, то это повлечёт за собой очень серьёзную переработку Java, что чревато массой больших и маленьких багов, которые будет трудно вылавливать. Заодно сильно возрастает риск дестабилизации всей платформы.

Длинные указатели для массивов. Опять же, внедрение этой функциональности потребует слишком глубокой переработки JVM с возможными неприятными последствиями, причём далеко не только с точки зрения поведения и семантики сборщиков мусора. Хотя нужно отметить, что Oracle ищет пути внедрения подобной функциональности с помощью проекта VarHandles.

Здесь мы не будем вдаваться в подробности возможного Java-синтаксиса для обсуждаемой функциональности. К сожалению, подобные обсуждения вообще часто скатываются к спорам на тему синтаксиса, хотя куда важнее семантика.
Читать дальше →

Как написать фильтр Блума в C ++

Время на прочтение3 мин
Охват и читатели22K
Фильтр Блума представляет собой структуру данных, которая может эффективно определить является ли элемент возможным элементом набора или определенно не относится к нему. Эта статья продемонстрирует простую реализацию фильтра Блума в C++.

Читать полный перевод

Юмор в программировании: P, NP и машины Тьюринга

Время на прочтение5 мин
Охват и читатели5.2K
Чем мы занимаемся большую часть времени? Пишем код — прикладываем математику к реальности, крутим алгебру конструкциями языка и создаем новое и интересное.

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

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

А иногда люди придумывают вещи, сильно оторванные от реальности — типа недетерминированной машины Тьюринга и вопрос — зачем? :-)

Читать дальше →

От любви до ненависти — один шаг, или как я разлюбил магию в ActiveRecord

Время на прочтение3 мин
Охват и читатели6.3K
Недавно в одном из проектов возникла интересная проблема — весьма долго отдавались данные по REST API, несмотря на их небольшое количество. Что же случилось и почему — рассказываю под катом.
Читать дальше →

Вклад авторов