diff options
Diffstat (limited to 'ru-ru')
| -rw-r--r-- | ru-ru/c++-ru.html.markdown | 11 | ||||
| -rw-r--r-- | ru-ru/kotlin-ru.html.markdown | 2 | ||||
| -rw-r--r-- | ru-ru/rust-ru.html.markdown | 59 | ||||
| -rw-r--r-- | ru-ru/sql-ru.html.markdown | 89 | 
4 files changed, 88 insertions, 73 deletions
| diff --git a/ru-ru/c++-ru.html.markdown b/ru-ru/c++-ru.html.markdown index 35994749..c6ac5694 100644 --- a/ru-ru/c++-ru.html.markdown +++ b/ru-ru/c++-ru.html.markdown @@ -471,6 +471,7 @@ int main() {  // членам\методам без открытых или защищенных методов для этого.  class OwnedDog : public Dog { +public:      void setOwner(const std::string& dogsOwner);      // Переопределяем поведение функции печати для всех OwnedDog. Смотрите @@ -582,10 +583,10 @@ public:  // Во время компиляции компилятор фактически генерирует копии каждого шаблона  // с замещенными параметрами, поэтому полное определение класса должно присутствовать -// при каждом вызове. Именно поэтому классы шаблонов полностью определены в +// при каждом вызове. Именно поэтому шаблоны классов полностью определены в  // заголовочных файлах. -// Чтобы создать экземпляр класса шаблона на стеке: +// Чтобы создать экземпляр шаблона класса на стеке:  Box<int> intBox;  // и вы можете использовать его, как и ожидалось: @@ -605,7 +606,7 @@ boxOfBox.insert(intBox);  //   http://en.wikipedia.org/wiki/Typename  // (да-да, это ключевое слово имеет собственную страничку на вики). -// Аналогичным образом, шаблонная функция: +// Аналогичным образом, шаблон функции:  template<class T>  void barkThreeTimes(const T& input)  { @@ -622,7 +623,7 @@ Dog fluffy;  fluffy.setName("Fluffy");  barkThreeTimes(fluffy); // Печатает "Fluffy barks" три раза. -//Параметры шаблона не должны быть классами: +// Параметры шаблона не должны быть классами:  template<int Y>  void printMessage() {    cout << "Learn C++ in " << Y << " minutes!" << endl; @@ -680,7 +681,7 @@ catch (...)  // некоторого ресурса неразрывно совмещается с инициализацией, а освобождение -  // с уничтожением объекта. -// Чтобы понять, на сколько это полезно, +// Чтобы понять, насколько это полезно,  // рассмотрим функцию, которая использует обработчик файлов в С:  void doSomethingWithAFile(const char* filename)  { diff --git a/ru-ru/kotlin-ru.html.markdown b/ru-ru/kotlin-ru.html.markdown index 58dab4cd..85f44c96 100644 --- a/ru-ru/kotlin-ru.html.markdown +++ b/ru-ru/kotlin-ru.html.markdown @@ -8,7 +8,7 @@ translators:      - ["Vadim Toptunov", "https://github.com/VadimToptunov"]  --- -Kotlin - статистически типизированный язык для JVM, Android и браузера. Язык полностью совместим c Java.  +Kotlin - статически типизированный язык для JVM, Android и браузера. Язык полностью совместим c Java.   [Более детальная информация здесь.](https://kotlinlang.org/)  ```kotlin diff --git a/ru-ru/rust-ru.html.markdown b/ru-ru/rust-ru.html.markdown index 7bd2809a..8b2667cf 100644 --- a/ru-ru/rust-ru.html.markdown +++ b/ru-ru/rust-ru.html.markdown @@ -6,36 +6,33 @@ contributors:      - ["P1start", "http://p1start.github.io/"]  translators:      - ["Anatolii Kosorukov", "https://github.com/java1cprog"] +    - ["Vasily Starostin", "https://github.com/Basil22"]  lang: ru-ru  --- -Rust сочетает в себе низкоуровневый контроль над производительностью  с удобством высокого уровня и предоставляет гарантии  -безопасности. -Он достигает этих целей, не требуя сборщика мусора или времени выполнения, что позволяет использовать библиотеки Rust как замену -для C-библиотек. +Язык Rust разработан в Mozilla Research. Он сочетает низкоуровневую производительность с удобством языка высокого уровня и одновременно гарантирует безопасность памяти. -Первый выпуск Rust, 0.1, произошел в январе 2012 года, и в течение 3 лет развитие продвигалось настолько быстро, что до  -недавнего времени использование стабильных выпусков было затруднено, и вместо этого общий совет заключался в том, чтобы  -использовать последние сборки. +Он достигает этих целей без сборщика мусора или сложной среды выполнения, что позволяет использовать библиотеки Rust как прямую замену +C-библиотек. И наоборот, Rust умеет использовать готовые С-библиотеки как есть, без накладных расходов. -15 мая 2015 года был выпущен Rust 1.0 с полной гарантией обратной совместимости. Усовершенствования времени компиляции и  -других аспектов компилятора в настоящее время доступны в ночных сборках. Rust приняла модель выпуска на поезде с регулярными выпусками каждые шесть недель. Rust 1.1 beta был доступен одновременно с выпуском Rust 1.0. +Первый выпуск Rust, 0.1, произошел в январе 2012 года. В течение 3 лет развитие продвигалось настолько быстро, что язык серьезно менялся без сохранения совместимости. Это дало возможность обкатать и отполировать синтаксис и возможности языка. -Хотя Rust является языком относительно низкого уровня, Rust имеет некоторые функциональные концепции, которые обычно  -встречаются на языках более высокого уровня. Это делает Rust не только быстрым, но и простым и эффективным для ввода кода. +15 мая 2015 года был выпущен Rust 1.0 с полной гарантией обратной совместимости. Сборка поставляется в трех вариантах: стабильная версия, бета-версия, ночная версия. Все нововведения языка сперва обкатываются на ночной и бета-версиях, и только потом попадают в стабильную. Выход очередной версии происходит раз в 6 недель. В 2018 году вышло второе большое обновление языка, добавившее ему новых возможностей. + +Хотя Rust является языком относительно низкого уровня, он имеет все возможности высокоуровневых языков: процедурное, объектное, функциональное, шаблонное и другие виды программирования. На данный момент Rust является одним из самых мощных (а может быть и самым) по возможностям среди статически типизированных языков. Это делает Rust не только быстрым, но и простым и эффективным для разработки сложного кода.  ```rust -// Это однострочный комментарии +// Это однострочный комментарий  //   /// Так выглядит комментарий для документации  /// # Examples  /// -///  +/// ```  /// let seven  = 7 -///  +/// ```  ///////////////  // 1. Основы // @@ -63,10 +60,9 @@ fn main() {      let y: i32 = 13i32;      let f: f64 = 1.3f64; -    // Автоматическое выявление типа данных +    // Автоматическое выведение типа данных      // В большинстве случаев компилятор Rust может вычислить  -	// тип переменной, поэтому -    // вам не нужно писать явные аннотации типа. +    // тип переменной, поэтому вам не нужно явно указывать тип.      let implicit_x = 1;      let implicit_f = 1.3; @@ -87,12 +83,11 @@ fn main() {      // Печать на консоль      println!("{} {}", f, x); // 1.3 hello world -    // `String` – изменяемя строка +    // `String` – изменяемая строка      let s: String = "hello world".to_string(); -    // Строковый срез - неизменяемый вид в строки -    // Это в основном неизменяемая пара указателей на строку - -    // Это указатель на начало и конец строкового буфера +    // Строковый срез - неизменяемое представление части строки +    // Представляет собой пару из указателя на начало фрагмента и его длины      let s_slice: &str = &s; @@ -130,7 +125,7 @@ fn main() {      // 2. Типы //      ////////////// -    // Struct +    // Структура      struct Point {          x: i32,          y: i32, @@ -154,6 +149,8 @@ fn main() {      let up = Direction::Up;      // Перечисление с полями +    // В отличие от C и C++ компилятор автоматически следит за тем, +    // какой именно тип хранится в перечислении.      enum OptionalI32 {          AnI32(i32),          Nothing, @@ -175,7 +172,7 @@ fn main() {      // Методы //      impl<T> Foo<T> { -            fn get_bar(self) -> T { +        fn get_bar(self) -> T {              self.bar          }      } @@ -198,9 +195,9 @@ fn main() {      let another_foo = Foo { bar: 1 };      println!("{:?}", another_foo.frobnicate()); // Some(1) -    ///////////////////////// -    // 3. Поиск по шаблону // -    ///////////////////////// +    ///////////////////////////////// +    // 3. Сопоставление по шаблону // +    /////////////////////////////////      let foo = OptionalI32::AnI32(1);      match foo { @@ -223,9 +220,9 @@ fn main() {              println!("The second number is Nothing!"),      } -    ///////////////////// +    //////////////////////////////////////////////      // 4. Управление ходом выполнения программы // -    ///////////////////// +    //////////////////////////////////////////////      // `for` loops/iteration      let array = [1, 2, 3]; @@ -233,7 +230,7 @@ fn main() {          println!("{}", i);      } -    // Отрезки +    // Диапазоны      for i in 0u32..10 {          print!("{} ", i);      } @@ -266,9 +263,9 @@ fn main() {          break;      } -    ///////////////////////////////// +    //////////////////////////////////      // 5. Защита памяти и указатели // -    ///////////////////////////////// +    //////////////////////////////////      // Владеющий указатель – такой указатель может быть только один      // Это значит, что при вызоде из блока переменная автоматически становится недействительной. diff --git a/ru-ru/sql-ru.html.markdown b/ru-ru/sql-ru.html.markdown index 64b7ab71..7353a175 100644 --- a/ru-ru/sql-ru.html.markdown +++ b/ru-ru/sql-ru.html.markdown @@ -5,25 +5,41 @@ contributors:    - ["Bob DuCharme", "http://bobdc.com/"]  translators:    - ["Shaltaev", "https://github.com/shaltaev"] +  - ["Andre Polykanine", "https://github.com/Menelion"]  lang: ru-ru  --- -Язык структурированных запросов (SQL) - это стандартный язык ISO для создания и работы с базами данных, хранящимися в наборе таблиц. Реализации обычно добавляют свои собственные расширения к языку; [Сравнение различных реализаций SQL](http://troels.arvin.dk/db/rdbms/) хороший справочник по различиям в продуктах. - -Реализации обычно предоставляют приглашение командной строки, где вы можете вводить команды (описанные ниже) в интерактивном режиме, также есть способ выполнить серию этих команд, сохраненных в файле сценария. (Результат того, что вы сделали с помощью интерактивного режима, является хорошим примером того, что не стандартизировано - большинство реализаций SQL поддерживают ключевые слова QUIT, EXIT или оба.) - -Некоторый команды ниже предполагают использование [демонстрационный образец базы данных сотрудников от MySQL](https://dev.mysql.com/doc/employee/en/) доступный на [github](https://github.com/datacharmer/test_db) следовательно для повторения команд в локальном окружении он должен быть загружен. Файлы и скрипты на github, схожи с командами ниже, которые манипулируют базами, таблицами и данными. Синтаксис для запуска этих сценариев будет зависеть от используемой вами реализации SQL. Способ запуска из командной строки обычный для вашей операционной системе. +Язык структурированных запросов (SQL) — это стандартный язык ISO для создания +и работы с базами данных, хранящимися в наборе таблиц. Реализации обычно +добавляют свои собственные расширения к языку; +[Сравнение различных реализаций SQL](http://troels.arvin.dk/db/rdbms/) — хороший справочник по различиям в продуктах. + +Реализации обычно предоставляют приглашение командной строки, где вы можете +вводить команды, описанные ниже, в интерактивном режиме, также есть способ +выполнить серию таких команд, сохранённых в файле скрипта. +(Результат того, что вы сделали с помощью интерактивного режима, является +хорошим примером того, что не стандартизировано, — большинство реализаций SQL +поддерживают ключевые слова QUIT, EXIT или оба). + +Некоторые команды ниже предполагают использование +[демонстрационного образца базы данных сотрудников от MySQL](https://dev.mysql.com/doc/employee/en/), доступного на [Github](https://github.com/datacharmer/test_db). +Следовательно, для повторения команд в локальном окружении он должен быть загружен. +Файлы на github — это скрипты с командами, которые схожи с командами ниже, +которые создают и манипулируют таблицами и данными о сотрудниках вымышленной +компании. Синтаксис для запуска этих скриптов будет зависеть от используемой +вами реализации SQL. Обычно используется утилита, запускаемая из командной +строки в вашей операционной системе.  ```sql --- Комментарии начинаются с двух дефисов. Завершите каждую команду +-- Комментарии начинаются с двух дефисов. Завершайте каждую команду  -- точкой с запятой. --- SQL не учитывает регистр ключевых слов. Образцы команд здесь --- следуйте соглашению о написании их в верхнем регистре, потому что --- это позволяет легче их отличить от имен баз, таблиц и колонок. +-- SQL не учитывает регистр букв для ключевых слов. Примеры команд здесь +-- следуют соглашению о написании в верхнем регистре, потому что +-- это позволяет легче отличить их от имён баз, таблиц и колонок.  -- Создание и удаление базы данных. Имена базы и таблицы чувствительны --- к регистру. +-- к регистру букв.  CREATE DATABASE someDatabase;  DROP DATABASE someDatabase; @@ -33,71 +49,72 @@ SHOW DATABASES;  -- Выбор базы для работы.  USE employees; --- Выбрать все колонки и строки из таблицы текущей базы. --- В интерактивном режиме обычно результат будет выведен на экран. +-- Выбрать все строки и колонки из таблицы «departments» (отделы) текущей базы. +-- В интерактивном режиме обыч	но результат будет выведен на экран.  SELECT * FROM departments; --- Тот же запрос что и вышеБ но выбор только колонок dept_no и dept_name. +-- Тот же запрос, что и выше, но выбор только колонок «dept_no» и «dept_name».  -- Разбиение команд на несколько строк допустимо.  SELECT dept_no,         dept_name FROM departments; --- В данном случае будут выбраны только первые 5 результатов. +-- В данном случае будут выбраны все колонки, но только первые 5 строк.  SELECT * FROM departments LIMIT 5; --- Выбор имен депортаментов где имена содержат в себе 'en'. +-- Выбор названий отделов, содержащих подстроку «en».  SELECT dept_name FROM departments WHERE dept_name LIKE '%en%'; --- Выбор всех колонок где имена начинаются 'S' и 4 любых символа после. +-- Выбор всех колонок, где названия отделов начинаются на «S», +-- после которой идёт ровно четыре символа.  SELECT * FROM departments WHERE dept_name LIKE 'S____'; --- Выбор всех должностей, но без повторений. +-- Выбор всех должностей из таблицы «titles», но без повторений.  SELECT DISTINCT title FROM titles;  -- В дополнение к предыдущему запросу результат будет отсортирован --- в алфавитном порядке (С учетом регистра). +-- в алфавитном порядке (с учётом регистра).  SELECT DISTINCT title FROM titles ORDER BY title; --- Вычислить количество строк в таблице депортамента. +-- Показать число строк в таблице отделов.  SELECT COUNT(*) FROM departments; --- Вычислить количество строк где имя депортамента содержит 'en' --- в любой части имени. +-- Показать число строк, где название отдела содержит подстроку «en»  SELECT COUNT(*) FROM departments WHERE dept_name LIKE '%en%'; --- ОБЪЕДИНЕНИЕ информации из нескольких таблиц: должность, когда ее занимал, --- имя и фамилия сотрудника, объединить по идентификатору сотрудника --- вывести только 10 строк. - +-- Объединение информации из нескольких таблиц: +-- В таблице «titles» перечислены должности, кто их занимал по номеру сотрудника, +-- а также с какой даты по какую. Получим эту информацию, но используем номера +-- сотрудников как ссылку на таблицу «employees», чтобы получить имя и фамилию +-- каждого сотрудника. Выводим только 10 строк.  SELECT employees.first_name, employees.last_name,         titles.title, titles.from_date, titles.to_date  FROM titles INNER JOIN employees ON         employees.emp_no = titles.emp_no LIMIT 10;  -- Список всех таблиц во всех базах. Реализации обычно предоставляют --- их собственные сокращения чтобы сделать это для текущей базы. +-- собственные сокращения, чтобы показать все таблицы текущей базы.  SELECT * FROM INFORMATION_SCHEMA.TABLES  WHERE TABLE_TYPE='BASE TABLE'; --- Создать таблицу с именем tablename1, с двумя колонками, для колонок --- доступно множество опций вроде типа и других, конкретнее уточняйте для --- своей реализации. +-- Создать таблицу с именем tablename1 и двумя колонками в текущей базе. +-- Для колонок имеется множество параметров, таких как тип данных.  CREATE TABLE tablename1 (fname VARCHAR(20), lname VARCHAR(20)); --- Вставляем строку в таблице созданную в предыдущем запросе . +-- Вставляем строку данных в таблицу «tablename1». Предполагаем, что таблица +-- настроена таким образом, чтобы принимать эти значения.  INSERT INTO tablename1 VALUES('Richard','Mutt'); --- В tablename1, изменить значение fname на 'John' --- для каждой строки где lname имеет значение 'Mutt'. +-- В таблице «tablename1» изменить значение fname на «John» +-- для каждой строки, где колонка lname равна «Mutt».  UPDATE tablename1 SET fname='John' WHERE lname='Mutt'; --- Удалить строки из таблицы tablename1 --- где lname начинается с 'M'. +-- Удалить из таблицы «tablename1» строки, +-- где значение колонки lname начинается с «M».  DELETE FROM tablename1 WHERE lname like 'M%'; --- Удалить все строки из таблицы tablename1, в итоге получим пустую таблицу. +-- Удалить все строки из таблицы «tablename1». В итоге получим пустую таблицу.  DELETE FROM tablename1; --- Удалить таблицу tablename1. +-- Удалить таблицу «tablename1» полностью.  DROP TABLE tablename1;  ``` | 
