Нужна ли математика программистам? Этот вопрос любят жарко обсуждать на Reddit, Хабре и других площадках.
Мы считаем, что нужна. Но далеко не вся. Математическая логика, искусство доказательства, множества, основы теории вероятности, комбинаторика, модульная арифметика, графы, случайные числа — определенный минимум, который точно был бы полезен. Его знание пригодится при решении повседневных рабочих задач, а также даст вам конкурентное преимущество перед теми, кто этими дисциплинами не владеет.
Лучшая, на наш взгляд, книга для ликбеза — совместное творение Эрика Лемана, Фрэнка Томсона Лейтона и Альберта Мейера (Eric Lehman, F. Thomson Leighton, Albert M. Meyer) под названием «Mathematics for Computer Science».
Не читали? Качайте по этой или альтернативной ссылкам.
Читали? И как вам?
Знаете что-то лучше? Напишите в комментариях.
#literature
Мы считаем, что нужна. Но далеко не вся. Математическая логика, искусство доказательства, множества, основы теории вероятности, комбинаторика, модульная арифметика, графы, случайные числа — определенный минимум, который точно был бы полезен. Его знание пригодится при решении повседневных рабочих задач, а также даст вам конкурентное преимущество перед теми, кто этими дисциплинами не владеет.
Лучшая, на наш взгляд, книга для ликбеза — совместное творение Эрика Лемана, Фрэнка Томсона Лейтона и Альберта Мейера (Eric Lehman, F. Thomson Leighton, Albert M. Meyer) под названием «Mathematics for Computer Science».
Не читали? Качайте по этой или альтернативной ссылкам.
Читали? И как вам?
Знаете что-то лучше? Напишите в комментариях.
#literature
👍8
Прошли времена, когда операционные системы, разработанные как хобби-проекты, могли впечатлить только хакеров. Все больше новых проектов ставят себе цель серьезнее, чем просто разобраться в тонкостях работы железа и низкоуровневом программировании. Появилось несколько популярных проектов, предоставляющих графический интерфейс, сопоставимый с коммерчески успешными, серьезными операционными системами.
#digest
#digest
👍2
Essense OS
Образ этой ОС занимает всего 30 мегабайт, а запуск системы до появления рабочего стола происходит практически мгновенно.
Графический интерфейс Essense был явно вдохновлен старым интерфейсом Google Chrome и оконным менеджером Rio из операционной системы Plan 9. Программы в этой системе не запускаются в собственных отдельных окнах, а наследуют то окно, из которого они были запущены. Для отображения интерфейса программы в окне появляется отдельная вкладка. Вкладки приложений могут перемещаться между открытыми окнами.
В Essense уже есть несколько графических приложений: файловый менеджер, текстовый редактор, клиент IRC, эмулятор терминала. Есть и портированные компоненты, например GCC, позволяющий собирать Essense из самой себя.
Ядро системы тоже не отстает: реализован стек TCP/IP, блочный кеш, разделяемая память, планировщик, учитывающий инверсию приоритетов, аудио-микшер и подсистема совместимости с POSIX.
#digest
Образ этой ОС занимает всего 30 мегабайт, а запуск системы до появления рабочего стола происходит практически мгновенно.
Графический интерфейс Essense был явно вдохновлен старым интерфейсом Google Chrome и оконным менеджером Rio из операционной системы Plan 9. Программы в этой системе не запускаются в собственных отдельных окнах, а наследуют то окно, из которого они были запущены. Для отображения интерфейса программы в окне появляется отдельная вкладка. Вкладки приложений могут перемещаться между открытыми окнами.
В Essense уже есть несколько графических приложений: файловый менеджер, текстовый редактор, клиент IRC, эмулятор терминала. Есть и портированные компоненты, например GCC, позволяющий собирать Essense из самой себя.
Ядро системы тоже не отстает: реализован стек TCP/IP, блочный кеш, разделяемая память, планировщик, учитывающий инверсию приоритетов, аудио-микшер и подсистема совместимости с POSIX.
#digest
👍3
ToaruOS
Этот проект широко известен среди разработчиков ОС. ToaruOS разрабатывается одним человеком и в базовой сборке не содержит никаких внешних зависимостей. Все в системе было написано автором с нуля!
В ToaruOS есть графический композитный менеджер окон, позволяющий даже вращение окон. Все это без использования графического ускорителя.
Автор (Klange) разработал множество родных для этой ОС приложений. Есть и менеджер пакетов, позволяющий доустанавливать портированные из Unix приложения по сети.
На базе ToaruOS первого апреля каждого года выпускается юмористическая сборка — PonyOS. Случайные посетители этого сайта оказываются ошарашенными: они не могут поверить, что кто-то потратил столько сил и времени, чтобы создать продвинутую ОС, построенную вокруг вселенной My Little Pony.
#digest
Этот проект широко известен среди разработчиков ОС. ToaruOS разрабатывается одним человеком и в базовой сборке не содержит никаких внешних зависимостей. Все в системе было написано автором с нуля!
В ToaruOS есть графический композитный менеджер окон, позволяющий даже вращение окон. Все это без использования графического ускорителя.
Автор (Klange) разработал множество родных для этой ОС приложений. Есть и менеджер пакетов, позволяющий доустанавливать портированные из Unix приложения по сети.
На базе ToaruOS первого апреля каждого года выпускается юмористическая сборка — PonyOS. Случайные посетители этого сайта оказываются ошарашенными: они не могут поверить, что кто-то потратил столько сил и времени, чтобы создать продвинутую ОС, построенную вокруг вселенной My Little Pony.
#digest
👍4
SerenityOS
Этот проект также хорошо известен сообществу.
Задумывая SerenityOS, Андреас Клинг вдохновлялся Unix системами и графическими интерфейсами начала 2000-х.
Некоторое время назад Андреас уволился с работы, чтобы посвятить себя разработке Serenity и система стала прогрессировать с невероятной скоростью.
Кроме довольно функционального ядра и оконного менеджера, автор вместе с сообществом разработал множество приложений с нуля, включая движок JavaScript, браузер, средства разработки, отладки и профилирования приложений!
Андреас ведет канал на YouTube, где периодически выкладывает отчеты о разработке системы или программирует в прямом эфире.
#digest
Этот проект также хорошо известен сообществу.
Задумывая SerenityOS, Андреас Клинг вдохновлялся Unix системами и графическими интерфейсами начала 2000-х.
Некоторое время назад Андреас уволился с работы, чтобы посвятить себя разработке Serenity и система стала прогрессировать с невероятной скоростью.
Кроме довольно функционального ядра и оконного менеджера, автор вместе с сообществом разработал множество приложений с нуля, включая движок JavaScript, браузер, средства разработки, отладки и профилирования приложений!
Андреас ведет канал на YouTube, где периодически выкладывает отчеты о разработке системы или программирует в прямом эфире.
#digest
👍3
Visopsys
Достаточно старый проект, стартовавший в далеком 97 году.
Visopsys поддерживает графическое окружение благодаря графическому серверу, похожему на XOrg, интегрированному непосредственно в ядро. Ядро поддерживает 32-битные x86 системы, многозадачность, предоставляет средства работы с сетью и накопителями.
Автор Visopsys (Энди Маклаглин) реализовал множество приложений для своей системы: менеджер архивов, файловый менеджер, редактор шрифтов и изображений, сниффер сетевых пакетов, telnet-клиент, текстовый редактор, калькулятор и даже пакетный менеджер.
#digest
Достаточно старый проект, стартовавший в далеком 97 году.
Visopsys поддерживает графическое окружение благодаря графическому серверу, похожему на XOrg, интегрированному непосредственно в ядро. Ядро поддерживает 32-битные x86 системы, многозадачность, предоставляет средства работы с сетью и накопителями.
Автор Visopsys (Энди Маклаглин) реализовал множество приложений для своей системы: менеджер архивов, файловый менеджер, редактор шрифтов и изображений, сниффер сетевых пакетов, telnet-клиент, текстовый редактор, калькулятор и даже пакетный менеджер.
#digest
👍2
BrutalOS
Микроядерная ОС, созданная sleepy-monax, автором другого проекта, операционной системы SkiftOS.
Этот проект появился сравнительно недавно, и у него многое впереди, но уже сейчас видно, как силами нескольких авторов система стремительно развивается.
Авторы разработали свой язык описания интерфейсов между программами и компилятор для него. Они также создают свой компилятор языка C и планируют использовать его для разработки системы.
Ядро этой ОС вобрало в себя идеи современных микроядер: например, оно реализует менеджер объектов и механизм, близкий по смыслу к OCAP (Object Capabilities).
Стандартная библиотека Brutal предоставляет множество удобных механизмов, например легковесные кооперативные нити, позволящие асинхронно обрабатывать сообщения от других процессов.
Есть для системы и переносимая GUI-библиотека, разработанная на чистом C, которую можно использовать за пределами BrutalOS, например в Linux.
#digest
Микроядерная ОС, созданная sleepy-monax, автором другого проекта, операционной системы SkiftOS.
Этот проект появился сравнительно недавно, и у него многое впереди, но уже сейчас видно, как силами нескольких авторов система стремительно развивается.
Авторы разработали свой язык описания интерфейсов между программами и компилятор для него. Они также создают свой компилятор языка C и планируют использовать его для разработки системы.
Ядро этой ОС вобрало в себя идеи современных микроядер: например, оно реализует менеджер объектов и механизм, близкий по смыслу к OCAP (Object Capabilities).
Стандартная библиотека Brutal предоставляет множество удобных механизмов, например легковесные кооперативные нити, позволящие асинхронно обрабатывать сообщения от других процессов.
Есть для системы и переносимая GUI-библиотека, разработанная на чистом C, которую можно использовать за пределами BrutalOS, например в Linux.
#digest
👍6
Особенности архитектуры процессоров ARM
Процессоры ARM работают с двумя типами памяти:
Тип памяти
Во всем этом нет ничего удивительного, пока мы не сталкиваемся с конвейером процессора и спекулятивным исполнением. Процессор может пытаться спекулятивно исполнять код, выбирая его из памяти, любой памяти, которая не маркирована атрибутом XN (Execute Never). В том числе из
В документации ARM утверждают, что выборка инструкций из
Описанное выше — не просто теория, приходилось сталкиваться с подобным поведением на практике: из-за забытого XN-бита в записях таблиц страниц контроллер прерываний иногда работал некорректно, переходя в непредсказуемые состояния. Виновником оказалась спекулятивная выборка из
Процессоры ARM работают с двумя типами памяти:
normal memory и device memory. Задать тип памяти можно при помощи регистра MAIR (Memory Attribute Indirection Register) и группы из трех бит в записи таблицы страниц.Тип памяти
device memory обычно применяют для тех регионов, доступ к которым может породить какой-либо сайд-эффект. Обычно это память регистров устройств.Во всем этом нет ничего удивительного, пока мы не сталкиваемся с конвейером процессора и спекулятивным исполнением. Процессор может пытаться спекулятивно исполнять код, выбирая его из памяти, любой памяти, которая не маркирована атрибутом XN (Execute Never). В том числе из
device memory!В документации ARM утверждают, что выборка инструкций из
device memory приводит к непредсказуемому результату.Описанное выше — не просто теория, приходилось сталкиваться с подобным поведением на практике: из-за забытого XN-бита в записях таблиц страниц контроллер прерываний иногда работал некорректно, переходя в непредсказуемые состояния. Виновником оказалась спекулятивная выборка из
device memory.👍2