Pull to refresh
4
Anatolii Mamaev@Serpentine

User

0,2
Rating
Send message

Указатели, массивы и строки, их взаимосвязь и то, как они передаются (или возвращаются) в функции — очень интересные темы и не такие уж сложные, как может показаться с первого взгляда. Вам должно понравиться.

Я же по этому поводу:

Ожидаю фидбека в комментариях!

Ничего страшного, научитесь еще.

  • Код функции предназначен для строк, а не для массивов со строками

И про этот "маленький" нюанс узнаете в процессе.

void lower(char *str) {
	for (int i = 0; str[i]; i++) {
		str[i] = tolower(str[i]);
}

А теперь используем:

...
char just_char_array[] = {'e', 'n', 'd', 'l', 'e', 's', 's', ' ', 'F', 'u', 'n'};
lower(just_char_array);
...

Наслаждаемся 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/ !

По ссылке на слове "запретил":

Там в оригинале «запретил»:

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 use Rust instead.

Что характерно, оригинал ссылается на новость с формулировкой о «прекращении разработки новых проектов на C/C++».

что появилось в C23

<...>

Генерики теперь официально в Си ...

... начиная с 11 стандарта: Generic selection (since C11).

struct EmployeeClass {
  const char* name;
  char[4];
  // Пустые байты, чтоб соответствовать размеру. (См. P. S. для большей информации)
  // WARNING: Довольно платформо-специфично, требует дополнительных проверок,
  // которые я ещё не проводил
};

А что за «специфичная платформа»™ подобное за С17 примет и не подавится? Для друга интересуюсь.

О различных ошибках при выполнении примеров кода прошу сообщать в комментарии, если они не указаны заранее.

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

Как-то мне однажды написали, что массивы существуют физически, а не как ссылка на первый элемент и размер, охватывающий все последующие.

А еще можно сишный букварь открыть (абсолютно любой) и не путать имя массива и его представление в памяти, ну и указатели со ссылками.

Предположу, что вырубят к концу января 2026, когда рекламный бюджет закончится. Как было с реакциями:

• конец ноября 2024: На Хабре появились Реакции

• конец января 2025: Реакции на Хабре: постмортем

И да, я согласен с предложением @haqreu — нумерация строк в коде гораздо сподручнее ИИ.

кроме значений Кармы и Рейтинга, еще и подсчет количества Банов (у скольких пользователей текущий человек находится в черном списке), то это будет супер полезная информация в самом начале дискуссии.

Вместо того, чтобы смотреть на эти значения, гораздо практичнее будет ознакомиться с несколькими предыдущими комментариями пользователя. А перед этим, понятное дело, прочитать его комментарий и оценить — следует ли (хочется ли) на него отвечать?

Например, ваш ответ может нанести пользу другим людям, которые хотели задать такой же вопрос, но не успели и не стали задавать, т.к. его уже озвучили. Конечно, ситуация, когда отвечаешь на тот же вопрос, но от «уважаемого» человека в следующем комментарии, гораздо комичнее — «Тебе, пёс заминусованый, лычку и билет в ЧС, но вот другому комментатору отвечу».

В части механизма игнора (в т.ч. счетчика) — затея деструктивная, выше уже описали почему. Не раз наблюдал картину, когда грамотные и интересные пользователи были заминусованы, что памятник Ленину голубями.

И, раз пошла такая пьянка, у меня тоже предложение:

2 @Boomburum (пардон, если не по адресу): Я подписан на крутых специалистов и в целом замечательных людей, иногда мне интересны не только их публикации, но и комментарии по разным темам. Хочу получать такие уведомления без танцев с RRS. Можно?

Или вы тролль?

Комментарий выше на ваше утверждение о «-1 → 0» в топике C/C++ — это не троллинг, а вполне адекватная реакция. Не важно, перепутали вы что-то или нет, вы об этом написали и вам на это ответили.

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

По поводу отношения к руководствам по win32 в 2025 году (а их за все время накопилось, хоть попой ешь) скажу так. Примерно раз в год на Хабре случаются выбросы в духе: «Пацаны, сейчас я научу вас писать свой движок на DX12. Часть первая: язык Си создал Деннис Ритчи в 1970 году, вот это указатель, вот так писать на плюсах, а так — создается окно. Вот мы и нарисовали окно, а как рисовать, объясню в следующей части».

Ясен пончик, запал заканчивается, и не то что до рисования — до инициализации DX дело не доходит, т.к. писатели сами вдуплить не могут в те 100500 loc, необходимых для радужного треугольника, либо поняли, что объяснить могут только треть или четверть из всего этого бойлерплейта. И все эти первые части стыдливо стираются самими авторами по прошествии пубертатного периода времени.

Пользователи этот цирк видят, отчего сии опусы у некоторых комментаторов ничего кроме раздражения и желания поострить не вызывают.

А почему собственно не правильный, точней чем?

Вы документацию конкретно по GetMessage() до конца читали? Что она в случае ошибки возвращает?

1
23 ...

Information

Rating
3,045-th
Location
Россия
Registered
Activity

Specialization

Программист
C
C++