Сообщение от mr.DIMAS
Еще сишечка заставляет вспоминать простые алгоритмы типа сортировки массивов\списков( вот только не надо напоминать про qsort ), что позволяет прокачать "скилл" перед собеседованием - у наших работодателей трешовые вопросы на собеседованиях, поэтому приходится такую ерунду вспоминать и задрачивать перед тестом.
|
Возможно совпадение, но как раз на этой недели я реализовывал данных алгоритм сортировки. Дело в том что вариант из с++std требует использовать итераторы, а qsort из cstd я посчитал старым и не стал разбирать в принципе (хорошее оправдание). У меня есть класс для работы с биллбоардами (это в движке рейкастинга), это вещь похожая на спрайты и их требуется сортировать по дальности от камеры чтобы в дальнейшем правильно подавать в пайплайн с альфаблендингом, и вот элементы quicksort'а я интегрировал прямо в этот класс. Однако нужно ли это требовать как необходимое знание если в этом можно разобраться в течении дня по мере необходимости?
ООП в целом != реализации ООП в C++. Речь идёт скорее о частичных реализациях ООП подходов, как у тебя или как в OpenGL где есть набор функций и есть индексы/дескрипторы объектов, которые передаешь в функцию, как некоторой аналог указателя this который неявно передаётся первым аргументом в методах C++ согласно соглашению о вызовах thiscall.
То есть прямо на C89\C99 написать и компилировать именно этим сишным компилятором? Что за код? Из рейкастинга что-то?
|
Скорее С11 -- там есть несколько важных улучшений касательно современных требований железа (например реализация многопоточности). Я решил попробовать такой эксперимент после того как узнал о DOD подходе, а он базируется как раз на принципах зависимости от железа, поэтому чем лучше язык оперирует данными в контексте железа (это не значит что он должен быть более низкоуровневый, скорее низкоуровневость некоторое следствие, которое не всегда удаётся побороть) тем успешнее можно реализовать данные подходы.
Ну например математическая библиотека вполне очевидное место которое можно попробовать написать на С. То есть такой же быстрый код можно написать и на С++ но С даст тоже самое с более простым синтаксисом, вот об этом я и говорю. Например если я на С++ хочу сделать POD структуры и функции для их работы, то мне нужно следовать некоторым правилам чтобы структура была POD (для надёжности добавить проверку через std::is_pod, делать методы static, добавлять noexcept для исключения проверок на перехваты (это кстати визуал студии не касается -- там исключения отличаются от стандарта) и прочие штуки, в то время как С по другому делать и не умеет, и всё что я напишу будет так как мне нужно без утяжеления синтаксиса. Поэтому как я сказал это эксперимент касается синтаксиса, читабельности кода, а не каких то методов синтеза более оптимального или быстрого бинарного кода, по идее он должен быть одинаковый, за исключением каких то деталей, зависящих от компиляторов.