Обновить
1356.44

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

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

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

Как и какой выбрать мобильный интернет? Декодируем GSM

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

В настоящее время огромное количество людей, проживающих в городах и районных центрах, а особенно в удалении от них испытывает сложности с возможностью выбора проводника услуг для качественно использования таких благ цивилизации как цифровое телевиденье, интернет, радио и просто решить, для примера, какого оператора мобильной связи выбрать из возможных для качественной и надежной телефонной связи в данном месте (Мегафон, Билайн, МТС, TELE2 и др.). Как правило в лучшем случае это решается опросом соседей «какую связь используете Вы?» и, полагаясь на их ответ приобретаете необходимую сим карту оператора мобильной связи, а потом сталкиваетесь с тем что не слышно, нет связи, интернета, а как же тогда читать хабр, итд.
Читать дальше →

Введение в продолжения и макросы на Scheme

Время на прочтение10 мин
Охват и читатели13K
Если вы не слышали о call/cc, то вам определённо стоит познакомиться с этим мощным инструментом! Поговорим о продолжении (call/cc), простой, но трудно понимаемой конструкции, обладающей огромной силой в правильных руках. Реализуем с их помощью механизм yield/next/for… in, аналогичный таковому в Python. Обернём внутренности с помощью макроса — ещё одного интересного механизма Scheme.

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

image

call-with-current-continuation
Этой статьей мы начинаем цикл, в котором хотим рассказать о том, как использовать разные устройства экосистемы Android в своих приложениях: как транслировать видео на Chromecast, как создавать приложения для Android TV или как использовать мир "физического веба" в маячками Eddystone.

Самое главное - не забывайте про сам конкурс - Device Lab от Google. Вы сможете взять любые из этих устройств и начать разрабатывать свои приложения, тестируя функционал вживую.

Добро пожаловать в будущее Android.
Читать дальше

Почему мы пишем и храним код в текстовых файлах?

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


Простые текстовые форматы данных — прекрасная штука. Нет, без шуток. Возьмём, например, банальные txt-файлы. Ну красота же! В любом утюге есть текстовый редактор, можно открыть файл, почитать, записать. Любой уважающий себя язык программирования из коробки даст вам средства работы с текстовыми файлами. Или вот ранние сетевые протоколы — SMTP, POP3, HTTP 1.0. Это вообще такое блаженство, что слёзы на глаза наворачиваются. Можно взять telnet, приконнектиться к серверу, отдавать команды и читать ответы! Писать клиенты, серверы, снифферы, прокси — одно удовольствие.

Но время не стоит на месте и удобство работы программиста, к сожалению (или к счастью!), давно перестало быть главным критерием выбора технологий. В прекрасные текстовые файлы понадобилось вдруг добавлять графики, картинки и ссылки — и вот у нас есть форматы pdf и doc. С сетевыми протоколами вообще беда — людям зачем-то понадобились сжатие трафика, шифрование, мультиплексирование и другие страшные вещи. И вот уже у нас есть HTTP/2, с которым телнетом не очень-то поработаешь. Даже всем красивый REST разные негодяи типа Google нет-нет, да и пытаются заменить на какой-нибудь gRPC. И это я ещё не начал рассуждать о том, что мало что нынче сохраняется текстовые файлы — все почему-то используют какие-то базы данных, совершенно нечитабельные при открытии их текстовым редактором, но какой-то магией позволяющие информацию структурировать, индексировать, эффективно искать и т.д.

И вот здесь мы подходим к теме того, что я хотел бы обсудить. Как видите, все форматы хранения данных, протоколы и прочие штуки прошли длинный путь в поисках своего оптимального вида. Однако мы, программисты, продолжаем писать код наших программ в текстовых файлах, как делали это наши дедушки лет 50 назад (или уже больше?). Какую бы ОС мы ни использовали, какой бы модный язык ни выбрали, как бы ни была крутой наша IDE — результатом написания кода будут буквы в текстовом файле. Что, согласитесь, в теории совершенно не обязательно, ибо наши буквы компьютеру нужны как зайцу стоп-сигнал. Ему нужны машинные команды для выполнения, это просто нам удобнее описывать их какими-то там буквами. А на самом деле ведь «цикл» или «функция» будут тем, чем они являются, как ты их не назови и где ты их не храни. «Роза пахнет розой, хоть розой назови её, хоть нет».

Да, мы привыкли писать код в текстовые файлы. Вы открываете файл — ну и вроде бы видите код своей программы. Какую-то его часть, вернее. Как-то видите. Понимаете. Ну или думаете, что понимаете. Но вот пост на Facebook вы тоже открываете, видите и понимаете — а ведь Facebook точно этот пост не в текстовом файле хранил.

Давайте же посмотрим, какие проблемы нам создаёт хранение кода в виде набора текстовых строк.
Читать дальше →

Ненавижу, когда говорят «опен сорс»

Время на прочтение3 мин
Охват и читатели23K
Ненавижу, потому что «опен сорс» больше не отражает то, как люди создают софт. Термин «опен сорс» (программное обеспечение с открытым исходным кодом) стало настолько широким, что обессмыслилось. Кажется, что как минимум в половине всех моих разговоров возникает вопрос: «Подожди… а ЧТО ты имеешь в виду, говоря опен сорс?». Или вдруг оказывается, что мы уже десять минут говорим о совершенно разных вещах.

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

Технологии фондового рынка: 10 заблуждений о нейронных сетях

Время на прочтение17 мин
Охват и читатели56K
image

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

Количественный аналитик хедж-фонда NMRQL Стюарт Рид в статье на сайте TuringFinance попытался объяснить, что это означает, и доказать, что все проблемы кроются в неадекватном понимании того, как такие системы работают. Мы представляем вашему вниманию адаптированный перевод его статьи.
Читать дальше →

Видео докладов с Весеннего Go митапа

Время на прочтение1 мин
Охват и читатели7.5K
14 мая мы провели Весенний Go митап. А сегодня публикуем долгожданные видео выступлений.

«Оптимизация программ на Go», Марко Кевац, Badoo



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

[PF] Печать PDF под .NET, векторный подход, практика

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

Как и обещал, продолжаю тему(раз, два) управляемой печати PDF из под .NET в векторном формате. О теоретических аспектах работы с PCL я рассказал в предыдущей статье, настало время разобрать программу для вывода на принтер PDF файла в векторе. Наше приложение будет полезно, например, когда нужно распечатать пачку многостраничных бланков или анкет на бумаге разных цветов и разной плотности. Если мы научимся управлять лотками принтера, избавим себя от ручного прокладывания страниц ;) В шаблоне будет указан номер лотка, из которого принтер заберет бумагу для текущей страницы. Причем шаблон будет применяться к документу циклически: если в документе 32 страницы, а в шаблоне 4, то шаблон повторится 8 раз для Simplex режима и 4 раза для Duplex.
Читать дальше →

Так вы думаете, что знаете Const?

Время на прочтение11 мин
Охват и читатели64K
От переводчика:
Предлагаю вам перевод поста из блога Мэтта Стэнклиффа (Matt Stancliff), автора нашумевшей на хабре статьи Советы о том, как писать на С в 2016 году.
Здесь Мэтт делится знаниями о квалификаторе типа const. Несмотря на вызывающий заголовок, возможно, многое из того что здесь описывается будет вам известно, но, надеюсь, и что-нибудь новое тоже найдется.
Приятного чтения.


Думаете, что вы знаете все правила использования const для С? Подумайте еще раз.
Читать дальше →

Пора ли переходить на Swift?

Время на прочтение5 мин
Охват и читатели21K
Сегмент мобильной разработки регулярно предлагает участникам рынка новый инструментарий. О том, стоит ли использовать такую новую для программирования под iOS концепцию, как дженерики, а заодно о том, пора ли переходить на Swift, мы поговорили с Максимом Соколовым, специалистом по мобильной разработке компании Avito.


— Расскажите, пожалуйста, в двух словах о себе и своем опыте работы со Swift.

— На текущий момент я работаю в компании Avito разработчиком мобильных приложений для iOS. В мобильной разработке я около 5 лет, а до нее занимался различными направлениями, в частности, веб-сайтами, бэкэндом и desktop-приложениями.
Swift мы начали использовать в Avito больше полугода назад, когда вышла вторая версия языка, накопилась обратная связь от сообщества разработчиков. Ранее в работе мы использовали Objective-C, но теперь весь новый код пишем на Swift.

— Некоторые разработчики отзываются о Swift, как о весьма «сыром» языке, не подходящим пока для крупных проектов. Можете ли вы подтвердить или опровергнуть это мнение?

— У Swift, безусловно, есть недостатки, в частности, связанные со средой разработки. Xcode время от времени падает, отключается подсветка синтаксиса или компилятор отказывается компилировать код. Упомянутые недостатки нельзя назвать причиной отказа от разработки больших проектов на Swift. Сталкиваясь с проблемами — мы находили решение. И мы уже отправили в продакшн достаточно объемный проект, написанный на этом языке.
Читать дальше →

Профилирование и оптимизация программ на Go

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

Введение


В этой статье я расскажу, как профилировать и оптимизировать приложения на языке Go с использованием встроенных и общих инструментов, доступных в ОС Linux.

Что такое профайлинг и оптимизация? Если ваша программа работает недостаточно быстро, использует слишком много памяти, неоптимально использует процессор, вы хотите понять, в чем дело, и исправить — это и есть профайлинг и оптимизация.

Я привел такое определение, чтобы сразу отсечь вопросы некорректной работы приложения. В этой статье мы не будем говорить о проблемах мультитредового программирования, о дата-рейсах (англ. data race), о поиске ошибок (англ. debugging). Для всего этого в Go есть свои утилиты и подходы, но оставим эту тему на будущее.



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

DevOps — новый уровень взаимодействия групп разработки и эксплуатации

Время на прочтение6 мин
Охват и читатели16K
Создание приложений — комплексный процесс, который включает в себя несколько элементов: написание кода, тестирование, устранение ошибок, проверку и, наконец, запуск в эксплуатацию. Можно сказать, что в этом процессе участвуют три независимых «государства» — разработчики, тестировщики и сотрудники отдела эксплуатации. Каждая из этих групп выполняет собственные задачи и пользуется разными критериями оценки эффективности своей работы. Для разработчиков — это скорость написания и количество реализованных в программном коде функций, для тестировщиков — число выявленных ошибок, для отдела эксплуатации — стабильность функционирования систем и минимальное количество инцидентов. Подобная модель работы нередко приводит к конфликту интересов: первые стараются как можно быстрее написать код и отдать его на проверку, вторые готовы проверять и тестировать сколь угодно долго, чтобы выявить все баги, а третий с трудом принимает код, поскольку любые изменения влекут за собой потенциальные риски для всей ИТ-инфраструктуры. В итоге весь процесс создания приложений растягивается надолго, что с учетом сложной экономической ситуации совершенно недопустимо, ведь бизнес должен быть максимально гибким и клиентоориентированным, а выпуск новых продуктов и услуг своевременным.


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

Приглашаем на конференцию DotNext

Время на прочтение7 мин
Охват и читатели5.2K
3 июня в Санкт-Петербурге состоится пятая по счету конференция DotNext для разработчиков на платформе .NET. О будущем платформы .NET рассказывают Ромуальд Здебский, руководитель направления Microsoft по играм в Центральной и Восточной Европе, который сделает на DotNext доклад на тему «Разработка игр на платформе Microsoft — технологический обзор», и технологический евангелист Microsoft Дмитрий Сошников, который выступит на DotNext с докладом «Сколько жизней у .NET: размышляем о судьбах любимой платформы, гибели Silverlight и тому подобном».



Какими изначально были цели создания платформы .NET? Достигнуты ли они?


Дмитрий Сошников: Появление .NET — это реакция на повышение сложности программных систем. Когда стало слишком трудно создавать серьезные приложения на C++, особенно с учетом существования различных вычислительных платформ, появилась цель радикально упростить процесс создания программного обеспечения, в том числе многоплатформенного. И в конце концов исследователи научились изолировать аппаратные сложности (а заодно и ряд трудоемких моментов, таких, как распределение памяти, многопоточность и т.д.) на уровне абстрактной виртуальной машины, а прикладному программисту давать возможность создавать код для этой машины. Так появились Java и .NET. Но основной целью языка Java была возможность запускать один и тот же байт-код на всех устройствах, в то время как платформа .NET гордилась многообразием поддерживаемых языков программирования.
Надо сказать, что основные цели по сути были достигнуты уже по факту создания платформы. Теперь же мы продвинулись гораздо дальше. На основе .NET можно писать приложения под все основные мобильные платформы и под микроконтроллеры. В арсенале .NET-программиста — целый спектр языков от C# и F# до Python и Objective C. Код на базе .NET используется как на устройствах, так и в облаке. Мечта программиста сбылаcь — зная всего лишь один стек технологий, он может быть продуктивным, разрабатывая практически любой программный код.
Читать дальше →

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

Анонс Rust 1.9

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

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


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


Что вошло в стабильную версию 1.9


Управляемая размотка стека


Самое большое изменение в Rust 1.9 — стабилизация модуля std::panic, который предоставляет методы остановки процесса размотки стека, запущенного паникой:

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

Large-Scale C++ Software Design рулит

Время на прочтение7 мин
Охват и читатели10K
Здравствуйте, уважаемые читатели.

Предполагаем, что некоторые из вас уже в курсе грядущего переиздания фундаментальной работы Джона Лакоса "Large-Scale C++".



Предыдущее однотомное издание выходило без малого двадцать лет назад, но на просторах Интернета (и даже на Амазоне) встречаются многочисленные положительные отзывы, убедительно свидетельствующие, что даже старое издание оставалось актуальным не один десяток лет. Ниже предлагаем перевод одной такой статьи, где излагаются общие рекомендации по физическому дизайну больших проектов на С++. Надеемся, что статья вас заинтересует, а нам удастся уже в будущем году порадовать вас переводом нового издания.
Читать дальше →

Предварительная программа PyCon Russia готова. Выступят докладчики из США, Англии, Франции, Чехии, Украины и России

Время на прочтение6 мин
Охват и читатели4.1K
Привет!

3-4 июля недалеко от Москвы пройдет четвертая конференция для python-разработчиков PyCon Russia. Почему мы переехали из Екатеринбурга, мы объясняем здесь. Прошлогодние доклады и фотографии можно посмотреть в архиве.

Программа PyCon-2016 получается отличной — Raymond Hettinger (Python core developer с 2001 года, автор и мэйнтейнер многих частей языка, США), Martin Gorner (Google, Франция), Nathaniel Manista (Google, США), Armin Ronacher (Flask framework, Австрия), David MacIver (Hypothesis, Великобритания), Jackie Kazil (Capital One, США), Александр Кошкин (Positive Technologies, США), Александр Сибиряков (Scrapinghub, Чехия), Андрей Светлов (DataRobot, Украина), докладчики из HeadHunter, Rambler&Co, Яндекса, Toptal — и это еще не все. Подробности программы — под катом.


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

Wind River Rocket: начало работы

Время на прочтение6 мин
Охват и читатели4.2K
В этом материале мы расскажем о том, как начать разработку приложений с использованием облачной платформы Helix App Cloud. А именно, поговорим о разработке для Intel Galileo Gen 2 и рассмотрим работу с x86-эмулятором.


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

Новые производные функций Бесселя выведены с помощью языка Wolfram Language

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

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



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

BesselDerivativesBlogRussian_1.png
Читать дальше →

Большое интервью с Ханнесом Дорфманом, создателем фреймворка Mosby для Android

Время на прочтение28 мин
Охват и читатели14K
2 июня в московском офисе Яндекса пройдет очередная Droid Party. В этот раз своим опытом поделится Ханнес Дорфман. Многим из вас он известен как разработчик фреймворка Mosby для Android. Ханннес много времени уделяет исследованию подходов к Андроид-архитектуре.

В преддверии мероприятия мы попросили Ханнеса ответить на вопросы, которые собрали от разработчиков внутри Яндекса. Интервью получилось большим и интересным. Обсудили будущее языков программирования, получили много прикладных советов и даже вспомнили уже легендарные модели Nokia. Читайте подробнее под катом.



Для тех, кто не сможет попасть на Droid Party, мы по традиции организуем трансляцию, которую можно будет посмотреть здесь. Там же можно зарегистрироваться на мероприятие. А те, кто живет в Питере, смогут поучаствовать в телемосте в нашем питерском офисе.

Как обычно, вы можете задавать в комментариях свои вопросы — мы передадим их Ханнесу, и он ответит на них на Droid Party.
Читать дальше →

Пол Грэм: Глава 2. Хакеры и художники (Habr edition)

Время на прочтение18 мин
Охват и читатели16K
image

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

За 13 лет глава, одноименная с названием книги, затерялась в сети. Для удобства, хочу опубликовать ее, собранную по кусочкам из различных архивов.

Перевод Анастасии Грызуновой, Яны Щекотовой. Приведение текста в порядок — CaptainCrocus.

Оригинал — Hackers and Painters (May 2003)


Закончив аспирантуру по computer science, я пошел на художественный факультет изучать живопись. Многие удивились, что компьютерщик вдруг заинтересовался живописью. Эти люди, видимо, считали, что хакерство и художество — очень разные занятия: хакерство — холодное, точное и методичное, а художество — яростное выражение некого первобытного порыва.

Оба представления неверны. У хакерства и художества масса общего. Из множества различных типов людей хакеры и художники — едва ли не самые похожие.

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