Доброго времени суток. В последнее время я много эксперементрировал с .Net 5 и его Source Generator-ами. И мне внезапно пришла идея как можно использовать Source Generator-ы для реализации "duck typing"-а в C#. Я не мог просто оставить эту идею. В итоге вышла, я бы сказал, чисто акамическая штука(никто не будет использовать это на проде, я надеюсь), но результат получился довольно интересен. Всем кому интересно прошу под кат!
Рубрика «ненормальное программирование» - 15
«Duck typing» и C#
2021-01-05 в 7:12, admin, рубрики: .net, C#, roslyn, roslyn analyzers, roslyn source generators, ненормальное программированиеTreeOS. 16-битная рождественская демка в загрузочном секторе
2020-12-30 в 9:05, admin, рубрики: ruvds_статьи, Блог компании RUVDS.com, Демосцена, ненормальное программирование
В преддверии Нового Года бороздил просторы сети, и нашёл замечательную демку на ассемблере рисования новогодней ёлки. Демка не простая, а золотая, написана таким образом, чтобы работала в загрузочном секторе диска, фактически микрооперационная система, если её так можно назвать. Из-за большой любви к Новому Году и ассемблеру, решил таки её немного разобрать, и восхититься мастерством автора. Итак, поехали. Читать полностью »
Новогодние бенчмарки компьютеров Эльбрус
2020-12-28 в 22:25, admin, рубрики: .net, java, javascript, Lua, php, python, бенчмарки, высокая производительность, Компьютерное железо, ненормальное программирование, Процессоры, ЭльбрусНовогодние бенчмарки компьютеров Эльбрус
Продолжение статьи Большое тестирование процессоров различных архитектур. В этот раз я решил измерить производительность конкретных сред/языков программирования (C#, Java, JavaScript, Python, Lua) на компьютерах с процессорами Эльбрус и сравнить их с компьютерами (даже телефонами) на процессорах архитектурой ARM и X86-64.
Языки программирования:
- C#
- PHP
- JavaScript (Browser, не NodeJS)
- Java
- Python
- Lua
Список тестов
- Dhrystone (http://www.roylongbottom.org.uk/#anchorSource)
- Whetstone (http://www.roylongbottom.org.uk/#anchorSource)
- Scimark 2 (Original sources: https://math.nist.gov/scimark2/download.html)
- Linpack (Based on: https://github.com/fommil/netlib-java/blob/master/perf/src/main/java/com/github/fommil/netlib/Linpack.java)
- Generic:
- Loops
- Conditions
- Arithmetics
- Math
- Array speed
- String manipulation
- Hash algorithms
Но сперва приведу результаты нативных бенчмарков на языке C, а также результаты других популярных бенчмарков.
Сколько нужно примитивов для реализации форт системы?
2020-12-27 в 1:39, admin, рубрики: forth, ненормальное программированиеВ 1992-м году проходил очередной конкурс по обфусцированному программированию на языке С. Один из представленных проектов был небольшой форт системой. Меня поразило, что виртуальная машина была реализована всего в 794 байтах С кода. Остальная часть форт системы загружалась из исходника на форте. После изучения проекта первоначальный восторг уступил место разочарованию, так как автор использовал не совсем “честный” трюк: для парсинга фортового исходника он использовал функцию scanf(). С этого момента меня терзал вопрос — сколько нужно примитивов для реализации форт системы без подобных трюков?
Читать полностью »
Вычисления без инструкций на x86
2020-12-16 в 12:35, admin, рубрики: red pill, x86, виртуализация, ненормальное программирование, низкоуровневое программирование, Процессоры, системное программирование, тьюринг-полнота, эзотерическое программирование
В этой статье обсуждается необычное применение особенностей защищённого режима архитектуры x86 — для произведения вычислений без исполнения инструкций, то есть за счёт внутренних механизмов процессора: аппаратного переключения задач, хитроумного управления памятью и нетривиальной логики Читать полностью »
Интернациональное программирование на естественных языках
2020-12-05 в 9:26, admin, рубрики: natural language processing, естественный язык, ненормальное программирование, новый язык программирования, Программирование, разработка языков программирования, Семантика, Совершенный кодВ последнее время часто попадаются на глаза статьи о новых языках программирования, а так же различные рейтинги и прогнозы, связанные с популярностью компьютерных языков.
Заявляют о себе и новые инструментальные средства, которые в своей работе используют собственные форматы описания конфигурационных файлов или последовательности выполняемых команд, которые так же очень сильно приближает их к понятию «язык программирования».
Цель написания данной статьи — формулировка ожиданий и возможной реализации абстрактного языка программирования, который может стать универсальным инструментом для общения между компьютером и человеком.
Читать полностью »
Низкоуровневое программирование STM32: от включения питания до «Hello, World»
2020-11-27 в 13:15, admin, рубрики: diy или сделай сам, ruvds_перевод, stm32, Блог компании RUVDS.com, ненормальное программирование, программирование микроконтроллеровВ этом материале я хочу рассказать о том, как писать программы для микроконтроллеров (Microcontroller Unit, MCU) Cortex-M, вроде STM32, используя лишь набор инструментов ARM и документацию, подготовленную STMicroelectronics. У некоторых читателей может появиться вопрос о том, почему кому-то это может понадобиться. Если вам эта идея, на первый взгляд, не показалась очень уж страшной, то, возможно, вам будет интересно то, о чём пойдёт речь в этом материале. И, кстати, подумаем о том, кому и зачем это может пригодиться.
Конечно, разрабатывать программы для MCU STM32 можно с помощью существующих фреймворков. Это может быть ST HAL, обычный CMSIS, или даже что-то, более близкое к Arduino. Но… что тут увлекательного? Ведь, в итоге, тот, кто пользуется каким-то фреймворком, полностью зависим от документации к нему и от его разработчиков. И, с другой стороны, если документация к STM32 кажется кому-то, работающему с этой платформой, так сказать, бредом сивой кобылы, то можно ли говорить о том, что этот человек по-настоящему понимает данную платформу?
Поэтому давайте поговорим о низкоуровневом программировании STM32 и доберёмся от включения питания STM32 до «Hello, World».
Читать полностью »
Russian AI Cup 2020 — новая игра-стратегия для разработчиков
2020-11-27 в 12:01, admin, рубрики: AI, codecraft, Gamedev, raic, russian ai cup, russian ai cup 2020, Блог компании Mail.Ru Group, Занимательные задачки, искусственный интеллект, ненормальное программирование, ПрограммированиеЭтот год трансформировал многие процессы, изменились традиции, привычки. Поменялся ритм, появилась дополнительная неопределенность и напряженность. Но душа IT-специалиста требует разнообразия, и многие разработчики нас спрашивали — будет ли ежегодный чемпионат Russian AI Cup? Будет ли анонс? Какая тема грядущего чемпионата? Брать ли отпуск?
Не без изменений, но в лучших традициях. Накануне старта мы анонсируем один из крупнейших онлайн-чемпионатов современности по программированию искусственного интеллекта — Russian AI Cup. Приглашаем войти в историю!
Читать полностью »
Что за X++? Что за ABAP? Древние языки, про которые интересно слушать, но не дай бог на них писать
2020-11-19 в 14:01, admin, рубрики: abap, forth, Prolog, ненормальное программирование, старое железо
Большая разработка — дело коллективное, и это хорошо. Что бы ни взбесило тебя в условных Go или JS, точно найдется сотня-другая разрабов с такой же болью. Преодолевать ее вместе легче — и когда ломаешь голову над рабочей задачей, и когда просто собираешься с товарищами поныть, как все плохо.
Пишем ОС на Rust. Настройка среды. Бинарник для «голого» железа
2020-11-12 в 9:01, admin, рубрики: Rust, Железо, кросскомпиляция, ненормальное программирование, операционные системы, ПрограммированиеНастройка среды. "Голый" бинарник, или Исполняемый файл без main()
Первый шаг в написании своей ОСи — создание бинарника, не зависящего от стандартных библиотек, это делает возможным запуск кода без ОС — мы же пишем свою.
Оригинал блога разрабатывается на GitHub. Замечания к оригиналу оставляйте на странице Issues репозитория выше, а к переводу — в личке, комментариях или тут. Код, написанный в этой статье, содержится в ветке post-01
.