Что можно не знать в СИ?
От: imh0  
Дата: 15.10.21 13:49
Оценка: +1 -1 :)
Добрый день коллеги!

Услышал тут вопрос на собеседовании, оцените насколько хорошо вы знаете СИ по пятибальной системе? Я ответил, шуткой, что мол на 11... )

Человек-интервьер как-то насупился на мой ответ... )

А я вот сижу думаю... и реально не понимаю, что можно не знать в СИ? Коллеги, если есть те кто уверен, что я не прав, пожалуйста, раскройте в чем именно?
Re: Что можно не знать в СИ?
От: .... США http://files.rsdn.org/4543/rsdn.gif
Дата: 15.10.21 14:03
Оценка: +8 :))) :))) :))) :))) :))
Здравствуйте, imh0, Вы писали:


I>Услышал тут вопрос на собеседовании, оцените насколько хорошо вы знаете СИ по пятибальной системе? Я ответил, шуткой, что мол на 11... )


I>А я вот сижу думаю... и реально не понимаю, что можно не знать в СИ? Коллеги, если есть те кто уверен, что я не прав, пожалуйста, раскройте в чем именно?


тут надо не скромничать, а просто дать ссылку на компилятор СИ, который вы написали!
my $.02
Re[2]: Что можно не знать в СИ?
От: imh0  
Дата: 15.10.21 14:13
Оценка: +1
Здравствуйте, ...., Вы писали:

>тут надо не скромничать, а просто дать ссылку на компилятор СИ, который вы написали!


не факт, что это будет означать что знаешь СИ вот прям как-то особо хорошо.

В том же GCC есть куча ньюансов которые надо знать. Например инлайн функции в виде макросов и асемблер внутри... Вообщем не думаю, что писание компилятора это о чем-то крутом говорит. )
Re[2]: Что можно не знать в СИ?
От: · Великобритания  
Дата: 15.10.21 14:17
Оценка: +3
Здравствуйте, ...., Вы писали:

I>>Услышал тут вопрос на собеседовании, оцените насколько хорошо вы знаете СИ по пятибальной системе? Я ответил, шуткой, что мол на 11... )

I>>А я вот сижу думаю... и реально не понимаю, что можно не знать в СИ? Коллеги, если есть те кто уверен, что я не прав, пожалуйста, раскройте в чем именно?
>тут надо не скромничать, а просто дать ссылку на компилятор СИ, который вы написали!
А чтобы хорошо писать по-русски надо быть Кириллом или Мефодием?
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re: Что можно не знать в СИ?
От: Homunculus Россия  
Дата: 15.10.21 14:18
Оценка: +1
Здравствуйте, imh0, Вы писали:

Не совсем понятно, что значит «знать язык программирования».
Re[3]: Что можно не знать в СИ?
От: Homunculus Россия  
Дата: 15.10.21 14:20
Оценка:
Здравствуйте, ·, Вы

·>А чтобы хорошо писать по-русски надо быть Кириллом или Мефодием?


Не совсем верная аналогия. Никто не спрашивал «так ли вы хороши как Ритчи?»
Re: Что можно не знать в СИ?
От: k55 Ниоткуда  
Дата: 15.10.21 14:22
Оценка: 1 (1) +2 :))) :)
I>Услышал тут вопрос на собеседовании, оцените насколько хорошо вы знаете СИ по пятибальной системе? Я ответил, шуткой, что мол на 11... )

I>Человек-интервьер как-то насупился на мой ответ... )

Скорее всего он насупился не от того что ты чего-то не знаешь, а потому что твой ответ OoB/type mismatch/UB.
Если есть желание — найдется 1000 возможностей.
Если нет желания — найдется 1000 причин.
Re: Что можно не знать в СИ?
От: gyraboo  
Дата: 15.10.21 14:24
Оценка:
Здравствуйте, imh0, Вы писали:

I>Услышал тут вопрос на собеседовании, оцените насколько хорошо вы знаете СИ по пятибальной системе? Я ответил, шуткой, что мол на 11... )


I>Человек-интервьер как-то насупился на мой ответ... )


I>А я вот сижу думаю... и реально не понимаю, что можно не знать в СИ? Коллеги, если есть те кто уверен, что я не прав, пожалуйста, раскройте в чем именно?


Как склеить две строки в Си?
Re[2]: Что можно не знать в СИ?
От: imh0  
Дата: 15.10.21 14:31
Оценка: +1 -1
Здравствуйте, gyraboo, Вы писали:

G>Как склеить две строки в Си?


Строк как таковых в СИ нет. Есть char и массив char-ов, с нулем на конце.

Склеить? В смысле получить строку являющейся обьединением двух строк?
Re: Что можно не знать в СИ?
От: alpha21264 СССР  
Дата: 15.10.21 14:35
Оценка:
Здравствуйте, imh0, Вы писали:

I>А я вот сижу думаю... и реально не понимаю, что можно не знать в СИ? Коллеги, если есть те кто уверен, что я не прав, пожалуйста, раскройте в чем именно?


Ну триграфы какие-нибудь.
Или как препроцессором склеить две строки.

Течёт вода Кубань-реки куда велят большевики.
Re: Что можно не знать в СИ?
От: Zhendos  
Дата: 15.10.21 14:57
Оценка:
Здравствуйте, imh0, Вы писали:

I>А я вот сижу думаю... и реально не понимаю, что можно не знать в СИ? Коллеги, если есть те кто уверен, что я не прав, пожалуйста, раскройте в чем именно?


Например как правильно работать с локальными переменными при использоании
setjmp/longjmp. Почему-то авторы многих чудовищно распространных библиотек
на С эмулируют с помощью setjmp/longjmp исключения (например libpng/libjpeg).

И например авторы https://github.com/ArtifexSoftware/mupdf ,
которые также авторы ghostscript с опытом десятков лет на С
не подозревают что их код mupdf для работы setjmp/longjmp
является UB со всеми вытекающими последствиями.
Re: Что можно не знать в СИ?
От: vopl Россия  
Дата: 15.10.21 15:02
Оценка: 6 (5) +1 :))
Здравствуйте, imh0, Вы писали:

I>Добрый день коллеги!


I>Услышал тут вопрос на собеседовании, оцените насколько хорошо вы знаете СИ по пятибальной системе? Я ответил, шуткой, что мол на 11... )


I>Человек-интервьер как-то насупился на мой ответ... )


I>А я вот сижу думаю... и реально не понимаю, что можно не знать в СИ? Коллеги, если есть те кто уверен, что я не прав, пожалуйста, раскройте в чем именно?


что за статик?
void f(int arr[static 220]);


только не гуглить!
Отредактировано 15.10.2021 15:03 vopl . Предыдущая версия .
Re: Что можно не знать в СИ?
От: vsb Казахстан  
Дата: 15.10.21 15:14
Оценка: +1
Перечислю вещи, про которые я имею смутное представление. Я, правда, не сишник...

1. _Generic

2. Компиляторо-специфичные вещи, gcc-измы и тому подобное.

3. Особенности встраиваемых платформ.

4. Как работает код за пределами стандартной библиотеки, что происходит между _start и main (или WinMain), что происходит между write(2) и запуском кода внутри ядра (ну тут примерно представляю, но не уверен, что правильно) на разных платформах.

5. Как детально устроены популярные стандартные библиотеки. Например я знаю, что printf кеширует данные, но детали этого кеширования не знаю, какие структуры данных, какой размер у этого кеша и тд.

6. Очень смутно представляю, какие популярные библиотеки надо использовать для разных задач. Знаю только про glib.
Re[2]: Что можно не знать в СИ?
От: imh0  
Дата: 15.10.21 16:07
Оценка:
Здравствуйте, vopl, Вы писали:

V>что за статик?

V>
V>void f(int arr[static 220]);
V>


V>только не гуглить!


Не это конечно редкая штука, и признаться честно я лично, еще пару лет назад не знал, про это. Пока не стал какие-то тесты на СИ сдавать. ) Согласен.
Re[4]: Что можно не знать в СИ?
От: · Великобритания  
Дата: 15.10.21 16:28
Оценка:
Здравствуйте, Homunculus, Вы писали:

H>·>А чтобы хорошо писать по-русски надо быть Кириллом или Мефодием?

H>Не совсем верная аналогия. Никто не спрашивал «так ли вы хороши как Ритчи?»
А какой ответ ожидался в принципе? Спрашивающий вроде обычно знает, что перед ним не автор компилятора, ведь только им полагается самая высокая оценка, или как?
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re: Что можно не знать в СИ?
От: _NN_ www.nemerleweb.com
Дата: 15.10.21 17:32
Оценка:
Здравствуйте, imh0, Вы писали:

I>Добрый день коллеги!


I>Услышал тут вопрос на собеседовании, оцените насколько хорошо вы знаете СИ по пятибальной системе? Я ответил, шуткой, что мол на 11... )


I>Человек-интервьер как-то насупился на мой ответ... )


I>А я вот сижу думаю... и реально не понимаю, что можно не знать в СИ? Коллеги, если есть те кто уверен, что я не прав, пожалуйста, раскройте в чем именно?



C99: https://en.wikipedia.org/wiki/C99
C11: https://en.wikipedia.org/wiki/C11_(C_standard_revision)
Скоро и C2x: https://en.wikipedia.org/wiki/C2x

Изменений довольно много.
Обычно на этом мне говорят, что всё от лукавого и после C89 жизни нет
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re: Что можно не знать в СИ?
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 15.10.21 17:39
Оценка: 4 (3) +2
Здравствуйте, 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 вокруг не знает".
The God is real, unless declared integer.
Re: Что можно не знать в СИ?
От: Kernan Ниоткуда https://rsdn.ru/forum/flame.politics/
Дата: 15.10.21 18:09
Оценка: +1
Здравствуйте, imh0, Вы писали:

I>Человек-интервьер как-то насупился на мой ответ... )

Он просто тупой, забей.
I>А я вот сижу думаю... и реально не понимаю, что можно не знать в СИ?
Там полно вещей которых нет в С++ и которые не очевидны для плюсовика.
Sic luceat lux!
Re[2]: Что можно не знать в СИ?
От: AlexGin Беларусь  
Дата: 15.10.21 18:40
Оценка: 2 (1)
Здравствуйте, Kernan, Вы писали:

K>Здравствуйте, imh0, Вы писали:


I>>Человек-интервьер как-то насупился на мой ответ... )

K>Он просто тупой, забей.
I>>А я вот сижу думаю... и реально не понимаю, что можно не знать в СИ?
K>Там полно вещей которых нет в С++ и которые не очевидны для плюсовика.

Да, именно так — в мире C++ — эти вещи не актуальны.

Я лично, полагал что обычный СИ знаю (уже пару десятков лет) — на крепкую пятерку.
Повседневность — для мена это C++ (реже Java, C#).

Увидел я мои пробелы в СИ, когда стал штудировать эту книгу (пару лет назад):
https://habr.com/ru/company/piter/blog/349464/
(книга и примеры из неё мне весьма понравились).

И это ещё — без учета синтаксиса современного СИ (C11).

P.S. Знать всё — невозможно.
В то же время, знать основы — необходимо!
Отредактировано 15.10.2021 18:44 AlexGin . Предыдущая версия .
Re[3]: Что можно не знать в СИ?
От: wl. Россия  
Дата: 15.10.21 18:55
Оценка:
Здравствуйте, AlexGin, Вы писали:

AG>Увидел я мои пробелы в СИ, когда стал штудировать эту книгу (пару лет назад):

AG>https://habr.com/ru/company/piter/blog/349464/
AG>(книга и примеры из неё мне весьма понравились).

а я как-то решил поизучать исходники nouveau (со смутным понятием устройства видеокарт nvidia). Слишком сложно, мой стэк мозга быстро переполнился от этих бесконечных вложенных вызовов
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.