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

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

Системы типов — это настоящее безумие.

КДПВ в подражание XKCD

Некоторое время назад я уже отметился здесь со статьёй, в которой пытался разобрать, какие гарантии в compile-time может дать система типов Rust. Кое-какие интересные моменты удалось выловить уже тогда, однако больше всего меня зацепил весьма развёрнутый комментарий, описывающий некоторые вещи, доступные в зависимо-типизированном Idris.
Разумеется, я не мог остаться в стороне. Результат исследований доступен на github, а детальный разбор — под катом.

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

Во Vuex есть одна популярная практика — не использовать mapState и mapMutations. Вообще. Вместо это мы сразу же при создании нового значения в store делаем для него геттер, а для каждой мутации – экшен.

Что-то наподобие:

export default new Vuex.Store({
  state: {
    // 1
    count: 0
  },
  getters: {
    // 1
    count: (state) => state.count
  },
  mutations: {
    // 2
    increment(state) {
      state.count++;
    }
  },
  actions: {
    // 2
    increment({ commit }) {
      commit('increment');
    }
  }
});

Холивара не избежать. Это уже доказала вот эта статья. Опять в интернете кто-то не прав, и я должен доказать почему. И я докажу.

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

Привет!

Сегодня мы затрагиваем актуальнейшую тему — Python для работы с GPU. Автор рассматривает пример, тривиальный в своей монструозности, и демонстрирует решение, сопровождая его обширными листингами. Приятного чтения!

Как GPU-вычисления буквально спасли меня на работе. Пример на Python - 1
Читать полностью »

TypeScript — стандарт современной фронтенд-разработки. Согласно исследованиям State of JavaScript, TS вызывает явный интерес у программистов. По данным опроса за 2019 год, почти 60% респондентов пробовали TS и продолжают использовать, 22% не пробовали и желают изучить.

Эта статья — сборник советов о том, как внедрить и улучшить использование TypeScript. Первая половина советов общая, касающаяся подходов и инфраструктуры. Вторая — несколько особо полезных фишек языка.

12 советов по внедрению TypeScript в React-приложениях - 1
Читать полностью »

Я начну с революционного: когда мы внедряем Искусственные мозги C-Pilot в сельхозтехнику, мы немного уподобляемся Создателю. Мы Предмет превращаем в думающее и анализирующее Существо, то есть комбайн с Cognitive Agro Pilot начинает видеть и понимать, что происходит вокруг, а также принимать решения по дальнейшим действиям в рамках той производственной задачи, которая перед ним стоит. В каком-то смысле идет создание нового социального слоя тружеников села — слой агроботов с Искусственным Интеллектом C-Pilot, которые обдумывают и решают поставленные человеком агрозадачи.

По сути это зарождающийся слой существ, который надо массово и правильно учить. У человечества были тысячелетия на развитие эволюционного слоя сознания, у роботов это — месяцы. Но для этого надо создать необходимую среду, масштабную фабрику по обучению Искусственных мозгов и подготовки информации для них. В этой статье мы приоткроем тайны Cognitive Data Factory: комбайнa для сбора и переработки данных для агроотрасли.

То по каким учебникам и с какими учителями учатся Ваши дети имеет определяющее значение в их развитии и будущей карьере. Так и в автомотив отрасли — качественные данные и их правильная разметка имеют первостепенное значение для создателей ИИ для беспилотного транспорта и других высокоавтоматизированных систем управления. Cognitive Pilot учится через нашу уникальную Data Factory. Как это устроено внутри?

Как мы создаем Сognitive Agro Data Factory — самый большой нейронный университет в мире - 1
Читать полностью »

Нефтянка для инженеров, программистов, математиков и широких масс трудящихся, часть 1 - 1

Хочешь знать, как и откуда добывают нефть, и зачем для этого нужны математики, инженеры и программисты? Это первая часть из серии статей, представляющих собой очень быстрое обзорное введение в предметную область для будущих математиков-программистов, которым предстоит решать задачи, связанные с моделированием нефтедобычи и разработкой инженерного ПО в области сопровождения нефтедобычи. Для того, чтобы понять всё, что здесь написано, не требуется каких-то специальных знаний: достаточно только здравого смысла и школьного “арсенала” математики и физики. Зато работа в этой области, в отличие от какого-нибудь документооборота, происходит на стыке математических, естественно-научных и технических дисциплин и полна интересных кросс-дисциплинарных задач.
Читать полностью »

class Number {
    private int|float $number;

    public function setNumber(int|float $number): void {
        $this->number = $number;
    }

    public function getNumber(): int|float {
        return $this->number;
    }
}

В одном из выпусков подкаста "Цинковый прод" мы мельком обсуждали, что нового будет в языке PHP8. После записи я решил написать статью, чтобы сформулировать свои мысли по положению PHP в современной разработке.

Давайте определимся в целом, какую нишу занимал/занимает язык, и куда он движется

Изначально язык позиционировался как простой инструмент, в котором из коробки есть всё необходимое для web.

С одной стороны, это действительно так: без дополнительных библиотек можно, например, вытащить из суперглобальной переменной $_POST параметры POST-запроса и вставить их в mysql с помощью встроенных функций, и это вроде как здорово.

Также очень важно, что модель "рожден, чтобы умереть" (например, в php-fpm) упрощала и упрощает разработку до безумия: не нужно знать, что такое локи, дедлоки, утечки памяти и т.д. Не надо писать await перед каждой строкой кода и т.д.

Скрипт начал работать над входящим HTTP-запросом, поработал в отдельном процессе, ни с кем не общаясь, и сдох, очистив все после себя. Очень просто программировать. Порог входа — около нуля.

Опять же, можно обойтись без роутинга: имя файла — это уже описание роутов.

С другой стороны, увы, есть нюансы. Веб не стал ждать и ушел далеко вперед.

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

Всем привет! Сегодня мы напишем загрузчик, который будет выводить «Hello World» и запустим его на VirtualBox. Писать будем на ассемблере FASM. Скачать его можно отсюда. Также нам понадобится собственно VirtualBox и UltraISO. Перед тем как писать код, разберемся как загружаются операционные системы.

Итак, когда мы нажимаем большую кнопку включения на нашем компьютере запускается система, которая есть на любом компьютере — BIOS (Basic Input/Output System или базовая система ввода/вывода). Задача BIOS это:

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

Владей и заимствуй

Долгое время Rust позиционировался исключительно как язык для системного программирования. Попытки использовать Rust для высокоуровневых прикладных задач зачастую вызывали усмешку у значительной части сообщества: зачем использовать инструмент в том качестве, на которое он не рассчитан? Какая польза от возни с типами и анализатором заимствований (borrow checker), если есть Python и Java со сборкой мусора? Но другая часть сообщества всегда видела потенциал Rust именно как языка прикладного, и даже находила его удобным в использовании для быстрого прототипирования — во многом благодаря его особенностям, а не вопреки им.

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


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