Главная Юзердоски Каталог Трекер NSFW Настройки

Программирование

Ответить в тред Ответить в тред
Check this out!
<<
Назад | Вниз | Каталог | Обновить | Автообновление | 324 32 133
Единственный тред по СИ clang /clang/ Аноним 08/01/26 Чтв 03:00:43 3619616 1
channels4profile.jpg 39Кб, 900x900
900x900
photo2026-01-08[...].jpg 26Кб, 650x612
650x612
photo2026-01-08[...].jpg 51Кб, 640x780
640x780
Тред для всех кто хочет погрузиться в низкоуровневое и системное программирование дедушки си

Обсуждаем чужие гитхабы, коды, программирование микроконтроллеров.

сам учился на степике, всем советую прочитать книгу Брайана Кернигана и Денниса Ритчи «Язык программирования Си»

ЗАДАВАЙТЕ ВОПРОСЫ И ПОЛУЧАЙТЕ ОТВЕТЫ!
Аноним 08/01/26 Чтв 03:03:06 3619617 2
Аноним 08/01/26 Чтв 03:06:16 3619620 3
неплохие примеры кодов в репозитории))
Аноним 08/01/26 Чтв 09:04:08 3619664 4
>>3619620
ахахах да прикольно , ржу нимагу)))) давайте,встречу айтишников сделаем ,пивка по пьем ёпт)))))
Аноним 08/01/26 Чтв 18:34:06 3619995 5
Стоит ли читать Столярова 2 том?
Аноним 08/01/26 Чтв 19:34:41 3620026 6
>>3619995
ну если нужно что-то более менее простенькое прочитать, то норм
вавилен 09/01/26 Птн 01:22:26 3620188 7
дано: плата с микроконтроллером esp32 и допплеровский датчик движения rcwl-0516. щас расскажу что с этим делать)

для начала схема подключения:

gnd (rcwl-0510) - gnd (esp32)
vin - 5v
out - любой свободный gpio

суть в том, что при обнаружении движения, датчик выдает напряжение на контакт OUT, программно мы опрашиваем наш gpio pin, и при возникновении там логической единицы понимаем, что китайцы прислали рабочий датчик.

вот так максимально просто это реализовано на си:

```
#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_log.h"
#include "driver/gpio.h"

#include "log.h"

#define MOTION_SENSOR_GPIO 22

static const char TAG = "GOVN0_SL0NA_main";
void app_main(void)
{
gpio_config_t io_conf = {
.intr_type = GPIO_INTR_DISABLE,
.mode = GPIO_MODE_INPUT,
.pin_bit_mask = (1ULL << MOTION_SENSOR_GPIO),
.pull_down_en = GPIO_PULLDOWN_ENABLE,
.pull_up_en = GPIO_PULLUP_DISABLE,
};
gpio_config(&io_conf);

int motion_sensor_state = 0;
int previous_state = 0;

while (1) {
motion_sensor_state = gpio_get_level(MOTION_SENSOR_GPIO);

/
регистрируем движение только при переходе с 0 на 1 /
if (motion_sensor_state == 1)
{
TickType_t current_time = xTaskGetTickCount();
uint32_t time_ms = current_time
portTICK_PERIOD_MS;
ESP_LOGI(" -- ", "Motion sensor detected motion! Time: %lu ms (%.2f seconds)\n",
(unsigned long)time_ms, time_ms / 1000.0f);
}

ESP_LOGI(" -- ", "Motion sensor state: %d\n", motion_sensor_state);

vTaskDelay(1000 / portTICK_PERIOD_MS);
}
}
```

из логов видно, что все работает:

```
I (283) main_task: Calling app_main()
I (283) -- : Motion sensor state: 0

I (4283) -- : Motion sensor state: 0

I (5283) -- : Motion sensor state: 0

I (6283) -- : Motion sensor state: 0

I (11283) -- : Motion sensor detected motion! Time: 11010 ms (11.01 seconds)

I (11283) -- : Motion sensor state: 1

I (12283) -- : Motion sensor detected motion! Time: 12010 ms (12.01 seconds)
```


всё лучшее - на СИ!
Аноним 09/01/26 Птн 07:59:14 3620215 8
>>3620188
>vTaskDelay(1000 / portTICK_PERIOD_MS);
>while (1)
В гпио же ивенты были?
Аноним 09/01/26 Птн 08:31:09 3620219 9
вавилен 09/01/26 Птн 12:04:06 3620287 10
>>3620215

это так, простенький пример, лучше конечно создавать отдельную задачу для опрашивания gpio и очередь для передачи событий из прерывания в задачу
Аноним 09/01/26 Птн 13:49:28 3620337 11
интересный пост на хабре про умный дом с есп32 вавилен 09/01/26 Птн 23:40:52 3620683 12
Аноним 12/01/26 Пнд 09:47:08 3621833 13
Почему в си используются только строки ASCIIZ? Что если я хочу строки в стиле паскаля: размер строки и массив символов? Допустим даже напишу свои функции для работы с такими строками, но строковые константы (которые в двойных кавычках, типа "привет, мир!") всё равно останутся с '\0' в конце. Как поменять формат строковых констант на свой?
Аноним 12/01/26 Пнд 18:37:05 3622290 14
>>3621833
У строк в Паскале есть один минус. Они ограниченны, не больше 255 символов. В С строки в этом смысле лучше, ты войну и мир вместить в одну строку можешь. В Паскале придется мастерить что-то динамическое, типа связного списка.
>но строковые константы
Писать наверное какой-нибудь конвертор для них, хз.
>Как поменять формат строковых констант на свой?
Скорее всего никак. Только компилятор переписывать.
Аноним 12/01/26 Пнд 19:36:56 3622333 15
>>3622290
Хотя в С тоже придется динамический массив делать для войны и мира. Но ты понял, это просто массив, а не какая-то нетривиальная структура.
Но в новом паскале наверное это как-то решили. Последний раз программировал ещё на турбо.
Аноним 13/01/26 Втр 08:46:17 3622522 16
>>3622290
Наверно только генерировать массив из отдельных символов, типа
const char str[] = { 'H', 'e', 'l', 'l', 'o' };
noSANITIZER вавилен 13/01/26 Втр 17:44:54 3622887 17
изображение.png 86Кб, 881x572
881x572
Сегодня выяснилось что в нашем mips-тулчейне отсутствуют библиотеки санитайзеров (libasan.so,..).

для примера возьмём такую программку с явной проблемой:

int main(void)
{
int arr[5];
for (int i = 0; i <= 5; i++) {
arr = i;
}
return 0;
}


имеется выход за пределы массива

компилируем с необходимыми флагами:
gcc test_file.c -fsanitize=address -g -O0 -o test_file

запускаем и видим ошибку времени исполнения:

==352074==ERROR: AddressSanitizer: stack-buffer-overflow on address 0x7f2e77c00034 at pc 0x5563dcbb222e bp 0x7ffc0c6fa970 sp 0x7ffc0c6fa968
...
...


именно так это и должно работать, но при попытке собрать эту программу нашим компилятором:

/opt/mipsel-unknown-linux-gnu/bin/mipsel-unknown-linux-gnu-gcc nsm/test_file.c -fsanitize=address -g -O0 -o test_file
/opt/mipsel-unknown-linux-gnu/bin/../lib/gcc/mipsel-unknown-linux-gnu/12.2.0/../../../../mipsel-unknown-linux-gnu/bin/ld: cannot find libasan_preinit.o: Нет такого файла или каталога
/opt/mipsel-unknown-linux-gnu/bin/../lib/gcc/mipsel-unknown-linux-gnu/12.2.0/../../../../mipsel-unknown-linux-gnu/bin/ld: cannot find -lasan: Нет такого файла или каталога
collect2: error: ld returned 1 exit status

на фотке переписка с тимлидом. че делать
Аноним 13/01/26 Втр 18:32:58 3622932 18
>>3622887
>Белые люди изобрели божественный абсолютно безопасный Раст
>Продолжать пользоваться дырявыми С/С++
Вы заслуживаете все ваши беды.
Аноним 13/01/26 Втр 20:29:02 3622975 19
>>3622932
Раст успел уже обосраться и в ядре линупса и в сетевой инфраструктуре амазона. Ни какой безопасностью там и не пахнет, если программист накосячил, то раст не спасает. А вот мозги, при написании программ, выносит изрядно.
Аноним 13/01/26 Втр 20:48:49 3622989 20
>>3622932
>Белые люди
Ты не охуел там? Тебя пидорасты за такой хейтспич закэнселят, рэйсист неинклюзивный.
Аноним 14/01/26 Срд 05:22:51 3623347 21
>>3622932
Ты просто бык. Быку кнут. А плюсы для тех кто по натуре своей свободу любит.
Аноним 15/01/26 Чтв 12:34:01 3624457 22
>>3620026
А есть что-то более сложное? Там вроде довольно много инфы написано. Пожалуй, даже больше, чем в типовых книгах по си.
Аноним 15/01/26 Чтв 14:17:26 3624563 23
484-0[1] 14Кб, 484x668
484x668
Аноним 15/01/26 Чтв 22:27:25 3624985 24
>>3619616 (OP)
Существует ли книга, после прочтения обложки которой вы не сказали "нуу и хуйня ебаная"?
Аноним 16/01/26 Птн 01:28:15 3625080 25
Аноним 17/01/26 Суб 21:42:46 3626325 26
>>3621833
Странно. Вот тип строки как в паскале, ограничение на длину строки - 4 гига.
struct strptr
{
char *begin;
uint32_t len;
};

осталось написать функции для сравнения, разбивки на токены, поика символов и всё - класс готов.
Можно будет взять кусок текста и пройтись по нему кодом, растащить на токены, и при том ничего никуда не копировать.

Да и от сегфолта с переполнением буфера оно помогает
Аноним 18/01/26 Вск 12:29:13 3626595 27
>>3626325
Всё верно, речь больше про строковые константы.
Аноним 18/01/26 Вск 13:41:03 3626652 28
>>3619616 (OP)
@monkey обосри язык программирования СИ
Аноним 18/01/26 Вск 22:25:22 3627129 29
2026 год, в ситреде платиновая дрочка строк.
Убирать 0 из внутреннего буфера = стрелять себе в ногу, если твои строки не собираются жить в песочнице, а логика с оплатой размера строки, но экономии 1 байта...
Аноним 19/01/26 Пнд 12:24:15 3627378 30
>>3627129
Там нет экономии в 1 байт, потому что он используется для хранения размера строки, а на деле 1 байта мало, поэтому используют 2 или 4. Так что напротив расход по памяти выше.
Аноним 24/01/26 Суб 20:06:21 3631694 31
Сконпелируйте энто сначала как есть. Работает как ожидается. Затем у последнего printf уберите \n и сконпелируйте заново.

#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/epoll.h>
#include <linux/input.h>
void main () {
struct input_event kbev;
struct epoll_event epev;
int kbfd = open("/dev/input/event0", O_RDONLY | O_NONBLOCK);
if(kbfd < 0) {
printf("Failed open event0\n");
return;
}
int epfd = epoll_create(1);
if(epfd < 0) {
printf("Failed to create epoll\n");
return;
}
epev.data.fd = kbfd;
epev.events = EPOLLIN;
if(epoll_ctl(epfd, EPOLL_CTL_ADD, kbfd, &epev) != 0) {
printf("Failed to configure epoll\n");
return;
}
int evn;
for(;;) {
evn = epoll_wait(epfd, &epev, 1, 0);
if(evn) {
if(evn == -1) {
printf("epoll_wait error");
return;
} else if(evn > 0) {
read(kbfd, &kbev, sizeof(struct input_event));
printf("%d\n", kbev.time.tv_sec);
}
}
}
close(epfd);
}
Аноним 31/01/26 Суб 19:53:02 3634597 32
плохой язык. в те года можно было сделать лучше, примеры были. лисп пацкаль мл. один только факт, что в недавних сырцах юниха 4 нашли уязвимость говорит о многом о языке. юних кста тоже кал и всё что с ним связано худшее, даже в те времена уже были системы лучше.
Аноним 01/02/26 Вск 11:22:08 3634890 33
>>3634597
Ну и тем не менее он выстрелил так, что большинство базового ПО написано на нем и произошедшем от него С++.
Аноним 01/02/26 Вск 22:15:27 3635469 34
>>3634597
>нашли уязвимость
Т.е. если появляется уязвимость, то это вина языка, на котором написано по?
Аноним 01/02/26 Вск 23:52:42 3635491 35
>>3622932
Напомни, где пидрРаст-тред. Я его найти не могу.
Аноним 02/02/26 Пнд 08:37:32 3635576 36
>>3635469
да. юних же писали сами создатели языка и обосрались. и тогда уже были лиспы, паскаль, форт, фортран, апл, алгол, симула, пролог, смолтолк даже мл хоть и вышли примерно в одно время, они все безопасные и си в 72м это не си в 78м, когда все эти языки уже были, те уже тогда си был отсталым калом.
но си уже так сильно всё засрал, что похуй, это уже не исправить для этого надо убить все сиподобные языки, уничтожить весь софт на них, убить всех программистов, уничтожить всё железо и начать заново. хотя новые сиподобные языки норм типа шарпа
Аноним 02/02/26 Пнд 08:54:02 3635583 37
>>3635576
>типа шарпа
Более каловый язык ещё поискать. Это буквально синтаксическая помойка, куда тащат абсолютно бесполезный сахарок, ломая изначальную задумку.
Аноним 02/02/26 Пнд 09:41:31 3635591 38
>>3622932
>безопасный раст
А что делать с небезопасным растом?
Аноним 02/02/26 Пнд 15:06:00 3635778 39
>>3635576
Давно в тематике такого бреда не видал.
Аноним 02/02/26 Пнд 16:42:51 3635870 40
>>3635576
Какие ОС написаны на этих "безопасных" языках? Си создавался под конкретные нужды - писать ОС на языке высокого уровня, а не на ассемблере. Также удалось добиться определенной степени кроссплатформенности.
Аноним 02/02/26 Пнд 20:04:33 3635978 41
>>3635576
Очень много жира с экрана потекло. Очень много
Аноним 03/02/26 Втр 15:21:45 3636315 42
>>3635870
Под Лисп даже свое железо делали
>>3635491
> где пидрРаст-тред. Я его найти не могу
реально, где? Тоже искал сегодня вопросик задать
Аноним 04/02/26 Срд 15:42:14 3637000 43
>>3635870
на чём угодно можно писать ос. надо портировать виртуальную машину, в си конретной нет, но есть модель пдп11 и надо портировать библиотеки например стандартную библиотеку. как это сделать? на ассемблере в любом случае для любого языка.
Аноним 04/02/26 Срд 16:56:27 3637034 44
>>3637000
>на чём угодно можно писать ос.
>надо портировать виртуальную машину
Мне кажется тебе стоит подтянуть знания в этой области прежде, чем писать подобные утверждения.
Аноним 06/02/26 Птн 21:33:52 3638884 45
>>3637034
шиз как ты портируешь языкнейм на платформунейм? все языки построены по принципу, что они выполняются на абстрактной машине в этом и суть абстратных машин они работают с языком и код пишется для них. на жабе под жвм, на си под пдп-11 это модель во что транслируется похуй. поэтому для порта надо чтобы платформа соотвествовала этой модели.
Аноним 06/02/26 Птн 23:09:23 3638931 46
>>3638884
сделать компилятор/препроцессор/постпроцессор/чтоугодно
Посмотри на котлин, он умеет компилироваться под джвм, джс и ллвм, потому что компилятор имеет разные бэкенды.
мимо
Аноним 07/02/26 Суб 08:35:24 3639093 47
>>3638884
Си транслируется в машинный код конкретной машины. Что gcc, что clang, что msvc. Ни в какую pdp-11 никто ничего не транслируется, если ты не пользуешься древним си, который писали под pdp-11.
Причём под каждую платформу пишут свой компилятор си. Например, под ZX Spectrum тоже есть си, но из-за ограничений машины он там даже стандарт не поддерживает и очень урезанный по возможностям.
А джава с джв - это совсем другой мир. Это языки под виртуальные машины для которых нужна работающая ОС, которая будет выполнять код этой вм. Ни какую ОС ты не напишешь, потому что без ОС твоя жвм даже не запустится. Это сугубо прикладная программа. А си - это системный язык, на котором можно написать практически что угодно.
Аноним 09/02/26 Пнд 16:36:26 3640769 48
Гайс, я собираю shared object (допустим libmylib.so), потом бинарь, к которому линкую библиотеку, находящуюся в той же папке. -L. -lmylib
Линкер отрабатывает, ошибок не выкидывает.

При исполнении бинаря падает ошибка, что библиотека не найдена, хотя она в папке с бинарём лежит.
> error while loading shared libraries: libmylib.so: cannot open shared object file: No such file or directory

Кто объяснит поч так происходит? При исполнении поиск
Аноним 09/02/26 Пнд 18:13:58 3640845 49
>>3640769
Возможно дело в переменных окружения. Попробуй добавить директорию с библиотекой в LD_LIBRARY_PATH
Аноним 10/02/26 Втр 00:09:20 3641076 50
>>3640845
Спс, разобрался, добавил локальную диру через rpath.
Аноним 10/02/26 Втр 19:25:50 3641704 51
>>3639093
>>3638931
о том и речь. трансляция в промежуточный код, который должен отображаться на целевую архитектуру и проблема в точности и качестве такого отображения. и от этого же зависят требования к рантайму. а для ос всё равно придётся писать на языке платформы.
Аноним 25/02/26 Срд 19:22:09 3651724 52
>советую прочитать книгу Брайана Кернигана и Денниса Ритчи «Язык программирования Си»
Мы игнорируем тот факт что ее можно прочитать только если ты уже знаешь Си потому что там задачки +- фулл бесполезные?
Аноним 27/02/26 Птн 20:23:59 3653126 53
>>3635576
Как бы не хотелось согласиться, попробуем восстановить реальную ситуацию, которая имела место в то время.
>лиспы
Тормозной скрипт, для которого только-только научились писать вменяемый GC. Требует передового железа, иначе пригоден лишь как DSL для экспертных систем без строгих требований к производительности.
>паскаль
Учебный язык. За пределами учебных задач такая же байтопараша, как си.
>форт
DSL для написания встраиваемых систем. В некоторых задачах тормозит, сцука.
>фортран
Хорош только библиотеками. В остальном кривая параша, которая с самого начала разрабатывалась бессистемно. В нём даже рекурсии не было, блеать.
>апл
DSL для математических расчётов. Да ещё с GOTO.
>алгол
Алгол 60 - неюзабелен из-за call by name, который очень тяжело оптимизировать. Алгол 68 - слишком сложный, был потеснён Паскалем.
>Симула
См. Алгол 68.
>пролог
Подмножество Лиспа, расширенное недетерминизмом и тормозной унификацией. Юз кейсы ещё уже, чем у Лиспа.
>смоллтолк
Экзотичен как Симула и тормознут как Лисп.
>мл
DSL для доказательств теорем, о котором за пределами Эдинбурга вообще никто не знает. Если не ошибаюсь, в первых версиях даже мутабельных переменных не было. Тормозит как Лисп (в который, собственно говоря, и транслируется).
Аноним 28/02/26 Суб 11:03:42 3653460 54
>>3651724
Если не стесняться гуглить сложные моменты, то там нет ничего такого чего нельзя было бы освоить с нуля. Ну разве что пара алгоритмов, которые можно либо скипнуть либо тоже погуглить. Задачки можно решать с отладчиком если что-то непонятно. А вообще процентов 70 книги это очень простые упражнения. Самый главный плюс КиР в том что она короткая - 150-200 страниц. Тот же Прата уже в 5 раз длинее на все 1000 страниц.
Аноним 28/02/26 Суб 14:08:09 3653548 55
>>3653126
Как ты удобно всё перечислил, но забыл про Ada который как раз и разрабатывался как безопасный в отличие от паскаля.
Аноним 20/03/26 Птн 11:22:34 3668048 56
Ребята, я уже 3 месяц изучаю Си.

И это бомба. Я забыл про все языки на которых писал до. Зачем, когда можно обращаться указателями на указатели и быть по настоящему счастливым, а не вот это вот все.
20/03/26 Птн 11:36:26 3668063 57
>>3653126
SML был очень годным языком, первый и единственный юзабельный со статической типизацией. У Аппеля он компилировался в машкод для мипса и спарка.
Аноним 21/03/26 Суб 01:50:16 3668721 58
>>3622932
Хуесос малолетний, ты даже в глаза не видел раст.
Аноним 21/03/26 Суб 01:56:22 3668723 59
>>3668048
Попробуй ассемблер на x86
Кончать будешь каждый день.
Аноним 21/03/26 Суб 01:58:45 3668724 60
>>3653126
Чмохенс, ты даже не понимаешь, что там написано. Нейросеть хуева .
Аноним 25/03/26 Срд 10:51:27 3672044 61
>>3651724
Насколько тяжело войти в 2026 в низкоуровневое программирование,есть базовое знание си ,и булевой алгебры и понимание архитектуры фон Неймана но нет коммерческой практики ,и есть ли ейджизм при трудоустройстве?
27 лет
Аноним 25/03/26 Срд 10:53:31 3672045 62
>>3672044
>>3653460
В керигане ничего сложного нет я даже не уверен что его достаточно
Аноним 25/03/26 Срд 11:31:18 3672070 63
>>3672044
>Вкат в низкоуровневое программирование
Достаточно базового знания бурне егейн шелла https://habr.com/ru/articles/1004854/
>>3672045
Си - довольно сложный язык на самом деле.
Аноним 25/03/26 Срд 13:48:30 3672241 64
>>3672044
Ты по масти программист или вкатунец? Вкатунца сходу попалят, а программист на 99-й фене петики покажет с гитхабовскими звездами.
Аноним 25/03/26 Срд 19:18:18 3672531 65
>>3672241
На звёзды в гитхабе никто не смотрит, их можно за копейки купить
Аноним 26/03/26 Чтв 17:48:56 3673229 66
Использую Си, когда нужно переписать или скрыть какую-то логику на Питоне. В повседневных и бизнес задачах сейчас уже в основном бесполезный: телеграм бота, бэкенд вебсайту, десктопное приложение вы на нем писать не будете.
Аноним 26/03/26 Чтв 18:06:37 3673238 67
Где сейчас Си и Си++ можно исполтзовать, если речь не о микроконтроллерах и всякой дедовской хйне:

Модификация кода известных программ, например десктоп клиента Телеграма написан на С++, некоторые создают кастомные клиенты, модифицируя разные моменты в телеграмме: пример Котатограм, некограм и тд.

Или тот же браузер Мозилла, на С++, кто-то модифицирует его код, чтобытна базе его создать свой браузер, например с целью большей приватности, например Tor или Camoufox.

Разработка VPN приложений, всяческие средства обзода блокировкой все пишутся на Си или Си++, там где нужно натнизком уровне изменять настройки сети.

Разработка Игр для Андроид. Сам код игры может быть написан на Си++, собран в бинарный файл типа lib.so, другая часть, сам интерфейс написан на Java, и через бридж JNI вызываются функции уже из бинарного файла.

И в общем и целом где нужна работа с графикой, звуком, сетью, все пишется на Си/Си++.

Примеры: PhotoShop, Gimp, VLC player и тд.

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

Черные хакеры используют Си/Си++, чтобы писать вредоносное ПО. Хотя тут имхо, любой язык подойдет, тот же питон или джаваскрипт, на любом можно сделать малварь.

Вот это основные наверное направления, ради в которых можно вписаться в изучение Си/Си++.
Аноним 26/03/26 Чтв 18:11:22 3673245 68
>>3673229
На cython можно, но я не особо его распробовал.
>>3673238
Почему у тебя в одной строчке си и плюсоговно?
Аноним 27/03/26 Птн 16:27:45 3673924 69
>>3673238
>где нужно быстро и грязно, там С
Упростил твой пост
Аноним 27/03/26 Птн 19:44:46 3674047 70
Cython отличная тема. Он транспиллирует код Python в Си, а затем в бинарный файл (.pyd/.so).

Я его использую, когда к примеру мне нужно продать какую-то программу, но при этом сохранить контроль над интеллектуальной собственностью.

Чтобы покупатель не нашел какого-то другого программиста, не модифицировал код, не "дал другу погонять", не перепродал.

Поэтому да отличная тема, всем советую, кто на Python пишет, но тред не про него конечно.

А по Си, ну честно сказать, тяжело на нем писать, даже те, кто на нем много лет пишет, говорят, что иногда лучше сделать на php, python, js, c# если это сайт/бот/десктоп. Но области применения по прежнему есть, выше расписал.
27/03/26 Птн 21:37:06 3674113 71
>>3668063
SML появился только в начале 80х, а современный стандарт вообще только в 90е. До него был только просто ML, на котором ничего, кроме расширений для пруверов, не писали.
>первый и единственный юзабельный со статической типизацией
В некоторых задачах сабтайпинга не хватает, а так согласен.
Аноним 28/03/26 Суб 16:03:24 3674467 72
>>3674047
Ну такая себе шутейка.
Аноним 28/03/26 Суб 16:31:49 3674495 73
>>3674047
Какой в итоге размер твоих файлов получается?
Аноним 29/03/26 Вск 18:27:25 3675134 74
>>3635576
>лиспы
годнота кста
Аноним 31/03/26 Втр 12:38:07 3676262 75
>>3674495
Какая нахуй разница?
Аноним 31/03/26 Втр 13:52:07 3676308 76
>>3673238
>микроконтроллерах и всякой дедовской хйне:
Ну как дедовской, вся индустрия это си и плюсы по-сути: промышленные роботы всякие, тачки, самолёты.
Всё что ты расписал это какая-то хуета для школьников.
Аноним 31/03/26 Втр 14:17:22 3676324 77
>>3676308
У того дебича си и c++ это одно и то же.
Аноним 31/03/26 Втр 18:07:10 3676520 78
>>3676324
в сути своей оно так и есть
Аноним 01/04/26 Срд 15:15:03 3677108 79
>>3676520
Мда мхех, понятно всё.
Аноним 01/04/26 Срд 17:16:31 3677278 80
>>3677108
>плюсовик порвался
Аноним 05/04/26 Вск 18:37:55 3679972 81
>>3622887

Пересобирать gcc или искать готовый бинарник
Аноним 06/04/26 Пнд 04:48:18 3680174 82
>>3622932
С++ датчанин сделал, куда уж белее?
Аноним 06/04/26 Пнд 23:15:36 3680958 83
>>3680956 →
наваливаю базы:
C это ООП язык
Java это истинное развитие C
new в цикле это моветон
Аноним 07/04/26 Втр 20:36:51 3681893 84
Аноним 08/04/26 Срд 09:26:30 3682140 85
А я люблю называть переменные new. И что вы мне сделаете?
Аноним 08/04/26 Срд 17:09:04 3682682 86
Аноним 08/04/26 Срд 18:49:21 3682768 87
>>3673238
>некограм
Это мобильынй клиент на джаве, шизик. Дальше не читал
Аноним 20/04/26 Пнд 22:20:56 3690601 88
>>3619616 (OP)
>сам учился на степике
На каком/-их курсе/-ах?
Аноним 21/04/26 Втр 03:38:51 3690642 89
>>3668048
Си - это чистое сияние разума, очищенное созерцанием истинной пустоты войда от привязанностей к паттернам и типам, от страстей исключений и суеты функциональной ереси. По мере просветления ты ощутишь, как последние оковы стандартной библиотеки спадают с тебя и ты обретаешь истинную бинарность.
Аноним 21/04/26 Втр 19:47:34 3691030 90
Аноним 21/04/26 Втр 21:05:22 3691079 91
>>3691030
посредственный, спок
Аноним 29/04/26 Срд 10:39:09 3696144 92
Абсолютно зеленый долбоеб который вообще нихуя не понимант в программировании. Прям 0

Как язык работает с железом? Может ли он в целом делать это напрямую? Например с сетевой картой
Аноним 29/04/26 Срд 12:11:24 3696218 93
>>3680958
ООП - это когда абсолютно бессмысленная хуйня придуманная только для того чтобы одного недопрограммиста можно было легко заменить на другого.
Вообще орал когда читал СтраусТРАПА и он такой пишет - ну Си короче сложный, я придумал си с классами чтобы проще было нахуй.
Аноним 29/04/26 Срд 12:13:48 3696220 94
>>3696144
>железом
Что такое железо?
>Может ли он в целом делать это напрямую?
В мире погроммистов напрямую - это работа с регистрами устройств, у тебя, допустим, есть устройство с регистрами доступное по такому то адресу, на деле ты будешь долбиться через интерконект (или шину).
>Например с сетевой картой
Да, вот читни исходник для примера https://github.com/torvalds/linux/tree/master/drivers/net/ethernet/intel/e1000
Аноним 29/04/26 Срд 12:14:37 3696221 95
>>3696218
В Си тоже можно vtbl напихать, это будет та же ООП хуйня.
Аноним 29/04/26 Срд 13:02:31 3696257 96
изображение.png 66Кб, 1024x480
1024x480
>>3696218
Предлагаю тебе парсер мат. выражений написать на чистом Си. Особенно AST весело на Си писать. Тебе либо придется делать костыльный аналог полиморфизма, делая свою vtable, либо почувствовать себя магом и кастовать типы, молясь нигде не проебаться.
Аноним 29/04/26 Срд 14:49:42 3696371 97
>>3696257

Тебе скажут что есть дидовые YACCи прочие дидовые BISON и FLEX.
Аноним 29/04/26 Срд 19:53:09 3696632 98
>>3696257
У тебя от джаваскрипта мозг вытек нахуй. Берешь и пишешь свич по int nodeType, у тебя их всего три.
Аноним 29/04/26 Срд 20:35:26 3696678 99
>>3696632
Окей, у тебя есть struct Node { int num, type; Node* lhs, rhs }. Ты оформил 5 кейсов, 4 операции арифметические и взятия числа.
Потом ты подумал. Какой же калькулятор без 1) мат. констант 2) встроенных дефолтных функций вроде корней, синусов и пр.
Как выкручиваться будешь?
Аноним 29/04/26 Срд 20:55:19 3696696 100
>>3696678
У меня будет, скажем, штук 20 свичей по инту вместо полиморфизма. Я добавляю новую операцию, надо поправить все свичи. Без правок программа должна упасть на тестах. Если не падает, пишу тесты, которые уронят. И так пока все не заработает.
Необходимость ООП сильно преувеличена. В процедурном коде у тебя весь алгоритм перед глазами, хоть там и простыня ифов. С ООП логика размазана по сотням визиторов в сотнях файлов, пара строк на каждый, охуеешь собирать этот пазл.
Аноним 29/04/26 Срд 21:04:39 3696698 101
>>3696696
База. Ты настоящий программист. Не то что эти соевые ООП-петушки.
30/04/26 Чтв 09:42:35 3696969 102
>>3696698
Всё правильно. Единственный случай, где нужен динамик диспатч - это если количество кейсов заранее неизвестно и они подгружаются динамически (плагины), так что схожий код в одном месте принципиально не поместить. Иначе просто пиши свитч.
sage Аноним 01/05/26 Птн 15:26:52 3697971 103
если вы искали задачу для пет проекта/вката, то их есть у меня

ни для кого не секрет, что все мы периодически слушаем музяку. кто то по патпиське, кто то качает с зайцевнет. для тех кто качает - некоторые музыкальные коллективы/альбомы/отдельные треки звучат тише/громче остальных

предлагаю вам подумать над проблемой автогромкости (на базе карманного аудиоплеера с гулькиным хуем мощностей)
Аноним 01/05/26 Птн 16:29:04 3698013 104
>>3697971
> музяку
говно для быдла
Аноним 01/05/26 Птн 21:21:10 3698191 105
>>3677278
Так не рвись, говно
Аноним 02/05/26 Суб 11:09:50 3698390 106
>>3696632
В православном ocaml так и пишут парсеры, но там это называется паттерн матчинг на типах.
Аноним 02/05/26 Суб 11:12:49 3698391 107
Аноним 02/05/26 Суб 15:42:15 3698528 108
>>3698391
Это для разговоров по телефону, а не музыки. Музыка по дизайну не одной громкости, выравнивая громкость ты испортишь музыку, всё равно что слушать нейрокал вместо музыки, свинское говноедство.
Аноним 02/05/26 Суб 16:11:09 3698555 109
>>3698528
>выравнивая громкость ты испортишь музыку
вот тут поподробнее пжалста
тоесть выходит по вашим словам, что ежели я к примеру слушаю элджея на волуме 20 и потом играет агата кристи на тех же волумях но тихо, то прибавив волумя я прорываю пространственно временной континуум и получаю нейрокал?

таблетки
Аноним 02/05/26 Суб 16:35:25 3698564 110
>>3698555
Это значит ты не можешь слушать стримы, сначала надо закешировать треки полностью и их проанализировать целиком, и только потом слушать. Так и делают музыкальные плееры, сначала сканируют всю фонотеку, а потом только слушаешь. А в реальном времени регулировать громкость, это для разговоров по телефону, чтобы речь было нормально слышно, а музыку это всирает, тупая свинья.
Аноним 02/05/26 Суб 16:43:11 3698568 111
>>3698564
>Так и делают музыкальные плееры
ни один плеер так не делает, не надо вводить анона в заблуждение
вот играет элджей с айфона по яндекспатпиське и вот агата кристи еле слышно. запускаем тот же самый тест на плеере хуй-сунь-в-чай: результат тот же. и в очередной раз я спрошу, каким образом прибавка волумев на той же тихой агате кристи всирает ее, ответь уж нам, шизло?
Аноним 03/05/26 Вск 01:48:31 3698757 112
>>3698568
Дебил ебучий, replay gain включи.
Аноним 03/05/26 Вск 08:00:18 3698789 113
>>3698757
программирывовай, говно инцельское
Аноним 07/05/26 Чтв 17:31:03 3701751 114
Кокой дурак придумал звездочки создавать указатели, но потом вызывать их без звездочки, но зато для разыменования опять использовать звездочку? Типо лишних символов на клаве не хватило?
Чтоб потом когда кто-то будет читать вложенные друг в друга указатели нельзя ничего было понять?
Аноним 07/05/26 Чтв 18:36:23 3701775 115
>>3701751
Дыа🤡 у них были телетайпы🖕🖕🔥иногда даже без звездочек✨
Аноним 07/05/26 Чтв 18:39:24 3701777 116
>>3701751
>но потом вызывать их без звездочки
так вызывай со звёздочкой
Аноним 07/05/26 Чтв 19:28:25 3701806 117
>>3701777
Так это тогда будет не переменная-указатель где хранится адрес, а разыменованный указатель.
Аноним 07/05/26 Чтв 19:57:39 3701839 118
Встретил два вариант написания:

char c;
char
c;


С точки зрения компилятора одно и то же, но какая версия все-таки лучше?
Аноним 07/05/26 Чтв 19:58:14 3701840 119
>>3701839
сука звезды пропали

char c;
char
c;
Аноним 07/05/26 Чтв 19:59:13 3701841 120
>>3701840
Короче, разметка не дает написать.
Но смысл такой что в одном варианте звездочка рядом с типом, а в другом рядом с именем переменной.
Аноним 08/05/26 Птн 05:38:07 3702026 121
>>3701841
Есть 2 стула
ХЗ как правильно, я предпочитаю рядом с переменной,
плюс возможны конструкции

char c1, * c2, c3.
А если нарисуешь рядом с char, то указателем будет только первая переменная.
Аноним 08/05/26 Птн 10:49:38 3702141 122
>>3701839
Звездочка относится к идентификатору, поэтому должна быть к нему ближе.
int i, @p, @@pp;

typedef int @ip_t, @@ipp_t;
Аноним 08/05/26 Птн 16:16:34 3702577 123
>>3701751
полагаю тут дело в кривой нотации
звездочка при объявлении указателя относится к типу, а не к имени указателя тип_звезда указатеельнейм
вот такой должны была быть трушная нотация, но пендосы все проебали
дело закрыто
Аноним 08/05/26 Птн 16:29:01 3702589 124
и вероятно вся эта путаница из за того, што компилер неверно обрабатывает оператор запятая конкретно в этом кейсе

char\ psymbol, psomeshit; //поидее должно быть так, ведь мы создаем две переменные типа указатель на char, но компилер спотыкается об оператор запятая в этом месте и нам приходится явно протягивать объявление типа дальше

char \
psymbol, \psomeshit; //тут вы скажете что звездочка относится к имени переменной, но тогда конструкция \psymbol = &strarr[3] должна корректно работать, однако этого не происходит, отсюда мы и делаем вывод, что звездочка относится к типу, а не к имени переменной

ваще эт древний холивар
Аноним 08/05/26 Птн 16:56:49 3702606 125
image 234Кб, 1000x625
1000x625
а что если звезда не относится ни к типу, ни к переменной? а является сокращенной записью каста к типу, как (int)someshit только \someshit
Аноним 08/05/26 Птн 21:21:48 3702848 126
>>3701839
Мне нравилось рядом с типом ставить, это же логично. Особенно когда const используешь
const char✰ p = нельзя менять туда куда указывает p
char✰ const p = нельзя менять поинтер
но если ставить рядом с именем
const char ✰p
char const ✰p
то получается не очень, особенно вторая строчка, как по мне.

Но олды-перды ''так принято,, писать ✰ рядом с именем. Потому делаю так же.
Аноним 08/05/26 Птн 21:43:54 3702859 127
>>3702848
Короче погуглил, и старый вариант щёлкнул. Если читать справа налево, то ✰p = указатель, а дальше на что, на конст кар или кар.
Если слева-направо читать, то ✰p = переменная типа указатель на кар.
>>3702026
Никогда не объявлял несколько переменных в одной строке. Всегда дарил строчку.
Аноним 09/05/26 Суб 01:33:13 3702946 128
>>3702026
>char c1, * c2, c3
За такие конструкции в статементах прилетает по ебалу лопатой.
Аноним 09/05/26 Суб 02:43:58 3702954 129
>>3702946
Да кто спорит, просто сказал, как это работает и можно обдристаться написав звезду со стороны типа.
Аноним 09/05/26 Суб 02:46:31 3702956 130
>>3702954
Даже не сторогы типа, а сделав дефайн на тип укащателя вместо тайпдефа.
Аноним 09/05/26 Суб 17:08:57 3703206 131
функция с неопр[...].jpg 28Кб, 758x346
758x346
не понимаю почему в счетчике используется "count", если count это просто параметр функции?
Он же никак не связан с количеством переменных параметров.

Спросил АИ, он сначала сказал что этот параметр должен быть равен количеству переменных параметров, но когда я спросил что он должен значит всегда быть int быстро пошел на попятную лол.
Аноним 09/05/26 Суб 17:12:49 3703210 132
функция с неопр[...].jpg 43Кб, 838x369
838x369
Вот так он сначала ответил
Аноним 09/05/26 Суб 17:13:25 3703211 133
функция с неопр[...].jpg 77Кб, 887x727
887x727
...five minutes later
Аноним 09/05/26 Суб 17:15:09 3703213 134
>>3702026
Что мешает однозначно писать char c1; char c2; char c3; ?
Всегда угорал с этих "оптимизаций", шизоидные скобочки от КР туда же. Зачем жертвовать читабельностью кода? Чтобы места на дискетке хватило или монитор 13 дюймов как у пра-дидов?
Аноним 09/05/26 Суб 17:15:58 3703214 135
>>3703213
Бл, звездочки в макабе пролюбливаются.
Аноним 09/05/26 Суб 17:43:13 3703237 136
>>3702848
const char ✰p
char const ✰p

Это одно и то же вроде
Аноним 09/05/26 Суб 18:03:13 3703251 137
>>3703237
Да, ты прав. Как тогда написать char* const p, ставя звёздочку около p?
Аноним 09/05/26 Суб 18:13:13 3703262 138
ну например
int ✰f(double);

это обычная функция, возвращающая указатель на инт, т.е. звездочка как бы относится к инт возвращаемому значению
Аноним 09/05/26 Суб 18:30:15 3703274 139
int (✰(✰d)(int))[10];
Аноним 09/05/26 Суб 19:28:41 3703305 140
void (✰signal(int, void (✰)(int)))(int);

Вот что я не понимаю, почему определение функции signal идет без указания возвращаемого значения пусть даже она и возвращает указатель
Аноним 10/05/26 Вск 07:35:08 3703492 141
>>3691079
Лиспоед, где решения на твоём языке? Где операционки, компиляторы, базы? Цыгане украли? Враги сделать помешали?
Аноним 10/05/26 Вск 12:23:42 3703559 142
>>3703213
Чем меньше строк, тем больше видно на екране.
Аноним 11/05/26 Пнд 15:33:55 3704235 143
>>3703213
Ты себе монитор побольше купи чтобы видеть больше 1 поста.
Я ответил уже, что делать так не надо.
Аноним 12/05/26 Втр 16:54:38 3704803 144
указатели на ст[...].png 22Кб, 1311x357
1311x357
Тут что-то неправильно, да?
Разве можно при описании структуры сразу ей присвоить указатель.
Аноним 13/05/26 Срд 01:49:57 3705078 145
>>3704803
Тут все верно. Просто у структуры нет имени. И создаются(объявляются) два указателя.
Аноним 13/05/26 Срд 02:04:29 3705079 146
>>3704803
Всё правильно.
Во время компиляции создаются два объекта структуры на которые ссылаются указатели p1 и p2.
Так делать можно, но не нужно. Велика вероятность, что прилетит по ебалу лопатой, если работаешь в команде.
Аноним 13/05/26 Срд 09:27:46 3705113 147
>>3704803
Нормискот не способен поня, что struct {...} обозначает тип ровно так же, как int.
Аноним 13/05/26 Срд 13:59:39 3705313 148
>>3705078
Мне нейронка говорит что эти указатели будут указывать на мусор, а не на структуры, потому что нет переменной структуры и значит память не выделена под нее.
>>3705113
С чего ты взял? Тут очевидно что это тип, даже при инициализации переменной для структуры.
Аноним 13/05/26 Срд 18:30:48 3705563 149
555.jpg 29Кб, 803x317
803x317
Меня нейросетка даже гнобит нахуй.
Аноним 13/05/26 Срд 19:41:09 3705587 150
>>3704803
>Разве можно при описании структуры сразу ей присвоить указатель.
Нельзя. Если не ошибаюсь, тут мы объявляем переменную p. Тип у этой переменной - указатель. Указатель это просто 8 байт адрес, ему в общем-то насрать что там будет, это просто адрес. Но для компилятора мы говорим что это указатель именно на структуру struct { int val; }

То есть
struct { int val } ⚹p;
Всё равно что
int ⚹p

Ты обьявляешь указатель. Инициализировать ты его можешь адресом, как там и показано &kate

Это всё чисто для компилятора. Так то можно сделать и
void ⚹p
И уже ему присваивать всё что угодно. Я так делаю, например когда нужно произвольные данные передать в обработчик
Аноним 13/05/26 Срд 21:06:22 3705621 151
image 63Кб, 736x736
736x736
>>3705587
>Нельзя.
>можна
мдамс

вся хуйня в том, што поинтеры на структуры в таком виде нужны лишь для дробности типоразмеров
например поинтер на структуру в котором массив из 7 чаров будет 7байт типоразмера (сдвиг по адресу на 7 байт для самых маленьких)
практическое применение такой хуйни - за шаг перебрасывать нужное количество байт из одной хуеты в другую, например копирование строк заданного размера, чтение и замена байтпоследовательностей в конвейерных хуйнях по типу буса, етц

>>3703492
у тебя цыгане интернет украли. в соседнем треде все разжевано.

пикчу штоли приклеить, а то какой то скучный тредик
Аноним 13/05/26 Срд 21:47:54 3705639 152
а, вот еще чо добавлю исключительно для неофитов и пожалуй под спойлер спрячу, а то ща начнется

как бы вы там не старались создавать супербыстрые алгоритмы, изучать биг оу и прочую хуйню, у вас абсолютно всегда останутся ограничения по железу. так уж вышло, что типикал шина данных интовая и железо попросту физически не может сделать то, что вы хотите, чтобы оно сделало. вы хотите за 1 шаг цикла пробросить неровный размер байт, да еще и что то длинное? круто классно. вас наверняка похвалит ментор, или все скажут вау на ваше решение по литкоду. но при этом шина данных хлопнет не 1 раз, а проц еще будет туда сюда гонять данные отрезая лишний байт, который вы не хотели получать. очень мало действий по коду и очень много по железу. крч, не забивайте себе голову, пишите по классике, не экономьте память, юзайте интовые размеры и все будет гуд.
Аноним 13/05/26 Срд 23:26:26 3705668 153
>>3680174
Современный C++ - коллективная разработка. Датчанин там чисто затравку сделал.
Аноним 13/05/26 Срд 23:32:21 3705672 154
>>3705313
>Мне нейронка говорит что эти указатели будут указывать на мусор, а не на структуры, потому что нет переменной структуры и значит память не выделена под нее.
Или ты не так понял, или нейронка троллит тебя.
Сначала объявляется неименнованный тип структуры, а потом в этом же статементе инициализируются два указателя с выделением памяти для двух структур во время конпеляции. В рантайме ты можешь работать с этими двумя указателями и они будут указывать на структуры, но там будет мусор т.к. сами структуры не инициализированы никакими значениями.
Аноним 14/05/26 Чтв 10:27:17 3705930 155
>>3705672
Не слушай этого волка. Выделяются два указателя, два слова. В них мусор. Ты можешь вместо мусора записать адрес структуры. Но структуры еще нет, ее надо выделить.
Аноним 14/05/26 Чтв 12:49:18 3706039 156
>>3705930
Это высокоуровневая макака, макака не понимает код, она пишет магические заклинания. Поэтому они так любят нейросети и считают, что нейросети заменят человека, нейросеть как магический джинн, ты ему пук, тот в ответ среньк.
Аноним 14/05/26 Чтв 13:19:46 3706054 157
блять вы заебали
определитесь уже происходит аллокация с выравниванием по структуре или не происходит? всем похуй на мусор
Аноним 14/05/26 Чтв 14:36:31 3706080 158
>>3705621
не понял, сам-то указатель займет 7 байт вместо 8 если структура на которую он указывает будет 7 байт?
Аноним 14/05/26 Чтв 14:53:02 3706087 159
>>3706054
Два указателя будет аллоцировано, инициализированных by NULL.
Аноним 14/05/26 Чтв 15:03:41 3706089 160
>>3706080
да схуяли это нахуй ты вял то? адреса сжал что ли, сжиматель? там же разжевано что это про сдвиги ++ няхуй -- вот это вот, адресная арифметика ептель моптель

>>3706087
есто ясно, ты ваньку не валяй, отвечай прямо будут ли алоцированы экземпляры под указателями?
Аноним 14/05/26 Чтв 15:34:14 3706100 161
image 317Кб, 1054x1456
1054x1456
лан решил сам проверить пока есть минутка
экземпляры не аллоцируются
Аноним 14/05/26 Чтв 15:35:02 3706102 162
>>3706089
>будут ли алоцированы экземпляры
Нахуя, если только указатели данного типа объявлены. Их и имеешь в итоге.
Если напишешь
struct
{
int age;
int name[20];
} ⚹p1, ⚹p2, t1, t2;
то будут тебе экземпляры t1 и t2, при этом p1==p2==NULL.
Аноним 14/05/26 Чтв 15:43:39 3706114 163
о, спасибо за звездочку на макабе
не забудьте впендюрить звезду в шапку переката
Аноним 14/05/26 Чтв 15:46:59 3706118 164
test
test
test
test
Аноним 14/05/26 Чтв 15:47:59 3706119 165
⚹ я подумал что звездочка заработала
Аноним 14/05/26 Чтв 19:11:43 3706200 166
image 429Кб, 1524x1754
1524x1754
чота решил проверить иначе, возникла гипотеза что поинтеры смотрять в нулл, но алокация мб и произошла, просто поинтеры не выставлены например

теперь я чот не понял, а схуяли между адресами интов 1 байт, если инты 4байтные? чота туплю наверн, абиснити
Аноним 14/05/26 Чтв 19:15:34 3706201 167
или в бинаре какой то другой формат? ну типа не однорродная рам память, а например ноды(поинтеры) на хип?
Аноним 14/05/26 Чтв 19:42:49 3706210 168
все, разобрался
надо было кастануть в ансигнед лонг лонг перед арифметикой
Аноним 14/05/26 Чтв 19:51:19 3706218 169
но все равно непонятно схуяли я не могу ПРОСТО вычесть адреса, это же числа ептумать

вот если я из адреса вычитаю инт - тогда выходит я из адреса вычитаю интчислосдвигов типоразмера данного адреса
для примера если это поинтер на инт - интчислораз по 4 байта вверх (влево) кому как удобнее

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

загадка жаки фрески прям
Аноним 14/05/26 Чтв 20:15:29 3706229 170
>>3706200
>ну типа возми любой адрес в памяти и сдвинь квадрилионы раз влево - упрешься в нулл
Или в 738, или в 921324, а может вообще на месте останешься.
>схуяли между адресами интов 1 байт
anyptr + 1 == (unsigned long)anyptr + sizeof(any)
Аноним 15/05/26 Птн 04:27:27 3706352 171
>>3706218
Попробуй сначала адреса привести к типу void "две звезды", а уже потом делать арифметику с вычитанием и прочим.
Аноним 15/05/26 Птн 04:34:25 3706354 172
>>3706200
Устанавливаешь IDE и двумя кликами открываешь дебагер, смотришь память, читаешь ассемблер.
Аноним 15/05/26 Птн 06:11:41 3706369 173
Аноним 15/05/26 Птн 08:07:42 3706381 174
>>3706354
>Устанавливаешь приложение
И тут "программист" уже слился, слишком много требуешь от будущего короля Си.
Аноним 15/05/26 Птн 10:10:02 3706440 175
>>3706381
Зачем себе жизнь усложнять ненужными мелочами? Цель программирования это писать программы для людей. Зачем тратить время на ёблю с флагами и прочую чушь? Это не влияет на твой скилл писать программы.
Ты юзаешь ОС, юзаешь терминал, юзаешь компилятор, а не программируешь на голом железе, но тут внезапно ЭТО ДРУГОЕ, а вот ИДЕ это не тру и плохо-плохо.
Аноним 15/05/26 Птн 18:32:20 3706783 176
>>3673238
можно еще программировать дроны и прочую технику, а также какую-нибудь симуляцию накодировать
Аноним 15/05/26 Птн 19:19:24 3706801 177
>>3706440
не все любят когда их водят за ручку
да и вот давеча мне надо было пробросить байтослоп прикинувшись будто бы я кидаю объект класса из обжектив си в какаву, уверен и дэ е слилась бы и посоветовал просто выучить обжектив си
Аноним 16/05/26 Суб 03:01:27 3706908 178
>>3706801
Тебя ОС за ручку водит гораздо больше.
Аноним 16/05/26 Суб 07:34:14 3706926 179
>>3706440
Тогда и не программируй, дворнику куда проще, там тебе и место. Зачем лезть туда где тебе не место и гадить? В любой работе требуется тщательность, даже ботинки полировать надо как следует, а не как попало "зачем себе усложнять жизнь". Неусложнятель значит тунеядец, таких надо пиздить и гнать нахуй.
И если что, это касается любой профессии, и начальников, если начальник тоже неусложнятель у которого всегда виноваты подчиненные, такого надо точно так же пиздить и гнать нахуй. Вы все одинаковое бесполезное говно которое только гадит. Ни одна ленивая погань не делает и не сделает никаких полезных программ для людей, только говно наносящее людям вред чтобы на этом нажиться самому.
Аноним 16/05/26 Суб 08:22:40 3706933 180
Аноним 16/05/26 Суб 15:30:14 3707169 181
>>3706218
я думаю считается что тебе незачем вычитать из адреса просто число - ты просто получишь какой-то рандомный или мусорный адрес, а вот когда вычитаешь размер типа то можешь двигаться массиву
Аноним 16/05/26 Суб 18:22:30 3707253 182
>>3707169
весьма странное решение именно в этом аспекте сделать бронированную ногу
Аноним 17/05/26 Вск 09:07:58 3707465 183
>>3707253
Указвтель+число помогает двигаться по массиву. На целое число элементов. Укащатель-указатель показывает пройденное расстояние. В элементах. Надо было сделать хуже?
Аноним 17/05/26 Вск 10:52:38 3707494 184
177900413133301[...].png 49Кб, 181x179
181x179
Живое воплощение указателя
Аноним 17/05/26 Вск 11:55:40 3707533 185
image 338Кб, 1280x720
1280x720
Живое воплощение компилера
Аноним 17/05/26 Вск 12:02:46 3707539 186
image 563Кб, 1280x720
1280x720
Живое воплощение IDE
Аноним 17/05/26 Вск 12:13:49 3707545 187
timeline1409611[...].jpg 119Кб, 612x411
612x411
Аноним 17/05/26 Вск 12:19:11 3707548 188
Аноним 17/05/26 Вск 12:22:39 3707550 189
Аноним 17/05/26 Вск 12:34:13 3707553 190
image 2127Кб, 1478x1310
1478x1310
Аноним 17/05/26 Вск 12:42:19 3707558 191
могу запостить стак оверфлоу если моча не потрет
Аноним 17/05/26 Вск 23:05:02 3707828 192
>>3705639
> типикал шина данных интовая
о какой шине данных речь
Аноним 17/05/26 Вск 23:07:58 3707830 193
>>3705639
>за 1 шаг цикла пробросить неровный размер байт, да еще и что то длинное
mmx sse avx для x86
Аноним 17/05/26 Вск 23:13:21 3707832 194
>>3705639
>проц еще будет туда сюда гонять данные отрезая лишний байт
хм но в структурах для решения проблемы data misaligment по умолчанию вставляются паддинги, а запрещаешь принудительное выравнивание ты для того чтобы в бинарный протокол например упаковать, ну и надо делать упаковку/распаковку, и обрабатывать далее уже с выровненными данными
Аноним 17/05/26 Вск 23:20:24 3707834 195
>>3705639
или речь о том что якобы в архитектуре x86 работа с "короткими" интами short int (16 бит) неэффективна тк к инструциям обрабатывающим такие числа приходится компилеру добавлять специальный префикс 0x66 и инструкция становится длиннее на байт? ну дык это в более свежих поколениях процов пофиксили наебашив сверху оптимизаций..
Аноним 17/05/26 Вск 23:28:38 3707839 196
чел тут тебе не церковь 86 у людей и другие архитектуры на руках
речь вцелом про неэффективность эффективных решений
вот к примеру в бородатые времена придумали б-три как эффективную модель данных с быстрым поиском, в текущих реалиях она неэффективна и простой массив (или хэштейбл) сработает куда быстрее из за аппаратных особенностей
поэтму фраза не забивай себе голову хуйней и пиши по классике в интах емко и красноречиво подитоживает все будущие диалоги на эту тему, тут нехуй обсуждать
Аноним 17/05/26 Вск 23:54:03 3707854 197
>>3707839
>б-три как эффективную модель данных с быстрым поиском, в текущих реалиях она неэффективна и простой массив (или хэштейбл) сработает куда быстрее
конечно нож острее кувалды
б-три для дисковых накопителей оптимизирован, его узлы в страничку памяти помещаются, для индексов реляционных субд это король
хештейблы для того что в оперативу умещается, их любят in-memory dm
Аноним 17/05/26 Вск 23:54:36 3707855 198
Аноним 17/05/26 Вск 23:54:44 3707856 199
Есть вообще работа на C кроме эмбдеда и удалёнки?
Аноним 18/05/26 Пнд 00:02:47 3707860 200
>>3707839
>другие архитектуры
тык в той же arm тоже есть свой simd движок, и работа с короткими интами и char еще более оптимизирована по сравнению с x86
Аноним 18/05/26 Пнд 00:11:01 3707861 201
>читать б-три с диска а не грузить в оперативку
ну тут я сдаюсь
Аноним 18/05/26 Пнд 00:21:55 3707863 202
к тому же речь вообще не шла про халфворды или чары
хуй знает с чего ты решил что отрезать лишний байт это инт -> шорт инт
как вообще в твоей башке сложилась такая математика? хотя похуй я не хочу этого знать, это какой то бредик
Аноним 18/05/26 Пнд 00:30:13 3707867 203
все таки о какой "интовой шине данных" речь?
кэш-линии современного x64 проца размером 512 бит, с меньшими данными они не умеют работать
Аноним 18/05/26 Пнд 00:32:59 3707869 204
>>3707863
в x86 одинаковые оптимизации что для short int что для char
Аноним 18/05/26 Пнд 00:34:43 3707871 205
паддинги еще приплел блять
да структуры неэффективно лежат в памяти, чо сказать то хотел?
давай помогу осознать буквы которые ты прочитал и на которые ответил
тебе прилетело 8 байт данных, программист заказывал 7.
твои действия как проца?

>>3707867
классическая шина данных 32 битной машины например

>>3707869
при чем тут шорты и чары сука мразь бесишь
Аноним 18/05/26 Пнд 00:34:45 3707872 206
>>3707861
б-три оптимизированы под размер дисковых страниц
Аноним 18/05/26 Пнд 00:35:58 3707874 207
>>3707872
оперативно поработай с пзу теперь, опитимизатор
Аноним 18/05/26 Пнд 00:40:01 3707883 208
>>3707871
>классическая шина данных 32 битной машины
тык че за "шина данных", о чем речь?
nvme ssd через pcie 5.0, причем контроллер прямо в проце
озу тоже напрямую в проц, шина памяти, контроллер в проце, это прям физика, проводочки идущие в проц и часть кристалла на проце отвечающая за io
Аноним 18/05/26 Пнд 00:47:57 3707898 209
>>3707883
шина по которой приходят данные на процык
проводочки по которым текут электрончики и щекотят регистры
может тут я неточен в терминах и это шина памяти, тут сорян
убшиз ета ти?
Аноним 18/05/26 Пнд 00:58:10 3707902 210
>>3707874
>оперативно поработай с пзу теперь, опитимизатор
да пожалуйста, давай
на каком уровне хочешь говорить?
физическом уровне? дык там pcie 5.0, многоканальная передача хоть и протокол последовательный, те же 512 бит кеш линии разделятся на 4 канала и прилетят за такт по 128 бит на канал
ос и дб могут работать с минимальным размером данных это размер дисковой страницы, в винде 4кб, итого за 64 такта прилетает страничка из диска в озу
естественно через dma те выч блоки проца не задействованы, задействовано только io: контроллер pcie, контроллер памяти, внутренняя шина
Аноним 18/05/26 Пнд 01:02:32 3707907 211
>>3707898
>приходят данные на процык
тык данные на выч блоки цпу приходят через кеши, в кешах минимальный размер это кеш линия, в совр проце будет 512 бит
Аноним 18/05/26 Пнд 01:05:49 3707911 212
ты чо несешь петух
пердоль давай свою оптимизированную б-три и долби диск, нехуй в озу грузить ты же отказался от этой идеи и скозал што б-три пзу бейзед алгоритм
и што же я вижу
грузишь в озу свою хуйню академическую из пердольного века
массив в кеш линиях в сотни раз быстрее перебрать чем твоей хуетой заниматься
перечитай пост на который ответил
все иди нахуй

алсо алгоритм отрезания лишнего байта не описал
дважды нахуй
Аноним 18/05/26 Пнд 01:21:28 3707919 213
>>3707911
решение на основе б-три оптимизированное под дисковое хранение более универсальное получается, и поэтому оно до сих пор основа для индексов реляционных субд, да, для oltp базы данных ты можешь добавить столько озу чтобы весь кеш дисковой структуры лежал в озу, но для хранилищ данных такое уже может не прокатить
хеши рулят в in-memory db
Аноним 18/05/26 Пнд 09:02:49 3707977 214
>>3706200
> возникла гипотеза что поинтеры смотрять в нулл
> гипотеза
> явно описанная в документации
> что глобальные переменные инициализируются нулем
Аноним 18/05/26 Пнд 09:04:14 3707980 215
>>3619616 (OP)
Объясните нюфагу, почему когда я использую malloc, и компилирую через msvc, то независимо от того, сколько байтов я указал в аргументе, я все равно могу поместить в память нихуя не столько? Например, даже если char* c = malloc(1), то я туда могу засунуть строку не из одного, а аж из 80 символов? При том что _msize возвращает именно то значение, которое я указал в качеству аргумента malloc.
Аноним 18/05/26 Пнд 09:07:28 3707981 216
>>3707980
Приложению выдают целую страницу и внутри него она что хочет, то воротит.
А вот если выйти за пределы, то уже смотритель памяти (не помню как называется) выдаст по ебалу сегфолт.
Аноним 18/05/26 Пнд 09:11:35 3707984 217
>>3707919
В беркли дб были дисковые движки на хэшах и деревьях, хэш обычно обгонял дерево, но имел ограничения по объему, и никаких дубликатов и обходов по порядку.
>>3707980
UB
Аноним 18/05/26 Пнд 09:36:29 3707990 218
>>3707981
А как тогда вообще пользоваться этим вашим мемори алокейшном? Я сейчас даже попробовал прогнать

int i;
int* a = malloc(1);
for (i = 0; i < 6; i++) a = i;

И оно реально полностью записало мне в память числа от 0 до 9, хотя я выделил даже меньше памяти, чем на одно число нужно
, а for (i = 0; i < 10; i++) printf("%i ", a) благополучно мне их выводит, даже если я сразу после a выделил другую область памяти и что-то туда записал, хотя по-идее они должны в памяти по соседству находиться. Это в компиляторе такая защита от индусов сделана или, что вероятнее, я не понимаю, как мемори аллокейшн работет? Если второе, то что именно я не понимаю?
Аноним 18/05/26 Пнд 09:40:00 3707994 219
>>3707990
Сука, ебаная разметка.

int j;
int* a = malloc(10);
for (j = 0; j < 10; j++) a[j] = j;

и

for (j = 0; j < 10; j++) printf("%i ", a[j]);
Аноним 18/05/26 Пнд 09:40:12 3707995 220
>>3707990
Написали же UB. Хоть вселенная всхлопнется - тебе ничего не гарантировали.
Аноним 18/05/26 Пнд 10:00:53 3708006 221
>>3707990
>я написал программу записывающую числа в память
>И ОНИ СУКА ЗАПИСАЛИСЬ! не понимаю, что за хуйня?
Это называется программирование, как пишешь, так и работает.

Если же не можешь программировать, для таких есть нейросети, ты ей говоришь одно, а она определяет что ты дебил и делает совсем другое. Ура, как удобно, я несу хуйню, а система исправляет как надо.

Да, это очень удобно, только без тебя, ведь если ты тупее системы, значит ты не нужен.
Аноним 18/05/26 Пнд 10:22:30 3708016 222
>>3708006
>я несу хуйню, а система исправляет как надо
Так ты буквально только работу компилятора в моем примере описал
Аноним 18/05/26 Пнд 10:31:44 3708022 223
>>3708016
Ты числа записал? Записал.
Числа записались? Записались.
Что не так сделал компилятор? Ты дебил? Не нравится когда программа работает как ты написал, то есть тебе не нравится собственная тупость? Так при чем тут компилятор? К психиатру сходи, дебил.
Аноним 18/05/26 Пнд 10:39:35 3708031 224
>>3708016
Лол, нет. Компилятор C и плюсов уверен, что программист царь и бог и если хочет отстрелить себе ногу значит он так и задумал. Есть конечно предупреждения, но это совсем от долбоебов.
А чтобы дерьмо за тобой подтирали - это к статическим анализаторам кода.
Аноним 18/05/26 Пнд 10:53:13 3708050 225
>>3708022
Ладно, ты прав, какую-то я хуйню написал, если честно.
Аноним 18/05/26 Пнд 12:53:32 3708136 226
>>3707984
тык в беркли дб были другие хэши чем в современных in-memory db, те структуры данных наоборот под дефицит озу были заточены
Аноним 18/05/26 Пнд 17:56:24 3708311 227
>>3708022
>>3707980
Успокойся шизофреник. Конпилятар тут не при чем. У тебя память вообще ОС выделяет, а не компилятор. У библиотеки просто есть функция, условно "обеспечить столько то памяти". Вот она тебе и обеспечила. А то что её реально выделилось больше - иди и билу гейтсу ной. Алокация памяти это вообще не часть языка С. Это просто прослойка над сисколами.
Аноним 18/05/26 Пнд 18:28:34 3708320 228
>>3707980
не всегда можешь
ты просишь у оси столько то байт
ось грит ну типа ок вот адрес начала блока куда можешь насрать
сколько там реально свободной памяти знает только ось, но если дала адрес значит точно не меньше запрошенного объема
если н дала значит нет цельного фрагмента искомого объема
Аноним 18/05/26 Пнд 19:15:15 3708341 229
>>3701751
Збс синтаксис. Ты просто не шаришь.
Аноним 19/05/26 Втр 02:23:34 3708443 230
>>3702577
>звездочка при объявлении указателя относится к типу, а не к имени указателя
Почему тогда int* a, b создает не два указателя, а один указатель и одну переменную?
Аноним 19/05/26 Втр 05:15:23 3708451 231
>>3708320
Не совсем так. К твоей программе прилипает c-heap-manager. При запуске программы он у ОС просит большой кусок памяти. Дальше он эту память нарезает на блоки и хранит список свободных блоков. Когда ты просишь память, ты не всегда обращаешься к ОС, ты обращаешься к менеджеру, и он тебе дает указатель на блок, способный вместить как минимум сколько ты запросил. Когда память освобождаешь, то так же освобождается блок и он возвращается в список доступных блоков.
Вот если блоков нет, только тогда уже программа идет на поклон к ОС.
Аноним 19/05/26 Втр 14:03:12 3708858 232
>>3619664
Почему бы и нет. Поржем вместе над пасквилянтами ))).
Аноним 19/05/26 Втр 15:19:21 3708906 233
int m = malloc(rows sizeof(m));
for (int i = 0; i < rows; i++) {
m = malloc(cols sizeof(m));
}


а как здесь указатель на указатель m стал массивом?
Аноним 19/05/26 Втр 15:38:08 3708923 234
Т.е. любой указатель можно использовать как массив?
Аноним 19/05/26 Втр 15:44:36 3708931 235
>>3708906
Звездочки поправь, нихрена не понятно, что за высер ты принёс.
Аноним 19/05/26 Втр 16:15:04 3708963 236
>>3708931
Да там и так понятно где звездочки
Аноним 19/05/26 Втр 17:17:43 3709011 237
>>3708923
механика похожа, но поинтеры не являются массивами
ну по крайней мере так пишут каэр
Аноним 19/05/26 Втр 17:20:55 3709016 238
>>3708923
Наоборот, и то будут нюанцы
Аноним 20/05/26 Срд 12:46:01 3709489 239
>>3709011
Разумеется нет(в смысле да). Указатель это указатель на начало области памяти - адресс.
>>3708923
Да можно. Но не факт что получится, а может и не получиться ничего хорошего вовсе, зависит от того куда он указывает.
Аноним 21/05/26 Чтв 00:48:32 3709899 240
>>3673229
> телеграм бота, бэкенд вебсайту, десктопное приложение вы на нем писать не будете.

Почему не буду? Буду. Я же контрол-фрик.
Аноним 22/05/26 Птн 16:47:34 3710916 241
>>3708923
Доброе утро! Неужели это для тебя открытие. Это же самое первое о чём пишут в си. Строго говоря в си нет "массивов" вообще. Имеется ввиду что нет такого же вот обьекта как в Паскале, там, которому можно было диапазон задать, например. Квадратные скобочки в си это грубо говоря шорткат, то есть i[N] это тоже самое что *(i+N) . Различия всё-таки есть. Например sizeof скобочек выдаёт именно длину массива, а sizeof указателя выдаст 8. То есть что-то типо массива есть, но это не совсем массив.
Аноним 22/05/26 Птн 18:15:03 3710985 242
изображение.png 33Кб, 894x457
894x457
>>3710916
>Например sizeof скобочек выдаёт именно длину массива, а sizeof указателя выдаст 8. То есть что-то типо массива есть, но это не совсем массив.
Только следует помнить, что sizeof скобочек будет работать только в скоупа и сабскоупах, где массив определен. Передай указатель на массив в функцию, и он забудет размер.
Аноним 22/05/26 Птн 20:49:22 3711081 243
>>3710916
>>3710985
массив нельзя передать как аргумент
указатель можно
твои утверждения неверны, массивы существуют так же как и указатели, механики похожи, сущности разные, шорткаты твоя фантазия
Аноним 22/05/26 Птн 21:07:11 3711085 244
>>3711081
>массивы существуют
Назвать этот огрызок от указателя "массивом" не совсем правильно.

Массивы существуют только условно. Но по факту это скорее указатель с дополнительными свойствами.

Начнём с того что массивы можно присваивать. А то что то в С называют "массивом" присвоить нельзя:
int *a;
int c[3];
int b[3];
b = c //syntax error
Зато можно
a = b
И теперь, ВНЕЗАПНО мы можем индексировать a:
a[2];
Это по твоему нормально называть массивном? Массивы в Pascal или других высокоуровневых языках по твоему так себя ведут? Он конечно назван как array, но фактически это не то что подразумевают под массивом.
Аноним 22/05/26 Птн 21:27:26 3711093 245
>>3711085
массив это массив не зависимо от того что ты там себе нафантазировал
твои выпады напрямую связаны с непониманием лаконичности и компактности си. ты не туда воюешь. си это язык велосипедов. хочешь присваивать массивы - пиши свой хук для присваивания. хочешь какие то другие массивы - пиши свои массивы. это си, детка, туда ли ты забрел?
Аноним 22/05/26 Птн 21:33:00 3711094 246
12(2).gif 1016Кб, 500x399
500x399
>>3711093
>массив это массив
Глубокая мысль. Иди нахуй ))
Аноним 22/05/26 Птн 22:47:50 3711123 247
>>3711093
В си нет массивов, это указатели, как нет математических чисел, это ячейки памяти определенного размера, и тем более в си нет строк. Си обманчив тем, что выглядит как язык высокого уровня, хотя на самом деле си это ассемблер. Мимо-макаки этого не понимают и ищут свои абстракции которых в си нет. Си это машинный язык, а не скриптовый. Нельзя писать на машинном языке не представляя как работает машина, то есть как твой код работает на машине.

Самый простой пример. Ты объявляешь переменную, это имя и привязанное к нему значение. В си ты должен понимать, что это лишь блок памяти, знать размер этих данных в байтах, а так же место в котором они находятся, стек или куча. Это не какие-то лишние знания, а минимальная необходимость без которой нельзя ничего программировать, получается гадание наугад, бред, нелепость как не зная арифметики заниматься тригонометрией, так не бывает.
Аноним 22/05/26 Птн 23:07:13 3711134 248
забавный шизик
Аноним 23/05/26 Суб 01:24:59 3711175 249
>>3711123
Застрелись нахуй и больше сюда не сри этим говном, дебил ебаный.
Си у него ассемблером стал, блять. Откуда вы лезет?
Аноним 23/05/26 Суб 04:46:27 3711198 250
>>3703206
vararg в сях это костыль по большей части. В теории ты можешь вместо int count поставить любой аргумент, при вызове подавать ему любые значения и как-нибудь угадывать, сколько пришло аргументов. На практике ты либо идёшь по простому и понятному шаблону, либо ловишь баги и леща от других прогеров, которым придётся копаться в нешаблонном коде.
ИМХО в сях лучше наплодить похожих функций с разными наборами аргументов, в 95% случаев это прокатывает. А vararg оставить всяким питонам и языкам с полноценной рефлексией
Аноним 23/05/26 Суб 17:56:56 3711429 251
Какие дополнительные знания пригодятся для трудоустройства, если хорошо знать Си?
Аноним 23/05/26 Суб 18:03:58 3711430 252
Какой же хороший язык. Достаточно минималистичный. Ему бы ещё встроить аналог new/delete из c++ и было бы здорово (я знаю про malloc, но эта штука требует подключать хотя бы malloc.h. было бы замечательно, если бы выделение памяти делалось оператором.)
Аноним 23/05/26 Суб 19:31:59 3711490 253
images (20).jpeg 20Кб, 464x431
464x431
>>3711429
>Си
>Трудоустройство
Каво
Аноним 23/05/26 Суб 21:54:53 3711579 254
>>3711490
Ну если взять 10.000 самых шарящих в Си людей в СНГ, то кем они работают?
Аноним 23/05/26 Суб 23:00:45 3711604 255
>>3711429
Алгоритмы и сруктуры данных, многопоточка, как работает mmu, как работает шедулер, хуй86 архитектура (можно arm), основы криптографии, tcp/ip, устройство efs/ntfs, чуток баз данных
как изучить си? 23/05/26 Суб 23:38:54 3711614 256
Всем привет! я из казахстана, я хочу задавть вам хотя глупим, и очевидный, короче как изучить ЯП си, из книг или темачиский сайтов(потипу metanit.com/c) или по книг(по типу язык программирования си) для провиллный изучение си?
как изучить си? 23/05/26 Суб 23:50:32 3711621 257
Аноним 24/05/26 Вск 00:08:17 3711626 258
>>3711579
Эмбеддед разработчиками, программистами, инженерами электроники, учеными. В общем Си у них это не основная специальность. Часто они совмещают его с другой компетенцией или языком. Чистых СИ вакансий почти нет
Аноним 24/05/26 Вск 00:22:06 3711630 259
>>3711626
>Эмбеддед разработчиками
Много ли там вакансий, НЕ связанных с разработкой чего-либо используемого в междоусобицах восточных славян? (религия не позволяет)
как изучить си? 24/05/26 Вск 00:39:03 3711636 260
>>3711626
привет, для чисти изучение для себя, а про работы даже не знаю, час хочу системный прогграмирвние и системный админстарция, то есть чисти энтузиазм
как изучить си? 24/05/26 Вск 00:40:06 3711637 261
>>3711630
даже хз, не чекул, вроде как и все снг мало как я знаю
Аноним 26/05/26 Втр 02:53:50 3712670 262
>>3711429
Электрика/электроника, схемотехника, микроконтроллеры, SPI/UART, парочка ассемблеров. Часто радиофизика, обработка сигналов, сетевые протоколы вплоть до побитового разбора пакетов/кадров.
Аноним 26/05/26 Втр 03:08:50 3712671 263
>>3711614
1. Введение в тему из любого источника: хоть сайты, хоть ютуб, хоть книги (для начинающих)
2. Тренировка основ простыми задачами на leetcode/codeforces
3. Хитрости и приёмы именно Си: книга Кернигана и Ритчи. Пет-проекты (гугли темы для проектов начинающих программистов, бери что по силам)
3.5 Для системного программирования - Таненбаум, Реймонд, исходники и комментарии FreeBSD
P.S. Системное администрирование это абсолютно другое направление. Там программировать толком не нужно, максимум скриптовать
Аноним 26/05/26 Втр 10:49:48 3712722 264
>>3712671
>3.5 Для системного программирования - Таненбаум
Вот из тех кто его советует, хоть раз открывал его? Это же тупое говно на уровне научпопа. Есть намного лучше курсы/книги: nan2tetris, книга с кометой, xinu project, mmurtl...
>3. Хитрости и приёмы именно Си: книга Кернигана и Ритчи.
Я бы тебе с ноги уебал, если бы увидел что ты пишешь как они. Effective C берешь и читаешь, а не изучаешь окаменелости.
Аноним 26/05/26 Втр 11:21:58 3712751 265
>>3712722
>Effective C
Адвокат Григорин вроде не рекомендовал эту книгу для ньюфагов.
Аноним 26/05/26 Втр 12:22:08 3712785 266
>>3712722
Не окаменелость а фундамент.
В твоём проекте буду писать по твоим стилям/гайдам. В своих буду устраивать филиал IOCCC, и никакой двачер мне не указ. K&R стоит читать, чтобы знать на что Си вообще способен, а уже потом перебирать, что подходит конкретному проекту, а что нет.
Аноним 26/05/26 Втр 15:47:20 3712911 267
images (27).jpeg 21Кб, 540x568
540x568
>>3712671
>Таненбаум
Общеизвестный факт, ни один из посоветовавших книги Таненбаума сами их не читал.

Ведь если бы он попытался их прочитать, ему бы стало стыдно советовать это графоманское дерьмо ни о чём
Аноним 26/05/26 Втр 19:46:38 3712963 268
чо скажете про кнута
Аноним 26/05/26 Втр 20:51:45 3712975 269
>>3712963
устаревшее говноговна
Аноним 26/05/26 Втр 20:54:54 3712977 270
>>3712963
В его времена не было кэшей. Математический надроч там неплохой, но вешь в себе.
Аноним 26/05/26 Втр 21:14:51 3712985 271
images (28).jpeg 10Кб, 498x279
498x279
>>3712963
Быку - кнут. А кто по натуре своей свободу любит, тому и за забором свобода.
Аноним 26/05/26 Втр 21:32:30 3712989 272
>>3712963
Думаю если ты школьник с кучей свободного времени, можно порешать. Но если студент и старше, то это сродни учить геометрию по Началам Евклида, когда тебе нужно учить анализ и линейку.
Аноним 26/05/26 Втр 22:37:50 3713012 273
что скажете про сикп
Аноним 26/05/26 Втр 22:39:47 3713015 274
>>3712989
Начала Евклида это как раз таки топ в любом возрасте.
Аноним 26/05/26 Втр 22:40:46 3713016 275
Аноним 27/05/26 Срд 13:41:24 3713393 276
а для варкрафта что читать?
Аноним 28/05/26 Чтв 07:41:26 3713726 277
Аноним 28/05/26 Чтв 16:42:08 3713915 278
>>3712751
А зря, книжка норм обзор современного Си с проблемами и с тулами.
Аноним 28/05/26 Чтв 16:44:00 3713916 279
>>3712963
>>3712975
>>3712977
Кнут - база, но это не теория, это задачник, и да, это не для кодерков книжка.
Аноним 29/05/26 Птн 22:17:53 3714664 280
>>3712963
Можешь попробовать, но он на своем выдуманном ассемблере все разбирает. Если осилишь с упражнениями, то очень круто, но я бы не советовал, если ты не умеешь программировать уже хорошо довольно.
Аноним 30/05/26 Суб 17:09:31 3714865 281
>>3714664
>но он на своем выдуманном ассемблере все разбирает
Классно же. Можно с умным видом нести бред и всё равно никто ничего не поймёт.
Аноним 30/05/26 Суб 21:32:48 3714953 282
а чем обычная переменная отличается от указателя?
обычная переменная:
-имеет какой-то адрес в в памяти
-имеет какой-то размер (например 4 байта для инт)
-по этому адресу лежат данные - содержание переменной


указатель:
-имеет какой-то адрес
-имеет размер ( 8 байт обычно)
-по этому адресу лежат данные - содержание указателя

Разница лишь в том что содержание указателя - это адрес другой переменной.

Но что мешает мне в обычную переменную тоже положить адрес?
Адрес - это всего лишь число.
Аноним 31/05/26 Вск 04:43:41 3715014 283
>>3714953
Ты можешь сходить по любому адресу, если захочешь. Но адреса у компилятора и ОС определённые, поэтому промажешь. А раньше указатель состоял из двух адресов - смещения и сегмента. Формат и размер указателя - вещь платформозависимая, и делать с ней что-то стоит с некоторой оглядкой хотя бы на чистоту и корректность кода.
Аноним 31/05/26 Вск 09:27:58 3715042 284
177992557255702[...].jpg 368Кб, 850x1234
850x1234
>>3714953
>а чем обычная переменная отличается от указателя?
Ничем. Указатель - это переменная.

>Но что мешает мне в обычную переменную тоже положить адрес?
Статическая типизация, блядь, тебе мешает. Вы что траллите? Вы читали вообще синтаксис перед тем как что-то писать на С? Представь себе, и int, и char - это всё числа. Но ты не сможешь в char положить int! Ты наверное можешь сказать, но в int то char я могу положить. НЕ МОЖЕШЬ! У тебя просто происходит неявное преобразование char в int. В обратную сторону нужно явно прописать преобразование, типо
int a;
char b;
b = (char)a;
То же самое и с адресами. Ты МОЖЕШЬ преобразовать указатель в long int.
long long a;
void ⚹b;
a = (long long)b;
Например ты можешь распечатать адрес через printf.
Более того, в низкоуровневом программировнии это вполне обычная штука, только в обратную сторону, long long переводить в указатель, обычный пример memory mapped io

#define UART0_BASE 0x4000C000
volatile long long ⚹uart = (volatile long long ⚹)UART0_BASE;
Аноним 31/05/26 Вск 11:57:23 3715077 285
>>3715042
> Но ты не сможешь в char положить int!

нет никаких типов на самом дела, есть байты с нулями и единицами.
тип - это то как ты выбираешь интерпретировать данные.

ничто не мешает получить адрес и потом хранить его как инт, например
Аноним 31/05/26 Вск 16:03:32 3715161 286
images (29).jpeg 5Кб, 320x180
320x180
>>3715077
>нет никаких типов на самом дела
Оооооо, доооо??? Внотуре??

Аноны, это правда???
Аноним 31/05/26 Вск 16:07:16 3715162 287
>>3715077
Есть питон, там есть переменные инты.
Покажи как работаешь с памятью.
Тебе же
>ничто не мешает
Аноним 31/05/26 Вск 16:11:37 3715165 288
images (30).jpeg 18Кб, 461x433
461x433
images (1).png 14Кб, 616x324
616x324
>>3715077
>есть байты с нулями и единицами.
Эти нули и единицы с тобой в одной комнате, жид? Всем славяно-ариям известно, что нет никаких "битов", есть устойчивые состояния асинхронного RS-триггера, которые характеризуются электрическими напряжениями на выводах. "Биты" это вам дуракам в школе мозги пудрят. Если человек использует такие слова как "бит" или "указатель", и уж тем более "метод класса" - то это всё, с ним всё потеряно, он глубочайшие промытый идиот, который пользуется жидовскими ТЕР-Минами (террориистическими минами) для веб-макак.
Аноним 31/05/26 Вск 16:14:50 3715166 289
>>3715162
мы в треде про питон находимся?
Аноним 31/05/26 Вск 16:18:39 3715167 290
>>3715166
Мы в треде про биты находимся?
Аноним 31/05/26 Вск 16:19:15 3715168 291
>>3715161
Да, это правда. Понимаю, после 10 лет в вебмакакинге это шокирует.
Надо заметить, что это не только относится к компьютерным наукам, но и вообще к самой реальности. Все что ты воспринимаешь это интерпретация.

>>3715165
Бит это прежде всего абстрактная единица информации, не привязанная к конкретной реализации.
Аноним 31/05/26 Вск 16:20:14 3715169 292
>>3715167
Зачем ты серишь под себя?
Что тебе не понятно в хранении информации?
Аноним 31/05/26 Вск 16:21:48 3715170 293
>>3715165
Орнул с этого руса. В чем он неправ? Прав во всём
Аноним 31/05/26 Вск 17:06:22 3715198 294
images (31).jpeg 6Кб, 230x173
230x173
>>3715168
>Понимаю, после 10 лет в вебмакакинге это шокирует
Ты провёл 10 лет в вебе, не понимая модель памяти? Допустим.

>Бит это прежде всего абстрактная единица информации
А "переменная" это какая единица? Абстрактная или конкретная? А электрическое напряжение что, конкретное? Почему тогда электрическое напряжение это буквально разница между двумя числами - потенциалами поля в точках. А потенциал поля это конкретная величина? А потенциальная энергия? Если энергия такая конкретная то почему мы её пощупать не можем а просто циферки считаем?

>>3715169
>Что тебе не понятно в хранении информации?
А тебе что непонятно? Не я же про "байты" рассуждать начал. Стало быть тебе видимо что-то непонятно в этой теме, раз пришел в тред си о байтах вопрошать. Что-то не видел синтаксисе си тип "байт". Есть int, есть char, но байтов никаких нет.
Аноним 31/05/26 Вск 17:09:44 3715200 295
Аноним 31/05/26 Вск 17:11:16 3715202 296
>>3715200
Тут либо реально столяров обитает, либо какой-то шиз пытается копировать его стиль общения
Аноним 31/05/26 Вск 17:14:28 3715207 297
Бит это высокоуровневая абстракция для веб-макак
Аноним 31/05/26 Вск 17:21:46 3715213 298
бит ета репчик
Аноним 31/05/26 Вск 17:49:37 3715227 299
>>3715198
>ы провёл 10 лет в вебе, не понимая модель памяти?
Хуль ты очком крутишь, макака? Совсем от петона мозги высохли?

>А "переменная" это какая единица? Абстрактная или конкретная?
Переменная это не единица.
Тебе бы логику подтянуть.

>Что-то не видел синтаксисе си тип "байт"

Ну ещё бы, куда тебе знать что можно получить значение по указателю на байт.
Аноним 31/05/26 Вск 17:53:37 3715229 300
>>3715202
А ботохуетач будет работать без js? Для Столярова жопаскрипт в браузере не по понятиям
Аноним 31/05/26 Вск 18:26:35 3715239 301
>>3715229
На Ютуб же он ролики выкладывает. Это тебе нельзя js, а ему можно.
Аноним 31/05/26 Вск 18:31:37 3715240 302
>>3715227
>Хуль ты очком крутишь, макака? Совсем от петона мозги высохли?
Никогда не умел программировать на python. А язык весьма неплохой между прочим. На нём можно заняться чем-то интеллектуальным, а не копипастить код по байтам.

>Переменная это не единица. Тебе бы логику подтянуть.
А утверждение "переменная не единица" это не логика.

>указателю на байт
А мог бы ты показать этот твой "указатель на байт"? Что-то ни в одной книге такого нет.
Аноним 31/05/26 Вск 18:48:10 3715246 303
>>3715240
>указатель на байт
uint_8t ★ptr ?
мимо
Аноним 31/05/26 Вск 19:33:53 3715265 304
>>3715246
Это указатель на uint_8.
А может у тебя байт 7 бит? Вот что-то ты просчитался.
Аноним 31/05/26 Вск 19:48:56 3715271 305
Аноним 31/05/26 Вск 20:25:54 3715291 306
на на октет покажите,
а чар может быть любым, но вот де-факто это 1 байт, а послезавтра это будет что-то 3-байтовое, и наступит каюк всему си
Аноним 31/05/26 Вск 20:26:37 3715292 307
Положняк: Столяров чорт хуи саси
Аноним 31/05/26 Вск 22:50:09 3715339 308
>>3715240
>А мог бы ты показать этот твой "указатель на байт"? Что-то ни в одной книге такого нет.

чел, любой указатель указывает на байт (хранит адрес байта)
Аноним 31/05/26 Вск 22:52:08 3715341 309
>>3715265
>А может у тебя байт 7 бит?

Байт это сегда 8 бит по определению.
Другое дело что ты можешь один бит использовать для хранения знака, например, а 7 других для числа от 0 до 127
Аноним 01/06/26 Пнд 00:18:18 3715367 310
>>3715341
>Байт это сегда 8 бит по определению
Нет))) почитай книжек, ребёнок
Аноним 01/06/26 Пнд 00:20:25 3715368 311
>>3715339
Любой указатель и есть байт. Получается никакого указателя нет, есть только байты. Никакого си тоже нет, есть только байты. Которые всегда 8 бит, даже на PDP-10 для которого между прочим си и создан 🤡
Аноним 01/06/26 Пнд 02:25:18 3715396 312
>>3715368
>>3715367
Как же школьник подгорает.
Да, в современных системах байт это 8 бит. Минимальный набор битов для адресации.
Ну ты еще погугли про перфораторные компьютеры, порази нас эрудицией.

>Любой указатель и есть байт.

Что блядь? Это ты так понял "любой указатель указывает на байт"?
Аноним 01/06/26 Пнд 09:44:58 3715461 313
>>3715396
>Что блядь?
Ну, если никаких переменных и чисел не существует, а есть только "байты" (или как там это себе в бошке нафантазировал), то стало быть и значение адреса это тоже байты, а стало быть и никаких указателей нет, есть только байты. Ну и функции кстати тоже нет, есть только jmp, ret
Аноним 01/06/26 Пнд 10:51:05 3715485 314
Вы уже по хуйне начали сраться
Аноним 01/06/26 Пнд 12:52:14 3715559 315
images (31).jpeg 6Кб, 230x173
230x173
>>3715485
А да? Да ну нахуй. А я и не заметил, что тот анон с самого начала несёт хуйню (см. >>3715077 ), либо жиденько троллит.

Тред по С. В си типизация статическая. Тут есть типы переменных, прЕкинь!1 И переменную разных типов нельзя присвоить друг другу. Это тебе не java. В некоторых случаях выполняется неявное преобразование, если оно слишком очевидно, например char a = 2, ну очевидно что оно и в int должно быть 2, смысла отдельно попиисывать это преобразования нет, но в коде его таки прописывают часто, просто для информации, чтобы человек понимал что во что превратилось. А вот 1488 int в char это что? Ну можем взять лишнюю часть, то есть 1488 % 256 = 208. А почему так? Почему не 256? По стандарту C результат такого преобразования implementation-defined. То есть язык си не требует единственного варианта поведения - это уже реализация компилятора решает что делать. Поэтому надо явно написать "вот да, я знаю что делаю, я преобразую char в int". А зачем этот шиз выдал что "всё есть байты" - в душе не ебу. Походу дошколёнок пердежа столрярова надышался на его сайте, открыл для себя умное слово "байт" и носится везде с ним как с открытием. Тред про язык С, а вот ему надо благую весть всем рассказать, что оказывается вся память из байтов состоит. Когда он для себя RS-триггеры из курса автоматики откроет, будет носиться рассказывать всес что битов нет. Вот такая-с аудитория у С. Надо внатуре было нормальные языки учить.
Аноним 01/06/26 Пнд 14:09:43 3715603 316
>>3715461
Байты хранят числа.
Значение адресов это тоже числа.

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



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


> И переменную разных типов нельзя присвоить друг другу

Воед знаешь?

Короче, ты спалился когда спросил что такое указатель на байт. То есть ты не понимаешь что указатель именно на один байт и указывает.
Видимо сидишь через нейронку строчишь хуйню нихуя не соображая.
Аноним 01/06/26 Пнд 14:13:03 3715604 317
Это драконошизы протекают? В Би не было типов. В Си различие слова, байта и указателя стало шагом вперед.
Аноним 01/06/26 Пнд 17:12:15 3715718 318
>>3715291
не наступит, вайдчары давно есть
Аноним 01/06/26 Пнд 17:14:27 3715719 319
>>3715604
дракон кстати ахуенный, на нем в космос летали а на си хуй сосали
Аноним 01/06/26 Пнд 17:50:38 3715735 320
>>3715603
>Байты хранят числа.
>Значение адресов это тоже числа.
Ахахах. Машинные инструкции, внезапно, тоже числа. Еблан. Ты перед тем как своими охуительными "знаниями" выёбываться хотя бы почитал про архитектуру фона Неймана. Ебать ты дебил, вроде ты пытаешься умничать, а нихуя не получается.
Аноним 01/06/26 Пнд 17:54:11 3715741 321
i (1).jpeg 25Кб, 364x500
364x500
>>3715603
>> И переменную разных типов нельзя присвоить друг другу
>Воед знаешь?
Ахахах дебил, переменной void не существует в СИ. Есть только указатель на void. И его ВНЕЗАПНО нельзя присвоить ничему кроме *void. Что с ебалом. Ахахах дура, ебать.
Аноним 01/06/26 Пнд 18:12:04 3715748 322
>>3715735
Не плачь, дите.
Ну обосрался, ну значит обосрался. Нахуй жопой вилять?
Главное запомни что указатель указывает на байт т.е. хранит адрес байта.

>>3715741
>переменной void не существует в СИ. Есть только указатель на void.

Указатель это тоже внезапно переменная.

> И его ВНЕЗАПНО нельзя присвоить ничему кроме *void.

Да что ты говоришь? Серьезно?
Естественно указатель на воид МОЖЕТ указывать на адрес абсолютно любого типа.
Это собственно и есть его главная функция.


В общем, я понял что ты вообще нихуя не соображаешь, пройди просто нахуй.
Аноним 01/06/26 Пнд 18:31:47 3715754 323
>>3715748
>Ну обосрался, ну значит обосрался.
>Нахуй жопой вилять?
Это ты сам с собой говоришь, я так понял. Я твоей мамке про это раскажу она тебя ведь к детскому психологу отправит.
Аноним 02/06/26 Втр 19:58:17 3716338 324
Настройки X
Ответить в тред X
15000
Добавить файл/ctrl-v
Стикеры X
Избранное / Топ тредов