~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ 90DF90DDEC1C5CE194F611AD586CF526__1709893260 ✰
Заголовок документа оригинал.:
✰ Speakeasy (computational environment) - Wikipedia ✰
Заголовок документа перевод.:
✰ Speakeasy (вычислительная среда) — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/Speakeasy_(computational_environment) ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/90/26/90df90ddec1c5ce194f611ad586cf526.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/90/26/90df90ddec1c5ce194f611ad586cf526__translat.html ✰
Дата и время сохранения документа:
✰ 18.06.2024 00:59:07 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 8 March 2024, at 13:21 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

Speakeasy (вычислительная среда) — Википедия Jump to content

Speakeasy (вычислительная среда)

Из Википедии, бесплатной энциклопедии

Speakeasy
Разработчики) Компьютерная корпорация Speakeasy
Стабильная версия
IV Йота / 2006 г.
Написано в Мортран , ФОРТРАН , C [ нужна цитата ]
Операционная система Windows , macOS , RedHat Linux , SUSE Linux , Mandrake Linux , Debian , Solaris , HP-UX [1]
Тип Технические вычисления
Лицензия Пробная версия
Speakeasy (интерпретируемый язык программирования)
Парадигма императив
Разработано Стэнли Коэн
Разработчик Компьютерная корпорация Speakeasy
Впервые появился 1964
Дисциплина набора текста динамичный
Под влиянием
АПЛ [2]
Под влиянием
МАТЛАБ [3]

Speakeasy представлял собой интерактивную среду числовых вычислений, в которой также использовался интерпретируемый язык программирования . Первоначально он был разработан для внутреннего использования в физическом отделе Аргоннской национальной лаборатории физиком-теоретиком Стэнли Коэном . [4] В конце концов он основал Speakeasy Computing Corporation, чтобы сделать программу доступной на коммерческой основе. [5]

Speakeasy — это очень долговечный цифровой пакет. Фактически, первоначальная версия среды была построена на базе основного хранилища динамических данных под названием «Именованное хранилище», разработанного в начале 1960-х годов. [6] [7] а самая последняя версия была выпущена в 2006 году.

Целью Speakeasy было облегчить вычислительную работу физиков Аргоннской национальной лаборатории. [8]

История [ править ]

Speakeasy изначально задумывался для работы на мейнфреймах (единственный вид компьютеров на тот момент), а впоследствии портировался на новые платформы ( миникомпьютеры , персональные компьютеры ) по мере их появления. Перенос одного и того же кода на разные платформы стал проще благодаря использованию макросов метаязыка Mortran для устранения системных зависимостей, а также недостатков и различий компиляторов. [9] В настоящее время Speakeasy доступен на нескольких платформах: ПК под управлением Windows , macOS , Linux , компьютеры подразделений и рабочие станции под управлением нескольких версий Linux, AIX или Solaris .

Speakeasy также был одним из первых [ нужна цитата ] интерактивные среды числовых вычислений, которые были реализованы таким образом в системе CDC 3600 , а затем и на машинах IBM TSO , поскольку в то время одна из них проходила бета-тестирование в Аргоннской национальной лаборатории. К 1984 году он был доступен в Digital Equipment Corporation компании системах VAX . [10] [11]

Практически с самого начала (поскольку в операционных системах стала доступна функция динамического связывания) Speakeasy имеет возможность расширения своего рабочего словаря с помощью отдельных модулей, динамически связанных с базовым процессором по мере необходимости. По этой причине такие модули назывались «линкулями» (LINKable-modULES). [12] Это функции с обобщенным интерфейсом, которые можно написать на ФОРТРАНЕ. [13] или С. в [ нужна цитата ] Независимость каждого из новых модулей от других и от основного процессора очень помогает в совершенствовании системы, особенно так было в старые времена.

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

Среди пакетов, разработанных пользователями, одним из наиболее важных является «Modeleasy», первоначально разработанный как «FEDeasy». [14] в начале 1970-х годов в исследовательском отделе Совета управляющих Федеральной резервной системы в Вашингтоне. [15] Modeleasy реализует специальные объекты и функции для оценки и моделирования больших эконометрических моделей. [16] Его эволюция в конечном итоге привела к его распространению как самостоятельного продукта.

Синтаксис [ править ]

Символ :_ (двоеточие+подчеркивание) является одновременно логотипом Speakeasy и приглашением к интерактивному сеансу.

Знак доллара используется для разделения комментариев; амперсанд используется для продолжения оператора на следующей физической строке, и в этом случае приглашение принимает вид :& (двоеточие+амперсанд); точка с запятой может разделять операторы, написанные на одной физической строке.

$  предположим,   вас   у   оператор   очень   длинный   ,  
 $  вы   можете   записать   его   в   несколько   физических   строк,   "   &"  
 $  в   конце   ,   строки   используя   что   которую   нужно   продолжить: 
  
 :_ the_return_value = this_is_a_function_with_many_arguments(argument_1, аргумент_2, & 
 :& аргумент_3, аргумент_4, аргумент_5, аргумент_6) 
 
 $  с   другой   стороны   ,   вы   можете   собрать   несколько   коротких   операторов  
 $  в   одной   ,   физической   строке   используя   ";" 
  :_ а=1;   б=2;   с=3;   д=4 

Как следует из названия, целью Speakeasy было предоставить синтаксис, максимально удобный для пользователя и максимально приближенный к разговорному языку. Лучшим примером этого является набор команд чтения/записи данных из/в постоянное хранилище. Например (ключевые слова языков написаны заглавными буквами, чтобы прояснить суть):

:_ ПОЛУЧИТЬ my_data ИЗ БИБЛИОТЕКИ my_project
 :_ СОХРАНЯТЬ мои_данные КАК новое_имя_для_моих данных В БИБЛИОТЕКЕ другого_проекта 
 

Переменным (например, объектам Speakeasy) присваиваются имена длиной до 255 символов, если опция LONGNAME включена, и до 8 символов в противном случае (для обратной совместимости). Они динамически типизируются в зависимости от присвоенного им значения.

:_ а=1
 :_ что это такое
 A — НАСТОЯЩИЙ СКАЛЯР.
 :_ a="теперь массив символов"
 :_ что это такое
 A представляет собой МАССИВ СИМВОЛЕЙ из 21 элемента.
 

Аргументы функций обычно не требуется заключать в круглые скобки или разделять запятыми, при условии, что контекст остается ясным и однозначным. Например:

:_ sin(grid(-pi,pi,pi/32)) $ полностью указанный синтаксис
 

можно написать:

:_ singrid(-pi,pi,pi/32) $ аргумент функции sin не заключен в круглые скобки
 

или даже

:_ singrid(-pi pi pi/32) $ аргументы функции Grid могут быть разделены пробелами
 

Возможны многие другие упрощения синтаксиса; например, чтобы определить объект с именем «a», которому присвоен массив из десяти элементов нулей, можно написать любое из следующих операторов:

:_ a=массив(10:0,0,0,0,0,0,0,0,0,0)
 :_ а=0,0,0,0,0,0,0,0,0,0
 :_ a=0 0 0 0 0 0 0 0 0 0
 :_ a=ints(10)*0
 :_ а=10:
 

Speakeasy — векторно-ориентированный язык: придавая структурированный аргумент функции скаляра, результатом обычно является объект с той же структурой аргумента, в котором каждый элемент является результатом функции, примененной к соответствующему элементу аргумент. В приведенном выше примере результатом применения функции sin к массиву (назовем его x ), сгенерированному функциональной сеткой массива , является ответ элемента которого , ответ (i) равен sin ( x (i)) для каждого i из 1 to noels (x) (количество элементов x ). Другими словами, утверждение

:_ a=sin(сетка(-пи пи пи/32))
 

эквивалентен следующему фрагменту программы:

x=grid(-pi pi pi/32) $ генерирует массив действительных чисел от -pi до pi, шагая на число pi/32.
 для i = 1,noels(x) $ циклы по элементам x
   a(i) = sin(x(i)) $ оценивает i-й элемент a
 следующий я $ увеличиваю индекс цикла
 

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

Рабочая область и объекты [ править ]

Самым первым оператором сеанса пользователь может определить размер «именованного хранилища» (или «рабочей области», или «распределителя»), которое выделяется раз и навсегда в начале сеанса. В этой рабочей области фиксированного размера процессор Speakeasy динамически создает и уничтожает рабочие объекты по мере необходимости. Настраиваемый пользователем [17] Механизм сбора мусора обеспечивает максимизацию размера свободного блока в рабочей области, упаковывая определенные объекты в нижний или верхний конец распределителя. В любой момент пользователь может спросить об использованном или оставшемся пространстве в рабочей зоне.

:_ SIZE 100M $ самое первое утверждение: рабочая область будет 100 МБ.
 :_SIZE$ возвращает размер рабочей области в текущем сеансе
 :_SPACELEFT$ возвращает объем неиспользуемого в данный момент места для хранения данных.
 :_SPACENOW$ возвращает объем используемого в данный момент места для хранения данных.
 :_ SPACEPEAK $ возвращает максимальный объем места для хранения данных, используемый в текущем сеансе.
 

Необработанная ориентация объекта [ править ]

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

С этой точки зрения, а также учитывая динамическую и структурированную природу данных, хранящихся в «именованном хранилище», можно сказать, что Speakeasy с самого начала реализовала очень грубую форму перегрузки операторов и прагматичный подход к некоторым функциям. того, что позже было названо « Объектно-ориентированным программированием », хотя дальнейшего развития в этом направлении оно не получило.

$ В следующем примере показано, как объект семейства Matrix и объект семейства Array
 $ с одинаковой структурой и значениями обрабатываются по-разному, хотя используется 
 $ тот же оператор «*» и «/»: в первом случае с использованием матричной алгебры, а в 
 $ второй случай, работающий поэлементно.
 
:_ a=  матрица  (2,2:1,2,3,4) ;   а 
    2 на 2  A ( Матрица  ) 
    1 2 
    3 4 
  :_ а  *  а 
    A*A (  матрица  A 2 на 2 ) 
    7 10 
    15 22 
  :_ а  /  а 
    A/A (  матрица  A 2 на 2 ) 
    1 0 
    0 1 
 
:_ aa=  массив  (2,2:1,2,3,4) ;   аа 
    2 на 2  AA ( массив  ) 
    1 2 
    3 4 
  :_ аа  *  аа 
    2 на 2  AA*AA ( массив  ) 
    1 4 
    9 16 
  :_ аа  /  аа 
    2 на 2  AA/AA ( массив  ) 
    1 1 
    1 1 
 

Семейства объектов [ править ]

Speakeasy предоставляет множество предопределенных «семейств» объектов данных: скаляры, массивы (до 15 измерений), матрицы, множества, временные ряды.

Элементарные данные могут быть вещественными (8 байт), комплексными (2x8 байт), символьными или именными (элементы матриц могут быть вещественными или комплексными, значения временных рядов могут быть только вещественными).

Отсутствующие значения [ править ]

Для обработки временных рядов пять типов пропущенных значений предусмотрено . Они обозначаются NA (недоступно), NC (не вычислимо), ND (не определено), а также NB и NE, значение которых не определено заранее и остается доступным для разработчика ссылок . Внутренне они представлены конкретными (и очень маленькими) числовыми значениями, действующими как коды.

Все операции с временными рядами учитывают наличие пропущенных значений, соответствующим образом распространяя их в результатах.

В зависимости от конкретной настройки отсутствующие значения могут быть представлены указанным выше обозначением, символом вопросительного знака или пробелом (полезно в таблицах). При использовании во входных данных вопросительный знак интерпретируется как пропущенное значение NA.

:_ b=таймсерии(1,2,3,4: 2010 1 4)
 :_ б
   B (временной ряд с 4 компонентами)
   1 2 3 4
 :_ b(2010 3) = ? 
 :_ showmval qmark
 :_ б
   B (временной ряд с 4 компонентами)
   1 2 ?  4
 :_ 1/б
   1/B (временной ряд с 4 компонентами)
   1,5?  .25
 :_ showmval объясни
 :_ б
   B (временной ряд с 4 компонентами)
   1 2 НП 4
 :_ 1/б
   1/B (временной ряд с 4 компонентами)
   1 ,5 НЗ .25
 

В числовых объектах, отличных от временных рядов, концепция «отсутствующих значений» не имеет смысла, и числовые операции над ними используют фактические числовые значения независимо от того, соответствуют ли они «кодам отсутствующих значений» или нет (хотя «коды отсутствующих значений» могут быть введены). и показано так).

:_ 1+?
   1+?  = 1,00
  :_ 1/?
   1/?  = 5.3033E36
  :_ 1*?
   1*?  "="
 

Обратите внимание, что в других контекстах вопросительный знак может иметь другое значение: например, когда он используется в качестве первого (и, возможно, единственного) символа командной строки, он означает запрос на отображение большего количества частей длинного сообщения об ошибке (которое заканчивается знаком «+»).

:_ a=массив(10000,10000:)
 ARRAY(10000,10000:) В строке «A=ARRAY(10000,10000:)» Слишком много данных.+
 :_ ?
 Размер распределителя должен быть не менее 859387 килобайт.+
 :_ ?
 Используйте БЕСПЛАТНО, чтобы удалить больше не нужные данные
 или
 используйте CHECKPOINT, чтобы сохранить распределитель для последующего перезапуска.+
 :_ ?
 Используйте NAMES, чтобы увидеть текущие имена.
 Используйте SIZE & RESTORE для перезапуска с более крупным распределителем.
 :_ ?
 БОЛЬШЕ ИНФОРМАЦИИ НЕТ.
 

Логические значения [ править ]

Некоторая поддержка предоставляется для логических значений, операторов отношений ( Фортрана можно использовать синтаксис ) и логических выражений.

Логические значения фактически сохраняются как числовые значения: 0 означает ложь, а ненулевое значение (1 на выходе) означает истину.

:_ а = 1 2 3 4 5
 :_ б = 1 3 2 5 4
 :_ а>б
   A>B (массив из 5 компонентов)
   0 0 1 0 1
 :_ а<=б
   A<=B (массив из 5 компонентов)
   1 1 0 1 0
 :_ a.eq.b
   A.EQ.B (5-компонентный массив)
   1 0 0 0 0
 :_ologic(2) $ это меняет способ отображения логических значений
 :_ а>б;  а<=б;  а.экв.б
   A>B (массив из 5 компонентов)
  БПФФ
   A<=B (массив из 5 компонентов)
  ТТФТФ
   A.EQ.B (5-компонентный массив)
  ТФФФФ
 

Программирование [ править ]

специальные объекты, такие как объекты «ПРОГРАММА», «ПОДПРОГРАММА» и «ФУНКЦИЯ» (совместно называемые процедурами Для автоматизации операций можно определить ). Другой способ выполнить несколько инструкций с помощью одной команды — сохранить их в файле использования и заставить процессор прочитать их с помощью команды USE.

Использование файлов [ править ]

«ИСПОЛЬЗОВАНИЕ» файла использования — это самый простой способ выполнения нескольких инструкций с минимальным типизированным вводом. (Эта операция примерно соответствует тому, что такое «источник» файла в других языках сценариев.)

Файл использования является альтернативным источником ввода для стандартной консоли и может содержать все команды, которые пользователь может ввести с клавиатуры (следовательно, не допускается использование многострочной конструкции управления потоком данных). Процессор считывает и выполняет файлы использования по одной строке за раз.

Выполнение use-файла может быть объединено, но не вложено, т.е. управление не возвращается вызывающей стороне по завершении вызванного use-файла.

Процедуры [ править ]

Полные возможности программирования достигаются с помощью «процедур». На самом деле это объекты Speakeasy, которые необходимо определить в рабочей области для выполнения. Доступна опция, позволяющая автоматически извлекать и загружать процедуры из внешнего хранилища по мере необходимости.

Процедуры могут содержать любые конструкции управления потоком выполнения, доступные в языке программирования Speakeasy.

Программы [ править ]

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

Подпрограммы и функции [ править ]

Подпрограммы и функции выполняются на новом уровне области видимости, который удаляется после их завершения. Связь с вызывающим уровнем области видимости осуществляется через список аргументов (в обоих направлениях). Это реализует сокрытие данных, т.е. объекты, созданные внутри подпрограммы или функции, не видны другим подпрограммам и функциям, но через списки аргументов.

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

Функции отличаются от подпрограмм, поскольку они также возвращают функциональное значение; ссылка на них может быть частью более сложного оператора и заменяется возвращаемым функциональным значением при оценке оператора.

В некоторой степени подпрограммы и функции Speakeasy очень похожи на одноименные процедуры Фортрана.

Управление потоком [ править ]

Конструкция IF-THEN-ELSE доступна для условного выполнения, а для цикла предусмотрены две формы конструкции FOR-NEXT.

ЕСЛИ (  логическое выражение  ) ТО 
     истинный блок 
  [ЕЩЕ 
     ложный блок  ] 
  КОНЕЦ ЕСЛИ 
 
ДЛЯ  индекса  =  мин  ,  макс  [,  шаг  ] 
     циклический блок 
  СЛЕДУЮЩИЙ  индекс 
FOR  значение  IN  набор значений 
    циклический блок 
  СЛЕДУЮЩЕЕ  значение 

Оператор «GO TO label » предназначен для перехода, а вычисляемый оператор GO TO в стиле Фортрана может использоваться для множественного ветвления.

... 
  IF (  логическое-выражение  GO TO  ) Метка 
  ... 
  этикетка  : 
  ... 
 
$ В следующем утверждении  
  $  Селектор  должен быть >= 1 и <= N 

  ПЕРЕЙТИ К  метке1  ,  метке2  , ...,  меткеN  :  селектор  
  ... 
  метка1  : 
  ... 
  метка2  : 
  ... 
  ... 
  меткаN  : 
  ... 
 

Механизм ON ERROR с несколькими опциями обеспечивает средства обработки ошибок.

Линкуле написание [ править ]

Линкулы — это функции, обычно написанные на Фортране (или, если не поддерживается, на C). С помощью макросов Mortran или C и библиотеки API они могут взаимодействовать с рабочей областью Speakeasy для извлечения, определения и управления любым объектом Speakeasy.

Большая часть рабочего словаря Speakeasy реализована посредством ссылок. Они могут быть статически связаны с основным движком или динамически загружаться по мере необходимости, при условии, что они правильно скомпилированы как общие объекты (unix) или dll (windows).

Примечания [ править ]

  1. ^ Поддерживаемые платформы
  2. ^ Рубинштейн, Алекс (2014). Компиляция во время выполнения массивно-ориентированных программ Python (PDF) (доктор философии). Нью-Йоркский университет. APL напрямую вдохновила Speakeasy
  3. ^ «Интервью с КЛИВОМ МОЛЕРОМ, проведенное Томасом Хейгом 8 и 9 марта 2004 г., Санта-Барбара, Калифорния» (PDF) . Музей истории компьютеров . Проверено 6 декабря 2016 г. Таким образом, APL, Speakeasy, LINPACK, EISPACK и PL0 были предшественниками MATLAB.
  4. ^ "Введение в Speakeasy - неофициальный отчет
  5. ^ Холл, Джек М.; Хьюлетт, Ричард Г.; Харрис, Рут Р. (1997). Аргоннская национальная лаборатория, 1946-96 гг . Издательство Университета Иллинойса. п. 482. ИСБН  978-0-252-02341-5 .
  6. ^ «Именованное хранилище: динамическая схема распределения памяти с манипулятивными процедурами», отчет об исследованиях и разработках AEC - Том 7021 ANL (серия) - Стэнли Коэн, физический отдел, Комиссия по атомной энергии США, Аргоннская национальная лаборатория, 1965.
  7. ^ «Speakeasy - эволюционная система», С. Коэн, Материалы симпозиума ACM SIGPLAN по языкам очень высокого уровня (март 1974 г.)
  8. ^ Коэн, Стэнли (1971). «Система Delphi-speakeasy. I. Общее описание». Компьютерная физика. Коммуникации . 2 (1): 1–10. Бибкод : 1971CoPhC...2....1C . дои : 10.1016/0010-4655(71)90008-7 .
  9. ^ «Использование Mortran для перевода программ на Фортране с одной машины на другую» Стивен С. Пайпер, Аргоннская национальная лаборатория , 1976 г.
  10. ^ «Приручите свой мэйнфрейм». ТВЕРДАЯ КОПИЯ . Октябрь 1984 г. с. 189.
  11. ^ «Информационный бюллетень Argonne Computing: SPEAKEASY». 1988. с. 2526. {{cite web}}: Отсутствует или пусто |url= ( помощь )
  12. ^ «Speakeasy Linkules - совместимое программное обеспечение» ACM - Материалы ежегодной конференции 1977 года.
  13. ^ Коэн, Стэн (1976). Speakeasy: окно в компьютер . АКМ Пресс. стр. 1039–1047. дои : 10.1145/1499799.1499944 . ISBN  978-1-4503-7917-5 . S2CID   11997344 .
  14. ^ «Эконометрические модели через SPEAKEASY/FEDEASY», Джеймс М. Конди, Джон В. Дэвисон, 1975 г.
  15. ^ Ренфро, Чарльз Г. (2004). Вычислительная эконометрика: ее влияние на развитие количественной экономики . ИОС Пресс. стр. 46–47. ISBN  978-1-58603-426-9 .
  16. ^ Ренфро, Чарльз Г. (2004). Вычислительная эконометрика: ее влияние на развитие количественной экономики . ИОС Пресс. п. 373. ИСБН  978-1-58603-426-9 .
  17. ^ Пользователь может решить, как часто будут выполняться сборки мусора, исходя из количества объектов, созданных между двумя из них. Эта функция (команда SLOSH) на самом деле предназначена для отладки ссылок.

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: 90DF90DDEC1C5CE194F611AD586CF526__1709893260
URL1:https://en.wikipedia.org/wiki/Speakeasy_(computational_environment)
Заголовок, (Title) документа по адресу, URL1:
Speakeasy (computational environment) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)