Autoruns для windows 7 русская версия. Программа AutoRuns для Windows (версия v13.71). Использование программы Autorunsc

Помощь 22.03.2019
Помощь

У каждого языка программирования своё назначение. Одни прекрасно подходят для веба, другие для десктопных приложений, в третьих нуждается Data Science, а есть языки, которые идеально подходят для знакомства с программированием. Мы уже говорили про Logo, про Scratch, пришло время перейти на более высокую ступень образования и познакомить вас с Scheme.

Краткая справка

В конце 60-х годов 20 века ученые Массачусетского технологического института Гай Стил (Guy Steele) и Джеральд Сассмен (Gerald Sussman) приступили к разработке очередного диалекта языка Lisp. Они хотели лишь его ограничений, в том числе сложности синтаксиса и не до конца проработанных алгоритмов функционального программирования.

В итоге ученые опубликовали целую серию заметок, выходивших вплоть до 1980 года, в которых описывались идеи лямбда-вычислений, хвостовой рекурсии и итеративного подхода. Позднее они получили название Lambda Papers и стали одним из катализаторов запуска функционального программирования в массы.

На основе описанных концепций и появился язык Scheme, который с небольшими доработками дожил до сегодняшнего дня.

Синтаксис

Прежде, чем мы рассмотрим синтаксис, рекомендую почитать Викиучебник по Scheme . Здесь просто и на конкретных примерах показано, как выглядят функции, конструкции и собственно сам код. Мастером Scheme с викиучебником вы не станете, но вряд ли это нужно.

    Круглые скобки. Любое законченное выражение должно быть заключено в них. Это отпугивает тех, кто видит код впервые, но впоследствии на практике не вызывает сложностей.

    Никаких дополнительных служебных символов. Хватит скобок. Точка с запятой, кстати, отделяет от кода комментарии.

    Построение конструкций по типу «действие-предмет». В языке программирования это смотрится необычно, но в переводе на естественный язык вполне понятно.

В остальном, с точки зрения синтаксиса - классический упрощённый язык программирования. Взгляните на простой пример вычисления факториала:

(define (factorial n)
(if (= n 0)
1
(* n (factorial (- n 1)))))

Как видите, кроме порядка записи и большого количества скобок, ничего необычного.

Где применяется

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

А вот в жизни после учебы Scheme не имеет конкретной области применения. Как правило это продолжения студенческих проектов, небольшие куски кода и пробные релизы. Причин непопулярности несколько:

В общем, зарабатывать деньги языком Scheme весьма проблематично.

Однако для желающих применить знания на практике были разработаны интерпретаторы: Racket и Bigloo . Они расширяют стандартные возможности Scheme, в том числе синтаксис, а также открывают новый функционал: визуализация, работа с матрицами и массивами, прямое взаимодействие с другими языками.

Перспективы

Несмотря на то, что Scheme нашёл себя только в образовании, он входит в топ-50 рейтинга TIOBE . Но есть негативная тенденция - язык ежегодно теряет 0,05% популярности. Вызвано это появлением конкурентов, пригодных для функционального программирования, имеющих больше возможностей для применения в жизни, и при этом простых.

Таким образом, велика вероятность, что через 5-10 лет язык пропадёт с радаров, а его место займёт какой-нибудь Scratch. Но пока этого не произошло, давайте уделим несколько минут своей жизни знакомству с Scheme. Своей 47-летней историей он это заслужил.

Введение

Scheme - функциональный язык программирования, один из двух наиболее известных в наше время диалектов языка Lisp . Гай Стил (Guy L. Steele) и Джеральд Сассмен (Gerald Jay Sussman) из Массачусетского технологического института (MIT ) — создали его в середине 1970-х годов. Именно Scheme долгое время применялся в MIT для обучения программированию (сейчас заменен на Python ) и именно на Scheme написаны примеры в знаменитой книге "Структура и интерпретация компьютерных программ" - библии всякого уважающего себя программиста.

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

Плагин называется SchemeScript и является частью проекта SchemeWay . Скачать последнюю версию данного плагина можно с сайта (после скачивания достаточно скопировать jar-файл в каталог eclipse/plugins ). Проект активно развивается, последняя версия носит название 1.3.0 alpha10 и выпущена 09.05.2010 г. Исходный код доступен на GitHub . Дополнительную информацию о плагине, некоторых трюках, которые допускает SchemeScript , и его возможностях можно узнать из блога Dominique Boucher - автора данного расширения.

Стоит отметить, что даже последняя версия SchemeScript не работает в Eclipse Helios , поэтому пока для разработки на языке Scheme следует использовать Eclipse Galileo .

UPD 17.07.10: Последняя версия на GitHub работает в Eclipse Helios , но ее нужно собирать из исходников. Через некоторое время Доминик обещал пересобрать и дистрибутив.

Eclipse -перспектива Scheme

После установки плагина станет доступна Eclipse -перспектива Scheme . По-умолчанию она выглядит следующим образом:

Перспектива включает в себя вид (в терминах Eclipse ) навигатора по проектам - Navigator , вид с отображением разобранного содержимого редактируемого файла - Outline , в котором будет отображаться список определений констант и функций, а так же два свернутых вида: вид с иконкой в виде буквы лямбда - Definitions и вид Console .

В главное меню Eclipse добавлена группа команд Scheme , предназначенная прежде всего для управления интерпретатором. На панель быстрого запуска выведены три кнопки (снабжены иконками в виде буквы лямбда), слева-направо: запустить интерпретатор, перезапустить интерпретатор и остановить интерпретатор.

Прежде чем приступать к работе с редактором, необходимо создать Eclipse-проект , в котором будут храниться файлы исходного кода. Специфичного для Scheme типа проекта плагин SchemeScript не предоставляет, поэтому нужно создать обычный проект из каталога General :

Созданный проект отобразится в навигаторе:

Теперь в проекте можно выполнить New -> File и создать файл, предназначенный для хранения исходного кода на Scheme . Данный файл должен иметь расширение .ss или .scm . Файлы с данными расширениями будут редактироваться с помощью специального редактора из поставки SchemeScript .

Редактирование исходного кода

SchemeScript предоставляет редактор исходного кода на языке Scheme с довольно богатыми возможностями. Рассмотрим их подробнее.

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

Редактор содержит встроенный анализатор корректности S-выражений . Если, например, пропустить закрывающую скобку, то будет сгенерировано уведомление об ошибке:

Существует так же такая полезная вещь, как автоподстановка или автозавершение выражений . Т.е., если при наборе нажать Ctrl+Space , то всплывет окошко с доступными вариантами завершения вводимой конструкции:

При создании определений (например, с помощью ключевого слова define ) они добавляются в вид Outline , что позволяет при необходимости быстро обратиться к нужному определению:

Плагин SchemeScript добавляет две группы пунктов в контекстное меню редактора кода: Source - содержит команды редактирования исходного кода - и Eval - содержит команды его интерпретации:

Рассмотрим группу пунктов меню Source :

Find definition - осуществляет поиск определения символа в исходном коде. Т.е., например, нам нужно посмотреть как определен символ sqr . Для этого нужно поставить курсор после данного символа

и нажать F12 . Курсор будет перемещен на определение функции sqr , причем данное определение будет выделено:

Complete symbol - с данной командой мы уже познакомились, это - команда автозавершения.

Describe symbol - выводит всплывающую подсказку с описанием символа. Например, рассмотренный нами в прошлом примере символ sqr является функцией:

Insert header comment - добавляет глобальный комментарий в начало файла с исходным кодом. В настройках (см. ниже) можно определить некоторые поля такого комментария - автор, копирайт и т.д.

Insert chapter comment - добавляет комментарий к некоторому блоку кода - набору функций и определений.

Insert section comment - добавляет комментарий к конкретной функции или определению.

Toggle comment - закомментировать/раскомментировать выделенный блок кода. Если блок кода не является комментарием, то к нему добавляются лидирующие символы ";":

И, соответственно, наоборот - если какое-то выражение закомментировано, то символы комментариев убираются:

Compress spaces - убирает лишние предшествующие и последующие пробелы и символы перевода строки. Что-то вроде функции trim :

Format - осуществляет форматирование кода в соответствии с заданными настройками. Расставляет отступы, убирает лишние пробелы и переносы строки.

Код до форматирования

Код после форматирования

Swap S-expressions - меняет порядок следования S-выражений одного уровня вложенности. Например, если в предыдущем примере выполнить данную команду, то list и lambda поменяются местами:

В пункте Scheme главного меню Eclipse содержится команда Find Scheme Symbol (доступна так же по Ctrl + F12 ). При вызове данной команды появляется диалоговое окно, позволяющее быстро найти определение нужной функции. Например, у нас в файле исходного кода определена функция sqr , соответственно, если в поле Enter the symbol prefix: диалогового окна ввести sq , то в поле Matching symbols появится определенная в коде функция sqr :

Если из поля Matching symbols выбрать эту функцию, то курсор в редакторе автоматически перейдет к месту ее определения. Предположим, что у нас несколько файлов с исходным кодом и в каждом определена функция sqr . Тогда помимо самой функции нужно еще выбрать файл. Для этого служит вид Definitions , в который после выбора функции помещается информация о вариантах ее определения из разных файлов:

Интерпретация

Когда код написан, его хочется проверить, например, запустив на интерпретаторе Scheme . Плагин SchemeScript предоставляет возможности и для этого. Прежде всего, это пункт Scheme главного меню Eclipse , содержащий команды выбора нужного интерпретатора и управления им: запуск, перезапуск и останов (необходим в случае зависания приложения, например - вечного цикла. Т.к. Scheme может оптимизировать хвостовую рекурсию, вечный цикл - действительно вечный).

На рисунке видны варианты выбора интерпретатора. Прежде всего это - External Interpreter - подключает внешний интерпретатор, установленный на той же машине, что и Eclipse . Интерпретаторов Scheme сейчас много, под Windows можно использовать, например, Chez Scheme .

Embedded Kawa - входящий в поставку SchemeScript интепретатор Kawa . Представляет собой разрабатываемый под эгидой GNU на Java фреймворк для реализации высокоуровневых и динамических языков, код с которых компилируется в Java-байткод . Позволяет легко использовать в коде на Scheme Java-классы и поэтому хорош в качестве скриптового языка. Помимо интерпретатора содержит и компилятор, что позволяет использовать его в качестве полноценного языка под JVM , как используются Scala , Groovy и Clojure . Некоторые энтузиасты используют Kawa для разработки приложений, работающих на платформе Android .

Remote Interpreter - позволяет выбрать в качестве интерпретатора специальный сервер, запущенный на другой машине. Например, в институте при обучении программированию можно поднять специальный сервер, умеющий интерпретировать Scheme -код. Взаимодействие SchemeScript и данного интерпретатора будет осуществляться по сети.

SISC Interpreter - встроенный REPL от Second Interpreter of Scheme Code - написанного на Java интерпретатора Scheme .

После выбора работающего интерпретатора, например Kawa , его нужно запустить соответствующей командой меню или кнопкой с панели быстрого запуска:

Непосредственно для отправки участков кода на интерпретацию используется группа команд Eval из контекстного меню редактора кода:

Данная группа содержит следующие команды:

Eval top expression - выполнить выражение верхнего уровня относительно того, в котором находится курсор. Если курсор находится перед последней закрывающей скобкой - см. рисунок

и выполнена данная команда, то в интерпретатор будет загружено определение функции sqr .

Eval previous expression - выполнить предыдущее относительно курсора выражение. Если в примере

выполнить данную команду, то в интерпретатор будет загружено выражение (* x x) , которое он не сможет выполнить, т.к. параметр x не определен:

Load file in Interpreter - загрузить файл в интерпретатор, т.е. выполнить в интерпретаторе все содержимое файла.

Рассмотрим пример: существует код функции, вычисляющей n- е число Фибоначчи. Мы хотим вычислить четвертое число Фибоначчи:

Если выполнить команду Eval previous expression после (fib 4) , то будет сгенерирована ошибка: интерпретатор не знает определение функции fib :

Если же выполнить команду Load file in Interpreter , а затем - Eval previous expression , то вычисление пройдет корректно:

Поддержка Kawa REPL

Read-eval-print loop (REPL) - простая интерактивная среда программирования, в данной среде пользователь может вводить выражения, которые тут же будут вычислены, а результаты вычисления - отображены пользователю.

В состав Kawa входит такая среда. Например, можно прямо в консоли с запущенным интепретатором определить функцию sum и вычислить ее значение относительно каких-то аргументов (каждая строчка трактуется как одно выражение):

Дополнительно так же существует вид Kawa Stack Trace , позволяющий следить за состоянием стека вызовов при отладке. Чтобы понять как им пользоваться - смоделируем ошибку, например вызовем функцию, вычисляющую квадрат числа, от аргумента "ss" :

Kawa не сможет вычислить значение данного выражения и выведет на экран ошибку приведения типов:

Стектрейс при этом будет выглядеть так:

Если отжать в виде Kawa Stack Trace кнопку Show Scheme frames only , то будет отображен полный стектрейс, содержащий в том числе и ислючительные ситуации в коде, написанном на Java , а не только на Scheme :

Настройки

Плагин SchemeWay является довольно гибконастраиваемым расширением для среды разработки Eclipse . Чтобы разобраться со всеми его возможностями обязательно стоит рассмотреть настройки. Дерево настроек начинается с группы Scheme :

На странице Scheme доступны следующие настройки:
- Displayed tab with - позволяет задать ширину (в пробелах) для отображения символа табуляции. Это работает, только если в команде не принято заменять табуляции на пробелы.
- Enable structural editing - галочка отвечает за включение/выключение структурированного редактора Scheme . Структурированный редактор работает не с символами, а с S-выражениями целиком. Т.е. по backspace , например, будет удаляться сразу все S-выражение. Так же при открытии скобки будет сразу же добавляться парная закрывающая.
- Save... и Load... позволяют сохранить и наоборот - загрузить - настройки SchemeScript в/из .epf -файл/а.

Страница Appearance отвечает за внешний вид редактора. Позволяет настроить цвет, которым будет выделяться парная скобка (группа Matched parenthesis ), цвет фона редактора (группа Background ) и цвета, используемые при подсветки синтаксиса (группа Foreground ).

На рисунке выше приведен пример установки для строковых констант синего цвета.

Страница Comments отвечает за отображение комментариев. На ней представлены следующие настройки:
- Prefix for comments - префикс, с которого будет начинаться комментарий. По-умолчанию - две точки с запятой (;; ).
- Author field content - содержимое поля Автор, позволяет задать имя/фамилию автора кода.
- Copyright field content - содержимое поля Копирайт, позволяет задать информацию об авторских правах.
- Automatically continue comment from previous line - если данная галочка установлена, то при нажатии Enter после комментария на новой строке комментарий продолжиться, т.е. новая строка начнется с ;; .

Страница Fast Eval Keys позволяет задать команды (т.е. имена Scheme -функций), которые будут выполнены при нажатии соответствующих клавиатурных комбинаций. По-умолчанию каждому Fast Eval Key 0 ... 9 соответствует комбинация клавиш Alt-K, 0...9 . При активном использовании плагина у каждого разработчика формируется набор названий методов, которые он постоянно вызывает (например, метод test , для запуска какого-то тестирующего кода). Соответственно, вызов данный методов можно назначить на клавиатурные комбинации.

Страница Indentation служит для настройки отступов, добавляемых при написании/форматировании кода. Для каждого ключевого слова можно указать настройку отступов, применыемых для его аргументов. Таблица настроек устроена следующим образом: в колонке Symbol задается ключевое слово, отступы для которого настраиваются. Колонка Indentation scheme задает схему расстановки отступов. Схемы бывают следующими:
- default - все под-выражения выравниваются ниже первого символа своего обрамляющего выражения.
- definition - все подвыражения выравниваются как обрамляющее выражение + 2 пробела (похоже на оформление формы define ).
- if - все подвыражения выравниваются как обрамляющее выражение + 4 пробела (похоже на оформление формы if ).
- none - нет отступов, все подвыражения выравниваются так же как и обрамляющее выражение.
- with - наиболее сложная форма выравнивания, используется для функций с длинными именамим и/или большим списком параметров. Первые N -параметров выравниваются с отступом в 4 пробела, остальные - в 2. Столбец Hint задает величину N . Примером использования данной формы служит выравнивание ключевого слова let :

Страница Interpreter позволяет задать настройки интерпретации и разбора кода. Пока таких настроек две: - если галочка установлена, то перед отправкой на интерпретацию файл будет сохранен. Позволяет не помнить о сохранении изменений перед интерпретацией.
- Surround exressions with (begin ...) - обрамлять ли интепретируемые выражения в форму (begin ...) . Как я понимаю, данная опция необходима для работы с некоторыми интепретаторами, которые могут за раз выполнять только одно S-выражение.

Страница External Interpreter позволяет указать используемый внешний интерпретатор. Можно задать следующие параметры:
- Interpreter name - название интерпретатора
- Command line - командную строку, включающую полный путь до интепретатора и какие-то нужные ему для работы опции.
- Working directory - рабочий каталог интерпретатора - каталог, относительно которого он будет вычислять пути к файлам.
- Error Regexp - регулярное выражение для разбора ошибок. Интерпретатор выдает сообщения об ошибках в каком-то своем формате, SchemeScript должен знать как из этой строки с ошибками извлечь информацию о месте нахождения ошибки в исходном коде. Например, для Kawa данное регулярное выражение следующее: [\t ]+at [^(]+\(((.+):(+))\) .

На рисунке выше показан запущенный в консоли внешний интерпретатор chez-scheme .

Страница Remote Interpreter содержит настройки подключения к удаленному интепретатору - интерпретатору, запущенному в качестве сервера и слушающему определенный порт. Соответственно, данная страница позволяет задать имя хоста и порт, на котором этот удаленный интерпретатор работает.

Страница Lexical extensions служит для управления лексическими расширениями Scheme . Содержит два пункта:
- Treat brackets ( or {}) as parentheses - обрабатывать ли фигурные и квадратные скобки так же как и круглые. Т.е. подсвечивать ли пару и контролировать ли парность скобок.
- Accept dash (#) as identifier part - разрешать ли использовать символ решетки как часть имени идентификатора (как я понял - работает не для всех интерпретаторов Scheme ).

Последняя страница - Syntax - позволяет гибко управлять обработкой синтаксиса языка - добавлять и удалять конструкции из групп, что влияет на подсветку синтаксиса при редактировании. На данной странице определены 5 групп:
- Define - определения, содержат ключевые слова, с которых начинаются определения, например - define .
- Special names - специальные именнованые параметры, такие как #!key или #!rest .
- Special forms - специальные формы, такие как if , and , let и т.д. По сути - основная часть ключевых слов языка программирования.
- Mutator - мутаторы, т.е. функции, меняющие состояние. Подсвечиваются иначе, нежели функции, не меняющие состояние.
- Constant - константы, такие как #!eof , #!nul и др. Можно добавить так же #t и #f .

В каждую группу можно добавлять свои элементы, а также удалять существующие. Это очень удобно, при разработке собственного DSL на базе Scheme и работы с ним в редакторе. Помимо явного добавления вариантов, в каждой группе можно указать регулярное выражение, соответствующее ее членам.

Вот что будет, если добавить в группу Define ключевое слово pavel :

Заключение

Мы рассмотрели богатый возможностями и гибконастраиваемый инструмент для разработки на языке программирования Scheme в среде Eclipse . Данный инструмент позволяет редактировать исходный код, взаимодействовать с широким набором интепретаторов, в том числе встроенными и удаленными. Если сравнивать возможности данного плагина с инструментарием для разработки на Scheme , например, под Emacs , то они вполне сопоставимы (за исключением отсутствия таких мелочей, как, замена ключевого слова lambda на символ греческой буквы лямбды). Любой программист, который не хочет осваивать Emacs может использовать Eclipse для знакомства с функциональным программированием или языком Scheme , а также для решения задач и упражнений из SICP . Так же возможно кого-нибудь заинтересует тема разработки на Scheme под JVM с использованием Kawa .

Хочется сказать спасибо автору SchemeScript - Dominique Boucher , который бесплатно разрабатывает эту утилиту. Стоит отметить, что плагин SchemeScript является проектом с открытым исходным кодом и любой программист может помочь в его развитии, добавив возможности, которые ему необходимы.

З.Ы. Возникла мысль, что ту же Scheme трудно изучать, потому что не интересно - нет интересных задач. Обычные математические какие-то вычисления неинтересны, а даже для простой работы с графикой, например, нужна платформа и библиотеки. Интереснее изучать язык, прилагая его к какой-нибудь предметной области. Так вот, SchemeScript + Kawa + Eclipse могут использоваться в качестве платформы для обучения. Посмотрите примеры из SchemeScript (в jar-файле каталог examples ), там есть довольно интересные.

Как обычно вы можете оставить свои комментарии или задать вопросы Суровому челябинскому программисту.

Понравилось сообщение -

Кен Дики (перевод Алексея Десятника)

Альтернативный взгляд на мир

Каждый язык программирования представляет собой определенное мировоззрение в понятиях, которые он позволяет (или не позволяет) использовать. Эта серия статей описывает взгляд на мир языка программирования Схема («Схематичное мировоззрение»). Данное мировоззрение содержит множество современных элементов программирования: поддержка различных парадигм программирования, легко сочетаемые, многократно используемые абстракции, возможность создания языка, «заточенного» под определенное применение, четкое различие между переносимыми и непереносимыми частями программы, масштабируемость, начиная от отдельных утилит и заканчивая серьезнейшими программными системами.

Схема начиналась как эксперимент в разработке языка программирования для тестирования некоторых фундаментальных положений в теории разработки программ. Сейчас же она получает расположение со стороны многих известных университетов (таких, как МТИ – Массачусетский Технический Институт) в качестве первого изучаемого языка программирования. Кроме того, Схема используется в промышленности такими компаниями, как DEC , Texas Instruments , Tektronix , Hewlett Packard и Sun .

Что такое Схема?

Схема – это маленький, исключительно «чистый» язык, который (что очень важно!) приятно использовать. Схема разрабатывалась таким образом, чтобы малое число универсальных конструкций можно было легко использовать в разных стилях программирования: функциональном, объектно-ориентированном и императивном. Стандарт языка занимает всего около 50 (!) страниц, включая формальное определение семантики. Схема основывается на формальной модели лямбда-вычислений, так что здесь полно особенностей, удобных для теоретиков; это позволяет достаточно легко построить умные средства разработки программ.

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

На что же похожа Схема? Ну, она сильно смахивает на Лисп. Пусть это вас не пугает: внешний вид Схемы можно изменить (и этим мы займемся в будущем). Что действительно важно, так это те концепции, которые положены в основу Схемы, и возможности их использовать. Итак, давайте сравним Схему и какой-нибудь «классический» язык программирования – скажем, Си. Возможно, вы уже знаете, что Схема использует префиксную запись, в отличие от инфиксной записи Си:

Схема

Си

(+ 2 3 4)

(2 + 3 + 4)

(< low x high)

((low < x) && (x < high))

(+ (* 2 3) (* 4 5))

((2 * 3) + (4 * 5))

(f x y)

f(x, y)

(define (square x) (* x x))

int square(int x)

return (x * x)

В Схеме все типы данных эквивалентны. Все, что можно сделать с одним типом данных, можно сделать со всеми остальными. Это резко отличается от большинства языков программирования, в которых есть специальные операции для некоторых типов данных, а применение некоторых других типов данных специально ограничено. В большинстве языков, например, числа имеют особые права: они могут быть использованы без присваивания им имен (вообразите, что, например, что в Бейсике каждому число надо было бы назначать имя перед его использованием!). Функции, наоборот, ограничены: они обязаны иметь имя.

В Схеме, функции без имени создаются с помощью ключевого слова lambda :

(lambd a (x) (* x x)); результат – функция!

(define sq (lambda (x) (* x x))

(sq 9) ; 27

((lambda (x) (* x x)) 9) ; 27

((if (foo? x) * +) 2 3 4) ; если (foo? x) истинно ,

; то (* 2 3 4) ,

; иначе (+ 2 3 4)

(define (curried-add x) (lambda (y) (+ x y))

(define add3 (curried-add 3)) ; add3 - функция

(add3 7) ; 10

((curried-add 3) 7) ; 10

Основные моменты:

Переменная может содержать значение любого типа;

Имена обозначают значения; имена не обязательны;

Выражение – одна или несколько форм между скобками;

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

Комментарий начинается символом «точка с запятой» (;) и продолжается до конца строки;

Когда функция вычисляется, она «вспоминает» состояние «окружающей среды», в которой она создавалась (так что add 3 вспоминает, что X было равно трем в момент ее создания, т.е. в момент вычисления выражения ( lambda ( y ) (+ x y )) 7) ).

( define ( sq x ) (* x x )) – это всего лишь другая форма записи выражения

(define sq (lambda (x) (* x x))

Возможны семь видов выражений:

Константы: "foo#\Z3”строка”

Ссылки на переменные: foo joe a - long - name @#$!+-*/%<>

Создание функции: ( lambda ( z ) (* z z z ))

Применение процедуры: ( cube 37)

Условие: (if (< x 3) sqrt modulo)

Присваивание значения: ( set ! x 5)

Последовательность: ( begin ( write x ) ( write y ) ( newline ))

(разумеется, в этом списке перечислены далеко не все варианты выражений)

Схема имеет обычный набор типов данных:

Литеры (character): #\a #\A \#space #\newline

Строки (string ): ”строка текста”

Массивы (векторы – vector ): #(1 2 ”строка” #\ x 5)

Списки (list): (a little (list of) (lists))

Числа (numbers): 47 1/3 2.3 4.3e14 1+3i

Функции (function )

Логические значения (boolean , соотв. истина и ложь): # t # f

Порты (например, открытые файлы или сетевые соединения)

Символы (symbol , обычно используются для обозначения переменных): this - is - a - symbol foo a 32 > adfasf 23@#$%!<

Основные моменты:

Вектор может состоять из любых объектов данных;

Символ может содержать буквы английского алфавита, цифры и литеры + - . * / < = > ! ? : $ % _& ~ ^

Символы не чувствительны к регистру букв (т.е. символы SYMBOL и SyMboL идентичны)

Символы используются для обозначения переменных (но не только для этого!)

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

Числа особенно интересны в Схеме: каждое целое (integer ) является дробью (rational ), дробь – действительным числом (real ), а действительное число – комплексным (complex ). Числа классифицируются по признаку точности (точное или приблизительное – exact /inexact ):

(exact? 3); #t

(exact? 1/3); #t

(exact? 2.3##); #f

(+ 2/3 1/2 5/6); 2

(integer? 2); #t

(integer? 3/7); #f

(real? 2); #t

Философия Схемы

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

Для «разогрева» давайте построим структуру данных «пара» (pair ). Пара состоит из двух элементов, получаемых с помощью функций доступа FIRST и SECOND (соответственно ПЕРВЫЙ и ВТОРОЙ). Функция создания пары будет называться PAIR . Должны выполняться следующие соотношения: ( first ( pair 1 2)) равно 1, ( second ( pair 1 2)) равно 2. Для знающих Лисп в этом нет ничего необычного. Однако сколькими разными способами мы можем реализовать это трио: PAIR , FIRST , SECOND ?

; 1. Вектор

; можно и просто (define PAIR vector ) , но так стилистически лучше

(define (PAIR a b) (vector a b))

(define (FIRSTaPair) (vector-ref aPair 0))

(define (SECOND aPair) (vector-ref aPair 1))

; 2. Ф ункция выбора

; Не забывайте про лексическую область видимости:

; каждая функция, создаваемая функцией PAIR, будет помнить

; значения a и b в момент создания

(define (PAIR a b) (lambda (bool) (if bool a b)))

(define (FIRSTaPair) (aPair #t))

(define (SECOND aPair) (aPair #f))

; 3. Передача сообщений

(define (PAIR (a b)

(lambda (msg)

(case msg ; конструкция case для каждого значения msg

; выполняет соответствующее действие

((first ) a ) ; если сообщение – символ first ,

; возвратить a

((second) b))))

; апостроф (‘) перед символом запрещает вычислять его значение

; (без него была бы ошибка «отсутствует переменная»)

(define (FIRSTaPair) (aPair ‘first))

(define (SECOND aPair) (aPair ‘second))

; 4. Псевдонимы: в Схеме уже есть тип данных «пара»!

(define PAIRcons)

(define FIRSTcar)

(define SECOND cdr)

; 5. Лямбда-функции (передача функций как параметров другим

; функциям )

(define (PAIR a b) (lambda (proc) (proc a b)))

(define (FIRSTaPair) (aPair (lambda (x y) x)))

(define (SECOND aPair) (aPair (lambda (x y) y)))

Смысл всего вышеприведенного: даже простейшие вещи можно сделать совершенно по-разному.

Теперь, когда мы разогрелись, давайте взглянем на старый добрый факториал (напоминаю: факториал – произведение всех целых чисел от 1 до данного числа).

Для начала – рекурсивное определение:

(define (fact n)

(if (< n 2)

(* n (fact (- n 1)))

Когда я (Кен Дики) впервые изучал рекурсивные определения наподобие этого, самым сложным было понять, как скрытое состояние функции хранится на стеке. Небольшое преобразование кода делает стек видимым.

; функция identity просто возвращает свой аргумент

(define (identity value) value)

; сохраним форму функции fact

; (теперь она всего лишь вызывает функцию cfact )

(define (fact n) (cfact n identity))

; А функция cfact – вычисляет факториал

(define (cfact n k)

(if (< n 2)

(k 1)

(cfact (- n 1)

(lambda (result) (k (* n result))))))

Функция cfact – версия функции fact , использующая «продолжения». Вместо возвращения результата каждый раз функция получает дополнительный аргумент, «продолжение», который и вызывается с результатом вычислений функции.

Давайте посмотрим, как будет преобразовываться вызов ( fact 3) :

(fact 3) становится (cfact 3 identity)

(cfact 3 identity) становится

(cfact 2

(lambda (result)

(identity (* 3 result)))) ; k’

Это в свою очередь преобразовывается в

(cfact 1

(lambda (result’) ;; k’’

((lambda (result)

(identity (* 3 result))) ; функция k"

(* 2 result ’)) ; аргумент, передаваемый k "

((lambda (result’) ;; k’’

((lambda (result)

(identity (* 3 result)))(* 2 result’))

) 1)

((lambda (result) (identity (* 3 result))) (* 2 1))

(identity (* 3 (* 2 1)))

(* 3 (* 2 1))

-> 6

Это – не пример того, как из простых вещей можно легко сделать ужасно сложные. Зачем же мы так сделали? Смысл в том, что мы можем управлять тем, что обычно спрятано на стеке. Это позволяет делать некоторые интересные вещи. Мы можем игнорировать одно «продолжение» и использовать вместо него другое. Мы можем контролировать, например, длительные вычисления. Если они занимают больше времени, чем ожидалось, мы можем сохранить наше продолжение («где мы сейчас») и попробовать другой подход к решению задачи. Если новый вариант еще хуже, мы можем вернуться к сохраненному «продолжению» и продолжить вычисления. Мы, конечно, сможем сохранить и наши попытки сделать лучше на тот случай, если действительно получилось лучше…

Таким образом, использование «продолжений» позволяет строить очень интересные, гибкие управляющие структуры. Давайте теперь посмотрим на факториал с другой стороны. Каждый рекурсивный вызов просто кладет на стек еще один множитель. Но мы можем и не использовать стек, если введем дополнительную переменную-«аккумулятор». Разумеется, перед началом вычислений аккумулятор должен быть равен 1 (так как x *1 = x ).

(define (fact n)

; определяем функцию вычисления факториала с аккумулятором

(define (cfact _n acc)

(if (< _n 2)

(cfact (- _n 1) (* _n acc))

; вызываем эту функцию с аккумулятором, равным 1

(cfact n 1)

Внешне эта функция кажется рекурсивной. Однако это не так. В Схеме есть понятие «хвостовой рекурсии», которая делает ненужными обычные циклы. Каждая функция, которая вызывает саму себя в «хвостовой» позиции (т.е. как последнее действие) – это просто цикл.

Итак, мы преобразовали рекурсивную функцию в итеративную, циклическую. Есть формальный (теоретически «правильный») способ такого преобразования; но одна приятная особенность Схемы в том, что эти преобразования просты и наглядны. Правильно работающие программы могут быть написаны быстро, даже если поначалу они могут медленно работать и требовать много памяти. После отладки алгоритма их несложно преобразовать в намного более эффективные – и тоже правильно работающие! Преобразование программ для опытного программиста на Схеме становится второй натурой.

Схема имеет несколько важных преимуществ над другими языками. Ее элегантно простая, однородная структура и тривиальный синтаксис позволяет избегать разных «особых случаев». Ее выразительность позволяет не тратить время на поиск обходных путей: программист может сконцентрироваться на том, что ему нужно сделать, но не на том, как это сделать. Схема поддерживает несколько стилей программирования, включая модное сегодня объектно-ориентированное, – так что программист не должен приспосабливаться под Схему; он может использовать тот стиль или способ решения задач, к которому привык. Формальность Схемы делает доказательство правильности программ намного более простым. Мощные средства абстрагирования позволяют отделить части программы, которые можно повторно использовать, от частей, «заточенных» под конкретную проблему/реализацию языка/операционную систему. Легкость сочетания различных функций и создания на их основе новых конструкций позволяет создавать целые библиотеки хорошо отлаженных, универсальных компонентов.

Иначе говоря, если вы хотите писать сложные, корректные программы, но не хотите тратить на это годы, Схема – то, что нужно для успеха!

Краткий список наиболее известных реализаций Схемы.

Chez Scheme и MacScheme – одни из лучших коммерческих реализаций; однако существует множество бесплатных интерпретаторов и компиляторов Схемы как для учебных целей, так и для серьезной работы.

Одна из лучших систем для Windows и Linux – MzScheme , и построенные на ее основе MrEd (система создания переносимого графического интерфейса пользователя) и DrScheme (пожалуй, самая удобная среда разработки программ из существующих).

Scheme, также известный под именем Lisp (не путать с Common Lisp) — это современный алгоритмический язык программирования, знаменитый своей ориентацией на функциональную парадигму программирования, однако ей себя не ограничивающий.

Семейство Lisp - второе по длительности применения семейство языков (после Фортрана), основанное Джоном Маккарти в качестве инструмента написания искусственного интеллекта. Одним из активных участников разработки специализированных компьютеров для интерпретации Lisp был Ричард Столлман, впоследствии основатель Фонда Свободного Программного Обеспечения. Как следствие, одним из основных инструментов при разработке на Scheme является Emacs (+Geiser, Scheme-Complete, company-mode). Предполагается, что в какой-то момент Scheme будет внутренним языком Emacs, вместо Emacs Lisp. (Уже сейчас можно посмотреть на EdWin.)

Scheme — это Lisp, ориентированный на лёгкость портирования, функциональный подход и внедрение лучших практик теории языков программирования.

Scheme развивается двумя путями. Индивидуальные расширения формулируются согласно процессу, сходному с RFC, и называются SRFI, (Scheme Request For Implementation). В отведённые сроки выходят объединённые редакции «стандартного отчёта», формулирующие, что из себя представляет scheme «в целом». Последним завершённым изданием является Revised 7 Report on Algorithmic Language Scheme (small language), а последним экспериментальным изданием является R7RS-large Red Edition. Предполагается, что до выхода окончательной редакции R7RS-large выйдет семь или восемь промежуточных редакций, и в данный момент рассматриваются редакция 2 (Tangerine), ставящая своей целью формализовать структуры данных, коллекции и numerics и редакция 3, нацеленная на новые фичи.

Заинтересованным специалистам предлагается изучить дискуссионный материал и проголосовать согласно собственному видению вопроса, представившись перед этим заранее в [email protected]

  • Строковая библиотека
  • Ассоциативные массивы
  • Регулярные выражения
  • Генераторы/Аккумуляторы
  • Целочисленные операции
  • Битовые операции
  • Математические операции с fixpoint
  • Математические операции с floating point
  • Битовые вектора
  • Гомогенные вектора
  • Форматирование
  • Большие числа
  • Дроби
  • Точные числа

Вопросы, которые предлагается рассмотреть в третьем издании:

  • Случайные числа
  • Простые числа
  • Целочисленные множества
  • Дискрептивная статистика
  • Диапазоны
  • Битовые вектора
  • Байтовые строки
  • Перечисления
  • Комбинаторика и перестановки

Anonymous (28.11.2018 23:36:26)

MIT/GNU Scheme - это реализация языка программирования Scheme, предоставляющая интерпретатор, компилятор, отладчик исходного кода, встроенный Emacs-образный редактор и большую библиотеку времени выполнения. MIT/GNU Scheme заточен под программирование больших приложений с быстрым циклом разработки.

Изменения:

  • Сборки для Windows больше не распространяются, поскольку существовавшие 32-разрядные сборки малопригодны для современных систем, а для достижения работоспособности 64-разрядной нужны немалые усилия, в которых никто из текущих сопроводителей не заинтересован.
  • Для macOS теперь выпускаются только 64-разрядные сборки, поскольку в применяемом в последних выпусках инструментарии поддержка 32-разрядной сборки объявлена устаревшей.
  • Переносимая версия для C не включена в этот выпуск, поскольку её не удалось вовремя починить.
  • На следующий выпуск запланировано кучу мелких улучшений; первоочерёдными задачами этого выпуска являются нововведения.

Важные нововведения:

Ещё изменения:

  • начальная поддержка SMP;
  • уведомления сборщика мусора;
  • события нитей;
  • многие другие мелкие нововведения и исправления.

Несовместимые изменения:

Экспериментальные новые возможности:

  • Тип URI имеет новый синтаксис: #<...> . И читатели, и писатели работают с этим синтаксисом.

GNU Guile 2.9.1 (beta)

Guile - это реализация языка программирования Scheme от GNU, поддерживающая многие SRFI, реализующая стандарт R5RS, предоставляющая модульную систему, полный доступ к системным вызовам POSIX, поддержку сети, нитей, динамического связывания, вызовов внешних функций и мощную обработку строк. Guile может интерпретировать код интерактивно, компилировать его в байткод виртуальной машины и даже подключаться библиотекой в качестве встроенного в приложение интерпретатора.

2.9.1 - первый beta-выпуск готовящейся к стабильному выпуску 3.0 ветки. По сравнению с текущей стабильной веткой (2.2.x), в ней добавлена JIT-компиляция, ускоряющая все Guile-программы до 4-х раз. В этом выпуске JIT поддерживается только на x86-64; в будущих выпусках планируется поддержка всех платформ, поддерживаемых GNU lightning.

GNU Guile-CV 0.2.0

Guile-CV - это библиотека компьютерного зрения для языка программирования GNU Guile, являющаяся привязкой к библиотеке Vigra, написанной на C++, и работающая через прослойку Vigra C. Guile - реализация языка Scheme, диалекта Lisp.

Вышел язык программирования Racket 7.0

GNU Guile-CV 0.1.9

Guile-CV - это библиотека компьютерного зрения для языка программирования GNU Guile, являющаяся привязкой к библиотеке Vigra, написанной на C++, и работающая через прослойку Vigra C. Guile - реализация языка Scheme, диалекта Lisp.

Изменения с версии 0.1.8:

  • Обновлены зависимости. Совместимость теперь поддерживается с Vigra C от коммита a2ff675f4 и выше, из-за изменений в январе этого года: в интерфейсе vigra_nonlocalmean_c переименован аргумент, в функции vigra_medianfilter_c добавлен аргумент out-of-bound strategy .
  • Новые интерфейсы: im-median-filter , im-median-filter-channel , im-nl-means , im-nl-means-channel .
  • Исправления: в модуле (cv support latex) , использующем latex-pdftoppm — недокументированной, но весьма полезной для подготовки текста к добавлению на изображения процедуре - опциональный аргумент с ключевым словом [#:res 72] фактически не использовался, теперь это исправлено.

Вышла новая версия 0.2.3 веб-фреймворка GNU Artanis на языке Scheme

Фреймворк написан на реализации языка Scheme — Guile Scheme и предназанчен для создания динамических веб-сайтов, веб-приложений, веб-сервисов и веб-ресурсов.

Фреймворк также предоставляет инструменты для работы с БД, шаблонами, сессиями, кэшированием, URL-remapping для RESTful и т.д.

Само название Artanis происходит от обратного Sinatra — веб-фреймворка на Ruby.

Artanis похож на такие веб-фреймворки, как Ruby Sinatra, Python Flask и Java Spark.

Имя главного разработчика — Nala Ginrut, опять же от обратного Alan Turing.

Guile-Ncurses 2.0

Состоялся релиз guile-ncurses 2.0 — библиотеки для создания текстовых пользовательских интерфейсов на GNU Guile, реализации функционального языка программирования Scheme. guile-ncurses является оберткой к библиотеке Ncurses.

Вышел GNU Guile 2.0.10

GNU Guile - это проект по развитию свободной реализации функционального языка программирования Scheme, поддерживающий возможность встраивания кода в приложения на других языках программирования.

Релиз содержит 253 коммита от 11 людей, принятые за 11 месяцев.

Помимо исправлений множества ошибок, релиз содержит новые возможности, таких как имплементация векторной библиотеки SRFI-43 и API для тестирования SRFI-64 , частичная поддержка нового стандарта языка Scheme R7RS и расширение GDB для отладки Guile.

Опубликован перевод книги «Lisp in Small Pieces»

Это достаточно известная книга Кристиана Кеннека, рассматривающая семантику Лиспа и основы его реализации на примере диалекта Scheme. В процессе повествования разбирается множество аспектов семантики языка, начиная разнообразными вариантами окружений, проходя через продолжения и исключения, заканчивая рефлексией, сутью макросов, компилятором в Си и объектной системой.

Книга содержит 11 интерпретаторов, 2 компилятора, стопку упражнений в каждой главе, уйму интересного материала об истории Лиспа и причинах принятия тех или иных решений в дизайне языка, некоторое количество аллюзий на современные языки программирования, а также небольшой вагончик литературы впридачу.

Здесь нет откровений, невероятно эффективных оптимизаций, мощных систем типов и прочих атрибутов современной computer science (книге 20 лет всё же), но есть отличное твёрдое введение в реализацию языков программирования, призванное заинтересовать новичков, познакомить их с основными понятиями и приёмами этого дела, построив таким образом фундамент для дальнейшего развития.

Сегодня, 22 января 2013 года, состоялся новый релиз широко известного в узких кругах интерпретатора языка программирования Scheme — Scheme48, разработчиком которого является один из основных членов Руководящего комитета (Steering committee) Scheme Джонатан Риз. Релиз имеет номер 1.9 и является достаточно долгожданным, поскольку интерпретатор не обновлялся сравнительно давно.

Основные добавления таковы:

  • добавлен новый механизм FFI (старый пока тоже доступен, однако, в скором времени будет удален);
  • добавлен набор функций для поддержки сети (с полной поддержкой IPv6 и UDP, пока не документирован);
  • записи теперь поддерживают наследование (доступно через пакет r6rs-records);
  • добавлен letrec*;
  • интерпретатор теперь предупреждает о циклических зависимостях и переопределениях в модулях;
  • добавлен статистический профилировщик;
  • если VM интерпретатора собирается компилятором, поддерживающим GNU C, то используется прямой шитый код, что позволяет ускорить выполнение;
  • другие добавления, касающиеся поддержки возможностей R6RS, системы сборки и лицензирования (по ссылке «Подробности»).

Список важнейших изменений:

  • переработан собственный сборщик мусора BIBOP GC, который теперь используется по умолчанию;
  • переписана реализация syntax-rules;
  • другие изменения, касающиеся системы сборки, лицензирования и поддержки POSIX (по ссылке «Подробности»).

Вышла новая версия реализации языка Scheme - GNU Guile 2.0.7. Несмотря на незначительное изменение номера версии, появились несколько интересных нововведений, а именно:

  • Полная поддержка инфиксных выражений (curly-infix-expressions). Теперь вместо (* a (+ b c)) можно писать {a * {b + c}}.
  • Поддержка разных опции чтения (read option) для разных портов.
  • Поддержка вложенных директив future.
  • Специальный синтаксис для добавления путей в переменные окружения GUILE_LOAD_PATH и GUILE_LOAD_COMPILED_PATH в конец списка путей, а не в начало.
  • Исправлен недочет в функции load-in-vicinity, которая не сканировала директории, установленные в переменной %load-compiled-path.
  • Исправлен порядок поиска расширений. Теперь Guile не изменяет для этого переменную окружения LD_LIBRARY_PATH.
  • Функция make-vtable-vtable помечена устаревшей, рекомендуется использовать make-vtable и .
  • Оптимизированы вызовы equal? и eqv? для случаев, когда один из аргументов - константа.
  • Новые предупреждения компилятора -Wduplicate-case-datum и -Wbad-case-datum.
  • Многочисленные незначительные улучшения и исправления ошибок.

GNU Guix - новый менеджер пакетов от команды GNU

Людовик Кортес (Ludovic Courtès), один из участников проекта GNU, объявил о выпуске первой альфа-версии нового менеджера пакетов для любых дистрибутивов GNU/Linux - GNU Guix, создающегося на базе менеджера пакетов Nix .

Кроме стандартных функций установки, удаления и обновления ПО GNU Guix будет поддерживать транзакционные обновления с возможностью отката на прежнюю версию, работать без привилегий root, содержать отдельные профили настроек для каждого пользователя и включать в себя сборщик мусора (для отслеживания и игнорирования неактуальных пакетов). Но самая главная особенность GNU Guix заключается в том, что его разрабатывают на функциональном языке Scheme.

Получить исходные тексты можно через Git-репозиторий .

Представлена версия 5.2 языка программирования Racket (ранее PLT Scheme).

Новое в этой версии:

  • Новая библиотека `db", предоставляющая высокоуровневый интерфейс к популярным РСУБД: MySQL, SQLite, PostgreSQL, а также другим через ODBC.
  • Новая коллекция XREPL, предоставлящая вспомогательные команды для цикла чтения-выполнения-печати (REPL) Racket. Она будет полезна людям, которые используют консольную версию Racket и альтернативные редакторы.
  • Коллекция `plot" переписана на Racket, теперь она поддерживает вывод в PDF, логарифмические оси, гистограммы и многое другое.
  • DrRacket использует традиционные сочетания клавиш: C-t создает новую вкладку, C-w закрывает вкладку, C-r выполняет определения.
  • Typed Racket:
    • Typed Racket предоставляет средства для статической отладки производительности: показывается какой код будет оптимизирован, а какой нет.
    • Более интуитвные типы в выводе REPL и сообщениях об ошибках.
    • Поддерживается определение функций с необязательными аргументами с таким же синтаксисом, как в Racket.
  • Исправлено несколько проблем с графическим интерфейсом, в том числе с Ubuntu 11.10 (GTK+3) и 64-битной Mac OS X.
  • Внуртренние определения теперь имеют семантику `let*" если не содержат обратных ссылок, это исключает потерю проиводительности при использовании внутренних определений вместо `let" и изменяет смысл программ, которые захватывают продолжения во внутренних определениях. Использование внутренних определений теперь считается предпочтительным стилем.

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

Не очень приятно, когда в режиме запуска операционной системы Windows, параллельно запускается и проблемное (остаточное) приложение. Одна из самых распространённых причин такой ситуации - это если вы установили некое ПО, запустили, а затем попытались его удалить. Так вот, при попытке избавится от него, некоторые из его остатков могут остаться в системном реестре Windows, загрузчик которой постоянно будет обращаться к такому ПО и безуспешно пытаться его запустить, выдавая соответствующие уведомления об ошибках.

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


Вы сможете быстро отключить из автозапуска такие файлы или вовсе удалить их. Отключая ненужные элементы, вы получаете более быструю и плавную загрузку операционной системы. Утилита , обладающая самыми полными знаниями о всех автоматических запусках, показывает программы, настроенные для запуска во время загрузки системы или входа в систему, а также при запуске различных встроенных приложений Windows, таких как Internet Explorer, Explorer и др. Autoruns выходит далеко за пределы других утилит и позволяет более скурпулёзно контролировать автозапуск программ при старте ОС.

Кроме всего прочего, программа Autoruns предлагает высокий уровень функционала, который размещён на вкладках вверху окна.

Например, Codecs, Image Hijack, Winsock Providers, гаджеты боковой панели, запланированные задачи, вход в систему и др. Вы можете задать параметры сканирования для Autoruns, например, чтобы сканировать только места использования, проверку подписи кода.

Следует отметить, что Autoruns надо использовать с осторожностью, - это мощный инструмент, который может отключить нужные действия во время автозагрузки Windows.


Таким образом, вы можете быстро диагностировать медленную или зараженную вредоносными программами систему, и предпринять корректирующие действия непосредственно из пользовательского интерфейса программы. Autoruns гораздо сложнее, чем администраторы запуска, обычно входящие в состав утилит Windows, и случайным пользователям это может показаться сложным. Но в опытных руках это программное обеспечение способно на очень многое.

Выводы

Поскольку это бесплатное ПО от Microsoft Sysinternals, вы можете быть уверены, что бесплатный Autoruns безопасен в использовании и полностью совместим с Windows. Эта утилита работает со всеми версиями популярной ОС, начиная с Windows 2000, XP и далее. И тем не менее, софт представляет собой мощный инструмент, который не подходит для начинающих пользователей, однако будет предельно полезен для квалифицированных специалистов и позволит провести анализ проблемных приложений. Советуем скачать эту программу и оценить её работу.

Рекомендуем почитать

Наверх