Услышал тут вопрос на собеседовании, оцените насколько хорошо вы знаете СИ по пятибальной системе? Я ответил, шуткой, что мол на 11... )
Человек-интервьер как-то насупился на мой ответ... )
А я вот сижу думаю... и реально не понимаю, что можно не знать в СИ? Коллеги, если есть те кто уверен, что я не прав, пожалуйста, раскройте в чем именно?
I>Услышал тут вопрос на собеседовании, оцените насколько хорошо вы знаете СИ по пятибальной системе? Я ответил, шуткой, что мол на 11... )
I>А я вот сижу думаю... и реально не понимаю, что можно не знать в СИ? Коллеги, если есть те кто уверен, что я не прав, пожалуйста, раскройте в чем именно?
тут надо не скромничать, а просто дать ссылку на компилятор СИ, который вы написали!
Здравствуйте, ...., Вы писали:
>тут надо не скромничать, а просто дать ссылку на компилятор СИ, который вы написали!
не факт, что это будет означать что знаешь СИ вот прям как-то особо хорошо.
В том же GCC есть куча ньюансов которые надо знать. Например инлайн функции в виде макросов и асемблер внутри... Вообщем не думаю, что писание компилятора это о чем-то крутом говорит. )
Здравствуйте, ...., Вы писали:
I>>Услышал тут вопрос на собеседовании, оцените насколько хорошо вы знаете СИ по пятибальной системе? Я ответил, шуткой, что мол на 11... ) I>>А я вот сижу думаю... и реально не понимаю, что можно не знать в СИ? Коллеги, если есть те кто уверен, что я не прав, пожалуйста, раскройте в чем именно? >тут надо не скромничать, а просто дать ссылку на компилятор СИ, который вы написали!
А чтобы хорошо писать по-русски надо быть Кириллом или Мефодием?
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
I>Услышал тут вопрос на собеседовании, оцените насколько хорошо вы знаете СИ по пятибальной системе? Я ответил, шуткой, что мол на 11... )
I>Человек-интервьер как-то насупился на мой ответ... )
Скорее всего он насупился не от того что ты чего-то не знаешь, а потому что твой ответ OoB/type mismatch/UB.
Если есть желание — найдется 1000 возможностей.
Если нет желания — найдется 1000 причин.
Здравствуйте, imh0, Вы писали:
I>Услышал тут вопрос на собеседовании, оцените насколько хорошо вы знаете СИ по пятибальной системе? Я ответил, шуткой, что мол на 11... )
I>Человек-интервьер как-то насупился на мой ответ... )
I>А я вот сижу думаю... и реально не понимаю, что можно не знать в СИ? Коллеги, если есть те кто уверен, что я не прав, пожалуйста, раскройте в чем именно?
Здравствуйте, imh0, Вы писали:
I>А я вот сижу думаю... и реально не понимаю, что можно не знать в СИ? Коллеги, если есть те кто уверен, что я не прав, пожалуйста, раскройте в чем именно?
Ну триграфы какие-нибудь.
Или как препроцессором склеить две строки.
Здравствуйте, imh0, Вы писали:
I>А я вот сижу думаю... и реально не понимаю, что можно не знать в СИ? Коллеги, если есть те кто уверен, что я не прав, пожалуйста, раскройте в чем именно?
Например как правильно работать с локальными переменными при использоании
setjmp/longjmp. Почему-то авторы многих чудовищно распространных библиотек
на С эмулируют с помощью setjmp/longjmp исключения (например libpng/libjpeg).
И например авторы https://github.com/ArtifexSoftware/mupdf ,
которые также авторы ghostscript с опытом десятков лет на С
не подозревают что их код mupdf для работы setjmp/longjmp
является UB со всеми вытекающими последствиями.
Здравствуйте, imh0, Вы писали:
I>Добрый день коллеги!
I>Услышал тут вопрос на собеседовании, оцените насколько хорошо вы знаете СИ по пятибальной системе? Я ответил, шуткой, что мол на 11... )
I>Человек-интервьер как-то насупился на мой ответ... )
I>А я вот сижу думаю... и реально не понимаю, что можно не знать в СИ? Коллеги, если есть те кто уверен, что я не прав, пожалуйста, раскройте в чем именно?
Перечислю вещи, про которые я имею смутное представление. Я, правда, не сишник...
1. _Generic
2. Компиляторо-специфичные вещи, gcc-измы и тому подобное.
3. Особенности встраиваемых платформ.
4. Как работает код за пределами стандартной библиотеки, что происходит между _start и main (или WinMain), что происходит между write(2) и запуском кода внутри ядра (ну тут примерно представляю, но не уверен, что правильно) на разных платформах.
5. Как детально устроены популярные стандартные библиотеки. Например я знаю, что printf кеширует данные, но детали этого кеширования не знаю, какие структуры данных, какой размер у этого кеша и тд.
6. Очень смутно представляю, какие популярные библиотеки надо использовать для разных задач. Знаю только про glib.
Здравствуйте, Homunculus, Вы писали:
H>·>А чтобы хорошо писать по-русски надо быть Кириллом или Мефодием? H>Не совсем верная аналогия. Никто не спрашивал «так ли вы хороши как Ритчи?»
А какой ответ ожидался в принципе? Спрашивающий вроде обычно знает, что перед ним не автор компилятора, ведь только им полагается самая высокая оценка, или как?
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Здравствуйте, imh0, Вы писали:
I>Добрый день коллеги!
I>Услышал тут вопрос на собеседовании, оцените насколько хорошо вы знаете СИ по пятибальной системе? Я ответил, шуткой, что мол на 11... )
I>Человек-интервьер как-то насупился на мой ответ... )
I>А я вот сижу думаю... и реально не понимаю, что можно не знать в СИ? Коллеги, если есть те кто уверен, что я не прав, пожалуйста, раскройте в чем именно?
Здравствуйте, imh0, Вы писали:
I>А я вот сижу думаю... и реально не понимаю, что можно не знать в СИ? Коллеги, если есть те кто уверен, что я не прав, пожалуйста, раскройте в чем именно?
Полный набор UdB.
Хитрости вроде a = (struct moo) { .a = 1, .b = 2 }; (на днях вычищал такое при переходе на C++)
Designated initializers (аналогично).
Ограничения на argc, argv в main.
Язык форматов всяких scanf, printf. Например, как определяется при %g, когда будет форма с фиксированной точкой, а когда экспоненциальная? Что допускает язык регэкспов scanf?
Приоритеты операций (я вот уже не помню соотношения между всякими && || и << >>).
Правила раскрытия макр и склейки слов в них.
Стандартные прагмы.
Тонкости работы с плавающей точкой (типа необходимости fenv_access если рулишь окружением).
Все правила работы с атомиками по стандарту (отдельный сложный мир), для начала, отличия signal fence от thread fence, как работает synchronized-with... Туда же реальное поведение volatile.
Грабли работы со строками (типа, что означает длина в strncat?)
Тонкости всяких integer promotion и выведения общего типа.
Как писать и читать всякие сложные типы вроде указателя на функцию, возвращающую указатель на функцию.
Статический полиморфизм в реализации C.
Триграфы (да, знаю, что у большинства по умолчанию просто не включаются).
Различия exit, quick_exit, _Exit?
Как выглядит тредовая библиотека C11?
Это только очень беглый пробег по тому, что я оценил как "большинство пишущих на C вокруг не знает".
Здравствуйте, imh0, Вы писали:
I>Человек-интервьер как-то насупился на мой ответ... )
Он просто тупой, забей. I>А я вот сижу думаю... и реально не понимаю, что можно не знать в СИ?
Там полно вещей которых нет в С++ и которые не очевидны для плюсовика.
Здравствуйте, Kernan, Вы писали:
K>Здравствуйте, imh0, Вы писали:
I>>Человек-интервьер как-то насупился на мой ответ... ) K>Он просто тупой, забей. I>>А я вот сижу думаю... и реально не понимаю, что можно не знать в СИ? K>Там полно вещей которых нет в С++ и которые не очевидны для плюсовика.
Да, именно так — в мире C++ — эти вещи не актуальны.
Я лично, полагал что обычный СИ знаю (уже пару десятков лет) — на крепкую пятерку.
Повседневность — для мена это C++ (реже Java, C#).
Здравствуйте, AlexGin, Вы писали:
AG>Увидел я мои пробелы в СИ, когда стал штудировать эту книгу (пару лет назад): AG>https://habr.com/ru/company/piter/blog/349464/ AG>(книга и примеры из неё мне весьма понравились).
а я как-то решил поизучать исходники nouveau (со смутным понятием устройства видеокарт nvidia). Слишком сложно, мой стэк мозга быстро переполнился от этих бесконечных вложенных вызовов