О роде в языках

Хочу поделиться своим мнением о категории рода в русском (и не только) языке. Размышления навеяны встретившимся мне мнением об абсурдности рода. Хотя я буду ссылаться на статьи исследователей-лингвистов, не следует воспринимать мои размышления как истину, потому что я далёк от филологических наук. Далее я буду употреблять термин «нейтральный род». Это то же, что и «средний род», но употребляется, когда речь идёт не о русском языке.

Далее...

Построение кадра стека на AMD64

Статья является переводом этой статьи.

В этой статье я изложу принципы построения стека на новой 64-разрядной архитектуре AMD64. Фокус внимания будет на системе Linux и других системах, соблюдающий официальный System V AMD64 ABI. Windows использует другой ABI, и я кратко упомяну его в конце статьи. Я не буду подробно описывать полное соглашение о вызовах x64, его вы можете найти в руководстве AMD64 ABI.

Далее...

Где находится вершина стека на x86?

Статья является переводом этой статьи

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

В этой статье я намерен распутать эту путаницу с помощью нескольких полезных диаграмм.

Далее...

Основы архитектуры ARM. Стек

Статья является вольным переводом этой статьи с добавлением своих наработок.

ARM (Advanced RISC machine) — семейство микропроцессорных ядер разработки компании ARM Limited. Эти процессоры имеют низкое энергопотребление, поэтому находят применение во встраиваемых системах и преобладают на рынке мобильных устройств. В 2007 году около 98% продаваемых мобильных телефонов были оснащены хотя бы одним процессором ARM. Они широко используются в потребительской технике, в том числе в КПК, цифровых плеерах и носителях, игровых консолях, калькуляторах, компьютерных периферийных устройствах, таких как жёсткие диски и маршрутизаторы.

Далее...

Об отношении к религии

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

Далее...

Пробуждение потока QThread другим потоком

Бывает такая ситуация, что поток нужно приостановить на какое-то время. Обычно это решается с помощью методов QThread::sleep, QThread::msleep, QThread::usleep. Однако в этом случае поток не будет никак взаимодействовать с другими потоками. А если возникнет ситуация, что поток нужно немедленно завершить (например, при завершении работы всей программы), то придётся ждать, пока время сна закончится. Время сна может быть довольно большим в зависимости от задачи, и таким образом, завершение работы программы затянется на неопределённый срок. Поэтому возникает задача: сделать такую функцию sleep, которую можно вызвать в целевом потоке для его приостановки, и которую можно прервать из другого потока. Частично для этой задачи подходит класс QWaitCondition, но его придётся немного доработать. Сегодня я покажу, как это сделать.

Далее...

Удаление элемента из вектора по типу

Бывает ситуация, когда есть базовый класс Base и его наследники Derived1 и Derived2 и есть вектор, который хранит элементы типа Base*. Может возникнуть ситуация, когда надо удалить из этого вектора все элементы, которые относятся только к определённому типу. Сегодня я расскажу, как это сделать. Объявим наши классы.

Далее...