Все потоки
Поиск
Написать публикацию
Обновить
1006.74

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

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

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

Обзор базовых возможностей ES6

Время на прочтение9 мин
Количество просмотров124K

JavaScript сильно изменился за последние годы. Вот 12 новых возможностей, которые можно начать использовать уже сегодня!


История


Новые добавления в язык называются ECMAScript 6. Или ES6 или ES2015+.


С момента появления в 1995, JavaScript развивался медленно. Новые возможности добавлялись каждые несколько лет. ECMAScript появился в 1997, его целью было направить развитие JavaScript в нужное русло. Выходили новые версии – ES3, ES5, ES6 и так далее.



Как видите, между версиями ES3, ES5 и ES6 есть пропуски длиной в 10 и 6 лет. Новая модель – делать маленькие изменения каждый год. Вместо того, чтобы накопить огромное количество изменений и выпустить их все за раз, как это было с ES6.

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

The Pros & Cons of Test-Driven Development

Время на прочтение18 мин
Количество просмотров16K


Разговор вёл IvanPonomarev

Test-driven development (TDD) — практика, известная уже довольно давно. Разработка через короткие циклы «прежде всего пишем юнит-тест, затем код, потом проводим рефакторинг, повторяем» в ряде компаний принята в качестве стандарта. Но обязательно ли команда, достигшая хорошей степени зрелости процесса разработки, должна принимать TDD? Как и для большинства других практик Extreme Programming, споры по поводу TDD до сих пор не стихают. Оправдываются ли первоначальные затраты на обучение и внедрение TDD? Даёт ли TDD ощутимый выигрыш? Можно ли этот выигрыш измерить? Нет ли случаев, когда TDD проекту вредит? А есть ли ситуации, когда без TDD решить задачу просто невозможно?

Об этом мы поговорили с разработчиками-экспертами Андреем Солнцевым asolntsev (разработчик из таллинской компании Codeborne, который практикует Extreme Programming и придерживается TDD) и Тагиром Валеевым lany (разработчик в JetBrains, также разрабатывает опенсорсную библиотеку StreamEx и анализатор байткода Java HuntBugs; убежден, что TDD — бесполезная практика). Интересно? Добро пожаловать под кат!
Читать дальше →

Учебное руководство: перечисление модулей и камер

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


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

Caché Localization Manager или i18n в InterSystems Caché

Время на прочтение3 мин
Количество просмотров3.1K


Caché Localization Manager


Если двумя словами, то CLM это утилита, которая может быть полезна при локализации/интернационализации/добавлении мультиязычности проектов на InterSystems Caché.

Элементы функционального программирования в C++: частичное применение

Время на прочтение8 мин
Количество просмотров15K

Не буду сильно углубляться в теорию. Что такое частичное применение легко найти в интернете. В том числе на Википедии.


Если кратко, то это механизм, позволяющий зафиксировать k аргументов функции от n аргументов, сделав из неё функцию от (n - k) аргументов.


// Пусть имеется функция f от четырёх аргументов:
int f (int a, int b, int c, int d)
{
    return a + b + c + d;
}

// Фиксируем первые два аргумента:
auto g = part(f, 1, 2); // 1 + 2 + ...

// Добрасываем оставшиеся два:
assert(g(3, 4) == 10); // ... + 3 + 4 = 10

На эту тему уже существует масса публикаций, в том числе и на Хабре:


  1. C++ Variadic templates. Каррирование и частичное применение
  2. Частичное применение и каррирование в C++
  3. Каррируем на C++

А ветка "How should I make function curry?" на stackoverflow — просто кладезь для тех, кто впервые сталкивается с этой темой.


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


Замечательный факт №1. В упомянутых статьях присутствуют все техники, которые нужны для реализации правильного (по моему мнению) частичного применения.


Надо только всё внимательно проанализировать и сложить кубики в правильном порядке. Именно этим я и собираюсь заняться в данной статье.

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

learnopengl. Урок 1.5 — Shaders

Время на прочтение14 мин
Количество просмотров145K

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


В предыдущем уроке мы кратко коснулись темы “поверхностных шейдеров” и того, как их использовать. В данном уроке мы рассмотрим шейдеры подробнее и в частности шейдерный язык OpenGL (OpenGL Shading Language).

Sharding – patterns and antipatterns

Время на прочтение23 мин
Количество просмотров34K


Константин Осипов ( kostja ), Алексей Рыбак ( fisher )


Константин Осипов: Доклад родился из следующего разговора. Я, как всегда, пытался убедить Алексея больше использовать Tarantool, а он сказал, что там до сих пор нет шардинга и, вообще, неинтересно. Тогда мы стали рассуждать о том, почему нет. Я стал рассказывать, что тут нет одного универсального решения, автоматика полная за вас работает, а вы только кофе на работе пьете и все…

Поэтому родился этот доклад — чтобы посмотреть на то, какой бывает шардинг, какие методы в каких системах используются, какие преимущества и недостатки, почему нельзя одной «серебряной пулей» все решить?

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

Все что вы хотели узнать о BPM, но боялись спросить

Время на прочтение8 мин
Количество просмотров30K
В сети имеется множество публикаций о том, ради чего стоит внедрить BPM (Business Process Management) в вашей компании. Как обычно формулируются преимущества, которые дает бизнесу внедрение BPM:

  1. Визуальное моделирование и выполнение бизнес-процессов.
  2. Набор готовых компонент для построения гибких бизнес-процессов.
  3. Взаимодействие с пользователем для выполнения ручных действий.
  4. Гибкость конфигурирования бизнес-процессов.
  5. Поддержка версионности бизнес-процессов.

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

На самом ли деле все так безоблачно? Не пора ли всем выбросить старые инструменты, и полностью перейти на новую платформу?
Читать дальше →

Примеры кода на 39 эзотерических языках программирования

Время на прочтение8 мин
Количество просмотров93K
Кто-то ради шутки, кто-то чтобы доказать существование или опровергнуть гипотезу, кто-то для разминки мозгов (путешествуя по поверхности бутылки Клейна или в четырехмерном пространстве), но сотни людей создали «эзотерические» языки программирования. Я пролистал около 150 таких языков и больше никогда не смогу быть прежним.



«Argh!», «Oof!», «2-ill», «Nhohnhehr», «Noit o' mnain gelb», «DZZZZ», «Ypsilax», «YABALL», fuckfuck — это заклинания, поэзия только названия… под катом — примеры кода на самых вырвиглазных языках программирования.

Кроличья нора глубока.

Программирование&Музыка: Delay, Distortion и модуляция параметров. Часть 4

Время на прочтение16 мин
Количество просмотров11K

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


В этот раз мы рассмотрим эффекты Distortion — искажение сигнала, знакомое любому электрогитаристу и Delay (оно же эхо).


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


Исходный код написанного мною синтезатора доступен на GitHub'е.



Скриншот VST плагина GClip


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

Эзотерический язык Piet

Время на прочтение4 мин
Количество просмотров22K


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

Дональд Кнут: как я занялся анализом алгоритмов и ради этого поехал в СССР (37,91,97/97)

Время на прочтение10 мин
Количество просмотров32K
«Андрей (Ершов), представь, как было бы здорово организовать что-то вроде паломничества, где программисты со всего мира могли бы приехать в Хорезм и отпраздновать рождение этого понятия.»
— Дональд Кнут уговаривает Ершова организовать международный симпозиум

image
Кнут и Ершов

Осенью 1967 в Санта-Барбаре была конференция математиков, возможно, это был тот же год, когда я также побывал на конференции в Чапел-Хилле. Я встречал многих людей, которые стимулировали меня, и было множество интересных проблем, которые нам стоило обсудить друг с другом. Но когда я добрался до конференции в Санта-Барбаре, я понял, что это мой единственный шанс заняться исследованиями. Я не посещал лекции. Я просто сидел на берегу и писал свою статью об атрибутной грамматике прямо во время конференции. Но я посещал обеды. Я помню, как кто-то спросил меня, чем я занимаюсь и я решил побыть программистом, а не математиком в тот момент.

— Я думаю, я собираюсь стать программистом.
— О, так ты занимаешься численным анализом?
— Не совсем.
— Аааа, искусственный интеллект.
— Нет, и не искусственный интеллект.
— Тогда должно быть ты занимаешься языками программирования?

Лучшие проекты телеком-хакатона TADHack Moscow 2016

Время на прочтение4 мин
Количество просмотров4.6K


14-16 октября состоялся мировой хакатон TADHack. В этом году – впервые в Москве.
Мы рады всем участникам, которые выстояли и представили свои прототипы. И хотим, чтобы о самых впечатляющих проектах знали все!
Увидеть лучшие телеком-проекты

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

Социальная Архитектура: стратагемы для успеха open source проектов

Время на прочтение7 мин
Количество просмотров11K
Питер Хинченс (Pieter Hintjens) — бельгийский разработчик, писатель. Занимал должность CEO и chief software designer для iMatix, компании, производящей free software, такие как библиотека ZeroMQ (библиотека берет на себя часть забот по буферизации данных, обслуживанию очередей, установлению и восстановлению соединений, и прочие вещи), OpenAMQ, Libero, GSL code generator, и веб-сервиса Xitami.

  • Автор более 30 протоколов и распределённых систем.
  • Основатель проекта Edgenet по созданию полностью безопасной, анонимной глобальной P2P-сети.
  • Президент ассоциации Foundation for a Free Information Infrastructure (FFII), которая воевала с патентным правом.
  • CEO сервиса по созданию собственных вики-проектов Wikidot.
  • Он был активистом open standards, и основателем Digital Standards Organization.
  • Питер в 2007 был назван одним из «50 самых влиятельных людей в области Интеллектуальная собственность».


Когда Питер Хинченс узнал, что жить ему осталось несколько лет, он решил подвести итог своим трудам и систематизировать свое наследие. 3 октября 2016 Питер Хинченс решился на эвтаназию.

Один из его предсмертных трудов — книга «Социальная Архитектура», про построение онлайн-сообществ по разработке open source проектов. Хочу представить вам переводы некоторых глав.

Шаблоны для успеха


Это глава с серией шаблонов поведения для достижения успеха в разработке программного обеспечения. Они стремятся включить всё, что отделяет успех от славной трагической неудачи. Они были написаны за один день как “религиозно-маниакальные догматы” руководителем и “всё остальное безумное” — коллегой. Для меня они являются наукой. Но относитесь к Ленивым перфекционистам и другим инструментам так, как вы относитесь к обычным инструментам — заточите их, используйте и выбросите, если подвернется что-то получше.

Бесплатные курсы, книги и прочие материалы по разработке

Время на прочтение4 мин
Количество просмотров80K


У кого сейчас есть время на получение второго академического образования? Хм. Все больше компаний и команд обращают внимание не на формальные «корочки», а на реальные способности и достижения конкретного человека. Речь, конечно о хороших компаниях с современным взглядом на реальность и продвинутым руководством.

Необязательно проходить всю программу университета, чтобы научиться программировать. Онлайн-курсы, конечно, требуют самоконтроля, усердия и ответственности. Но, если есть цель и стремление, то все приложится. В компании таких же «вольных» слушателей по сети вы наверняка сможете пройти курс успешно.
Читать дальше →

Acyclic Visitor

Время на прочтение8 мин
Количество просмотров9.7K

В этой статье мы рассмотрим один из вариантов реализации поведенческого шаблона проектирования Acyclic Visitor без ипользования RTTI.


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

Как мы попробовали DDD, CQRS и Event Sourcing и какие выводы сделали

Время на прочтение9 мин
Количество просмотров79K
Вот уже около трех лет я использую в работе принципы Spec By Example, Domain Driven Design и CQRS. За это время накопился опыт практического применения этих практик на платформе .NET. В статье я хочу поделиться нашим опытом и выводами, которые могут быть полезными командам, желающим использовать эти подходы в разработке.

Факты, цифры, код

Простой класс для построения линий уровня двумерной сеточной функции

Время на прочтение6 мин
Количество просмотров5.6K
При обработке данных в предметных областях, связанных с научной деятельностью, часто возникает необходимость в построении и визуализации функции двух независимых переменных. Типичным примером является необходимость визуального представления результатов решения двумерных дифференциальных уравнений в частных производных, получаемых в виде так называемых сеточных функций.

Предлагается простой класс для построения линий уровня (изолиний) функции: Z=F(X,Y) в виде линий на плоскости X-Y, удовлетворяющих уравнениям Z=const (где const — набор заданных значений).
Читать дальше →

River Raid на FPGA

Время на прочтение4 мин
Количество просмотров15K
Еще не делали River Raid на FPGA? Ок, тогда я сделаю.


Совсем недавно FPGA для меня был черным ящиком, а Verilog казался вообще магией — ну как можно написать программу, по которой построится схема на логических элементах? Изучить это я планировал давно, но без реальной железки даже не хотел начинать.

Проекты школы GoTo: рекомендательная система для новостного портала

Время на прочтение7 мин
Количество просмотров5.3K


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


Этим летом один из партнёров – компания E-Contenta – предложила задачу создания рекомендательной системы новостного портала одного из телеканалов. Ребята из компании преподавали на направлении Анализ данных и машинное обучение, да и задача всем показалась довольно интересной – помимо реальной необходимости такого рода разработок, задача была еще и довольно уникальной – методы рекомендации новостей в большинстве отличаются от методов рекомендации, допустим, фильмов.


За её решение взялись 2 ученика июньской школы: 16-летний Творожков Андрей из Москвы и 14-летний Всеволод Жидков из Воткинска. Они же и подготовили краткое описание задачи и ее решения, которое мы публикуем в этой статье под катом.


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

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