Указатели, массивы и строки, их взаимосвязь и то, как они передаются (или возвращаются) в функции — очень интересные темы и не такие уж сложные, как может показаться с первого взгляда. Вам должно понравиться.
Дополню небольшим инсайтом про работу над черновиком Game++ уже со своей колокольни. Да, будет практически дубль с моим комментом в анонсе от издательства, но молчать опять не могу :)
С Сергеем познакомился на Хабре и, когда я летом прошлого года в комментах оффтопнул с наивным вопросом: «а где прочитать разное структурированное про оптимизацию? чтобы не метаться по всему интернету и не тратить много лет, собирая в своей голове всё это воедино», он мне в личке предложил посмотреть черновик будущей книги и позадавать вопросы, если я чего-то не понял из материала. Вопросов я назадавал вдоволь, да и своими комментами буквально заспамил весь черновик.
Там поначалу была только половина (около 250 страниц) материала и ASCII-схемы из статей одноименного цикла (можете их увидеть на Хабре). В некоторые схемы я не врубился и вызвался их перевести в вектор (пришлось вспомнить университетские навыки работы с CorelDraw), чтобы было и красивее и понятнее (даже мне). Как результат: два или три месяца работы по вечерам/ночам и около 250 иллюстраций. Они с виду простенькие, но над некоторыми пришлось поработать дольше, почитать доп.литературу, статьи, собрать референсы, чтобы как можно локаничнее, точнее, нагляднее и грамотнее передать суть.
Теперь впечатления непосредственно про книгу — она вдохновляющая, когда я читал о некоторых аллокаторах (их не было, в статьях на Хабре, если что), у меня временами взрывался мозг — "а что так можно было? кто такое вообще придумал?". Вот игрушка на первый облыжный взгляд простенькая, ну не крузис же, чего сложного-то? — а под капотом тройной стековый аллокатор, еще и на асме, чтобы на железе тех лет она не то что летала, а вообще работала — вы представляете этот уровень мастерства и любви к искусству?
Далее порадовала часть про STL и вредные советы по алгоритмам (а-ля "Вредные советы для C++ программистов" Андрея Карпова — тоже классная книга), потому что там мне иллюстрации не надо было рисовать я познакомился с очень сильной аргументацией и дельными замечаниями от практикующего С++ разработчика, а не теоретика. Эта часть на меня сильное влияние оказала, что не надо выпендриваться и отказываться от возможностей языка и его библиотеки, когда некоторые «мэтры» считают иначе, ты код пишешь и в процессе важно его таки написать в разумный срок, чтобы работал и другие читать смогли, а не только самоутвердиться.
Про аудиторию. Game++ — это не учебник и не руководство для совсем уж начинающих, т.е. с одной только этой книгой вы движок не напишете, предполагается, что на плюсах писать вы можете и хотите. Более широкие знания / направления можно почерпнуть из GEA Грегори вкупе с Game Programming Patterns Найстрома, да и у них идет столько отсылок на источники, что лет за 50 всё не перечитать. Game++ эти книжки хорошо дополнит — можно (или лучше даже) читать их параллельно.
А еще у меня, как у начинающего, эта книга развеяла иллюзии про оптимизацию кода, в голове раньше была какая-то радужная картинка, мол, вот крестами/матаном/CS овладею, паттерны повторю, где-то алгоритм со SO подрежу и буду вторым Кармаком — авотфиг! — тонну кода пересмотри / сам напиши, инструментом овладей, матчасть прочитай, мозг включи, опыта / насмотренности наберись, вот тогда будет счастье (но не долго, т.к. эта музыка будет вечной, и придется повторять процедуру раз за разом).
Ну и еще много чего полезного я вынес из Game++, и про архитектуру и обзоры движков (юнити, анрил, дагор, край энжин и т.д.), как, кем, для чего они писались, что авторы хотели, на что обращали внимание, и про аллокаторы и контейнеры: какие бывают, где их применять, как их разогнать, какие нюансы и подводные камни бывают. И еще вагон с тележкой про многопоточность и паттерны разработки.
Сергея и причастных еще раз благодарю и поздравляю с выходом книги. Рад, что удалось внести свою лепту в ее создание.
Я с комментом для поста-анонса немного запоздал, но как человек, который активно тормозил процесс и в первые же недели заспамил черновик своими комментариями и вопросами, не могу не поделиться своими личными впечатлениями от знакомства с книгой Сергея.
В первую очередь, Game++ — вдохновляющая книга, когда я читал о некоторых аллокаторах (их не было, в статьях на Хабре, если что), у меня временами взрывался мозг — "а что так можно было? кто такое вообще придумал?".
Порадовала часть про STL и вредные советы по алгоритмам (а-ля "Вредные советы для C++ программистов" Андрея Карпова — тоже классная книга), потому что там мне иллюстрации не надо было рисовать я познакомился с очень сильной аргументацией и дельными замечаниями от практикующего С++ разработчика, а не теоретика. Она на меня сильное влияние оказала.
И это не учебник и не руководство для совсем уж начинающих, т.е. с одной только этой книгой вы движок не напишете, предполагается, что на плюсах писать вы можете и хотите. Более широкие знания / направления можно почерпнуть из GEA Грегори вкупе с Game Programming Patterns Найстрома, да и у них идет столько отсылок на источники, что лет за 50 всё не перечитать. Game++ эти книжки хорошо дополнит — можно (или лучше даже) читать их параллельно.
А еще у меня, как у начинающего, эта книга развеяла иллюзии про оптимизацию кода, в голове раньше была какая-то радужная картинка, мол, вот крестами/матаном/CS овладею, паттерны повторю, где-то алгоритм со SO подрежу и буду вторым Кармаком — авотфиг! — тонну кода перечитай / сам напиши, инструментом овладей, матчасть прочитай, мозг включи, опыта / насмотренности наберись, вот тогда будет счастье (но не долго, т.к. эта музыка будет вечной, и придется повторять процедуру раз за разом).
Ну и еще много чего полезного я вынес из Game++, и рад, что удалось внести свою лепту в ее создание.
@dalerank, тебе и причастным большое спасибо за этот труд :)
UPD: Дорогие минусаторы и лица, испытывающие ко мне личную неприязнь из-за коммента выше, отпишите мне в ЛС, пожалуйста. Чтобы я держался подальше от людей, считающих нормальным и допустимым публично прикалываться над внешностью незнакомых и непричастных женщин.
Предыдущий комментатор, скорее всего, имел ввиду пункты из пользовательского соглашения, где указано, что пользователь — это лицо старше18 лет.
Как по мне, статья у вас получилась добротная, а энтузиазму и успехам можно позавидовать, сборка крестово-сишного кода — это иногда та еще боль, способная вывернуть душу.
It announced in 2023 that it would rewrite parts of the Windows kernel using Rust after Azure CTO Mark Russinovich forbid developers from starting new C/C++ projects and required them to useRust instead.
Что характерно, оригинал ссылается на новость с формулировкой о «прекращении разработки новых проектов на C/C++».
struct EmployeeClass {
const char* name;
char[4];
// Пустые байты, чтоб соответствовать размеру. (См. P. S. для большей информации)
// WARNING: Довольно платформо-специфично, требует дополнительных проверок,
// которые я ещё не проводил
};
А что за «специфичная платформа»™ подобное за С17 примет и не подавится? Для друга интересуюсь.
О различных ошибках при выполнении примеров кода прошу сообщать в комментарии, если они не указаны заранее.
Попробуйте сами их хотя бы собрать, если не сделали это до публикации.
Как-то мне однажды написали, что массивы существуют физически, а не как ссылка на первый элемент и размер, охватывающий все последующие.
А еще можно сишный букварь открыть (абсолютно любой) и не путать имя массива и его представление в памяти, ну и указатели со ссылками.
кроме значений Кармы и Рейтинга, еще и подсчет количества Банов (у скольких пользователей текущий человек находится в черном списке), то это будет супер полезная информация в самом начале дискуссии.
Вместо того, чтобы смотреть на эти значения, гораздо практичнее будет ознакомиться с несколькими предыдущими комментариями пользователя. А перед этим, понятное дело, прочитать его комментарий и оценить — следует ли (хочется ли) на него отвечать?
Например, ваш ответ может нанести пользу другим людям, которые хотели задать такой же вопрос, но не успели и не стали задавать, т.к. его уже озвучили. Конечно, ситуация, когда отвечаешь на тот же вопрос, но от «уважаемого» человека в следующем комментарии, гораздо комичнее — «Тебе, пёс заминусованый, лычку и билет в ЧС, но вот другому комментатору отвечу».
В части механизма игнора (в т.ч. счетчика) — затея деструктивная, выше уже описали почему. Не раз наблюдал картину, когда грамотные и интересные пользователи были заминусованы, что памятник Ленину голубями.
И, раз пошла такая пьянка, у меня тоже предложение:
2 @Boomburum (пардон, если не по адресу): Я подписан на крутых специалистов и в целом замечательных людей, иногда мне интересны не только их публикации, но и комментарии по разным темам. Хочу получать такие уведомления без танцев с RRS. Можно?
Комментарий выше на ваше утверждение о «-1 → 0» в топике C/C++ — это не троллинг, а вполне адекватная реакция. Не важно, перепутали вы что-то или нет, вы об этом написали и вам на это ответили.
В части правильно/неправильно давать в «руководстве для новичков» подход, который может привести к ошибкам в более сложных случаях, тут уж вам решать. Вы же сами назвали статью «альтернативой» документации и захотели улучшить ее.
По поводу отношения к руководствам по win32 в 2025 году (а их за все время накопилось, хоть попой ешь) скажу так. Примерно раз в год на Хабре случаются выбросы в духе: «Пацаны, сейчас я научу вас писать свой движок на DX12. Часть первая: язык Си создал Деннис Ритчи в 1970 году, вот это указатель, вот так писать на плюсах, а так — создается окно. Вот мы и нарисовали окно, а как рисовать, объясню в следующей части».
Ясен пончик, запал заканчивается, и не то что до рисования — до инициализации DX дело не доходит, т.к. писатели сами вдуплить не могут в те 100500 loc, необходимых для радужного треугольника, либо поняли, что объяснить могут только треть или четверть из всего этого бойлерплейта. И все эти первые части стыдливо стираются самими авторами по прошествии пубертатного периода времени.
Пользователи этот цирк видят, отчего сии опусы у некоторых комментаторов ничего кроме раздражения и желания поострить не вызывают.
Указатели, массивы и строки, их взаимосвязь и то, как они передаются (или возвращаются) в функции — очень интересные темы и не такие уж сложные, как может показаться с первого взгляда. Вам должно понравиться.
Я же по этому поводу:
Ничего страшного, научитесь еще.
И про этот "маленький" нюанс узнаете в процессе.
А теперь используем:
Наслаждаемся UB.
Не успел тебе написать, но на сайте издательства действительно нет доступа к оглавлению. Считаю надо добавить обязательно.
Раньше все смеялись и испытывали испанский стыд с креативов "девочек-дизайнеров", теперь на их место пришли сетки.
Но, блин, ладно безмозглый генератор псевдослучайных пикселей такое выдает, но публикующий этот нейрослоп пользователь тоже шестипалый что ли?
Картинка с морячком тоже отличная — получился рогатый "ч0рт морской".
Дополню небольшим инсайтом про работу над черновиком Game++ уже со своей колокольни. Да, будет практически дубль с моим комментом в анонсе от издательства, но молчать опять не могу :)
С Сергеем познакомился на Хабре и, когда я летом прошлого года в комментах оффтопнул с наивным вопросом: «а где прочитать разное структурированное про оптимизацию? чтобы не метаться по всему интернету и не тратить много лет, собирая в своей голове всё это воедино», он мне в личке предложил посмотреть черновик будущей книги и позадавать вопросы, если я чего-то не понял из материала. Вопросов я назадавал вдоволь, да и своими комментами буквально заспамил весь черновик.
Там поначалу была только половина (около 250 страниц) материала и ASCII-схемы из статей одноименного цикла (можете их увидеть на Хабре). В некоторые схемы я не врубился и вызвался их перевести в вектор (пришлось вспомнить университетские навыки работы с CorelDraw), чтобы было и красивее и понятнее (даже мне). Как результат: два или три месяца работы по вечерам/ночам и около 250 иллюстраций. Они с виду простенькие, но над некоторыми пришлось поработать дольше, почитать доп.литературу, статьи, собрать референсы, чтобы как можно локаничнее, точнее, нагляднее и грамотнее передать суть.
Теперь впечатления непосредственно про книгу — она вдохновляющая, когда я читал о некоторых аллокаторах (их не было, в статьях на Хабре, если что), у меня временами взрывался мозг — "а что так можно было? кто такое вообще придумал?". Вот игрушка на первый облыжный взгляд простенькая, ну не крузис же, чего сложного-то? — а под капотом тройной стековый аллокатор, еще и на асме, чтобы на железе тех лет она не то что летала, а вообще работала — вы представляете этот уровень мастерства и любви к искусству?
Далее порадовала часть про STL и вредные советы по алгоритмам (а-ля "Вредные советы для C++ программистов" Андрея Карпова — тоже классная книга), потому что там
мне иллюстрации не надо было рисоватья познакомился с очень сильной аргументацией и дельными замечаниями от практикующего С++ разработчика, а не теоретика. Эта часть на меня сильное влияние оказала, что не надо выпендриваться и отказываться от возможностей языка и его библиотеки, когда некоторые «мэтры» считают иначе, ты код пишешь и в процессе важно его таки написать в разумный срок, чтобы работал и другие читать смогли, а не только самоутвердиться.Про аудиторию. Game++ — это не учебник и не руководство для совсем уж начинающих, т.е. с одной только этой книгой вы движок не напишете, предполагается, что на плюсах писать вы можете и хотите. Более широкие знания / направления можно почерпнуть из GEA Грегори вкупе с Game Programming Patterns Найстрома, да и у них идет столько отсылок на источники, что лет за 50 всё не перечитать. Game++ эти книжки хорошо дополнит — можно (или лучше даже) читать их параллельно.
А еще у меня, как у начинающего, эта книга развеяла иллюзии про оптимизацию кода, в голове раньше была какая-то радужная картинка, мол, вот крестами/матаном/CS овладею, паттерны повторю, где-то алгоритм со SO подрежу и буду вторым Кармаком — авотфиг! — тонну кода пересмотри / сам напиши, инструментом овладей, матчасть прочитай, мозг включи, опыта / насмотренности наберись, вот тогда будет счастье (но не долго, т.к. эта музыка будет вечной, и придется повторять процедуру раз за разом).
Ну и еще много чего полезного я вынес из Game++, и про архитектуру и обзоры движков (юнити, анрил, дагор, край энжин и т.д.), как, кем, для чего они писались, что авторы хотели, на что обращали внимание, и про аллокаторы и контейнеры: какие бывают, где их применять, как их разогнать, какие нюансы и подводные камни бывают. И еще вагон с тележкой про многопоточность и паттерны разработки.
Сергея и причастных еще раз благодарю и поздравляю с выходом книги. Рад, что удалось внести свою лепту в ее создание.
Я с комментом для поста-анонса немного запоздал, но как человек, который активно тормозил процесс и в первые же недели заспамил черновик своими комментариями и вопросами, не могу не поделиться своими личными впечатлениями от знакомства с книгой Сергея.
В первую очередь, Game++ — вдохновляющая книга, когда я читал о некоторых аллокаторах (их не было, в статьях на Хабре, если что), у меня временами взрывался мозг — "а что так можно было? кто такое вообще придумал?".
Порадовала часть про STL и вредные советы по алгоритмам (а-ля "Вредные советы для C++ программистов" Андрея Карпова — тоже классная книга), потому что там
мне иллюстрации не надо было рисоватья познакомился с очень сильной аргументацией и дельными замечаниями от практикующего С++ разработчика, а не теоретика. Она на меня сильное влияние оказала.И это не учебник и не руководство для совсем уж начинающих, т.е. с одной только этой книгой вы движок не напишете, предполагается, что на плюсах писать вы можете и хотите. Более широкие знания / направления можно почерпнуть из GEA Грегори вкупе с Game Programming Patterns Найстрома, да и у них идет столько отсылок на источники, что лет за 50 всё не перечитать. Game++ эти книжки хорошо дополнит — можно (или лучше даже) читать их параллельно.
А еще у меня, как у начинающего, эта книга развеяла иллюзии про оптимизацию кода, в голове раньше была какая-то радужная картинка, мол, вот крестами/матаном/CS овладею, паттерны повторю, где-то алгоритм со SO подрежу и буду вторым Кармаком — авотфиг! — тонну кода перечитай / сам напиши, инструментом овладей, матчасть прочитай, мозг включи, опыта / насмотренности наберись, вот тогда будет счастье (но не долго, т.к. эта музыка будет вечной, и придется повторять процедуру раз за разом).
Ну и еще много чего полезного я вынес из Game++, и рад, что удалось внести свою лепту в ее создание.
@dalerank, тебе и причастным большое спасибо за этот труд :)
Боюсь, вы за деревьями леса не видите.
И под «деревьями» я понимаю — обычные деревья, а не бинарные!
Вы же человек бывалый, а за всю Одессу говорите. Резать правду по матке != вести себя как скот или как на удафф.ком.
Признаю, дзен потерял — вызвал администрацию, а они меня в РО даже не отправили. Хотя, какие мои годы.
UPD: Дорогие минусаторы и лица, испытывающие ко мне личную неприязнь из-за коммента выше, отпишите мне в ЛС, пожалуйста. Чтобы я держался подальше от людей, считающих нормальным и допустимым публично прикалываться над внешностью незнакомых и непричастных женщин.
Предыдущий комментатор, скорее всего, имел ввиду пункты из пользовательского соглашения, где указано, что пользователь — это лицо старше18 лет.
Как по мне, статья у вас получилась добротная, а энтузиазму и успехам можно позавидовать, сборка крестово-сишного кода — это иногда та еще боль, способная вывернуть душу.
@moderator, я только что назвал другого пользователя дебилом, примите меры!
Бог с ним, что он пустой, зато какое замечательное название у аккаунта: https://github.com/Eda-gondona/ !
Там в оригинале «запретил»:
Что характерно, оригинал ссылается на новость с формулировкой о «прекращении разработки новых проектов на C/C++».
... начиная с 11 стандарта: Generic selection (since C11).
А что за «специфичная платформа»™ подобное за С17 примет и не подавится? Для друга интересуюсь.
Попробуйте сами их хотя бы собрать, если не сделали это до публикации.
А еще можно сишный букварь открыть (абсолютно любой) и не путать имя массива и его представление в памяти, ну и указатели со ссылками.
Предположу, что вырубят к концу января 2026, когда рекламный бюджет закончится. Как было с реакциями:
• конец ноября 2024: На Хабре появились Реакции
• конец января 2025: Реакции на Хабре: постмортем
И да, я согласен с предложением @haqreu — нумерация строк в коде гораздо сподручнее ИИ.
Вместо того, чтобы смотреть на эти значения, гораздо практичнее будет ознакомиться с несколькими предыдущими комментариями пользователя. А перед этим, понятное дело, прочитать его комментарий и оценить — следует ли (хочется ли) на него отвечать?
Например, ваш ответ может нанести пользу другим людям, которые хотели задать такой же вопрос, но не успели и не стали задавать, т.к. его уже озвучили. Конечно, ситуация, когда отвечаешь на тот же вопрос, но от «уважаемого» человека в следующем комментарии, гораздо комичнее — «Тебе, пёс заминусованый, лычку и билет в ЧС, но вот другому комментатору отвечу».
В части механизма игнора (в т.ч. счетчика) — затея деструктивная, выше уже описали почему. Не раз наблюдал картину, когда грамотные и интересные пользователи были заминусованы, что памятник Ленину голубями.
И, раз пошла такая пьянка, у меня тоже предложение:
2 @Boomburum (пардон, если не по адресу): Я подписан на крутых специалистов и в целом замечательных людей, иногда мне интересны не только их публикации, но и комментарии по разным темам. Хочу получать такие уведомления без танцев с RRS. Можно?
Комментарий выше на ваше утверждение о «-1 → 0» в топике C/C++ — это не троллинг, а вполне адекватная реакция. Не важно, перепутали вы что-то или нет, вы об этом написали и вам на это ответили.
В части правильно/неправильно давать в «руководстве для новичков» подход, который может привести к ошибкам в более сложных случаях, тут уж вам решать. Вы же сами назвали статью «альтернативой» документации и захотели улучшить ее.
По поводу отношения к руководствам по win32 в 2025 году (а их за все время накопилось, хоть попой ешь) скажу так. Примерно раз в год на Хабре случаются выбросы в духе: «Пацаны, сейчас я научу вас писать свой движок на DX12. Часть первая: язык Си создал Деннис Ритчи в 1970 году, вот это указатель, вот так писать на плюсах, а так — создается окно. Вот мы и нарисовали окно, а как рисовать, объясню в следующей части».
Ясен пончик, запал заканчивается, и не то что до рисования — до инициализации DX дело не доходит, т.к. писатели сами вдуплить не могут в те 100500 loc, необходимых для радужного треугольника, либо поняли, что объяснить могут только треть или четверть из всего этого бойлерплейта. И все эти первые части стыдливо стираются самими авторами по прошествии
пубертатного периодавремени.Пользователи этот цирк видят, отчего сии опусы у некоторых комментаторов ничего кроме раздражения и желания поострить не вызывают.
Вы документацию конкретно по GetMessage() до конца читали? Что она в случае ошибки возвращает?