Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.94/48: Рейтинг темы: голосов - 48, средняя оценка - 4.94
1 / 1 / 1
Регистрация: 20.08.2015
Сообщений: 35

Почему для пустого класса или структуры выделяется 1 байт?

03.03.2016, 15:05. Показов 10821. Ответов 62
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
С коллегой знаем, что для пустого класса или структуры выделяется 1 байт. Но нигде не можем найти почему именно один байт. Но такая информация с объяснением где то была. Никто не может подсказать почему имено один 1 байт? Было бы хорошо ссылку на источник.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.03.2016, 15:05
Ответы с готовыми решениями:

Если для структуры используется оператор new, то память выделяется в куче или на стеке?
Если для структуры используется оператор new, например, так: struct SomeStruct { }

Почему часть или буква выделяется красным цветом?
почему когда вводиш функцыю или совершаеш другое действие то часть или буква выделяется красным цветом

Почему на указатель в 64-разрядной системе выделяется 8 байт памяти, а в 32-разрядной системе - 4 байта?
Здравствуйте! Почему на указатель в 64-разрядной системе выделяется 8 байт памяти, а в 32-разрядной системе - 4 байта? С чем связано...

62
Игогошка!
 Аватар для ct0r
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
04.03.2016, 18:05
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от IGPIGP Посмотреть сообщение
Дело в том, что тип может определяться вместе с экземпляром и это даёт очень странные синтаксические возможности. То есть, возможность появления имени тега параметром в функции sizeof, это вещь удивительная. Вообще, теговые определения, это штука забавная, хотя и забытая.
В частности, возможность локального определения типов и даже функций, это вещь о которой не все знают.
А это все тут причем, я не соображу?

Цитата Сообщение от rikimaru2013 Посмотреть сообщение
любое событие в С++ человек пытается объяснить на основе СИ кода
Я не вижу объяснения, я вижу фантазии на тему "си хорошо, плюсы плохо".

Цитата Сообщение от rikimaru2013 Посмотреть сообщение
думаю к СИ методам будут прибегать только в высоконагруженных местах.
С чего бы так делать?

Цитата Сообщение от Evg Посмотреть сообщение
что разные объекты должны иметь разные адреса, а зачем - хз
То есть ты думаешь, что два разных объекта по одному адресу - это нормально? Или ты имеешь в виду только пустые объекты? А почему они должны быть исключением из этого правила? Какое для этого обоснование? Зачем нужен весь гемор и баги, которые мы и разработчики компиляторов поимеем от надобности думать (забывать) об этом крайнем случае?
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
04.03.2016, 18:24
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
Evg, вы любой спор и тему сводите к своему СИ коду
Для человека, читающего поверхностно, да. Для человека, желающего подумать - в 99% случаев код на Си более понятен, чем код на Си++, а потому пример на Си с той же самой семантикой, будет куда более понятен человеку думающему, желающему докопаться до устройства вещей. Именно на них нацелено большинство моих постов. Конкретно в данном случае код на Си был приведён как демонстрация различных подходов к реализации пустых структур. Человеку думающему это всегда будет хороший факт, который надо взять во внимание, когда размышляешь над вопросом "а почему так сделано?" Почему (для чего) в GNU C пустой объект занимает 0 байт, а в C++ - 1 байт?

Цитата Сообщение от ct0r Посмотреть сообщение
То есть ты думаешь, что два разных объекта по одному адресу - это нормально? Или ты имеешь в виду только пустые объекты? А почему они должны быть исключением из этого правила? Какое для этого обоснование? Зачем нужен весь гемор и баги, которые мы и разработчики компиляторов поимеем от надобности думать (забывать) об этом крайнем случае?
Если хочешь аргументированно продемонстрировать, почему пустой объект должен иметь размер 1 байт - продемонстрируй, думаю, это будет интересно всем участникам темы
1
Игогошка!
 Аватар для ct0r
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
04.03.2016, 18:33
Цитата Сообщение от Evg Посмотреть сообщение
Почему (для чего) в GNU C пустой объект занимает 0 байт
Почему и для чего существует такое расширение - пустые структуры?

Цитата Сообщение от Evg Посмотреть сообщение
Если хочешь аргументированно продемонстрировать, почему пустой объект должен иметь размер 1 байт - продемонстрируй, думаю, это будет интересно всем участникам темы
Так я уже сказал: ради чего нарушать общий принцип, на котором может строиться обобщенный код: два разных объекта должны иметь разные адреса?
1
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
04.03.2016, 18:35
Цитата Сообщение от Evg Посмотреть сообщение
Если хочешь аргументированно продемонстрировать, почему пустой объект должен иметь размер 1 байт - продемонстрируй, думаю, это будет интересно всем участникам темы
потому что иначе такие объекты не смогут быть элементами массива.

попытка создать массив из объектов нулевого размера - противоречие здравому смыслу,
деление на ноль.


вообще 1 байтовость минимального размера объекта
вытекает из требований стандарта:
у любого объекта можно попросить адрес,
массивы можно формировать их объектов любых типов,

объект - кусок памяти.
разные объекты - разные куски.
и тп.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
04.03.2016, 18:40
Цитата Сообщение от ct0r Посмотреть сообщение
Так я уже сказал: ради чего нарушать общий принцип, на котором может строиться обобщенный код: два разных объекта должны иметь разные адреса?
Что за обобщённый код, которому нужно различать две сущности, не содержащие в себе данные?
0
 Аватар для Kastaneda
5232 / 3206 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
04.03.2016, 18:44
Вариант использования пустой структуры (нулевого размера) может быть таким - сообщение№1 и сообщение№2 (всю тему можно не читать).
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
04.03.2016, 18:49
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
тяжело глазам видить
закаляйте глаза. Мне тяжело видеть букву "и" там где не надо, поверьте я бы не стал Вам указывать, если бы Вы не стали указывать первым. Тут спорят кодом и доводами, а не нравоучениями вроде:
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
просто режит вечно слух
Что касается тегов то они пришли по наследству. Но в них есть свои интересности. Например, перегрузив скобки в теговом типе можно получить локальное определение функции.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class  
    {
    public:
int a;
int b;
int c;
int sum(){return a+b;}//обёрнутая в тег типа функция, фактически получает локальное объявление!
int operator()(int x){return a*x*x+b*x+c;}
    } myTaggedClassObject;
 
 
myTaggedClassObject.a=1;
myTaggedClassObject.b=2;
myTaggedClassObject.c=4;
cout<<"myTaggedClassObject(5)= "<<myTaggedClassObject(5)<<endl;//39)))
Это расширяет возможности языка?
Однозначно да. А вот нужны ли они на тот или иной взгляд, это уже холивар.
Evg, удобочитаемость, это вопрос привычки. Главное в том, на мой взгляд, что С++ это хоть и ограниченно, но С-совместимый язык. Этого аргумента вполне достаточно, чтобы относится к примерам на С с уважением.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
04.03.2016, 18:57
Цитата Сообщение от Kastaneda Посмотреть сообщение
Вариант использования пустой структуры (нулевого размера)
Да как-то слишком из пальца высосано. К тому же если в структуру добавить явное поле типа char, то принципиально ничего не поменяется

Не по теме:

Цитата Сообщение от IGPIGP Посмотреть сообщение
Evg, удобочитаемость, это вопрос привычки
Видимо, это не мне было?

0
 Аватар для Kastaneda
5232 / 3206 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
04.03.2016, 19:00
Цитата Сообщение от Evg Посмотреть сообщение
Да как-то слишком из пальца высосано
Можешь показать другие варианты?
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
04.03.2016, 19:24
Цитата Сообщение от Evg Посмотреть сообщение
Строго говоря, это не так
Мы в разделе С++, а не Си, т.ч. это всё-таки так.
C++
1
2
3
4
5
6
7
#include <iostream>
 
struct A {};
 
int main() {
    std::cout << sizeof( A ) << std::endl; // 1
}
Добавлено через 10 минут
Цитата Сообщение от Evg Посмотреть сообщение
С любителями цепляться к формулировкам я обычно не спорю
Дело не в том, что кто-то пытается цепляться к вашим словам. Дело в том, что вы пришли в чужой монастырь со своим уставом.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
04.03.2016, 19:26
Цитата Сообщение от Evg Посмотреть сообщение
Видимо, это не мне было?
А кому? Касается это того человека о котором:
Цитата Сообщение от Evg Посмотреть сообщение
Для человека, желающего подумать - в 99% случаев код на Си более понятен, чем код на Си++,
На С как и на С++ можно написать понятно. Тут никто не спорит. Моя реплика никак не затрагивает Ваше умение читать. Боже упаси. Речь о том, что иной раз легче выразить мысль используя С синтаксис. В рассмотренном случае, для sizeof имеет значение именно теговое имя и следовательно тут С нужен именно по смыслу.
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13210 / 6843 / 1824
Регистрация: 18.10.2014
Сообщений: 17,306
04.03.2016, 22:38
Лучший ответ Сообщение было отмечено rikimaru2013 как решение

Решение

Цитата Сообщение от Евгений Рим Посмотреть сообщение
С коллегой знаем, что для пустого класса или структуры выделяется 1 байт. Но нигде не можем найти почему именно один байт.
Вы с коллегой не совсем правы. Для пустого класса "выделяется" как минимум один байт только в случае определения самостоятельного объекта такого класса. Почему так сделано рассказывается у самого Страуструпа в его technical FAQ: http://www.stroustrup.com/bs_f... zeof-empty. А именно, это сделано для того, чтобы каждый самостоятельный объект получал уникальный адрес в памяти. Требование уникальности адреса для каждого самостоятельного объекта является требованием стандарта языка С++.

В то же время если объект не является самостоятельным, а является базовым подобъектом какого-то класса-наследника, то его вклад в общий размер класса-наследника может равняться нулю. Это тоже открыто разрешено стандартом языка (и упоминается по ссылке у Страуструпа). Т.е. в составе некоего класса-наследника размер пустого класса запросто может быть равным нулю.
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
04.03.2016, 22:43
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Т.е. в составе некоего класса-наследника размер пустого класса запросто может быть равным нулю.
Пример можете привести!?
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13210 / 6843 / 1824
Регистрация: 18.10.2014
Сообщений: 17,306
04.03.2016, 22:45
Цитата Сообщение от castaway Посмотреть сообщение
Пример можете привести!?
Разумеется

C++
1
2
3
4
5
6
7
8
9
class A {};
class B {};
class C {};
class D : A, B, C { int i; };
 
int main()
{
  std::cout << sizeof(A) << " " << sizeof(B) << " " << sizeof(C) << " " << sizeof(D) << " " << std::endl;
}
несмотря на то, что размер каждого базового класса рапортуется 'sizeof' как 1, общий размер класса-наследника 'D' запросто может быть равен 'sizeof(int)': http://coliru.stacked-crooked.... d12024a48e
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
04.03.2016, 22:54
TheCalligrapher, вы говорили что: "размер пустого класса запросто может быть равным нулю".
Увы, но ваш пример этого не показывает.
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13210 / 6843 / 1824
Регистрация: 18.10.2014
Сообщений: 17,306
04.03.2016, 23:43
Цитата Сообщение от castaway Посмотреть сообщение
вы говорили что: "размер пустого класса запросто может быть равным нулю".
Во-первых, мой пример призван иллюстрировать, а не показывать. Показывают же мои слова, написанные еще до моего примера и являющиеся лишь изложением соответствующей части спецификации языка С++ (1.8/5): "Base class subobjects may have zero size."

Во-вторых, не надо выдумывать. Я сказал, буквально: "его вклад в общий размер класса-наследника может равняться нулю", "в составе некоего класса-наследника размер пустого класса запросто может быть равным нулю". Именно это мой пример очень наглядно иллюстрирует.

Добавлено через 15 минут
Цитата Сообщение от Evg Посмотреть сообщение
и в языке GNU C
Тут ключевым моментом является то, что это именно GNU C - расширение стандартного С.

Стандартный С запрещает объявление пустых struct-типов. И все остальные лазейки, потенциально ведущие к структурам нулевого размера в языке С надежно перекрыты: массивы нулевого размера - запрещены, только безымянные битовые поля в struct - запрещены, flexible array member в конце struct - запрещен, если в структуре нет других полей.

Так что язык С (именно чистый С, а не GNU C) к этой дискуссии отношения не имеет не потому, что он оффтопик (как раз таки наоборот, сравнительные ссылки на С всегда только приветствуются), а потому, что язык С сам старательно устранился от этой темы

Добавлено через 21 минуту
Цитата Сообщение от Kastaneda Посмотреть сообщение
Вариант использования пустой структуры (нулевого размера) может быть таким - сообщение№1 и сообщение№2 (всю тему можно не читать).
За такие "варианты" надо по рукам бить. С точки зрения языка С++ это, разумеется, не более чем неопределенное поведение.

Один из интереснейших вариантов использования пустого класса в комбинации с упоминавшейся мной выше EBO (empty base optimization, оптимизация пустого базового класса) - это 'std::tuple' и ее роль в реализации стандартного "умного указателя" 'std::unique_ptr'. Этот указатель может использовать как дефолтный deleter для освобождения ресурса (памяти), так и deleter, предоставленный пользователем. Получается, что в общем случае 'std::unique_ptr' должен хранить как указатель на собственно объект, так еще и какую-то информацию о deleter.

В результате в наивной реализации размер 'std::unique_ptr' запросто может оказаться больше размера указателя.

Однако, разумная реализация 'std::tuple' (опирающаяся на EBO), использование 'std::tuple' в 'std::unique_ptr' для хранения указателя и deleter-а, а также указание пустого класса в варианте с дефолтным deleter-ом позволяют нам добиться того, что в случае использования дефолтного deleter-а объект 'std::unique_ptr' по размеру совпадает с обычным указателем, т.е. не содержит никаких накладных расходов.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
05.03.2016, 00:45
Цитата Сообщение от Kastaneda Посмотреть сообщение
Можешь показать другие варианты?
Не могу. Я же сказал, что не знаю, зачем такое придумали. Тут моих знаний C++ попросту недостаточно

Цитата Сообщение от IGPIGP Посмотреть сообщение
В рассмотренном случае, для sizeof имеет значение именно теговое имя и следовательно тут С нужен именно по смыслу
C (а точнее, GNU C) я привёл всего лишь как ещё один язык, в которой есть пустая структура, но который пошёл по другому пути - её размер равен нулю. Для GNU C я ещё хоть как-то интуитивно понимаю, почему так сделали и зачем вообще поддержали пустые структуры. Из того, что написал TheCalligrapher, я так понял, что всё-таки неспроста это сделано так. Пустой класс как самостоятельный тип для объекта и как базовый тип для наследования ведут себя по разному. Другими словами, "общий принцип", за который так радеют некоторые товарищи, всё-таки не умышленно соблюдаеся
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
05.03.2016, 01:12
Цитата Сообщение от Evg Посмотреть сообщение
я привёл всего лишь как ещё один язык, в которой есть пустая структура, но который пошёл по другому пути - её размер равен нулю.
Я это понял Evg. Я говорил о С тегах как о интереснейшей языковой конструкции вообще и для вопроса определения размера (данной темы) в частности. Функция sizeof() возвращает размер экземпляра, данные использует о типе (классе). Передавая ей переменную мы передаём её тип косвенно. Передавая имя типа, мы передаём инфу о типе непосредственно:
C++
1
cout<<sizeof(int)<<endl;//4
когда тип определён тегом то тег и есть имя типа, поэтому возможен такой вызов:
C++
1
cout<<sizeof(struct A)<<endl;//сколько есть в экземпляре столько и будет
но это конечно не значит, что sizeof возвращает размер класса. Она возвращает размер экземпляра класса. Хотя сказать размер типа или размер класса это вполне допустимо и жгучая нетерпимость в таком вопросе - сноббизм чистой воды (имхо).
Ещё я хотел сказать (напомнить тем кто знает), о уникальных свойствах определения тегом. Это конечно не замыкание, но забавная ведь возможность:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <iostream> 
#include <algorithm> 
#include <vector> 
using namespace std; 
template<typename T>
void show_array(T *arr, int arr_size)
{
for(int i=0; i<arr_size; ++i)cout<<arr[i]<<" ";
}
 
void main()
{
    cout<<sizeof(int)<<endl;
int array_int[]={1,4,3,5,2,7,9,5,2,3,7};
int array_int_size=sizeof(array_int)/sizeof(array_int[0]);
show_array<int>(array_int, array_int_size);
cout<<endl;
    struct T
    {
        
        T(bool dirrection_=true):dirrection(dirrection_){}
        bool dirrection;//true - по возрастанию
        bool operator()(int a, int b){if(dirrection)return a<b; return a>b; }
    }predecate;
sort(&array_int[0], &array_int[array_int_size], predecate);
show_array<int>(array_int, array_int_size);
cout<<endl;
predecate.dirrection=false;
sort(&array_int[0], &array_int[array_int_size], predecate);
show_array<int>(array_int, array_int_size);
cout<<endl;
system("pause");    
}
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13210 / 6843 / 1824
Регистрация: 18.10.2014
Сообщений: 17,306
05.03.2016, 01:41
Цитата Сообщение от IGPIGP Посмотреть сообщение
Функция sizeof()
'sizeof' - это оператор, а не функция. И понимание этой разницы - важно.

Цитата Сообщение от IGPIGP Посмотреть сообщение
но это конечно не значит, что sizeof возвращает размер класса. Она возвращает размер экземпляра класса.
Результат оператора 'sizeof' - количество байтов в объектном представлении операнда. Это понятие в терминологии С++ немедленно применимо как к типам, так и к объектам. Поэтому спецификация языка С++ даже и не пытается свести две формы 'sizeof' в одну. В этом нет никакой необходимости.

Даже синтаксис у этих форм отдельный. В частности в форме с операндом-выражением синтаксис 'sizeof' не имеет никаких '()'. Т.е. это 'sizeof выражение', а не 'sizeof(выражение)'

Цитата Сообщение от IGPIGP Посмотреть сообщение
о уникальных свойствах определения тегом
Что такое "определение тегом", где одно в этом коде и в чем его существенность? Все, что я тут вижу - это тривиальное определение локального класса и локального функционального объекта. К тому же уже вышедшее из обихода после появления в языке С++ функциональности lambda. Собственно lambda и была введена в язык во многом для того, чтобы как-то упростить использование локальных функциональных объектов и облагородить тот тихий ужас, который наблюдается в приведенном вами примере кода.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
05.03.2016, 01:54
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
'sizeof' - это оператор, а не функция.
если точнее то, это операция. Когда в скобках (именно это показывает какая форма) появилось ключевое слово struct речь шла о форме sizeof(). Это было в обсуждении несколькими постами выше.
TheCalligrapher, я и думать не берусь с Вами тягаться в знаниях.
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Что такое "определение тегом", где одно в этом коде и в чем его существенность?
Для Вас не в чём. Но в рамках 11 стандарта, это возможность локального определения функции. Почти.
Существенность в том, что определение типа тегом, это штука которую мало кто помнит. Может и зря я это поднял.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.03.2016, 01:54

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

При сохранении выделяется только 512 байт на файл
Привет всем!!! У меня есть текстовой файл В котором хранится массив строк Открытие файла работает нормально но при сохранении выделяется...

Почему при создании пустого проекта не открывается окно для написания кода? Visual Studio 2010
Парни не подскажете почему при создании пустого проекта не открывается окно для написания кода? P.S. У меня студия 2010. Не стоит...

При попытке создать динамический одномерный массив, под него выделяется только 8 байт памяти
Доброго времени суток. Проблема в следующем: при попытке создать динамический одномерный массив, под него выделяется только 8 байт...

Написать шаблон класса на основе класса vector для реализации стековой структуры данных
Пыталась написать код, но не уверена будет ли такая реализация корректной, можно ли это сделать как-то по - другому? И как надо...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
GitDOS: Когда я решил скрестить MS-DOS, GitHub и Claude
MaGz GoLd 08.07.2026
Привет, Киберфорум! Хочу поделиться своим проектом, который, надеюсь, вас заинтересует. GitDOS — это веб-приложение, которое позволяет запускать DOS в браузере с тремя крутыми фичами: диски живут в. . .
Учебный мини "цифровой двойник" = (Сервер = Java + Flask_питон )+(3D = Гугловскаая 4T nvideo + google colab) +( WMS = Odoo на Docker)
anaschu 07.07.2026
Увидел в требованиях к вакансии создателя имитационных моделей связку (REst + Api + WMS + Anylogic + питон + 3D Nvideo), и решил посмотреть, что это такое. Из этого всего я работал более менее. . .
Море в объективе
kumehtar 06.07.2026
Хотел написать много проникновенных слов, но передумал. Оно само - говорит. Кто слышит тот слышит.
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась. Первый вариант. . .
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2. Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru