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

Проверка указателя перед вызовом функции free

Короткий ответ: нет. Тем не менее, раз про это вновь и вновь спрашивают на Reddit, Stack Overflow и других сайтах, пришло время подробно разобрать эту тему. Оказывается, есть много интересного, о чём можно порассуждать.

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

Каково это, создавать язык программирования сегодня? - 1


«Эта книга – классика. Относитесь к ней бережно».

Такую фразу произнёс архитектор из нашей команды, передавая мне The Dragon Book. Разработкой компиляторов я увлёкся где-то 15 лет назад ещё на заре своей карьеры. Как-то раз, читая эту книгу поздно вечером, я заснул, небрежно уронив её на пол. Надеюсь, владелец не заметил небольшую вмятину на обложке после того, как я ему её вернул.

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

Арифметика первого класса в системе типов Rust - 1


Арифметика – наука непростая, но к нашему удобству работу с ней можно облегчить с помощью экспрессивной системы типов языка Rust. В статье мы разберём реализацию на этом языке простейших математических операций, таких как сложение, вычитание, умножение и деление. Читать полностью »

Дисклеймер

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

Откуда есть пошли SPA

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

Скрытые возможности элемента <input> - 1


Элемент <input> в HTML самый интересный.

Большинство его собратьев вне зависимости от своих атрибутов ведут себя одинаково. При этом атрибут type элемента <input> может принимать 22 разных значения, которые не только меняют его поведение, но и влияют на внешний вид (зачастую в ущерб стилистике).

Элемент <input> отвечает за всё, начиная с текстового ввода и чекбоксов, заканчивая переключателями и кнопкой для сброса всех полей в форме. В этой статье я опишу не только различные типы <input>, но и сопутствующие атрибуты, о которых вы могли не знать, и которые делают этот элемент более удобным и применимым в различных ситуациях. Приступим!Читать полностью »

CG Charger BQ: как TP4056, только на стероидах (BQ25895) - 1

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

Перед нами умная зарядка для аккумулятора и модуль питания для различных DIY устройств с возможностью микроконтроллерного управления по интерфейсу I2C. Это формальное определение назначения этого модуля, но после ознакомления с даташитом BQ25895 и экспериментов с самим модулем я могу сказать, что это невероятно продвинутая микросхема управления питанием, которая при соответствующем подходе сможет удовлетворить любые ваши прихоти по обеспечению питанием ваших гаджетов.

Правда для осмысленной работы с BQ25895 вам понадобятся пара высших образований в Computer Science (смайл) и… эта статья...Читать полностью »

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

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

X11 это тот механизм на чем работает весь графический интерфейс Unix подобных ОС.

Но мало кто знает как он работает на самом деле. Потому что с годами он оброс слоями и слоями библиотек, которые стремятся скрыть саму сущность протокола.

А протокол в своей сути прекрасен. Он лаконичен и почти совершенен.

В Интернете есть полная документация по протоколу. Но дело в том, что эта документация большая, написана не совсем ясным языком и по сути представляет просто спецификация. Важные моменты никак не обозначены, а как использовать тоже оставлено на фантазии читателя.

А все книги и статьи по использованию X11 описывают это через библиотеки прокладки типа XLib и XCB, и даже, что хуже, GTK или Qt.

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

Как бы то ни было, если кому-то интересно как все работает на самом деле, пожалуйста под кат.

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

КДПВ

Немножко истории

Начну с истории вопроса.

Очень давно, я написал Fresh IDE – навороченнoe IDE для программирования на ассемблере, а точнее на FlatAssembler.

Fresh IDE долгие годы меня полностью устраивал, поэтому я с перерывами выпустил 2 главные версии и начал просто его использовать, время от времени внося какие-то исправления и изредка новые функции.

Когда перешел полностью на Linux, оказалось, что Fresh IDE прекрасно работает под WINE и я продолжил им пользоваться без угрызения совести. В процессе даже удалось исправить несколько багов WINE (вот, вот и вот).

Как бы то ни было, но я начал писать библиотеку для переносимости ассемблерных программ между Linux и Windows (и KolibriOS). Одновременно с этим задумался и чтобы сделать Fresh IDE переносимым. Из за архитектуры библиотеки, огромная часть кода уже и так была переносимой. А точнее все что не касалось GUI. К сожалению GUI был полностью написан на Win32 API и его нельзя просто так перенести на другие платформы.

Поэтому и пришлось начинать все сначала. И третья версия Fresh IDE писалась почти с нуля.

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

Недавно на Habr вышел перевод статьи под названием: «Классическое программирование на грани вымирания»Читать полностью »


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