Skip to content

Commit 7aab7fc

Browse files
committed
Add scala 3 book in russian
1 parent 84551cf commit 7aab7fc

File tree

2 files changed

+50
-59
lines changed

2 files changed

+50
-59
lines changed

_ru/scala3/book/introduction.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ next-page: scala-features
2626
</blockquote>
2727

2828
В этой книге мы надеемся продемонстрировать, что Scala — это красивый, выразительный язык программирования с чистым современным синтаксисом,
29-
который поддерживает и функциональное программирование (FP), и объектно-ориентированное программирование (ООП),
29+
который поддерживает и функциональное программирование (ФП), и объектно-ориентированное программирование (ООП),
3030
а также обеспечивает безопасную статическую систему типов.
3131
Синтаксис, грамматика и функции Scala были переосмыслены, открыто обсуждались и были обновлены в 2020 году,
3232
чтобы стать яснее и проще для понимания, чем когда-либо прежде.
@@ -35,4 +35,4 @@ next-page: scala-features
3535
После этого обзора в следующих разделах содержится более подробная информация о рассмотренных языковых функциях.
3636

3737
[reference]: {{ site.scala3ref }}/overview.html
38-
[taste]: /ru/scala3/book/taste-intro.html
38+
[taste]: {% link _overviews/scala3-book/taste-intro.md %}

_ru/scala3/book/scala-features.md

Lines changed: 48 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -24,37 +24,34 @@ next-page: why-scala-3
2424

2525

2626

27-
{% comment %}
28-
I think of this section as being like an “elevator pitch.”
29-
{% endcomment %}
30-
31-
## High-level features
27+
## Высокоуровневые функции
3228

33-
Looking at Scala from the proverbial “30,000 foot view,” you can make the following statements about it:
29+
Глядя на Scala с пресловутого “вида с высоты 30 000 фунтов”, вы можете сделать о нем следующие утверждения:
3430

35-
- It’s a high-level programming language
36-
- It has a concise, readable syntax
37-
- It’s statically-typed (but feels dynamic)
38-
- It has an expressive type system
39-
- It’s a functional programming (FP) language
40-
- It’s an object-oriented programming (OOP) language
41-
- It supports the fusion of FP and OOP
42-
- Contextual abstractions provide a clear way to implement _term inference_
43-
- It runs on the JVM (and in the browser)
44-
- It interacts seamlessly with Java code
45-
- It’s used for server-side applications (including microservices), big data applications, and can also be used in the browser with Scala.js
31+
- Это высокоуровневый язык программирования
32+
- Он имеет краткий, читаемый синтаксис
33+
- Он статически типизирован (но кажется динамичным)
34+
- Имеет выразительную систему типов
35+
- Это язык функционального программирования (ФП)
36+
- Это язык объектно-ориентированного программирования (ООП)
37+
- Он поддерживает слияние ФП и ООП
38+
- Контекстные абстракции обеспечивают понятный способ реализации _вывода терминов_ (_term inference_)
39+
- Он работает на JVM (и в браузере)
40+
- Беспрепятственно взаимодействует с Java кодом
41+
- Он используется для серверных приложений (включая микросервисы), приложений для работы с большими данными, а также может использоваться в браузере с помощью Scala.js
4642

47-
The following sections take a quick look at these features.
43+
Эти функции кратко рассматриваются в следующих разделах.
4844

4945

50-
### A high-level language
46+
### Высокоуровневый язык
5147

52-
Scala is considered a high-level language in at least two ways.
53-
First, like Java and many other modern languages, you don’t deal with low-level concepts like pointers and memory management.
48+
Scala считается высокоуровневым языком как минимум по двум причинам.
49+
Во-первых, подобно Java и многим другим современным языкам, вы не имеете дело с низкоуровневыми понятиями,
50+
такими как указатели и управление памятью.
5451

55-
Second, with the use of lambdas and higher-order functions, you write your code at a very high level.
56-
As the functional programming saying goes, in Scala you write _what_ you want, not _how_ to achieve it.
57-
That is, we don’t write imperative code like this:
52+
Во-вторых, с использованием лямбда-выражений и функций высшего порядка вы пишете свой код на очень высоком уровне.
53+
Как говорится в функциональном программировании, в Scala вы пишете то, _что_ хотите, а не то, _как_ этого добиться.
54+
То есть мы не пишем императивный код вот так:
5855

5956
{% tabs scala-features-1 class=tabs-scala-version %}
6057
{% tab 'Scala 2' for=scala-features-1 %}
@@ -89,8 +86,9 @@ val newNumbers = double(oldNumbers)
8986
{% endtab %}
9087
{% endtabs %}
9188

92-
That code instructs the compiler what to do on a step-by-step basis.
93-
Instead, we write high-level, functional code using higher-order functions and lambdas like this to compute the same result:
89+
Этот код шаг за шагом указывает компилятору, что делать.
90+
Вместо этого мы пишем высокоуровневый функциональный код, используя функции высшего порядка и лямбда-выражения,
91+
подобные этому, для вычисления того же результата:
9492

9593
{% tabs scala-features-2 %}
9694
{% tab 'Scala 2 and 3' for=scala-features-2 %}
@@ -101,13 +99,13 @@ val newNumbers = oldNumbers.map(_ * 2)
10199
{% endtabs %}
102100

103101

104-
As you can see, that code is much more concise, easier to read, and easier to maintain.
102+
Как видите, этот код намного лаконичнее, его легче читать и легче поддерживать.
105103

106104

107-
### Concise syntax
105+
### Лаконичный синтаксис
108106

109-
Scala has a concise, readable syntax.
110-
For instance, variables are created concisely, and their types are clear:
107+
Scala имеет краткий, удобочитаемый синтаксис.
108+
Например, переменные создаются лаконично, а их типы понятны:
111109

112110
{% tabs scala-features-3 %}
113111
{% tab 'Scala 2 and 3' for=scala-features-3 %}
@@ -119,21 +117,21 @@ val p = Person("Martin", "Odersky")
119117
{% endtabs %}
120118

121119

122-
Higher-order functions and lambdas make for concise code that’s readable:
120+
Функции высшего порядка и лямбда-выражения делают код кратким и удобочитаемым:
123121

124122
{% tabs scala-features-4 %}
125123
{% tab 'Scala 2 and 3' for=scala-features-4 %}
126124
```scala
127-
nums.map(i => i * 2) // long form
128-
nums.map(_ * 2) // short form
125+
nums.map(i => i * 2) // длинная форма
126+
nums.map(_ * 2) // краткая форма
129127

130128
nums.filter(i => i > 1)
131129
nums.filter(_ > 1)
132130
```
133131
{% endtab %}
134132
{% endtabs %}
135133

136-
Traits, classes, and methods are defined with a clean, light syntax:
134+
Трэйты, классы и методы определяются с помощью простого и легкого синтаксиса:
137135

138136
{% tabs scala-features-5 class=tabs-scala-version %}
139137
{% tab 'Scala 2' for=scala-features-5 %}
@@ -168,13 +166,14 @@ class Dog extends Animal, HasTail:
168166
{% endtabs %}
169167

170168

171-
Studies have shown that the time a developer spends _reading_ code to _writing_ code is at least a 10:1 ratio, so writing code that is concise _and_ readable is important.
169+
Исследования показали, что время, которое разработчик тратит на _чтение_ и _написание_ кода, составляет как минимум 10:1,
170+
поэтому важно писать краткий и читабельный код.
172171

173172

174-
### A dynamic feel
173+
### Ощущение динамики
175174

176-
Scala is a statically-typed language, but thanks to its type inference capabilities it feels dynamic.
177-
All of these expressions look like a dynamically-typed language like Python or Ruby, but they’re all Scala:
175+
Scala — это язык со статической типизацией, но благодаря своим возможностям вывода типов он кажется динамичным.
176+
Все эти выражения выглядят как языки с динамической типизацией, такие как Python или Ruby, но это все Scala:
178177

179178
{% tabs scala-features-6 class=tabs-scala-version %}
180179
{% tab 'Scala 2' for=scala-features-6 %}
@@ -204,26 +203,18 @@ val z = nums
204203
{% endtabs %}
205204

206205

207-
As Heather Miller states, Scala is considered to be a [strong, statically-typed language](https://heather.miller.am/blog/types-in-scala.html), and you get all the benefits of static types:
206+
Как утверждает Heather Miller, Scala считается [сильным языком со статической типизацией](https://heather.miller.am/blog/types-in-scala.html),
207+
и вы получаете все преимущества статических типов:
208208

209-
- Correctness: you catch most errors at compile-time
210-
- Great IDE support
211-
- Reliable code completion
212-
- Catching errors at compile-time means catching mistakes as you type
213-
- Easy and reliable refactoring
214-
- You can refactor your code with confidence
215-
- Method type declarations tell readers what the method does, and help serve as documentation
216-
- Scalability and maintainability: types help ensure correctness across arbitrarily large applications and development teams
217-
- Strong typing in combination with excellent inference enables mechanisms like [contextual abstraction]({{ site.scala3ref }}/contextual) that allows you to omit boilerplate code. Often, this boilerplate code can be inferred by the compiler, based on type definitions and a given context.
218-
219-
{% comment %}
220-
In that list:
221-
- 'Correctness' and 'Scalability' come from Heather Miller’s page
222-
- the IDE-related quotes in this section come from the Scala.js website:
223-
- catch most errors in the IDE
224-
- Easy and reliable refactoring
225-
- Reliable code completion
226-
{% endcomment %}
209+
- Корректность: вы обнаруживаете большинство ошибок во время компиляции
210+
- Отличная поддержка IDE
211+
- Надежное автодополнение кода
212+
- Отлов ошибок во время компиляции означает отлов ошибок по мере написания
213+
- Простой и надежный рефакторинг
214+
- Вы можете уверенно рефакторить свой код
215+
- Объявления типов методов сообщают читателям, что делает метод, и помогают служить документацией
216+
- Масштабируемость и удобство обслуживания: типы помогают обеспечить корректность в произвольно больших приложениях и командах разработчиков
217+
- Строгая типизация в сочетании с превосходным выводом типов позволяет использовать такие механизмы, как [контекстная абстракция]({{ site.scala3ref }}/contextual), которая позволяет вам опускать шаблонный код. Часто этот шаблонный код может быть выведен компилятором на основе определений типов и заданного контекста.
227218

228219

229220
### Expressive type system

0 commit comments

Comments
 (0)