Вопрос №2 - сколько миллионов миллиардов будет стоить инди 2D проект)
Я презентацию этого проекта посмотрел, ребята (их там человек 9) хотели бы от 300 тыс. до 1 млн. рублей по конкурсу получить.
Они как минимум с лета 2023 фестивалят с этой игрушкой (т.е. в конкурсах участвуют всяких). В демку поиграл, в их группе VK выложена была - подобие геймлея есть! :) О качестве судить не буду, т.к. не знаю уровень нынешних школьников/студентов. Раньше школота флеш-трешанину позабористее клепала, ну и не весила она 2ГБ.
Видимо у журналистов тем для новостей совсем нет, если такое на федеральных "Известиях" анонсируют.
Там же: "The code that has to run super-fast like the physics and animation, all that is C++" (David Helgason, the CEO and co-founder of Unity Technologies).
Допустим, компилятор убийц ассемблера может быть написан без использования ассемблера и переводить программу сразу в машинный код (объектный код опустим), минуя тот же ассемблер.
Тогда вопрос, а вот с этими убийцами убийц ассемблера такой фокус получится? Или для их существования/поддержки всё же требуется C/C++/третий язык?
Как заметил автор статьи, сейчас ничего полностью не умирает, тот же ассемблер, например. Он просто перестал быть мейнстримом. И если говорить о мейнстриме, то ИМХО Python или JS несколько лет уже вроде как "убили" сами знаете кого. Только вот ОС, драйвера и прочее, где нужна перфа, на этих "убийцах" не пишется.
Я говорю в контексте статьи и комментария, на который отвечал. В обоих случаях речь шла о повседневной одежде. Сварщики и таксисты (вообще мужики любых профессий) могут одеваться в тех же магазинах, что и "айтишники", а тут какое-то противопоставление.
Если почитать статью, то выяснится, что к проф.сфере там отношение имеют два предложения (у Маши парень программист + 2 строчки с комбинацией одежды для офиса), остальное про свидания и прогулки в парке. Сварщики редко в робе, фартуке и крагах на свидании по парку гуляют :)
UPD: А вообще было бы интересно почитать о выборе одежды для офисной работы в таком ключе: какие штаны купить, чтобы зад сильно не потел сидя на кресле, или чтобы рукава на локтях не истирались и не засаливались, когда печатаешь.
делать надо не так. поскольку у нас чистый си, а передаем мы ссылку, то надо просто ввести дефайн
#define ref *
На мой взгляд, вы слишком перемудрили, и это наоборот ещё больше запутает. И так видно, что передаем адрес объекта без возможности модификации значения. Кроме того, если есть непреодолимое желание, вместо него всё равно ведь можно будет передать практически любой набор байт, это же Си :)
есть хорошее правило - смотреть только прототипы, но не смотреть реализации.
Некоторые могут быть не знакомы с таким правилом, это же не догма.
Я сейчас личное мнение выскажу, но за что мне нравится Си, так это за свободу писать эффективный и аскетичный код без оглядки на авторитетное мнение (в отличие от C++ с его Core Guidelines и пр. от Страуструпа&Co, хотя и там как угодно можно писать). Руководствуемся только здравым смыслом и революционным чутьем, ну иногда стандартом и может K&R :) Понятное дело, если пишем в команде, то добавляем и другие договоренности.
Компилируемый и работающий без ошибок код на С для одного человека будет кристально чистым, а для другого может считаться неправильным.
Я всего контекста не вижу, но, судя по всему, у функций в статье вот такие прототипы:
int container_state_to_disk(const container_t *cont);
static int container_save_container_state_config(const container_t *cont);
Функция container_state_to_disk() имеет внешнее связывание, а container_save_container_state_config() - статическая с внутренним связыванием, т.е. этим макросом мы сменим область видимости container_state_to_disk() со всеми вытекающими.
Стивен Прата — Языĸ программирования C++. Леĸции и упражнения
По ссылке на подборку, которую вы привели, по всей видимости, находится кривой перевод этого топика со stackoverflow: линк. Там же обозначено, что обзор этой книги не очень благоприятный (я бы сказал, что обзор вообще-то даже слишком жестковат).
К сожалению, я бы сам эту книгу не рекомендовал (я её читал, если что) тем людям, кому не нужен C (без плюсов) и кому хочется быстрее обучиться C++ (современному что ли). Очень тяжело будет переключиться с C-style на стиль С++.
В своё время учебник Стивена Прата по Си мне очень сильно помог, т.к. после прочтения я могу действительно легко читать и понимать написанное в K&R и сишных стандартах, да и в целом код работающий писать :)
P.S. Разрешите также озвучить своё мнение по теме изучения C++:
Следует как можно раньше определиться с предметной областью (web, desktop, системное ПО, embedded, CG и т.д.), т.к. язык обладает обширными возможностями и действительно практически универсален, а выбор предметной области поможет сфокусироваться и не тратить силы на вкуривание отдельных глубин языка. Так можно и лет 10 его учить и не доучить.
P.P.S. Осмелюсь оставить ссылку на участника stackoverflow AnT - его ответы по C/C++ мне тоже помогали по некоторым темам, до которых я не допирал сам или не уделял внимания отдельным моментам в изучении.
В случае с этой презентацией я ничего сказать не могу, может это просто демки. Если очень захотеть и руки растут из нужного места, то порт таких игр задача выполнимая. Только вот навряд ли рокстары и беседки давали добро на порт и использование своих торговых марок и игровых ресурсов в этом контексте.
А по поводу финансирования наших разработчиков игр, думаю, предложение замечательное (если не извращать попилами/откатами/кумовством или передачей этих денег крупным студиям).
Видео с геймплеем понравилось, стиль приятный достаточно.
Единственная проблема возникла - глаза быстро устают. Еще серые фигуры (трава и плитки) перестали читаться и слились с черным фоном. Может это у меня одного такая проблема.
В любом случае продолжайте, надеюсь, у вас получится хорошая игра.
VLA из C решили таки выпилить, и они уже deprecated
В проекте ISO/IEC 9899:2024 (en) N3220 от 22.02.2024г. говорится, что VLA реализацией таки может поддерживаться (см. абзац 4 в § 6.7.6.2 Array declarators).
Результат же будет лежать в интервале [0; wordsA.size() - 1]
Я с этим не спорю. Заработался и мне померещилась ситуация, когда компилятор оптимизирует wordsA.size() в какое-то число и будет подставлять его вместо вычисления заново даже если размер массива был уменьшен.
Типа такого
std::vector <std::string> words = { "Один", "Два", "Три"};
/* какой-то код */
// вычислили words.size() = сохранили как 3
std::cout << words[rand() % words.size()] << std::endl;
// удалили элемент, теперь размер = 2
words.pop_back();
/* какой-то код */
// компилятор вместо вычисления words.size() все равно ставит 3
std::cout << words[rand() % words.size()] << std::endl;
Я не настоящий C++ программист, но пару вопросов к коду при прочтении возникло.
"word = wordsA[rand() % wordsA.size()]". В этой строке мы выбираем случайный элемент вектора, номер которого равняется делению псевдослучайного числа на длину вектора.
% - это оператор взятия остатка от целочисленного деления, не просто деления.
rand() % wordsA.size() - насчет UB не скажу, но, лично для меня, такая конструкция при индексировании массива выглядит угрожающе (выход за границы массива 99,9% не произойдет, но таки вдруг).
if (key == 27) // 27 - ASCII-код клавиши "Esc"
Если Вы активно пользуетесь WinAPI тогда может удобней будет пользоваться кодами виртуальных клавиш самой Windows? Подключения доп.заголовкапри этом не требуется, раз подключен windows.h.
if (key == VK_ESCAPE) // 27 - ASCII-код клавиши "Esc"
P.S. Сам готов к конструктивной критике моего комментария :)
Я презентацию этого проекта посмотрел, ребята (их там человек 9) хотели бы от 300 тыс. до 1 млн. рублей по конкурсу получить.
Они как минимум с лета 2023 фестивалят с этой игрушкой (т.е. в конкурсах участвуют всяких). В демку поиграл, в их группе VK выложена была - подобие геймлея есть! :) О качестве судить не буду, т.к. не знаю уровень нынешних школьников/студентов. Раньше школота флеш-трешанину позабористее клепала, ну и не весила она 2ГБ.
Видимо у журналистов тем для новостей совсем нет, если такое на федеральных "Известиях" анонсируют.
Нет, "Unity itself is written in C++".
Там же: "The code that has to run super-fast like the physics and animation, all that is C++" (David Helgason, the CEO and co-founder of Unity Technologies).
Насколько я знаю, @jin_x написал версию змейки размером 45 байт.
80% на C++. Тулзы и аддоны на Python. Его рендер (cycles) на C и С++.
Если я ничего не путаю, в Maya расширения тоже пишутся на Python, когда она сама написана C++.
Допустим, компилятор убийц ассемблера может быть написан без использования ассемблера и переводить программу сразу в машинный код (объектный код опустим), минуя тот же ассемблер.
Тогда вопрос, а вот с этими убийцами убийц ассемблера такой фокус получится? Или для их существования/поддержки всё же требуется C/C++/третий язык?
Как заметил автор статьи, сейчас ничего полностью не умирает, тот же ассемблер, например. Он просто перестал быть мейнстримом. И если говорить о мейнстриме, то ИМХО Python или JS несколько лет уже вроде как "убили" сами знаете кого. Только вот ОС, драйвера и прочее, где нужна перфа, на этих "убийцах" не пишется.
Использует:
Shell 60.7% (написана на С)
GAP 21.0% (написана на C)
C 16.6%
Библиотека Python, который вроде как на C реализован.
Инструментарий написан на C и С++.
Как я понял, у всех этих киллеров под капотом C и C++. Это уже самоубийство какое-то :)
Я говорю в контексте статьи и комментария, на который отвечал. В обоих случаях речь шла о повседневной одежде. Сварщики и таксисты (вообще мужики любых профессий) могут одеваться в тех же магазинах, что и "айтишники", а тут какое-то противопоставление.
Если почитать статью, то выяснится, что к проф.сфере там отношение имеют два предложения (у Маши парень программист + 2 строчки с комбинацией одежды для офиса), остальное про свидания и прогулки в парке. Сварщики редко в робе, фартуке и крагах на свидании по парку гуляют :)
UPD: А вообще было бы интересно почитать о выборе одежды для офисной работы в таком ключе: какие штаны купить, чтобы зад сильно не потел сидя на кресле, или чтобы рукава на локтях не истирались и не засаливались, когда печатаешь.
А сварщики, токаря, таксисты и вообще остальные мужики ну чисто Славы Зайцевы и Серёги Зверевы, да? :)
Я ни разу не "айтишник", но мне что-то глаза режет вот такое "выделение" в отдельный класс людей отдельной профессии уже на бытовом уровне.
Ах да, когда я работал чиновником, то выглядел примерно так:
Да есть там такое, только C23 ещё не принят, его проект сейчас на стадии рассмотрения, и не все компиляторы его поддерживают, понятное дело.
Когда примут, тогда у нас будет C++ без классов :)
На мой взгляд, вы слишком перемудрили, и это наоборот ещё больше запутает. И так видно, что передаем адрес объекта без возможности модификации значения. Кроме того, если есть непреодолимое желание, вместо него всё равно ведь можно будет передать практически любой набор байт, это же Си :)
Некоторые могут быть не знакомы с таким правилом, это же не догма.
Я сейчас личное мнение выскажу, но за что мне нравится Си, так это за свободу писать эффективный и аскетичный код без оглядки на авторитетное мнение (в отличие от C++ с его Core Guidelines и пр. от Страуструпа&Co, хотя и там как угодно можно писать). Руководствуемся только здравым смыслом и революционным чутьем, ну иногда стандартом и может K&R :) Понятное дело, если пишем в команде, то добавляем и другие договоренности.
Компилируемый и работающий без ошибок код на С для одного человека будет кристально чистым, а для другого может считаться неправильным.
Это сишный код, в Си нет ни ссылок, ни nullptr.
Я всего контекста не вижу, но, судя по всему, у функций в статье вот такие прототипы:
Функция container_state_to_disk() имеет внешнее связывание, а container_save_container_state_config() - статическая с внутренним связыванием, т.е. этим макросом мы сменим область видимости container_state_to_disk() со всеми вытекающими.
По ссылке на подборку, которую вы привели, по всей видимости, находится кривой перевод этого топика со stackoverflow: линк. Там же обозначено, что обзор этой книги не очень благоприятный (я бы сказал, что обзор вообще-то даже слишком жестковат).
К сожалению, я бы сам эту книгу не рекомендовал (я её читал, если что) тем людям, кому не нужен C (без плюсов) и кому хочется быстрее обучиться C++ (современному что ли). Очень тяжело будет переключиться с C-style на стиль С++.
В своё время учебник Стивена Прата по Си мне очень сильно помог, т.к. после прочтения я могу действительно легко читать и понимать написанное в K&R и сишных стандартах, да и в целом код работающий писать :)
P.S. Разрешите также озвучить своё мнение по теме изучения C++:
Следует как можно раньше определиться с предметной областью (web, desktop, системное ПО, embedded, CG и т.д.), т.к. язык обладает обширными возможностями и действительно практически универсален, а выбор предметной области поможет сфокусироваться и не тратить силы на вкуривание отдельных глубин языка. Так можно и лет 10 его учить и не доучить.
P.P.S. Осмелюсь оставить ссылку на участника stackoverflow AnT - его ответы по C/C++ мне тоже помогали по некоторым темам, до которых я не допирал сам или не уделял внимания отдельным моментам в изучении.
В случае с этой презентацией я ничего сказать не могу, может это просто демки. Если очень захотеть и руки растут из нужного места, то порт таких игр задача выполнимая. Только вот навряд ли рокстары и беседки давали добро на порт и использование своих торговых марок и игровых ресурсов в этом контексте.
А по поводу финансирования наших разработчиков игр, думаю, предложение замечательное (если не извращать попилами/откатами/кумовством или передачей этих денег крупным студиям).
Видео с геймплеем понравилось, стиль приятный достаточно.
Единственная проблема возникла - глаза быстро устают. Еще серые фигуры (трава и плитки) перестали читаться и слились с черным фоном. Может это у меня одного такая проблема.
В любом случае продолжайте, надеюсь, у вас получится хорошая игра.
На гите есть исходники (результат реверс-инжиниринга) GTA 3 / VC и первого Falloutа, а также опенсорс движок для третьих героев.
В проекте ISO/IEC 9899:2024 (en) N3220 от 22.02.2024г. говорится, что VLA реализацией таки может поддерживаться (см. абзац 4 в § 6.7.6.2 Array declarators).
Я с этим не спорю. Заработался и мне померещилась ситуация, когда компилятор оптимизирует wordsA.size() в какое-то число и будет подставлять его вместо вычисления заново даже если размер массива был уменьшен.
Типа такого
Прошу прощения за этот бред :)
Я не настоящий C++ программист, но пару вопросов к коду при прочтении возникло.
% - это оператор взятия остатка от целочисленного деления, не просто деления.
rand() % wordsA.size() - насчет UB не скажу, но, лично для меня, такая конструкция при индексировании массива выглядит угрожающе (выход за границы массива 99,9% не произойдет, но таки вдруг).
Если Вы активно пользуетесь WinAPI тогда может удобней будет пользоваться кодами виртуальных клавиш самой Windows? Подключения доп.заголовкапри этом не требуется, раз подключен windows.h.
P.S. Сам готов к конструктивной критике моего комментария :)
Вот об этом я и не подумал.
Тогда под Ред ОС или KasperskyOS, т.к. Astra Linux он уже, об этом писали. :)