Предполагаю, что хотели названия функций, которые друг с другом сильно не смешиваются. Если бы называлось gettime(), то было бы слишком близко к time().
Ну и вообще оно deprecated, зачем стюардессу откопал?
Так оно и есть близко к time, отличие только в том что микросекунды ещё возвращает, и когда-то использовался для узнавания таймзоны.
Ну и вообще оно deprecated, зачем стюардессу откопал?
Что за ерунда? Во-первых, в плане истории названия это в любом случае несущественно. Во-вторых, эти ярлыки почти всегда ничего не значат. chroot() вот тоже deprecated по мнению некоторых стандартов и пофиг. А clock_gettime() не везде есть (в фрибсд меньше 3.0 версии не было например).
У некоторых ЛОРовцев его и не было никогда. Я пару раз обжёгся, так с некоторых пор начал приписывать «Шутка юмора» в нетривиальных случаях, во избежание, так сказать.
Моя ЛЛМ говорит, что появилась она в 1983 году в BSD-4.3 и в отличие от аппаратного таймера возвращала системную структуру timeofday, что и отражено в названии. Была и компаньон-функция settimeofday.
Я вчера чуть не час разговаривал с разными ЛЛМ про это. Из особо запомнившегося - (1) в IBM s390 прям такая железка, которая так и называется TOD clock, (2) особо крутые системные перцы так и декларируют такие функции, как gettod().
Т.е. я так понял «time of day» (оно же «tod») это такой концептуальный термин. Бытовое понимание «время суток» сбивает с толку только людей, которые не в теме )
Интересно, что моя LLM прямо противопоставляет железку TOD, ну или аппаратно реализованный таймер RTC - real time clock, говоря, что это то же самое, программно реализованной TOD, которая есть часть операционной системы, и что самое интересное, она утверждает, что эти две концепции независимы. То есть программная TOD не использует аппаратную TOD. Причём причина появления программной TOD - слишком высокая цена доступа к аппаратной. То есть читать аппаратный TOD слишком медленно, вот и появилась программная независимая реализация, читать которую быстро. Чудеса да и только.
То, что системный таймер работает (и всегда работал) независимо от RTC на PC-совместимых платформах - общеизвестный факт. Вполне вероятно, что на древнем железе была аналогичная история, однако см. ниже. settimeofday есть и сейчас.
А вот угадывать, что из остального ллм нагаллюцинировало, а что скопипастило из реальных источников - затея неблагодарная.
какому-нибудь Кену Томпсону годах в 80-х взбрело в голову так назвать эту функцию, ну и вот, так она и осталась. Потом еще и в стандарты попала.
Ее кстати выпилили из свежего POSIX, кто ее до сих пор использует - тех с новым годом.
Вообще я сейчас читаю, это типа чтобы избежать путаницы с процессорным временем. Если бы было просто gettime, то было бы не понятно, какое время имеется ввиду.
Есть функция time() - с ней всё понятно? gettimeofday() возвращает точно то же самое время, но с точностью микросекунд (time - секунды).
Ее кстати выпилили из свежего POSIX, кто ее до сих пор использует - тех с новым годом.
Если нужно монотонное время (не реальное т.е.) то clock_gettime(CLOCK_MONOTONIC). Если же нужно реальное, и с точностью лучше чем секунды, то gettimeofday() - максимально совместимый между разными юниксами способ его узнать, буду и дальше использовать для этой цели её. И ниоткуда, кроме бумажек, её никогда не выпилят.
А теперь вылезь из криокамеры отсортируй свой поиск по времени и посмотри, как часто и в каких контекстах эта «часть сленга» упоминается последние несколько лет. Либо это просто отсылка, либо случайно просочившееся и не замеченное модераторами оскорбление.
Когда-то на ЛОРе и открытый мат считался «частью сленга», да.
Почему она так называется? Никакого «time of day» (часы:минуты:секунды) она очевидно не отдаёт.
Историческая причина названия (главный ответ)
В раннем Unix (системы V и BSD) было две категории времени:
Process time (время процесса) — сколько процессорного времени съела ваша программа. Её возвращали функции times() или clock(). Это секунды работы CPU.
Wall-clock time (время настенных часов) — то, что показывают часы в реальном мире.
Функция gettimeofday() была введена в BSD, чтобы отличать её от старой time(). Она возвращала именно Wall-clock time (реальное календарное время), в отличие от таймеров наработки процессора. В сленге системных программистов Wall-clock time — это и есть «Time of Day» (время суток), потому что вы сверяетесь с ним, чтобы узнать, который сейчас час на планете.
С помощью модераторов. Ну то есть если в правилах нейрослоп не запрещён то его дефолтно везде не удаляют, а если в такой теме жалоба поступила - удаляем с -7 «вверху же указано предупреждение».
Конечно, да, модераторская политика совсем никак не влияет на посещаемость сайта и удержание пользователей на нём. Особенно когда многие известные пользователи громко хлопнули дверью из-за несогласия с этой самой модераторской политикой. Сколько пользователей просто по-тихому из-за неё же (или из-за того, что их любимых ораторов забанили) перестали сюда заходить, статистика умалчивает.
В общем-то, в этом и заключается одна из причин, почему социальные сети цветут и пахнут, а форумы вроде вот этого постепенно загибаются: если я в твиттере напишу какой-нибудь одиозному персонажу фразу «забанься, дебил», мой пост никто не сотрёт и с моим аккаунтом ничего не случится.
Оне не только unix epoch возвращала, но и timezone. В 4.2BSD «struct timezone» не были просто так, они содержали зону и правило перехода на летнее время. И эта структура использовалась для перевевода unix time в локальное время (которое часы на стене показыают). Это у нас «летнее время», а у них daylight saving, возможно, для них «time of day» перекликается с daylight.
А ещё, есть такое https://www.merriam-webster.com/dictionary/time of day - это толковый словарь, а не нейрослоп. «time of date» может означать не показания часов, а «настоящее время» (the present time/the true situation), то есть функцию назвали так, что она типа показывает не какое-то там время, как time() с точностью 1 секунда, а вот вобще «настоящее», так как микросекунды.
timezone оно и сейчас может вроде возвращать, если ему не NULL туда дать. Но всё-таки «вот тебе таймзона, сооруди с её помощью бытовое время» и вернуть это самое время в готовом виде - это разные штуки. Время в таком виде делает localtime() и gmtime().
А вот второе значение time of day из толкового словаря уже больше походит на причину. Я про него не знал.
Я тут ещё немного поковырял. Если смотреть исходники 4.3BSD, то там очень много раз встречается VAX, видимо, основная машина, под которую её писали. А во всех источниках повторяется про аппаратные часы VAX:
The VAX hardware clock is called the TOY («Time Of Year») clock. The register associated with the clock is called the TODR («Time Of Day Register»)
То есть там часы были один 32 битный регистр, названный «time of day», который раз в 10 мс инкрементировался (переполнение через 497 дней). Получается, нужно лезть в голову не разработчикам 4BSD, а разработчикам VAX, почему они так назвали регистр.
Да что лезть, в толковом словаре ж уже выяснили что англичане словами time of day иногда таймстампы в быту называют. Но связь с часами VAX тут под вопросом, потому что unixtime же раз в 497 дней не переполняется.