Комментарии 72
Ещё а priori и a posteriori часто встречается в текстах.
Реже de novo встречается
hfinn, JSmitty, nitrosbase
Сразу всем: я правда полтора года собирал из того, что читал. На полный охват не претендую, буду рад любым дополнениям. И еще я забыл упомянуть методиста, которая мне помогла в этой работе — Елизавету Кокорину. Лиза, спасибо!
Выписал отсюда сокращения, известные мне, но в ваш список не попавшие: A.M., P.M., RIP, AD, C.V., M.A., M.D., Ph.D.
Многие из них были впоследствии переосмыслены как имеющие происхождение в английском, поэтому, наверное, в ваш список и не попали.
Очень хороший пример, мне эти AM/PM вечно даются с трудом.
Во-первых, всегда хочется быстро вспомнить, что AM — это "after meridian" а потом мучительно долго соображать какое же слово будет на букву p со значением "до". И это "ante" так особо и не прижилось.
Во-вторых, проблема неопределённости полуночи/полудня (на английской вики есть подробное описание), которая отдельно никак не запоминается.
Мнемоническое правило для AM/PM: буква A идёт в алфавите раньше, чем P; соответственно, A — это утром, P — вечером.
Больше 15 лет прошло, а до сих пор в памяти и помогает не ошибаться.
Ой спасибо, я до сих пор думал, что там полночь :)
Я в детстве решил, что M — это midday, A — afore и P — past (ну или posle, так было удобнее).
after midnight, prior midnight? :)
Ну, есть в этом некая рация.
Сложнее увязать в голове, что 12AM, 1AM, ..., 11AM — это первая половина дня, потом бац, 12PM, 1PM, et cetera ad infinitum
В русском-то языке между 11 и 12 часами ночи нет такой решительной разницы (хотя, если следить за календарём, она вылезает; и, скажем, расписание поездов и расписание телепрограмм смотрят на это по-разному).
Зато по-русски можно пошутить про "какой урод звонит 1 января в 16 часов утра?!"
PM -> «P» = «П» = «после» = «после полудня»
AM -> нет «П» -> «не после» = «до полудня»
быстро вспомнить, что AM — это «after meridian» а потом мучительно долго соображать какое же слово будет на букву p со значением «до»
У меня точно такая же история с AM/PM.
PS: Только всё же не «meridian», а «meridiem», т.к. первое — английский, а второе — латынь.
Так половина не с латыни же.
Я всегда аналогично считал, что sic — это Same In Cited, «как в цитируемом», так как употребляемый всюду луркояз в свое время повлиял на это.
RIP — удачный акроним и для латыни, и для английского. Тем паче, что английские слова там пришли из латыни, а не немецкого или какого кельтского.
Sic — необязательно "так в оригинале", но и просто подчёркивание: "именно так!".
Чтобы замыленный глаз читателя не перескочил через что-то, важное для пишущего/цитирующего.
Ага, довольно долго ломал голову, что же значит "ad hoc polymorphism". Впрочем, сейчас не стало сильно понятнее.
Когда ты хочешь нормальные классы с наследованием и полиморфизмом (С++, например), а у тебя только метатаблицы (как в Lua). В итоге оно выливается в ad hoc полиморфизм.
Полиморфизм C++ без шаблонов — как раз ad hoc
Нет, как раз шаблоны в C++ — в силу их нетипизированности и огромной свободы — это ад-хок.
Что не позволяет, кстати, компилировать шаблоны в объектный код, — а только в некоторую заготовку для компилятора (абстрактное синтаксическое дерево, прекомпилированный заголовок).
Плюсы ооочень медленно двигаются в сторону дженериков / тайпклассов. Которые суть те же интерфейсы, просто с более затейливыми правилами слежения за типами аргументов и результатов, чем классические ООПшные.
Во-первых, почему "нет"? Ваши утверждения не противоречат моему.
Во-вторых, как из свободы следует "ad-hoc-ность"? И что вы называете нетипизированностью?
В-третьих, разве имеет значение для прикладного программиста, на каком этапе компиляции применяются какие правила? Главное, чтобы гарантии языка выполнялись.
И какие дженерики вы имели в виду? У меня сложилось впечатление, что плюсовые темплейты более мощное средство, чем дженерики Java или C#. Но я так, по статьям на хабре сужу
ООП-полиморфизм носит регулярный характер. Сигнатуры интерфейсов зафиксированы, все реализации удовлетворяют им как формально (на уровне типов), так и по смыслу (если не ломают принцип подстановки).
Ад-хок-полиморфизм — непредсказуемый в этом плане.
Из того, что у вас есть функция с именем swap, вы не можете делать никаких предположений о её реализации — ни о сигнатуре, ни об арности, ни даже о том, будет ли в данном контексте это функция, или переменная, или вообще тип.
Языки с типизацией повышенной строгости испытывают боль от перегрузок функций за пределами системы типов.
В некоторых языках она тупо запрещена — например, в ML для сложения целых чисел есть оператор (+), а для вещественных — (+.)
В некоторых придумывают, как сделать перегрузку регулярной. Например, в хаскелле всякое имя принадлежит тайпклассу, который вводит дженерик типов или функций. Всякая перегрузка функции возможна только в составе инстанцирования этого тайпкласса, вместе с определением остальных его элементов. То есть, реализации могут отличаться потрохами, но сигнатуры их однородны.
Конечно, плюсовые шаблоны — более мощное средство, потому что с них снята куча ограничений.
Если бы все специализации шаблона должны были содержать одинаковый набор однородно выглядящих зависимых имён — это был бы дженерик.
Его было бы очень легко затащить в объектный код, но и всё, пожалуй.
А для прикладного программиста имеет значение, на каком этапе компиляции что применяется.
ООП-библиотеку можно единожды скомпилировать, и дальше дружить её с другими библиотеками — они будут обмениваться между собой указателями на интерфейсы объектов.
Лэяут интерфейса известен — это указатель на структуру, в которой валяется указатель на таблицу виртуальных функций.
Набор функций и их сигнатуры известны, — как вызывать их — понятно.
Поэтому объектный код зафиксирован. Косвенные вызовы рулят.
Библиотеку можно оформить как .dll / .so, и это будет отлично работать.
Библиотеку с шаблонным кодом единожды скомпилировать нельзя.
Каждый раз при подключении её к другим частям, надо анализировать значения всех имён. Объектный код вынужден быть монолитным.
Расплата за это — долгая компиляция плюсовых проектов. Выгода — отсутствие косвенности и богатые возможности для оптимизации.
ad hoc — когда для разных типов в прямом смысле пишутся разные функции. Т.е. "мне нужно, чтобы функция f работала с аргументом типа T — пишу функцию под аргумент этого типа". Противопоставляется параметрическому полиморфизму, который, по сути, обобщённое программирование. Для параметрического полиморфизма "однообразное" поведение для всех типов гарантирует компилятор, для ad hoc — как программист решит, так и будет.
Утиная типизация.
Не систематизируемый и нестрогий полиморфизм — "лишь бы имя совпадало".
Это макроподстановки (разной степени гигиеничности — от препроцессора до шаблонов), перегрузки имён, а также всякие изобретения на коленке, что компилятор позволяет, а программист придумывает.
По поводу ad hoc, в реальной жизни, без углубления в научные работы, часто встречал в значении «как есть» (в EULA, например, оно еще и с «тонким» намеком: «сделали как сделали, переделывать не будем, отстаньте уже»), или в контексте переноса/копирования данных: что получили на вход, то и записали в файл/переслали в другой интерфейс, без изменений и обработки.
Почти уверен, что вы путаете с As Is. Никогда не видел ad hoc в значении "без изменений". Ад хок всегда означает несмаштабированное решение проблемы по месту, иногда немного костыльное.
Покопавшись в выдаче гугля, все же, Ad hoc в ИТ не столько «костыль» для решения проблемы по месту, сколько одноразовое действие, или действие по запросу, например, какой-то отчет в бухгалтерской системе, который генерится не как остальные отчеты, раз в день или раз в квартал, а только если кто-то затребовал этот отчет.
Но вообще, интересное слово. Очень много разных вариантов использования и значения. Очень похоже, что действительно, мало кто знает официальное значение и просто люди лепят красивое слово куда попало.
Как? — de ure, de novo, de facto
Где? — in vitro, in vivo, in situ
CV (curriculum vitae)
да еще и произносится синонимами на английском вместо прямого произношения
Вспоминается Бред Питт с его «A river derchey» в Бесславных Ублюдках:
Зависит от выпендрёжности автора. Напихать в русскую научную статью латинские сокращения — как нечего делать; просто у нас сложилась определённая своя культура сокращений, самодостаточная.
И вот появилась эта статья, которая закрыла сразу множество пробелов. Спасибо. И за песню тоже.
P.S. (post scriptum) — «после написанного»
Я думал, что sic — просто для того, чтобы обратили внимание. Не обязательно насмешка.
Там еще были прикольные штуки типа verte! — переверни! Когда текст продолжается на другой стороне страницы инструкции.
NB! на полях — это тоже святое.
matrix — matrices
magnum opus — magna opera
и т. п.
I have in previous papers defined a "Matrix" as a rectangular array of terms, out of which different systems of determinants may be engendered as from the womb of a common parent.
В свое время в HoMM3 подобные странности неплохо заставляли задумываться, а правильно ли нам преподают английский :)
В современном тексте без цитат оригинала часто используется в значении
«Это не ошибка и не опечатка, именно так и должно быть. Используйте этот текст/фрагмент именно так, как написано, с точностью до буквы. Не страдайте самодеятельностью, не стройте из себя граммарнаци и не думайте, что вы тут типа самый умный.»
ASAP — as soon as possible (как только, так сразу)
TLDR — too long don't read (слишком длинно, не читал)
К первому можно еще вспомнить SNAFU (Situation Normal — All F… Up), FUBAR, и другие вещи. Интернет нам также подарил AFAIK (As Far As I Know), IMHO (In My Humble/Honest Opinion, от которого произошло русское «имхо», а не наоборот), желающие могут нагуглить полный список. Ну или сходить на лурк, в котором еще теплится жизнь, или Know Your Meme, или Urban Dictionary.
Коллеги делали подборку аббревиатур полтора года назад: https://habr.com/ru/company/skyeng/blog/347514/
Разбираемся с латинскими сокращениями и фразами в английском языке