Всем привет! Не так давно, после очень плотного изучения аллокаторов и алгоритмов распределения памяти, а также в последующем применении их на практике мне в голову пришла идея написать статью, в которой будет максимально подробно рассказано о них. Считаю, что данная тема будет достаточно востребованной, так как в сети, особенно в русскоязычной части, на данный момент существует очень мало источников, посвященных этому вопросу.
Читать полностью »
Рубрика «Программирование» - 125
Аллокаторы памяти
2020-06-06 в 17:42, admin, рубрики: C, c++, Алгоритмы, програмирование, Программирование, С++Имитируем функционал зависимых типов в системе типов Rust
2020-06-06 в 13:01, admin, рубрики: Rust, зависимые типы, инвариантность, ненормальное программирование, Программирование, системы типовСистемы типов — это настоящее безумие.
Некоторое время назад я уже отметился здесь со статьёй, в которой пытался разобрать, какие гарантии в compile-time может дать система типов Rust. Кое-какие интересные моменты удалось выловить уже тогда, однако больше всего меня зацепил весьма развёрнутый комментарий, описывающий некоторые вещи, доступные в зависимо-типизированном Idris.
Разумеется, я не мог остаться в стороне. Результат исследований доступен на github, а детальный разбор — под катом.
Vuex – решаем старый спор новыми методами
2020-06-06 в 12:23, admin, рубрики: javascript, library, plugin, vue, vuejs, vuejs2, vuex, vuex-map, web-разработка, Программирование, Разработка веб-сайтовВо 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');
}
}
});
Холивара не избежать. Это уже доказала вот эта статья. Опять в интернете кто-то не прав, и я должен доказать почему. И я докажу.
Как GPU-вычисления буквально спасли меня на работе. Пример на Python
2020-06-06 в 6:56, admin, рубрики: CUDA, gpgpu, gpu, Nvidia, python, Блог компании Издательский дом «Питер», высокая производительность, ПрограммированиеПривет!
Сегодня мы затрагиваем актуальнейшую тему — Python для работы с GPU. Автор рассматривает пример, тривиальный в своей монструозности, и демонстрирует решение, сопровождая его обширными листингами. Приятного чтения!
12 советов по внедрению TypeScript в React-приложениях
2020-06-05 в 11:20, admin, рубрики: React, ReactJS, TypeScript, Блог компании Tinkoff.ru, Программирование, Разработка веб-сайтов, рефакторинг, фронтендTypeScript — стандарт современной фронтенд-разработки. Согласно исследованиям State of JavaScript, TS вызывает явный интерес у программистов. По данным опроса за 2019 год, почти 60% респондентов пробовали TS и продолжают использовать, 22% не пробовали и желают изучить.
Эта статья — сборник советов о том, как внедрить и улучшить использование TypeScript. Первая половина советов общая, касающаяся подходов и инфраструктуры. Вторая — несколько особо полезных фишек языка.
Как мы создаем Сognitive Agro Data Factory — самый большой нейронный университет в мире
2020-06-05 в 4:00, admin, рубрики: big data analytics, cognitive pilot, Блог компании Cognitive Pilot, искусственный интеллект, машинное обучение, обработка изображений, открытые данные, Программирование, робототехника, управление проектами, электроникаЯ начну с революционного: когда мы внедряем Искусственные мозги C-Pilot в сельхозтехнику, мы немного уподобляемся Создателю. Мы Предмет превращаем в думающее и анализирующее Существо, то есть комбайн с Cognitive Agro Pilot начинает видеть и понимать, что происходит вокруг, а также принимать решения по дальнейшим действиям в рамках той производственной задачи, которая перед ним стоит. В каком-то смысле идет создание нового социального слоя тружеников села — слой агроботов с Искусственным Интеллектом C-Pilot, которые обдумывают и решают поставленные человеком агрозадачи.
По сути это зарождающийся слой существ, который надо массово и правильно учить. У человечества были тысячелетия на развитие эволюционного слоя сознания, у роботов это — месяцы. Но для этого надо создать необходимую среду, масштабную фабрику по обучению Искусственных мозгов и подготовки информации для них. В этой статье мы приоткроем тайны Cognitive Data Factory: комбайнa для сбора и переработки данных для агроотрасли.
То по каким учебникам и с какими учителями учатся Ваши дети имеет определяющее значение в их развитии и будущей карьере. Так и в автомотив отрасли — качественные данные и их правильная разметка имеют первостепенное значение для создателей ИИ для беспилотного транспорта и других высокоавтоматизированных систем управления. Cognitive Pilot учится через нашу уникальную Data Factory. Как это устроено внутри?
Нефтянка для инженеров, программистов, математиков и широких масс трудящихся, часть 1
2020-06-04 в 11:10, admin, рубрики: cad, CAE, Блог компании РН-БашНИПИнефть, геология, добыча нефти, инженерия, Карьера в IT-индустрии, математика, моделирование, Научно-популярное, Программирование, РН-БашНИПИнефть, Роснефть, физика
Хочешь знать, как и откуда добывают нефть, и зачем для этого нужны математики, инженеры и программисты? Это первая часть из серии статей, представляющих собой очень быстрое обзорное введение в предметную область для будущих математиков-программистов, которым предстоит решать задачи, связанные с моделированием нефтедобычи и разработкой инженерного ПО в области сопровождения нефтедобычи. Для того, чтобы понять всё, что здесь написано, не требуется каких-то специальных знаний: достаточно только здравого смысла и школьного “арсенала” математики и физики. Зато работа в этой области, в отличие от какого-нибудь документооборота, происходит на стыке математических, естественно-научных и технических дисциплин и полна интересных кросс-дисциплинарных задач.
Читать полностью »
PHP — какая ниша у языка и поможет ли PHP8 решить насущные проблемы (спойлер: имхо нет)
2020-06-01 в 21:58, admin, рубрики: php, php-fpm, php8, Программирование, Разработка веб-сайтов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-запросом, поработал в отдельном процессе, ни с кем не общаясь, и сдох, очистив все после себя. Очень просто программировать. Порог входа — около нуля.
Опять же, можно обойтись без роутинга: имя файла — это уже описание роутов.
С другой стороны, увы, есть нюансы. Веб не стал ждать и ушел далеко вперед.
Пишем операционную систему. Часть 1. Загрузчик
2020-05-30 в 23:59, admin, рубрики: OSDev, ассемблер, загрузчик, операционные системы, Программирование, с нуля, системное программированиеВсем привет! Сегодня мы напишем загрузчик, который будет выводить «Hello World» и запустим его на VirtualBox. Писать будем на ассемблере FASM. Скачать его можно отсюда. Также нам понадобится собственно VirtualBox и UltraISO. Перед тем как писать код, разберемся как загружаются операционные системы.
Итак, когда мы нажимаем большую кнопку включения на нашем компьютере запускается система, которая есть на любом компьютере — BIOS (Basic Input/Output System или базовая система ввода/вывода). Задача BIOS это:
Что делает Rust универсальным языком программирования
2020-05-30 в 21:26, admin, рубрики: Rust, высокоуровневое программирование, низкоуровневое программирование, прикладное программирование, Программирование, Промышленное программирование, системное программирование, языки программирования
Долгое время Rust позиционировался исключительно как язык для системного программирования. Попытки использовать Rust для высокоуровневых прикладных задач зачастую вызывали усмешку у значительной части сообщества: зачем использовать инструмент в том качестве, на которое он не рассчитан? Какая польза от возни с типами и анализатором заимствований (borrow checker), если есть Python и Java со сборкой мусора? Но другая часть сообщества всегда видела потенциал Rust именно как языка прикладного, и даже находила его удобным в использовании для быстрого прототипирования — во многом благодаря его особенностям, а не вопреки им.