Closed kgv closed 9 years ago
Моё мнение:
Во всех случаях термины должны переводиться "один к одному", т.е. использоваться везде должно одно и то же русское слово, а не различные синонимы. Aliasing в случае указателей хорошо переводится как "совпадение". Aliased pointer - "совпадающий указатель". Borrowing - предлагаю "заимствование", потому что нет такой сильной ассоциации с деньгами. Life time - "время жизни" меньше режет слух. Ownership - "владение" является одновременно нейтральным и коротким. "Владение ресурсом", "владение памятью" звучит нормально, в отличие от других альтернатив :) Destructuring по-моему хорошо описывается словом "разбор", особенно в контексте частого применения этой возможности в реализации различных парсеров.
@mkpankov я тоже придерживаюсь мнения, что стоит для одного и того же оригинального термина использовать единственный термин перевода :+1: . Однако такие вариации как "владение" и "право владения" (напримен в контексте "move ownership" - отдает право влажения) считаю приемлемыми.
borrowing -> заимствование, заем считаю подходят оба, одолжить
match -> сопоставление с образцом можно ли также использовать "шаблон" вместо "образец"?
matcher -> образец/шаблон/сопоставитель?
matching -> сопоставление?
destructuring -> не вяжется у меня данное действие в Rust с термином "разбор" почему-то... У меня оно однозначно ассоциируется с "деструктуризацией" или "деконструкцией", но деструктуризация может неправильно ассоциироваться со структурами.
aliasing -> да, во многоих контекстах по отношению к указателям и ссылкам "совпадение" хорошо звучит. Единственное - "have no guarantees about aliasing or mutability" - как тогда следует переводить?
Единственное - "have no guarantees about aliasing or mutability" - как тогда следует переводить?
Думаю, там в контексте надо переводить.
Новый термин: trait.
Википедия переводит его как "типаж".
На Хабре в ряде статей также используется этот термин: http://habrahabr.ru/search/?q=trait&target_type=posts&order_by=relevance
В принципе он неплох и слух вроде не режет. Единственное, что меня смущает - его возможное столкновение с "типажом", который kind.
Вот ещё перевод rustbyexample.com: https://github.com/suhr/rust-by-example, можно посмотреть, какие термины там.
И да trait — типаж, slice — срез, ownership — владение, а borrowing — заимствование. Правда crate всё-таки крэйт.
capacity -> мощность (в отношении векторов)
Ёмкость же. Т.е сколько элементов вместится без необходимости выделить память.
match -> сопоставление с шаблоном
Сопоставление с образцом, устоявшийся термин.
variable binding - предлагаю "имя" или "значение" в зависимости от контекста. или лучше "связанное имя"
tuple struct → кортежная структура
Единственное, что меня смущает - его возможное столкновение с "типажом", который kind.
Думаю kind тогда стоит переводить как тип, чтобы различать эти 2 понятия.
Сопоставление с образцом, устоявшийся термин.
Просто в документации затем присутствуют термины Box Syntax Patterns
, Slice Patterns
и т.д. а переводить их как "образцы срезов" не камильфо.
variable binding - предлагаю "имя" или "значение" в зависимости от контекста. или лучше "связанное имя"
Согласен, связанное имя или связанное значение в зависимости от контекста.
Правда crate всё-таки крэйт.
Тогда почему слайсы, туплы, трейты и паттерн-матчинг не оставить? Я склоняюсь все-таки к контейнеру. (к тому же очень канонично такой термин вписывается в cargo)
Думаю kind тогда стоит переводить как тип, чтобы различать эти 2 понятия.
Но "тип" - это type :) Википедия использует для kind "род".
Предлагаю пока переводить основываясь на эти основные понятия, раз у них есть канонический перевод. Как переводить higher-kinded types подумаем потом :) (высокородные типы, ахаха!)
Просто в документации затем присутствуют термины Box Syntax Patterns, Slice Patterns и т.д. а переводить их как "образцы срезов" не камильфо.
Но и как "шаблоны срезов" тоже. Думаю, для самого сопоставления с образцом надо использовать канонический перевод, а для всяких заморочных вещей потом что-то придумаем.
Тогда почему слайсы, туплы, трейты и паттерн-матчинг не оставить? Я склоняюсь все-таки к контейнеру. (к тому же очень канонично такой термин вписывается в cargo)
Согласен, контейнер нормально подходит. Я думаю в rustbyexample crate был оставлен просто из-за отсутствия канонического перевода.
Тогда почему слайсы, туплы, трейты и паттерн-матчинг не оставить? Я склоняюсь все-таки к контейнеру. (к тому же очень канонично такой термин вписывается в cargo)
Потому, что контейнер это таки контейнер (тыц, тыц, тыц, тыц, тыц), когда же крэйт — единица сборки в Rust. Слишком много всего зовётся словом «контейнер», и ничего из того, что близко к теме.
Потому, что контейнер это таки контейнер (тыц, тыц, тыц, тыц, тыц), когда же крэйт — единица сборки в Rust. Слишком много всего зовётся словом «контейнер», и ничего из того, что близко к теме.
Но если бы это было проблемой, другие люди тоже не называли бы новые непохожие сущности словом "контейнер".
Я не видел, чтобы первые два значения употреблялись в Rust. Для этих вещей они обычно используют "data structure", "struct", "enum", "sum type", "sequence" и подобное.
Вот, например, употребления "container" в оригинале TRPL:
➜ trpl git:(master) grep -irne 'container' .
➜ trpl git:(master)
Всё остальное вообще не относится к делу.
Crate как одновременно единица компиляции и единица распространения (пакет) это вообще не изобретение Rust ли?
К слову: мне кажется, для обсуждения перевода отдельных терминов, если он спорный, надо создавать отдельные задачи, иначе в комментариях к этой скоро будет не продраться.
Но если бы это было проблемой, другие люди тоже не называли бы новые непохожие сущности словом "контейнер".
Вот поэтому разработчики Rust и назвали новую сущность как crate, а не как container.
Crate как одновременно единица компиляции и единица распространения (пакет) это вообще не изобретение Rust ли?
Это же фича Cargo, а не самого Rust, разве нет?
Это же фича Cargo, а не самого Rust, разве нет?
Я имел ввиду экосистему языка. Компилятор тоже оперирует этим понятием, раз это единица компиляции.
Вот поэтому разработчики Rust и назвали новую сущность как crate, а не как container.
А вот этого мы не знаем.
Как всё-таки переводим unit?
Варианты: пустой кортеж, единичное значение, тривиальное значение.
Ну, unit type повсеместно зовётся «единичным типом», так что естественно называть unit «единичным значением» или «значением единичного типа».
Вообще в описании кортежа говорится, что если он с нулевым числом элементов, то это пустое множество. По сути то же самое, что и единичный тип, но более интуитивно.
Это как кортеж определяется в математике. В программировании же нет множеств, но есть типы. Единичный тип — это тип с единственным возможным значением. Пустой кортеж — лишь стандартный вариант подобного типа, но не единственный. Кроме того, есть ещё и пустой (низший) тип. У пустого типа вообще нет допустимых значений, экземпляр пустого типа невозможно создать. Хотя этот тип не встречается в обычных языках, он играет важную роль в языках с зависимыми типами.
Добавил unit type -> единичный тип Если есть критика по поводу данного варианта перевода - думаю стоит создать отдельную issue.
Ввел новое правило пунктуации:
"Одинарные кавычки" -
‘
и’
заменяются на "Двойную кавычку (универсальная)" -"
.
В связи с обсуждением
Новое правило для ссылок на API документацию Rust.
Относительные ссылоки на API документацию Rust заменяются на абсолютные.
Добавил:
box -> упаковка
Закрываю.
Для дальнейшего обсуждения существующих правил или новых предложений следует создавать новые задачи.
Правила разметки
Правила перевода
# Examples
) - не переводятся. [^1][^0]: Тонкий момент: не стоит переводить имена вроде Graydon и Niko как Григорий и Николай - это отсылка к создателям языка [^1]: В разделе о документации сказано, что они не являются частью синтаксиса, но являются соглашением.
Правила пунктуации
‘
и’
заменяются на "Двойную кавычку (универсальная)" -"
.Правила синтаксиса
Правила для ссылок
Относительные ссылоки на API документацию Rust заменяются на абсолютные. По умолчанию следует использовать ссылки на стабильную версию (http://doc.rust-lang.org/std/primitive.bool.html), если же ссылка на фичу из нестабильной версии, то добавляем nightly (http://doc.rust-lang.org/nightly/std/primitive.bool.html).
Словарь терминов
aliasing -> задание псевдонимов, псевдонимизация/совпадение, совпадающий указатель? (в отношении указателей, ссылок) borrowing -> заимствование box -> упаковка capacity -> ёмкость (в отношении векторов) crate -> контейнер destructure -> деконструкция/разбор? length -> длина (в отношении векторов) lifetime -> время жизни match -> сопоставление с образцом matcher -> matching -> module -> модуль operator -> операция ownership -> владение, владение ресурсом, право владения slice -> срез statement -> оператор trait -> типаж tuple struct -> кортежная структура variable binding -> имя (связанное имя) / значение (связанное значение) в зависимости от контекста. unit type -> единичный тип
Если у вас есть вопросы или предложения по правилам - не стесняйтесь, обязательно предлагайте лучшие на ваш взгляд варианты!