Proofread tcl-ru.html.markdown

This commit is contained in:
Boris Verkhovskiy 2024-04-03 03:18:08 -07:00 committed by GitHub
parent 4e88b2cdba
commit 3c918ac30e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1,10 +1,11 @@
---
language: Tcl
lang: ru-ru
contributors:
- ["Poor Yorick", "https://pooryorick.com/"]
translators:
- ["Viktor Sokhranov", "https://github.com/weirdvic"]
filename: learntcl.tcl
filename: learntcl-ru.tcl
---
Tcl был создан [Джоном Оустерхаутом](https://ru.wikipedia.org/wiki/Оустерхаут,_Джон)
@ -20,7 +21,7 @@ Tcl был создан [Джоном Оустерхаутом](https://ru.wikip
* Удобный кроссплатформенный API для работы с сетью
* Поддержка виртуальной файловой системы(VFS)
* Поддержка виртуальной файловой системы (VFS)
* Стекируемые каналы ввода-вывода
@ -32,15 +33,15 @@ Tcl был создан [Джоном Оустерхаутом](https://ru.wikip
Tcl имеет много общего с Lisp, но в отличие от списков, в Tcl "валютой" языка
являются строки. Все значения являются строками. Список в Tcl это просто строка в
определённом формате, а тело процедуры(скрипт) это ещё одна строка, а не блок.
определённом формате, а тело процедуры (скрипт) это ещё одна строка, а не блок.
С целью увеличения производительности, интерпретатор Tcl использует кэшированные
внутренние представления различных типов данных. Например, рутины(routines), работающие
внутренние представления различных типов данных. Например, рутины (routines), работающие
со списками, фактически используют внутреннее представление списков, а интерпретатор
Tcl обновляет строковое представление в том случае если оно используется в скрипте.
В Tcl используется подход copy-on-write, позволяющий оперировать большими объёмами
данных без дополнительного оверхеда. Процедуры в Tcl автоматически компилируются
в байткод, кроме случаев когда в процедуре используются динамические рутины, такие
как "uplevel", "upvar" и "trace"
как `uplevel`, `upvar` и `trace`.
Программировать на Tcl приятно. Его находят привлекательным хакеры, которым интересны
Lisp, Forth или Smalltalk, а также инженеры и учёные, которым просто необходим
@ -50,8 +51,6 @@ Lisp, Forth или Smalltalk, а также инженеры и учёные, к
синтаксису Tcl не мешать работать с предметной областью проекта. Синтаксис Tcl в этом
смысле даже более минималистичен чем у Lisp.
```tcl
#! /bin/env tclsh
@ -65,7 +64,7 @@ Lisp, Forth или Smalltalk, а также инженеры и учёные, к
# когда скрипты становятся сложнее, наступает фрустрация.
# Фигурные скобки {} в Tcl используются не для построения блоков кода или
# списков, а как механизм экранирования(quoting) для кода. Фактически в Tcl
# списков, а как механизм экранирования (quoting) для кода. Фактически в Tcl
# нет ни списков, ни блоков кода. Фигурные скобки использутся для
# экранирования специальных символов и потому подходят для представления
# тела процедур и строк, которые должны интерпретироваться как списки.
@ -206,9 +205,9 @@ set greeting "Hello $::people::person1::name"
## 4. Переменные и пространства имён
###############################################################################
# Каждая переменная и рутина связанс с пространством имён.
# Каждая переменная и рутина связана с пространством имён.
# Чтобы получить интерпретатор, которые не может сделать ничего, достаточно
# Чтобы получить интерпретатор, который не может сделать ничего, достаточно
# удалить глобальное пространство имён. Особой пользы в этом нет, но это хорошо
# иллюстрирует природу Tcl. Фактически имя глобального пространства имён это
# пустая строка, но единственный способ представить её -- в виде полного имени:
@ -323,12 +322,8 @@ proc greet {greeting name} {
# Как было отмечено ранее, фигурные скобки не обозначают блок кода.
# Любое значение, даже третий аргумент "proc" является строкой.
# Любое значение, даже третий аргумент "proc", является строкой.
# Предыдущая команда может быть переписана без использования фигурных скобок:
# As noted earlier, braces do not construct a code block. Every value, even
# the third argument to "proc", is a string. The previous command
# can be rewritten using no braces:
proc greet greeting\ name return\ \"\$greeting,\ \$name!\"
@ -354,7 +349,7 @@ if {3 > 4} {
}
# Циклы реализованы как рутины. Первый и третий аргументы для "for"
# Циклы реализованы как рутины. Первый и третий аргумент для "for"
# обрабатываются как скрипты, а второй аргумент как выражение:
set res 0
for {set i 0} {$i < 10} {incr i} {