В языке С есть функции malloc, free и reallocЧитать полностью »
Рубрика «ненормальное программирование» - 7
Пишем на С++ вектор, умеющий расширяться без копирования элементов
2022-11-26 в 14:44, admin, рубрики: c++, linux, memory management, mmap, vector, ненормальное программирование, системное программированиеПишем try-catch в C не привлекая внимания санитаров
2022-11-24 в 11:48, admin, рубрики: C, try catch, ненормальное программированиеВсё началось с безобидного пролистывания GCC расширений для C. Мой глаз зацепился за вложенные функции. Оказывается, в C можно определять функции внутри функций:
int main() {
void foo(int a) {
printf("%dn", a);
}
for(int i = 0; i < 10; i ++)
foo(i);
return 0;
}
Более того, во вложенных функциях можно менять переменные из внешней функции и переходить по меткам из неё, но для этого необходимо, чтобы переменные были объявлены до вложенной функции, а метки явно указаны через __label__
Читать полностью »
Пишем свой ROM BIOS
2022-11-24 в 8:01, admin, рубрики: BASIC, BOOT ROM, ROM, timeweb_статьи, ассемблер, Блог компании Timeweb Cloud, ненормальное программирование, старое железо
Со стародавних времён хотел попробовать создать собственный ROM BIOS, который будет записан в отдельную микросхему и будет выполнять какие-то полезные действия. Например, ROM BIOS установлен в видеокартах (по крайне мере старых), контроллерах дисков и много где ещё — это фактически расширения обычного BIOS. Понимаю, что это всё старьё и тягаться с возможностями современного UEFI бессмысленно, но мне очень хотелось создать свой собственный образ, который находится физически в отдельной микросхеме и работает при старте системы. Поэтому пришлось даже для этих целей найти старый комп.
Когда я только решил влезть в этот вопрос, столкнулся с тем, что достаточно мало толковой информации, которая была бы хорошо и чётко изложена. Возможно, я плохо искал, примеров того, как писать свою программу в бутсектор жёсткого диска было много, а вот толкового мануала по созданию BIOS Extension — кот наплакал.
В этой статье мы с вами разберём создание своего ROM BIOS, дальше я расскажу про тонкости и нюансы, напишу низкоуровневый «Hello world», сделаю настоящий интерпретатор BASIC ROM, который стартует при включении компьютера, как в первых IBM PC.Читать полностью »
Пишущая машинка из телетайпа и Arduino
2022-11-02 в 5:59, admin, рубрики: arduino, consul 254, diy или сделай сам, ненормальное программирование, Разработка под Arduino, реверс-инжиниринг, реле, старое железоConsul 254 похож на принтер, но это не принтер. Ещё у него есть клавиатура, но при этом печатающая часть никак не связана со вводом, поэтому так просто получить что-то на бумаге не выйдет. Эту проблему мы и будем сегодня решать с помощью Ардуино и цветных проводочков. Конечно всё уже украдено до нас, и такую вещь уже описывали в журнале Моделист-Конструктор в 1989 году. Правда при этом использовался компьютер "Специалист", а не Ардуино.
Почему массивы начинаются с нуля
2022-11-01 в 2:39, admin, рубрики: bcpl, C, python, история, массивы, математика, ненормальное программирование, нумерация, ПрограммированиеПроверим это на C.
#include <stdio.h>
int main()
{
int data[3] = {1, 2, 3};
int i = 0;
printf("Array address: %pn", data);
do {
printf("Array[%u] = %pn", i, (void *)(&data[i]));
i++;
} while(i < 3);
}
Получим результат:
Array address: 0x7ffd7c514a6c
Array[0] = 0x7ffd7c514a6c
Array[1] = 0x7ffd7c514a70
Array[2] = 0x7ffd7c514a74
Как первый (нулевой) элемент, так и сам массив находятся по одному и тому же адресу, поскольку 0-й элемент удалён на 0 элементов от начала. Эта связь между указателями и массивами в C настолько тесная, что их даже можно рассматривать вместе.
Однако это ответ на вопрос «зачем», а не «почему». Нумеровать массивы с нуля стали не сразу. Удивительно, но развитие такого простого вопроса не умещается в предложении или абзаце.
Читать полностью »
Rust должен умереть, МГУ сделал замеры
2022-09-30 в 14:35, admin, рубрики: C, holywar, Rust, мифология, ненормальное программированиеВ предыдущих сериях:
Медленно, но верно Раст проникает не только в умы сотрудников больших корпораций, но и в умы школьников и студентов. В этот раз мы поговорим о статье от студента МГУ: https://rustmustdie.com/.
Её репостнул Андрей Викторович Столяров, доцент кафедры алгоритмических языков факультета ВМК МГУ им. М. В. Ломоносова и по совместительству научрук студента-автора статьи.
Я бы сказал, что тут дело даже не в том, что он "неинтуитивный". Дело скорее в том, что компилятор раста сам решает, когда владение "должно" (с его, компилятора, точки зрения) перейти от одного игрока к другому. А решать это вообще-то должен программист, а не компилятор. Ну и начинается пляска вида "как заставить тупой компайлер сделать то, чего я хочу".
Бред это всё.— А. В. Столяров
Всем привет.
В школьном и более продвинутом курсе информатики есть учебный язык - Кукарача. Довольно удачный, для обучения детей программированию. Простой, понятный, визуальные результаты с первой строчки.
Авторы курса сделали только exe-шник под Windows. Когда младший сын начал требовать "Папа научи программировать" принял волевое решение - сделаю свою имплементацию. И сделал.
Че это вообще?
http:–http:–http:–@http:–http:–?http:–#http:–
2022-09-09 в 12:19, admin, рубрики: curl, http, IT-стандарты, url, безумие, браузеры, картинка про стандарты, ненормальное программированиеПару дней назад я опубликовал этот твит:

Учитывая то, насколько много я получил комментов и ответов, я решил разобрать это подробнее. Правда ли это валидный URL? Во что он парсится? Что вообще такое URL?
curl
Начнем с curl. Он разбирает эту строку, как и должен — как валидный URL. Чтобы было понятнее, я раскрасил его составные части:
Ферритовый ROM для самых маленьких
2022-09-09 в 4:05, admin, рубрики: arduino, diy или сделай сам, древнее зло, ненормальное программирование, Отдел Перспективных Разработок, Разработка под Arduino
И снова здравствуйте, дамы и господа. Наш Отдел Перспективных Разработок продолжает свой цикл статей о древних технологиях и опять выходит на связь с очередным передовым творением нашего сумрачного разума приближающим трепетный момент всеобщей строггофикации.
Примеры кошмарного программирования вокруг нас. Выученная беспомощность
2022-09-07 в 9:00, admin, рубрики: AWS, gzip, ruby, ruvds_статьи, stripe, zstd, Блог компании RUVDS.com, единая точка отказа, костыли, ненормальное программирование, принцип DRY, принятие решений, Программирование, разработка под windows, реестр windows, системное программирование
Нет в мире совершенства. Куда ни глянь — всюду костыли и компромиссы. Вроде каждый в отдельности хочет сделать как лучше, но чем больше участников — тем сильнее хаос…
Возьмём классический пример — реестр Windows. Этот странный артефакт инженерной мысли представляет некое подобие иерархической БД для хранения абсолютно всех настроек — и системных, и приложений, и драйверов. Центральное бинарное хранилище заменило массу файлов .ini, разбросанных по всей системе и должно было упростить жизнь. Но вышло наоборот. И глядя на монструозный тормозящий конструкт, возникает только один вопрос: как это исправить? Ответ тоже простой: «Если вкратце, то никак». И так во всём. Мы создаём монстров, а потом не можем от них избавиться.
Читать полностью »
