Pull to refresh
18
0.4
Юлия Горшкова @Yuuri

Люблю котиков, языки, ФП и биоинформатику

Send message

Почему молодежь не хочет рожать и причём тут система образования

Level of difficultyEasy
Reading time6 min
Views97K

"Я хочу пожить для себя" - говорят люди в 18, 20, 25 и даже 30 лет. И живут. Развивают карьеру, путешествуют, занимаются творчеством, уезжают покорять другие страны.

"Вы с ума посходили! А ну давайте срочно все рожайте!" - верещит государство, которому не хватает новых граждан.

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

Тут важно понять две вещи.

Какие?
Total votes 208: ↑125 and ↓83+73
Comments2200

Знакомство с p-адическими числами. Часть 2, практическая

Reading time13 min
Views5.8K


Эта часть продолжает неформальный рассказ о p-адических числах и она посвящена практическим аспектам работы с этой числовой системой и, в частности, некоторым деталям реализации p-адической алгебры на языке Haskell. О том, что это за система и зачем она может понадобиться, читайте в предыдущей части.


Мы поговорим об эффективном внутреннем представлении p-адических чисел, о базовых алгоритмах и методах работы с ними, а также о двух классных инструментах в системе типов языка Haskell: о типах-литералах (type literals) и семействах типов (type families).

Читать дальше →
Total votes 13: ↑13 and ↓0+13
Comments1

Знакомство с p-адическими числами. Часть 1

Reading time19 min
Views21K

Иллюстрация сложения в p-адической топологии (E. Harriss and R. Nelson)
Изображение с сайта Mathematical Art Galleries


В этой серии из двух статей я приглашаю вас заглянуть в один любопытный и не самый популярный уголок математики, в котором обитают необычные создания — p-адические числа, а попутно хочу рассказать о написанной мной Haskell-библиотеке для работы с ними, а также о двух классных инструментах: о типах-литералах (type literals) и семействах типов (type families), приближающих нас к заветным зависимым типам.


Я люблю язык Haskell и, начиная с какого-то времени, мне стало комфортно думать на нём, особенно, на математические темы. Когда понадобилось освоить новый инструмент, — p-адические числа, оказалось, что в репозитории hackage, основном для Haskell-сообщества, нет инструментов для работы с ними, даже в таких серьёзных теоретико-числовых библиотеках, как arithmetic, arithmoi или factory. В конце концов, я написал и опубликовал свой модуль padic, и во второй части этой серии расскажу о некоторых деталях его реализации. А сейчас речь пойдёт о самих p-адических числах.

Читать дальше →
Total votes 38: ↑38 and ↓0+38
Comments14

Скорлупа сверхцивилизации. Об энергетических, инженерных и экологических аспектах сферы Дайсона

Reading time10 min
Views25K

В истории идей, появившихся в XX веке, особое место занимает триада из парадокса Ферми, шкалы Кардашёва и сферы Дайсона. Не вдаваясь в их подробности, изложенные по приведенным ссылкам, отмечу, что объединяю их по общему допущению о существовании во Вселенной высокоразвитых разумных цивилизаций. Несмотря на то, что ни малейших признаков внеземного разума на данный момент не найдено, эти идеи выдают, какого поведения мы ожидаем от представителей сверхцивилизаций, в число которых надеемся когда-нибудь войти. Это:

1. Готовность и даже стремление общаться с другими разумными существами (поэтому Ферми счел парадоксальным факт молчания Вселенной, учитывая, что за время ее существования на обитаемых планетах должно было сформироваться множество цивилизаций не примитивнее нашей),

2. Стремление к экстенсивному технологическому развитию, где развитие цивилизации требует постоянного наращивания энергопотребления и перехода от примитивных источников энергии ко все более обильным и высокотехнологичным,

3. В качестве первого шага на пути вверх по шкале Кардашёва необходимо принципиально оптимизировать сбор энергии нашего Солнца – сегодня она чуть менее чем полностью рассеивается в космосе. Поэтому было бы целесообразно окружить Солнце рукотворной сферой, которая могла бы использоваться либо как грандиозная солнечная батарея, либо как пространство для заселения людьми.

Читать далее
Total votes 25: ↑22 and ↓3+28
Comments91

Почему свободного времени всё меньше, если производительность труда растёт?

Level of difficultyEasy
Reading time8 min
Views56K


Последние сто лет производительность труда ежегодно растёт. Благодаря научно-техническому прогрессу человек с компьютером заменяет тысячу бухгалтеров и вычислителей 19 века. Но не работает меньше. Скорее наоборот. Он работает больше.

В конце 19 века считалось, что промышленная революция приведёт к постепенному сокращению рабочей недели с увеличением свободного времени, посвящённого саморазвитию и социальной активности. Такие же надежды связывались с компьютерами и автоматизацией. Всё будут делать роботы, а человек сможет отдохнуть и заняться более высокими делами, творчеством, наукой и философскими диспутами. Один из самых известных экономистов Джон Кейнс в 1930 году прогнозировал, что к концу столетия люди будут работать не более 15 часов в неделю.

Как видим, этого не произошло.
Читать дальше →
Total votes 120: ↑101 and ↓19+112
Comments869

Разработка игры Jim Power для 8-битной приставки: из первых рук

Level of difficultyEasy
Reading time30 min
Views8.3K

Одно из моих главных увлечений в жизни — видеоигры, преимущественно старые. Я большой энтузиаст ретро-компьютеров и игровых консолей, много лет занимаюсь самыми разнообразными делами в этой области. Кто-то знает меня как разработчика игр, кто-то — как демосценера, кто-то — как чиптюн-музыканта, разработчика музыкального ПО, железных самоделок, и так далее.

Но далеко не все проекты и моя роль в них известны широкой публике. Пожалуй, один из самых интересных — версия игры Jim Power от Piko Interactive, созданная для 8-битной игровой консоли NES (Famicom, Денди). Я занимался им в 2014-2020 годах в качестве приглашённого разработчика.

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

Если вы когда-либо хотели узнать, как и кем делаются современные игры для несовременных платформ, каким образом люди вообще приходят к этому — сейчас всё будет.
Читать дальше →
Total votes 82: ↑82 and ↓0+97
Comments9

Как я портировал Sonic 2 на графический калькулятор

Level of difficultyMedium
Reading time8 min
Views5.2K

Этот пост посвящён тому, как я портировал 8-битный Sonic 2 на TI-84+ CE

Часть 1: с чего всё началось


Эта история началась осенью 2022 года, когда я смотрел видео This Does Not Compute об истории игр на графических калькуляторах. Примерно на пятой минуте автор мимоходом упомянул типы процессоров, которые использовались в этой линейке графических калькуляторов. В большинстве из них был установлен Z80, в 89 и 92 задействовали M68K, а в линейке Nspire использован процессор на основе ARM.

Это меня очень заинтересовало, ведь я знал, какие процессоры использовала Sega в своих ретроконсолях: Z80 в Master System и M68K в Genesis. Калькуляторы имеют экраны в градациях серого, но мне захотелось узнать, пробовал ли кто-нибудь портировать игру Sonic с консолей на один из калькуляторов.

К своему удивлению, я выяснил, что этого никто не делал; более того, за исключением SonicUP и Sonic TI-Blast никто не создавал завершённый платформер про Соника для калькуляторов TI. Если не считать Nspire, но он настолько мощный, что способен эмулировать старые игровые консоли, так что меня он не особо интересует.

Поэтому я задался вопросом: удастся ли мне портировать уже существующий дизассемблированный код Sonic на графический калькулятор TI. Но сначала мне нужно было выбрать конкретную игру.
Читать дальше →
Total votes 40: ↑37 and ↓3+52
Comments4

Из пушек по воробьям. Генерация и решение лабиринта не самым обычным способом

Level of difficultyMedium
Reading time19 min
Views5.1K

На уходящей неделе мне попалась симпатичная, хоть и не новая мини‑серия статей на Дзен‑канале @zdgzdgzdg про процедурную генерацию лабиринта методом «коллапса волновой функции». Пока я читал эти статьи и знакомился с кодом, меня осенило: ведь это же вычисления в комонаде, погружённые в монаду! Я не издеваюсь, действительно, речь идёт о композиции двух паттернов функционального программирования: комонады Zipper, превращающей локальные правила в глобальное состояние, и монады Random, позволяющей генерировать случайные объекты.

И вот, в качестве баловства на выходных, я решил реализовать этот «квантовый» алгоритм генерации лабиринтов на Haskell, используя и комонады и монады, и вообще, ни в чëм себе не отказывая. И хотя язык программирования Haskell нужен не только для извращений, но именно для них он подходит идеально!

Читать далее
Total votes 38: ↑38 and ↓0+38
Comments7

Процедурная генерация уровней для двумерного платформера

Level of difficultyEasy
Reading time8 min
Views2.8K

Привет, Хабр. Меня зовут Кирилл. Я увлекаюсь геймдевом в свободное от работы время. В этой статье я поделюсь опытом разработки процедурного генератора миров для своей инди-игры Unsigned Character. Игра представляет собой платформер с бесконечным процедурным миром, который достраивается по мере продвижения игрока. Я попытался реализовать процедурную генерацию, которая выдаёт интересный и разнообразный результат. И во многом это удалось.

Читать далее
Total votes 18: ↑18 and ↓0+18
Comments11

Назад в будущее? Квантовый ластик с отложенным выбором

Reading time8 min
Views36K
На Хабре периодически появляются статьи и комментарии о чудесах квантовой физики: квантовом ластике и слабых измерениях. К сожалению, слишком часто о них говорят как о загадочных и непонятных явлениях, позволяющих творить чуть ли не магию, хотя на самом деле нет в них ровным счетом ничего удивительного. В этом посте я перевожу статью Шона Кэрролла о квантовом ластике с отложенным выбором. Пусть он будет отправной точкой для обсуждения в комментариях всяких хитростей квантовой механики.

Total votes 39: ↑38 and ↓1+37
Comments129

Внутренний Я(ндекс)

Level of difficultyEasy
Reading time8 min
Views90K

В этой статье я хочу описать (часть) моего опыта взаимодействия со структурой, именуемой в дальнейшем «яндекс», с точки зрения работника. Опишу собеседования и этап «входа».

Да, уже были статьи про собеседование и даже в эту же структуру, некоторые из них я видел, но не во всём с ними согласен, к тому же конкретно С++ разработчиков я там не видел.

Читать далее
Total votes 397: ↑391 and ↓6+457
Comments288

Взлом YouTube для быстрого скачивания видео

Reading time9 min
Views75K
Мы неоднократно рассказывали о специальном софте, который позволяет скачивать видео с YouTube. Это в первую очередь youtube-dl (yt-dl) и его клоны, такие как yt-dlp и yt-dlc. С ними воюют могучие копирасты, пытаются удалить их из поисковой выдачи, с хостингов, с Github и так далее, по известной схеме «тотальная война».

Но главным врагом для этих программ остаются даже не правообладатели, а злобная корпорация Google, которая постоянно вносит изменения в YouTube API, чтобы прекратить злоупотребления сервисом помешать людям скачивать файлы, ведь от этого Google никакой прибыли.

Сами программки — просто технические инструменты для скачивания общедоступного контента, они ничего не воруют и не пиратят. Просто доступ происходит нестандартным способом, который не предусмотрен официально. Посмотрим, как это делается.
Читать дальше →
Total votes 123: ↑113 and ↓10+148
Comments421

SectorC: компилятор Си в пределах 512 байт

Level of difficultyMedium
Reading time9 min
Views20K

SectorC (github) – это компилятор Си, написанный на ассемблере x86-16 и умещающийся в загрузочный сектор 512 байт машины x86. Он поддерживает достаточно обширную функциональность Си для создания реальных и интересных программ, являясь при этом, пожалуй, самым миниатюрным компилятором Си из когда-либо написанных.
Читать дальше →
Total votes 107: ↑105 and ↓2+148
Comments45

Higher-Kinded Data, или ещё один способ работать с сущностями базы данных (и не только)

Reading time16 min
Views4.7K

image


Важный дисклеймер


Перед началом хочу позволить себе небольшой, но важный дисклеймер.


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


«Не думайте, что я сейчас буду развивать эту концепцию, а затем разочаруюсь в ней. Такой драматургии не будет. Я изначально уже в ней разочарован.»
Роман Михайлов

Ещё хочется заметить, что далее все примеры кода будут приводиться на Haskell. Но в конце я покажу, как можно некоторые из них повторить на Scala.


Что такое HKD


Конечно, прежде, чем писать этот раздел, я полез в интернет, чтобы посмотреть, как этот термин определяют другие люди. Чёткого определения я не нашёл.
Грубо говоря, HKD — это то, что предоставляет возможность держать в одном типе данных сразу несколько представлений. Давайте посмотрим на примеры.

Читать дальше →
Total votes 12: ↑12 and ↓0+12
Comments3

Вы в Самом Деле Хотите Стать Программистом Микроконтроллеров?

Level of difficultyEasy
Reading time63 min
Views75K

В этом тексте я напишу о буднях программиста МК в РФ.

Что вообще пишут программисты МК и на чем?

Основной язык программирования это С. Языку С уже более 50лет. Кроме микроконтроллеров С уже практические никому не нужен. Навыки программирования на С очень слабо конвертируются. В свое время, видимо на С написали компилятор для С++ и нужда в С для desktop как таковая отпала. A сам С остался для сборки артефактов для микроконтроллеров с экстремально малыми ресурсами. Хотя и сейчас большинство компаний в ЕС уже микроконтроллерные сборки собирают на С++ 17. 

Иногда программистам MК приходится обсчитывать аналоговые цепи и вычислять какие-то сложные 8-этажные формулы и строить графики. Для этого практикуют бесплатный интерпретатор Python.

Главным образом программисты МК составляют Board Support Package, пишут драйверы для новых умных периферийных чипов, пишут загрузчики, портируют RTOS(ы) на разные процессорные ядра, пишут код-генераторы, скрипты сборки, составляют модульные тесты, изредка производят рефакторинг, часто чинят ошибки в Legacy коде, изредка что-то изменяют в коде Assembler(а), который запускается до вызова функции main().

Иногда программист МК даже ничего не пишет сам вообще. Важно уже не сколько уметь программировать сколько уметь тестировать и собирать, улучшать из готового кода из интернета. Какие-то исходники можно взять из github или ядра Linux. Там есть код на многие темы. Драйверы для множества чипов.  Важно уметь верифицировать найденные сорцы и аккуратно подключить их к нужной сборке.

Читать далее
Total votes 135: ↑110 and ↓25+122
Comments410

Ректальное программирование: основы для практикующих 1С-программистов

Reading time9 min
Views53K

Примечание: хотя статья адресована прежде всего одинэсникам, труЪ-программисты также могут узнать многие используемые методики или взять что-то на вооружение.

Одной из самых популярных и зарекомендовавших себя методологий программирования в 1С является так называемое ректальное программирование. Редкий проект внедрения и сопровождения учётных систем на платформе 1С обходится без его использования. Зачастую без знания данной методологии программистам даже бывает сложно найти работу в сфере 1С, потому что работодатели, особенно фирмы-франчайзи, в основном отдают предпочтение классическим, зарекомендовавшим себя методикам, а не новомодным заграничным веяниям.

Читать далее
Total votes 88: ↑80 and ↓8+82
Comments135

Как мы делали Warface для Денди

Reading time31 min
Views44K
В октябре 2020 мне написал мой друг Андрей Скочок, работающий в Mail.ru, и предложил сделать для них необычную промоакцию.

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



Читать дальше →
Total votes 246: ↑246 and ↓0+246
Comments40

Антибиотикорезистентность: ура, мы дождались! Считайте, что вышел анонс следующей пандемии

Reading time12 min
Views87K

Колония бактерий и кружки с антибиотиками: три из семи работают, и это хорошо.

Биологи давно мечтали о сценариях конца света с участием суперинфекции, резистентной ко всему тому, что есть у нас в арсенале антибиотиков. Когда медицина бессильна против инфекции, как в 1353 году, может умереть от 30 до 60 % охваченной болезнью популяции.

За последние два года поменялось то, что COVID-19 так напугал людей, что они стали есть антибиотики в нереальных по былым меркам количествах.

Вышел прекрасный отчёт в «Ланцете» про то, что если в 2019 году из-за AMR (резистентности бактериальных инфекций к антибиотикам) умерло около 1,2 миллиона человек (и ещё около 4,95 миллиона по связанным с такими инфекциями причинам), то с тех пор человечество сделало большой шаг вперёд.

То же потребление азитромицина в России, по данным доклада от 4 июня 2021 г. «Антибиотикорезистентность как угроза национальной безопасности России», выросло больше чем в два раза. Возможно, это связано с тем, что он входил в протоколы лечения COVID.

Давайте ещё раз поговорим про то, что не так с антибиотиками.
Читать дальше →
Total votes 242: ↑229 and ↓13+280
Comments669

История славянских шипящих: почему мы пишем жи-ши через И?

Reading time7 min
Views44K
tl;dr: потому что перед Ы не могли возникнуть ни Ж, ни Ш.

Орфография многих живых языков отражает давно исчезнувшие вещи: например, написание английского слова knight указывает на то, что когда-то в 14 в. оно произносилось «книхт». В русской орфографии тоже полно «доисторических окаменелостей»; и для того, чтобы не зубрить, а понимать орфографические правила — нужно разбираться, откуда эти правила взялись. Готового обзора истории шипящих я не нашёл, так что взялся составить его сам. Особенно интригует природа буквы Щ — самой необычной в нашем алфавите.

Читать дальше →
Total votes 90: ↑85 and ↓5+104
Comments235

Мой компьютер на логических микросхемах

Reading time6 min
Views56K

Привет, Хабр. Два года назад, как раз перед началом пандемии, я затеял большой проект: построить компьютер, используя только простые логические микросхемы 74 серии и микросхемы памяти. В этой статье я бы хотел кратко рассказать о том, что получилось, и более подробно об основной части – процессоре.

Читать далее
Total votes 239: ↑238 and ↓1+304
Comments73

Information

Rating
2,087-th
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity