Рубрика «Программирование» - 749

Тернистая дорога через дебри C# и заросли C++/CX разработки для Windows Runtime в какой-то момент привела меня к библиотеке шаблонов WRL, облегчающей написание приложений и компонентов WinRT и COM. При работе именно с этой библиотекой мне захотелось узнать, что же может скрывает под собой код:

#include "pch.h"
#include "RAWinRT.WRL.h"

using namespace Microsoft::WRL::Wrappers;
using namespace Microsoft::WRL;
using namespace ABI::RAWinRT::WRL;
using namespace ABI::Windows::ApplicationModel::Background;

class ABI::RAWinRT::WRL::TestTask : public RuntimeClass < RuntimeClassFlags<WinRt>, IBackgroundTask >
{
	InspectableClass(RuntimeClass_RAWinRT_WRL_TestTask, BaseTrust);
public:
	STDMETHODIMP Run(IBackgroundTaskInstance *taskInstance) override
	{
		return S_OK;
	}
};

ActivatableClass(TestTask);

и эти загадочные макросы, шаблоны, функции библиотеки.
И решил я начать с самой простого. Написать компонент Windows Runtime, имеющий единственный «класс» фоновой задачи, на Visual C++.

Если вам интересно, что из этого получилось, то добро пожаловать под кат.Читать полностью »

Одна из проблем программирования – борьба с возрастающей сложностью программ при возрастании их объёма. Исторически она решается путём изолирования отдельных частей программ, взаимодействие которых друг с другом ограничено. Такой подход действует на всех уровнях программирования – «разделение концепций», «делай что-то одно и делай это хорошо», BCNF, монады, процедуры, классы, роли, модули. Все они поощряют ограничение частей программы, чтобы не играть против комбинаторики. Простейшим примером логического разделения является лексическая переменная.

{
    my $var;
    # $var доступна тут
}
# $var а тут недоступна

Что же в этом интересного?
Читать полностью »

Продолжая тему JIT-компиляции .NET'a, сегодня мы рассмотрим диспетчеризацию методов у интерфейсов, generics (как классов, так и отдельных методов вместе с реальными сигнатурами); производить отладку релизных сборок с оптимизациями; разберемся с истинным предназначением типа System.__Canon (это не то, что Вы подумали).
Читать полностью »

Мы продолжаем наши еженедельные публикации учебных материалов Технопарка. Предыдущие лекции были посвящены web-технологиям в целом, а также алгоритмам и структурам данных. В третьем блоке лекций рассказывается о языках С и С++.

Лекция 1. Язык С. Основы организации и использования оперативной и сверхоперативной памяти

Лекция начинается с введения в язык С: рассказывается об истории его появления, особенностях, преимуществах и недостатках, о сферах применения. Описываются основы препроцессорной обработки, рассматриваются вопросы управления памятью (модели управления памятью, области видимости объектов хранения) и производительность программ на языке С. Обсуждается связывание объектов хранения и их инициализация. Затем рассказывается о классах памяти в языке С. Следующая часть лекции посвящена проблематике указателей, а также работе с одномерными массивами. В заключение рассматривается стандарт POSIX и вопросы переносимости.


Читать полностью »

Перевод книги «Выразительный Javascript» в pdf - 1Хабр, привет.

Не так давно SLY_G опубликовал цикл переводов книги Eloquent Javascript (за что ему большое спасибо). В комментариях раз за разом поднимались вопросы о сборке переводов книгу, что собственно я и сделал при помощи сервиса Gitbook- Выразительный Javascript, pdf, ePub, mobi и онлайн версия.

Репозитарий книги, pull requests принимаются.
Читать полностью »

BBC раздаст миллион мини-ПК английским школьникам - 1

Электроника и программирование все теснее входят в нашу жизнь. Теперь этими сложными вопросами занимаются не только бородатые дяди в серьезных конторах, но и подростки, и даже дети. А чтобы еще сильнее стимулировать у младшего поколения желание обучаться электронике и программированию, компания BBC анонсировала планы по раздаче миллиона мини-ПК школьникам Великобритании. Пока речь идет только о школьниках в возрасте 11 лет.

Мини-ПК, о которых идет речь, получили название Micro Bit, а их разработка еще не завершена в полной мере, хотя этот этап уже завершается. Стоит отметить, что Micro Bit несколько проще, чем тот же Raspberry Pi. Тем не менее, устройство от BBC вполне современное: здесь есть Bluetooth, ARM-процессор, совместимость с большим количеством аппаратных платформ, низкое энергопотреблением.
Читать полностью »

Эти два вымышленных парня сильно повлияли на меня в плане программирования:

image

Вместо предоставления гарантий на совместимость или безошибочную работу, софт от Братьев Бигл обещал кое-что другое: веселье.

image

Игры со странными дискетами от Братьев Бигл на компьютере Apple II в средней школе, и «шведский стол» всяческих программ, которые были написаны для них, стали для меня обрядом посвящения.
Читать полностью »

Одна из новых идей Perl 6 – метаоператор. Это оператор, который можно скомбинировать с обычным оператором, изменив его поведение. Таких метаоператоров есть несколько штук, но в этой статье мы рассмотрим только X и Z.

Оператор X вы могли видеть в роли инфиксного комбинирования. Он комбинирует списки, по элементу из каждого, во всех возможных комбинациях:

> say ((1, 2) X ('a', 'b')).perl
((1, "a"), (1, "b"), (2, "a"), (2, "b"))

Однако, запись infix:<X> — это короткая запись метаоператора X, примененного к оператору конкатенации infix:<,> . И действительно, можно написать:

> say ((1, 2) X, (10, 11)).perl
((1, 10), (1, 11), (2, 10), (2, 11))

Что произойдёт, если мы применим Х к другому инфиксному оператору? Например, к infix:<+>
Читать полностью »

От переводчика: поприще переводчика для меня ново, по этому прошу вас не судить строго.

Когда-то, читав Принципы Объектно-ориентированного JavaScript за авторством Nicholas Zakas, я наткнулся на совет об использовании Object.create(), для создания объектов унаследованных от null. Такой объект не унаследует Object.prototype и, соответственно, не будет иметь его, Object.prototype, методов. Zakaz предположил, что это может быть использовано для создания безопасного объекта «cache». Мне очень понравилась эта идея, но в соответствии с MDN (Mozilla Developer Network), Object.create() не поддерживается до IE9, что делает этот метод более требовательным при использовании в браузере. Но в Node.js, на сервере, этот метод поддерживается полностью.
Читать полностью »

В Perl 6 введён новый оператор … для задания последовательностей. Вот, как это работает:

my @even-numbers  := 0, 2 ... *;    # арифметическая последовательность
my @odd-numbers   := 1, 3 ... *;
my @powers-of-two := 1, 2, 4 ... *; # геометрическая последовательность

Пример использования:

> my @powers-of-two := 1, 2, 4 ... *; 1;
1
> @powers-of-two[^10]
1 2 4 8 16 32 64 128 256 512

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js