Глава 3. Терминология и словообразование

424 просмотров
0 лайков
0 в избранном
Войдите, чтобы поставить лайк. Лайков:

Введение

Словарный запас наращивают двумя способами. Первый — заучивать слова поштучно, списками. Способ честный, медленный и на длинной дистанции почти бесполезный: через месяц от списка остаётся треть. Второй — научиться собирать слова из деталей.

Английское словообразование устроено на редкость регулярно. Знаешь корень deploy, понимаешь, что делают приставка re- и суффикс -ment, — и бесплатно получаешь redeploy, deployment, redeployment, undeployed и ещё десяток форм, которые всё равно встретишь в логах.

Разберём механику: продуктивные префиксы и суффиксы, регулярные пары «глагол → существительное», профессиональные сокращения (repo, config, env) и аббревиатуры. Отдельный блок — произношение. Термины, которые русскоязычные разработчики произносят мимо, и чтение символов вслух: просьба «продиктуй путь» на созвоне ставит в тупик надёжнее любого грамматического вопроса.

Финал главы — коллокации, устойчивые сочетания глагола с существительным. Тот слой языка, который отличает «правильно» от «естественно»: исключения не «делают», их throw или raise. Логикой не выводится. Запоминается парами.

Префиксы: меняем смысл корня

Префикс цепляется к началу слова и меняет значение, часть речи при этом обычно не трогает. В техническом английском в ходу примерно дюжина префиксов — вот они с примерами из живой практики.

ПрефиксЗначениеПримеры
de-обратное действие, снятиеdeserialize, decompress, deprecate, debug, deallocate
re-повтор, зановоretry, refactor, rebuild, replay, reconnect, rebase
un-отрицание, отменаunavailable, unsupported, unstage, unsubscribe, undo
non-не относящийся кnon-blocking, non-nullable, non-deterministic, non-idempotent
over-сверх меры, поверхoverwrite, overload, overhead, overprovision, overflow
under-недостаточно, подunderutilized, underscore, underlying, underprovisioned
pre-до, заранееpreprocess, precompute, prefetch, prerequisite, preflight
post-послеpost-deploy, postprocess, postmortem, post-mortem analysis
sub-под, вложенныйsubdomain, subquery, subprocess, subscription, subnet
multi-многоmulti-tenant, multithreaded, multipart, multi-region
inter-междуinterface, interoperability, intermediate, interleave
mis-ошибочно, неправильноmisconfigure, misleading, mismatch, misuse, misspell

Сбивает чаще всего пара un- и non-. Un- отрицает свойство или отменяет действие: unsupported — «не поддерживается», unstage — «убрать из индекса». Non- просто относит объект к другой категории, без всякой негативной окраски: non-blocking — это описание типа, а не жалоба.

De- означает обратную операцию, поэтому в коде эти слова ходят парами:

payload = serialize(order)      # объект  -> строка
order = deserialize(payload)    # строка  -> объект

blob = compress(data)
data = decompress(blob)

Отдельно про deprecate — «объявить нежелательным». Deprecated не значит ни «сломано», ни «удалено». Оно значит «пока работает, но помечено к удалению — начинай мигрировать». Существительное — deprecation, срок до удаления — deprecation period. Тот, кто прочитал deprecated как «неважно, ещё лет пять простоит», обычно узнаёт правду в день мажорного релиза.

Суффиксы: меняем часть речи

Суффикс садится на конец слова и обычно переводит его в другую часть речи. Это готовый ключ к незнакомым словам: увидел -tion — перед тобой существительное-процесс, даже если корень встречаешь впервые в жизни.

СуффиксЧто образуетПримеры
-able / -ibleприлагательное: «можно сделать»readable, cacheable, serializable, reproducible, extensible
-lessприлагательное: «без чего-то»stateless, serverless, seamless, endless, lossless
-fulприлагательное: «полный чего-то»stateful, successful, meaningful, useful
-er / -orтот, кто выполняет действиеcompiler, handler, listener, validator, executor, iterator
-tion / -sionсуществительное: процесс или результатmigration, validation, execution, compression, revision
-mentсуществительное: результат или состояниеdeployment, assignment, requirement, environment, statement
-izeглагол: привести к состояниюserialize, normalize, initialize, optimize, containerize
-ifyглагол: сделать такимverify, notify, minify, specify, stringify
-nessсуществительное: свойствоreadiness, liveness, correctness, uniqueness, robustness

Пара stateless / stateful показывает экономию наглядно. Знаешь state, знаешь, что -less — «без», а -ful — «с»: два ключевых архитектурных термина достались даром. Так же с -ness: пробы liveness и readiness в оркестраторах — «живость» и «готовность» от alive и ready, и после такой расшифровки их уже не перепутаешь местами.

-able — самый продуктивный из всех, его вешают почти на любой глагол. Cacheable, retryable, observable, pluggable собраны по одной схеме. Работает и в обратную сторону: незнакомое throttleable ты расшифруешь без словаря — «то, что можно ограничивать по скорости».

А в связке префикс плюс суффикс слово раскладывается на три детали. Reproducible = re- (заново) + produce + -ible (можно) = воспроизводимый. Undeployable = un- + deploy + -able = то, что задеплоить нельзя.

Пары «глагол → существительное»

Задача, которая всплывает каждый день: глагол ты знаешь, а в предложение просится существительное. Или наоборот. Пары в английском регулярны, но угадываются не всегда.

ГлаголСуществительноеПример употребления
deploydeploymentThe deployment failed; we deployed again.
deprecatedeprecationRead the deprecation notice before you upgrade.
failfailureA single failure should not fail the whole batch.
retryretry / a retryThe client retries; the third retry succeeded.
roll backrollbackWe rolled back; the rollback took two minutes.
configureconfigurationConfigure the pool in the configuration file.
authenticateauthenticationAuthentication failed; authenticate again.
maintainmaintenanceThe service is under maintenance.
analyse / analyzeanalysisThe root cause analysis is due tomorrow.
loselossPacket loss above 1% breaks the stream.

Орфографическая ловушка, в которую попадают все. Глагол roll back пишется в два слова, существительное rollback — в одно. То же с roll out / rollout, back up / backup, set up / setup, log in / login. Правило универсальное: глагол — два слова, существительное — одно.

We need to back up the database.       (глагол)
The backup finished at 03:00.           (существительное)

Log in with your SSO account.           (глагол)
The login page is broken.               (существительное)

Прилагательное от failurefailed: a failed request, failed jobs. Формы failured не существует, хотя по аналогии её изобретают регулярно.

Профессиональные сокращения

В рабочей речи и чатах длинные слова систематически обрубаются. Это не сленг и не небрежность: так говорят и пишут все, включая документацию инструментов. В полном виде ты их почти не услышишь — человек, который на созвоне произносит repository целиком, звучит как диктор новостей.

СокращениеПолная формаКак употребляется
reporepositoryClone the repo and check out the branch.
configconfigurationThe config is mounted as a volume.
envenvironment / environment variableSet it as an env var in the staging env.
authauthentication / authorizationThe auth middleware rejects the request.
asyncasynchronousThis handler is async.
depsdependenciesBump the deps and rerun the tests.
perfperformanceThe perf regression came from the new join.
prodproductionDo not test on prod.
specspecificationThe spec says the header is optional.
docsdocumentationUpdate the docs in the same PR.
e2eend-to-endThe e2e suite runs nightly.
regexregular expressionThis regex is too greedy.

Два замечания. Auth двусмысленно: оно накрывает и аутентификацию (кто ты), и авторизацию (что тебе можно). Когда разница существенна, говорят полностью или пишут authn и authz. Полчаса обсуждения «проблемы с auth», где один участник имел в виду токены, а другой — права доступа, — сцена, которую я видел не раз. А e2e произносится «и-ту-и»: цифра 2 заменяет предлог to. Тот же приём в i18n (18 — число пропущенных букв) и k8s.

git clone git@github.com:acme/billing-api.git
cd billing-api
cp .env.example .env       # env vars for local dev
make deps                  # install dependencies
make e2e                   # run the end-to-end suite

Аббревиатуры и как их читают вслух

Аббревиатуры бывают двух типов, и от этого зависит произношение. Инициализмы читаются по буквам (API — «эй-пи-ай»), акронимы — как слово (SLO — «эс-эл-оу», а вот SOAP — «соуп»). Ошибиться не страшно, никто не засмеётся, но знать заранее приятнее.

АббревиатураРасшифровкаКак произносят
APIapplication programming interfaceпо буквам: эй-пи-ай
CRUDcreate, read, update, deleteкак слово: «крад»
ORMobject-relational mappingпо буквам
CI/CDcontinuous integration / continuous deliveryпо буквам, с «слэш» посередине
SLAservice level agreementпо буквам
SLOservice level objectiveпо буквам
RFCrequest for commentsпо буквам
TTLtime to liveпо буквам
IdPidentity providerпо буквам: ай-ди-пи
MR / PRmerge request / pull requestпо буквам
RCAroot cause analysisпо буквам
WIPwork in progressчаще по буквам, иногда «уип»
YAGNIyou aren't gonna need itкак слово: «ягни»

Троицу SLA, SLO, SLI путают даже носители. SLI — измеряемый показатель, скажем доля успешных запросов. SLO — цель команды по этому показателю, те самые 99,9%. SLA — юридический договор с клиентом, где за пробитую цель предусмотрены последствия, обычно денежные. Внутри команды говорят про SLO. В контракте — про SLA. Перепутать их на встрече с заказчиком — редкое по силе впечатление.

MR и PR — одно и то же, разница только в платформе: GitHub говорит pull request, GitLab — merge request.

Произношение проблемных терминов

Есть набор слов, которые русскоязычные разработчики произносят мимо почти поголовно. Трагедии в этом нет. Но на созвоне искажённое частотное слово заставляет собеседника переспрашивать, и разговор начинает буксовать на ровном месте.

ТерминКак часто говорятКак правильно
cache«кэш» через долгое э, «каше»ровно как cash — «кэш», один слог
queue«кьюэ», «квеуе»как буква Q — «кью»
char«хар», «чар»чаще «чар», реже «кар»; оба приняты
tuple«тупл»«тьюпл» или «тапл», оба варианта живут
null«нулл»«нал», с гласной как в but
schema«схема»«ски́ма», множественное — schemas или schemata
SQL«эс-ку-эль»«эс-кью-эл» по буквам или «сиквел»
JSON«джейсон» с ударением на -сон«джéйсон», ударение на первый слог
GUI«гуи»«гу́и» как слово или по буквам джи-ю-ай
nginx«нжинкс», «энджинкс»«энджин-экс» (engine X)
kubectl«кубектл»«кьюб-контрол» или «кьюб-си-ти-эл»
Kubernetes«кубернетес»«кубернэ́тис», ударение на третий слог
Linux«ла́йнукс»«ли́накс»
facade«фасад» по-русски«фасáд» с мягким c: фэ-сад
deque«дэкуэ»«дэк», как deck

Признаюсь честно: я года три говорил «каше» вместо «кэш» и «схема» вместо «скима», и меня ни разу не поправили — просто пару раз переспросили. Поправился я сам, случайно услышав слово в подкасте. Мораль простая: никто тебя исправлять не будет, это твоя работа.

Самые частотные здесь cache и queue — их ты произносишь по нескольку раз за созвон. Cache звучит ровно как cash, деньги. Queue — ровно как название буквы Q; всё остальное в этом слове не произносится вообще, что и сбивает с толку. У kubectl канонического варианта нет вовсе: «кьюб-контрол», «кьюб-си-ти-эл» и «кьюб-катл» мирно сосуществуют, спорить о них — занятие для скучающих.

Читаем символы вслух

Просьба «продиктуй мне путь» топит людей надёжнее любого грамматического вопроса. Названия символов не преподают нигде, а нужны они постоянно: на созвонах, в парном программировании, при диктовке команды в поддержку.

СимволНазваниеСимволНазвание
_underscore-hyphen (в тексте), dash (в речи)
/slash, forward slash\backslash
*asterisk, star.dot (в путях), period (в тексте)
{ }curly braces, curly brackets[ ]square brackets
( )parentheses, round brackets< >angle brackets
#hash, pound, number sign!exclamation mark, bang
:colon;semicolon
~tilde^caret
|pipe, vertical bar&ampersand
@at sign, at%percent
"double quote'single quote, apostrophe
`backtick=equals

Несколько тонкостей. В путях точка почти всегда dot: dot env, dot git, config dot yaml; в обычном тексте точка в конце предложения — period или full stop. Дефис в речи чаще зовут dash, хотя строго dash — это тире, а hyphen — дефис; --verbose произносят dash dash verbose. Bang — жаргонное имя восклицательного знака, отсюда shebang: строка #! буквально sharp плюс bang.

Потренируемся. Вот путь и команда — проговори их вслух, прежде чем смотреть расшифровку. Именно вслух: молча всё получается гораздо лучше, чем на созвоне.

~/projects/billing-api/.env.example
kubectl logs -f deploy/billing-api --since=1h | grep -i "timeout"

Расшифровка первой строки: tilde slash projects slash billing dash api slash dot env dot example.

Второй: kubectl logs dash f deploy slash billing dash api dash dash since equals one h, pipe, grep dash i, double quote timeout double quote. Заметь, что 1h читается как one h или one hour — в разговоре чаще расшифровывают.

Коллокации: какие глаголы идут с какими существительными

Коллокация — устойчивое сочетание слов, которое носители употребляют вместе просто потому, что так сложилось. Логики в этом почти нет, и калька с русского выдаёт неносителя мгновенно. Рабочий минимум:

СочетаниеЗначение
throw / raise an exceptionвыбросить исключение (throw в Java, JS, C#; raise в Python, Ruby)
catch / handle an exceptionпоймать, обработать исключение
run a queryвыполнить запрос к БД
hit an endpointобратиться к эндпоинту
deploy to productionвыкатить в прод (именно to, не on)
merge a branch into mainвлить ветку (into, не to)
roll out a featureпостепенно выкатывать фичу
roll back a releaseоткатить релиз
ship a featureдовести фичу до пользователей
break the buildсломать сборку в CI
spin up a containerподнять контейнер
tear down the environmentснести окружение
address a commentответить на замечание на ревью
introduce a regressionвнести регресс
reproduce a bugвоспроизвести баг
land a changeдовести изменение до основной ветки

Смотри на предлоги — в них ошибаются чаще, чем в самих глаголах: deploy to production, merge into main, push to a branch, subscribe to a topic, depend on a library, listen on a port, connect to a database. Запоминать их надо целиком, глагол вместе с предлогом, иначе не запомнятся никогда. Зато фраза, собранная из коллокаций, звучит естественно даже на самой простой грамматике:

I rolled back the release because the new query
introduced a regression on the checkout endpoint.
I'll ship a fix after we reproduce the bug locally.

Кейс из реального проекта: диктуем путь и команду на созвоне

Ситуация рядовая. Идёт инцидент, коллега из другой страны шарит экран и просит: Can you tell me the exact path? Надо продиктовать путь и команду так, чтобы человек набрал ровно то, что ты имеешь в виду, с первого раза.

Один такой созвон я помню в деталях. Коллега диктовал путь к конфигу, я набирал под его диктовку, и минут пять мы искали файл, которого нет. Оказалось, между двумя словами был underscore, а он сказал dash. Пять минут инцидента ушли на один символ, который никто не догадался назвать точно.

cat /etc/billing-api/config.d/50-rate-limit.yaml
docker compose -f docker-compose.prod.yml up -d --scale worker=3

Плохой вариант — читать слитно и быстро: собеседник отвалится на первом же дефисе. Хороший — с явными названиями символов и паузами на разделителях:

cat, space, slash etc slash billing dash api slash config dot d
slash five zero dash rate dash limit dot yaml

Понятной диктовку делают три приёма. Числа по цифрам: 50 лучше как five zero, а не fiftyfifty и fifteen на плохой связи неразличимы. Буквы через слова-подсказки: d as in delta, b as in bravo; учить формальный фонетический алфавит не обязательно, годится любое очевидное слово. Расширения целиком: dot yaml произносят «дот я́мл», а если не поняли — y a m l по буквам.

Вторая строка сложнее, потому что в ней флаги:

docker compose, dash f, docker dash compose dot prod dot yml,
up, dash d, dash dash scale, worker equals three

Здесь добавляется четвёртый приём: объясняй флаги, а не только диктуй. Фраза dash d, that is detached mode даёт собеседнику смысл — и шанс заметить, что он набрал не то.

Обратная задача — ошибку диктуют тебе, и её надо записать:

Error: connection to redis:6379 refused after 3 retries
  caused by: dial tcp 10.0.4.17:6379: i/o timeout

Дальше — фразы для уточнения. Выучи их наизусть: они снимают почти все проблемы на созвоне, и стоят пяти минут заучивания.

  • Sorry, could you spell that? — «продиктуй по буквам».
  • Let me read it back to you. — «давай я повторю, что записал» (лучший приём вообще: ты проговариваешь, собеседник подтверждает).
  • Is that one word or two? — «это одно слово или два?» (для rollback против roll back).
  • Is it a hyphen or an underscore? — вопрос, который экономит десять минут отладки.
  • Just to confirm: lowercase or uppercase? — про регистр.
  • Can you paste it in the chat? — самый честный вариант. Для длинных путей он ещё и самый профессиональный: голосом такое передавать просто неэффективно.

Последний пункт важен психологически. Просьба скинуть в чат — не признак слабого английского, а нормальная инженерная практика. Во время инцидента точность важнее демонстрации навыков, и все за столом это понимают.

Типичные ошибки

1. Калька с русского в устойчивых сочетаниях

Русская фраза переводится по словам — и получается грамматически верное, но чужеродное предложение. Носитель поймёт и виду не подаст. Звучать при этом будет странно:

КалькаЕстественно
make a mistake in the codethere is a bug in the code / I made a typo
do a mistakemake a mistake (но в коде — bug, не mistake)
I have a question to youI have a question for you / about the API
deploy on productiondeploy to production
merge the branch to mainmerge the branch into main
I am agreeI agree
please, fix itplease fix it (без запятой)
How do you think?What do you think?
It is not working correct.It is not working correctly.

Отдельно про mistake. По-русски «ошибка» — слово-универсал, а в английском их три, и смыслы разные. Bug — дефект в программе. Error — ошибка выполнения или сообщение о ней. Mistake — ошибка человека. Одна фраза укладывает все три на свои места: The bug causes a 500 error; it was my mistake, I forgot the null check.

2. Произносить частотные термины неправильно

Разовая оговорка не значит ничего. А вот систематическое «кьюэ» вместо «кью» заставляет собеседника каждый раз достраивать смысл, и весь разговор идёт вязко. Чинится дёшево: возьми пять самых частотных лично для тебя терминов — почти наверняка там будут cache, queue, schema, null, tuple, — послушай их в онлайн-словаре и повтори вслух. Десять минут, а эффект слышно сразу.

3. Неправильные предлоги в частотных фразах

Плохо:  I have a question to you about the rate limiter.
Хорошо: I have a question for you about the rate limiter.

Плохо:  We depend from the auth service.
Хорошо: We depend on the auth service.

Плохо:  The service listens the port 8080.
Хорошо: The service listens on port 8080.

Предлоги — самая механическая часть языка. Логики в них нет, вывести правильный предлог из смысла невозможно, он запоминается только вместе с глаголом. Отсюда приём: заводи в заметках не отдельные слова, а сочетания. Не depend, а depend on. Не listen, а listen on a port.

4. Переводить термины там, где нужен оригинал

Обратная крайность — старательно переводить на русский то, что в профессиональной речи давно живёт в оригинале. В смешанной команде «объединить ветку» и «толкнуть в удалённый репозиторий» вызывают больше непонимания, чем «смёржить» и «запушить». Термин — ярлык, а не описание. Когда ярлык знают все, менять его вредно.

Есть и зеркальная беда — не знать оригинала вовсе. Всю карьеру говорил «откат», ни разу не видел rollback — и на англоязычном созвоне слово просто не опознаётся на слух. Разумная стратегия: держать обе формы. Русскую для локальных коллег, английскую для документации и международных команд.

Итог

Технические слова собираются из деталей, и знание деталей выгоднее любых списков. Двенадцать префиксов (de-, re-, un-, non-, over-, under-, pre-, post-, sub-, multi-, inter-, mis-) и девять суффиксов (-able, -less, -ful, -er, -tion, -ment, -ize, -ify, -ness) закрывают большинство производных слов, которые тебе попадутся.

Пары «глагол → существительное» регулярны, но за орфографией нужен глаз: глагол в два слова (roll back, back up, set up), существительное в одно (rollback, backup, setup). Сокращения вроде repo, config, env, prod — норма рабочей речи, а не сленг. Произношение и умение читать символы вслух окупаются на первом же созвоне: cache как cash, queue как буква Q, путь — через slash, dot, dash и underscore, числа по цифрам.

Дальше в курсе из этих кирпичей начнём строить. Как писать коммиты и описания пулл-реквестов, которые читаются с первого раза. Как формулировать замечания на код-ревью так, чтобы их принимали, а не спорили. И как держаться в англоязычном чате и на созвоне, не теряя нити разговора.

Комментарии 0

Для добавления комментариев необходимо войти или зарегистрироваться.

Пока нет комментариев. Станьте первым!