Search
Write a publication
Pull to refresh
196
0.1
Андрей Дмитриев @AndreyDmitriev

Пользователь

Send message

Динамическая типизация C

Reading time7 min
Views14K

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

Во многих интерпретируемых языках используется динамическая типизация. Такой подход позволяет хранить в переменной с одним именем значения разных типов. В языке C используется строгая типизация, что, на мой взгляд более, чем правильно. Однако бывают случаи (хоть и не так часто), когда гораздо удобней было бы использовать динамическую типизацию. Зачастую, такая потребность напрямую связана с некачественным проектированием, но не всегда. Не зря же в Qt присутствует тип QVariant.

Здесь мы поговорим про язык C, хотя все, что описано ниже, применимо и к C++.

Читать далее

Стивен Вольфрам: Будут ли у инопланетян такие же «числа»?

Reading time5 min
Views12K
image

На основе выступления на Numerous Numerosity: междисциплинарная встреча, посвященная понятиям мощности, ординальности и арифметики в различных науках.

У всех должны быть числа… Не так ли?


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

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

Представьте, что у вас есть сложный искусственный интеллект. Может, это часть звездолета. И в нем происходит такое вычисление:

image

Где здесь числа? Что тут считать?
Читать дальше →

Как самый недооценённый контрибьютор спасал язык Rust от смерти

Reading time6 min
Views24K

Дэйв Херман, самый недооценённый контрибьютор Rust

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

Я считаю, что язык Rust сейчас явно на подъёме. Вспоминаю, как много нужно было сделать правильно, чтобы достичь успеха. Команда неоднократно принимала судьбоносные решения, в которых не была полностью уверена. Каждое неверное решение могло привести проект к провалу. Иногда мы просто не знали правильный ответ. Но в каждой такой ситуации как будто происходило маленькое чудо, и проект двигался дальше. Конечно же, эти «чудеса» происходили не на пустом месте: нас выручала интуиция нескольких очень опытных профессионалов, которые горели проектом и действительно хотели создать что-то крутое.

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

Mozilla Research


К 2009 году Mozilla получила крупную сумму денег от прибыльной сделки с Google (он стал поисковиком по умолчанию в браузере Firefox). И, насколько я понял, именно в этот момент руководство Mozilla решило вложить деньги в новые проекты.
Читать дальше →

Стильный десктоп 286

Reading time4 min
Views19K

Еще один эспонат из моей коллекции. АТС 286, в стильном плоском корпусе. По железу - ничем не примечательная 286-я персоналка, уже из поздних моделей. Я бы не стал про нее рассказывать, если бы не история ее появления. Именно с этого компьютера я начал собирать свою коллекцию и вот как это произошло.

Читать далее

Психиатрия и ментальное здоровье для обречённых

Reading time7 min
Views6.9K

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

Привет. Так получилось, что я хорошо знаком с темой психиатрии: знаю разных обладателей mental health issues, посещаю тематические мероприятия, встречался одно время с носителей ментального заболевания, и так далее.

Вообще, я могу часами рассказывать психических расстройствах, (и, возможно, однажды стащу минут сорок или даже час на какой-нибудь конференции про soft skills), однако в данном материале буду рассказывать про лечение и только про лечение.

Переживали ли вы выгорание или депрессивный эпизод? Страдаете ли от "менталки"? Считаете, что пнд -- не только сокращение от "понедельник"? Если "да", то я не уверен, что вам будет интересно -- вы и так всё знаете. Так или иначе, я постарался сделать этот материал максимально информативным.

Читать далее

System/360: проект, едва не погубивший IBM

Reading time12 min
Views17K

Если когда-то будет составлен шорт-лист самых выдающихся изобретений XIX-XX веков, в него, без сомнения, войдут первая электролампочка, Ford Model T и IBM System/360. Эта серия мэйнфреймов навсегда изменила компьютерную индустрию и произвела революцию в работе заводов, компаний и государственных учреждений. 

Тем интереснее узнать, что перед выходом мейнфрейма на рынок (7 апреля 1964 года) S/360 казался создателям едва ли не самой драматичной ошибкой за всю историю предпринимательства. Чтобы создать программную и аппаратную начинку компьютера, сотрудникам IBM пришлось выложиться по полной. Колоссальные финансовые издержки, переработки и пивоты грозили разорить компанию. Позднее Кейт Павитт, эксперт по научной политике, сравнит эту ситуацию с «межплеменной войной»: молодая, быстрорастущая компания была вынуждена работать с новыми, практически не изученными технологиями, вызывавшими недопонимание и раздор внутри отделов.

Читать далее

Совместная игра в Factorio — лучшее собеседование для программистов, что мы проводили

Reading time11 min
Views85K
В последнее время много копий сломано вокруг технических собеседований. Очевидно, что инвертирование двоичного дерева на доске практически никак не связано с практическими навыками реального программиста. Примитивный Fizzbuzz по-прежнему остаётся самым эффективным тестом. Как следствие, выросло внимание к опенсорсным проектам, но оказалось, что это тоже не очень хороший показатель, потому что у большинства профессионалов нет на них времени.

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

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

Что такое рациональность?

Reading time7 min
Views18K

Рациональность это:
Не про идеальный интеллект и отрицание интуиции
Не про эгоизм и получить всё здесь и сейчас
Не про обладание истиной
Не про измениться раз и навсегда
Не про отсутствие эмоций
Не про критику других людей
Не про высмеивание штук вроде гомеопатии, астрологии и плоской земли
Не про риторику и умение донести свою позицию
Не про шагание по головам и победу за чужой счёт
Не про борьбу за правду

А про что же?

No-code в действии — мастерим временный email-адрес

Reading time8 min
Views5.6K

No-code сейчас в тренде. Статей на эту тему пока не много, хотя они появляются достаточно регулярно. На Хабре по тегу no-code и его вариантам я нашел всего около 15 статей и первая из них появилась только в июне 2020 – меньше года назад! Во время чтения одной из статей у меня возникла идея собрать разные варианты no-code сценариев и снабдить некоторых из них, наиболее востребованных, инструкциями по реализации. Мне кажется, это будет интересно многим. Внизу после туториала, вы найдете пока небольшой, но пополняемый список сценариев и опрос, а сейчас давайте посмотрим как реализовать один простой сценарий.

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

См. ТЗ и инструкцию

Полезные скрипты для WinDBG: команда !exccandidates

Reading time4 min
Views1.8K

Некоторое время назад мы опубликовали в OpenSource небольшую библиотечку скриптов для популярного отладчика Windbg. Они предназначены для автоматизации ряда рутинных задач, возникающих при анализе причин падения программ как при отладке вживую, так и при работе с дампами памяти. Мы запланировали несколько постов, объясняющих, как эти скрипты использовать. Вот первый пост из данного цикла. Он демонстрирует использование команды !exccandidates на синтетическом примере.

Читать далее

Исполняемый обвес

Reading time4 min
Views3.4K

Статья будет разбита на 2 части — теоретический минимум для понимания основных элементов навесных защит исполняемых файлов, и вторая, которая покажет несколько примеров разбора файлов. Все данные не претендуют на полноту. Для полного понимания темы и проведения распаковки файлов, которые были защищены рассматриваемыми защитами, нужно терпение и достаточный бэкграунд в ОС Internals.

Disclamer: Вся информация предоставляется исключительно для обучающих целей.

Читать далее

Английская королевская почта: как Елизавета II отвечает на письма и не только

Reading time6 min
Views23K

Несколько дней назад в королевской семье Британии разгорелся нешуточный скандал. Все дело в интервью, которое дали Опре Уинфри принц Гарри и его супруга Меган Маркл. Уверены, вы видели об этом не только новости, но и кучу мемов.

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

Читать далее

Как подключить содержимое любых файлов для использования в коде C / C++

Reading time5 min
Views25K

Задача состояла в подключении файлов: HTML, JS, CSS; без специальной подготовки. Так же неудобно подключать бинарные файлы (например картинки) конвертируя их в HEX. Так как не хотелось конвертировать в HEX или разделять на строки, искал способ подключения файла в адресное пространство программы.

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

Выгорание — норма? Часть 1

Reading time8 min
Views45K

Почему люди выгорают, как отличить выгорание от усталости, как отловить на ранних стадиях, терминология и нейробиология процесса на пальцах. Первая статья цикла — вводная: разбираемся с терминами и пониманием явления.


Вводная часть


Выгорание — довольно объемная тема, охватить которую в рамках одной статьи не вижу возможности. Воспринимать такой объем информации, утрамбованный в одну статью, будет сложновато.


Мне важно, чтобы изложенным материалом было потом удобно пользоваться, как мне самой, так и читателям. Поэтому я решила написать цикл статей, и разложить всё по полочкам в том объеме, который потребуется для достаточного погружения.


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


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

Реализуем кооперативную многозадачность на C#

Reading time6 min
Views9.1K


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

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

Как далеко улетел «небесный кран» от марсохода «Настойчивость»? Считаем все сами

Reading time5 min
Views15K

Сегодня в твиттере NASA появилось сообщение о начале движения марсохода «Настойчивость» по Красной Планете. Ровер проехал несколько метров для проверки ходовой части. Все закончилось хорошо, системы работают как им и положено. Кроме того, марсоход сфотографировал собственные следы. Общее время заезда — 33 минуты, за это время марсоход преодолел 6,5 метра.

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

Две недели с F#

Reading time7 min
Views13K
А вы когда-нибудь записывали свои впечатления от изучения нового языка? Записывали все, что вам не понравилось, чтобы через пару недель изучения понять, насколько недальновидными и тупыми они были? 



На днях я понял F#, и попытаюсь описать словами мысль, стоящую за языком. 
Читать дальше →

Параллелизм и плотность кода

Reading time19 min
Views4.5K

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

Естественным перед началом анализа будет указание ограничений на ширину и глубину исследований. Принимаем, что многозадачность в рассматриваемых параллельных системах осуществляется простейшим путём - перегрузкой всего блока (связки) выполняющихся операторов (одновременное выполнение операторов разных программ не предполагается) или же система работает в однозадачном режиме; в противном случае высказанное в предыдущей фразе утверждение может быть неверным. Минимизация   объёма устройств временного хранения данных (описано здесь) проводиться не будет. На этом этапе исследований также не учитываются  задержки времени на обработку операторов и пересылку данных между ними (для системы SPF@home формально эти параметры могут быть заданы в файлах с расширениями med и mvr).

В предыдущей публикации была описана технология получения ПВПП на основе модели потокового (Data-Flow) вычислителя. Обычно считают, что правила выбора операторов для выполнения в такой машине подчиняются логике действия некоторых сущностей, совместно выполняющих определённые  действия – “актёров” (actors); при этом естественным образом моделируются связанные с характеристиками времени параметры обработки операторов. В общем случае при этом отдельные операторы выполняются асинхронно.  В публикации показано, что описанный принцип получения ПВПП приемлем (при выполнении несложных условий) и для машин архитектуры VLIW (Very Long Instruction Word, сверхдлинное машинное слово),  отличающихся требованием
одновременности начала выполнения всех операторов в связке. В расчётах использовали модель ILP (Instruction-Level Parallelism,  параллелизм  уровня машинных команд).

Читать далее

Навигатор для пешеходов

Reading time6 min
Views18K
image

Мы строим пешеходные маршруты по тропинкам, через калитки и с возможностью срезать через двор с апреля 2017 года. А совсем недавно мы добавили в 2ГИС полноценный навигатор для пешеходов — с режимом turn-by-turn и озвучкой важных точек на маршруте.

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

Information

Rating
5,552-nd
Location
Ahrensburg, Schleswig-Holstein, Германия
Date of birth
Registered
Activity