Scheme язык программирования пример. Хочу все знать

03.04.2019

ЦЕНТР ДЕТСКО-ЮНОШЕСКОГО ТЕХНИЧЕСКОГО ТВОРЧЕСТВА

СПИСОК ЛИТЕРАТУРЫ

И ИНТЕРНЕТ - РЕСУРСЫ

ДЛЯ ОБЪЕДИНЕНИЙ ПРОГРАММИРОВАНИЯ

2008 год

Литература

по программированию на языке Pascal

s Белецкий Я. Турбо-Паскаль с графикой для ПК.- М.: Машиностроение, 19с.

s и др. Паскаль для ПК: Справочное пособие. - МН.: Высш. шк.: БФ ГИТМП "НИКА", 19с.

s Гранпер Ж., Коттэ Р. Трехмерная графика на Турбо-Паскале

s Грэхем Р. Практический курс языка Паскаль для микро-ЭВМ. Пер. с анг. М.: Радио и связь, 1986

s Джордейн Р. Справочник программиста персональных компьютеров типа IBM PC, XT и AT:Пер. с англ./ Предисл. .-М.:Финансы и статистика, 1992.

s Зуев программирования Turbo Pascal 6.0. - М.: Унитех, 19с.

s Йенсен К., Вирт Н. Паскаль. Руководство пользователя. Пер. с англ. М.: Компьютер, 1993

s Керниган, Плоджер. Инструментальные средства программирования на языке Паскаль. Пер. с анг. М.: Радио и связь, 1985

s Липский В. Комбинаторика для программистов. - М.: Мир, 19с.

s , ., : Программное обеспечение ЭВМ. кн.11, Перспективы развития вычислительной техники, в 11 книгах, Спр. пособие/Под ред. , М.:Высш. шк., 1990.-127с.:илл.

s , Марченко в среде TurboPascal 7.0. Под ред. К.:ВЕК+, М.:Бином Универсал, 1997, 2000

s , Старых в интегрированной среде Турбо-Паскаль: Справ. пособие.-Мн.: Беларусь, 1992.-240с.: ил.

s Прайс Д. Программирование на языке Паскаль: Практическое руководство. Пер. с англ. - М.: Мир. 1987.-С.232.

s , Федотов языка Pascal. Учебный курс. М.: Радио и связь, 1999, 2000, 2001

s , Эддиман введение в Паскаль. Пер. с анг. М.: Радио и связь, 1983

s Фаронов 1. Основы Турбо-Паскаля. МВТУ-ФЕСТО ДИДАКТИК, 1992

s Фаронов 2, 3. Практика программирования. Части 1,2. МВТУ-ФЕСТО ДИДАКТИК, 1998, 1999

s Фаронов -Паскаль (в 3 книгах). - М.: "МВТУ-ФЕСТО ДИДАКТИК", .

s Форсайт Р. Паскаль для всех. Пер. с анг. М.: Машиностроение, 1986

s Хохлов на языке высокого уровня. Часть 1. Основы программирования: Учебник - Казань: КГТУ-КАИ, Кафедра АСОИУ, 20с.

s Хохлов на языке высокого уровня. Часть 2. Методы программирования: Учебник - Казань: Мастер Лайн, 20с.

ЛИТЕРАТУРА

по олимпиадам по программированию

s , Сильванович по информатике и информационным технологиям // Информатика и образование№8. - С. 80-87.

s Авербух В., Сенокосов А. Олимпиады по программированию // Информатика и образование№1. - С. 106-109.

s Алексеев по информатике: [Краснояр. край] // Информатика и образование№2. - C. 61-64.

s Алексеев школьников по информатике. - Красноярск: Книжное изд-во, 19с.

s Алексеев, конкурсы, турниры // Информатика и образование№5 - С. 44-55.

s Алексеев задач Ассоциации учителей информатики // Информатика и образование№5-6. - С. 125.

s Алексеев турнир школьников по программированию // Информатика и образование№5-6. - С.109-110.

s Андреева Е., Фалина И. Информатика: Систем счисления и компьютерная арифметика. М.: Лаборатория Базовых Знаний, 19с.

s Антонов задачи по информатике с математическим содержанием // Информатика и образование№9. - С. 59-60.

s Арсак Ж. Программирование игр и головоломок. - М.: Наука, 19с.

s , Садовский и математика (рассказы о кодировании). - М.: Наука, Главная редакция физико-математической литературы, 19с.

s , Корнилов олимпиады по информатике. - Ярославль. 19с.

http://progs. biz/ - Портал по программированию - Visual C++ (MFC, ATL, основы языка), Visual Basic (ActiveX, controls), Delphi (VCL), Pascal, COM-технологии, JavaScript, ASP, MS Office. Уроки, статьи, исходники, программы и компоненты

http://www. *****/library/ - Электронная библиотека программиста - языки программирования и их описания.

http://evrika. kostroma. *****/metod/express/no2/part23.html - Краткий курс лекций: "Основы программирования на языке Паскаль".

Фестиваль педагогических идей

«Открытый урок»

http://*****/index. php

СПИСОК СТАТЕЙ ПО ПРОГРАММИРОВАНИЮ,

представленных на сайте

(выборочный, аннотированный)

(Примечание: с этими статьями и многими другими вы можете познакомиться на указанном сайте).

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

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

s . Введение в объектно-ориентированное программирование. "Первая программа"

s . Основные понятия логики, логические функции
Знание основ логики важно для каждого человека, так как умение правильно мыслить, доказывать истинность или ложность своих, либо чужих утверждений, высказываний (суждений) является жизненной необходимостью. Немного о том, как легко научить трудному и немного практики.

s . Конспект открытого урока по теме: "Компьютерные вирусы . Антивирусные программы"
Вашему вниманию предлагается разработка открытого урока с использованием компьютерных технологий, в том числе электронной лекции (выполнена в форме Web-сайта) и электронного теста для проверки усвоения изученного материала (на языке Turbo Pascal 7.0). Электронная лекция и тест запускаются из файла Деменева_Ирина_Михайловна. doc с помощью гиперссылок

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

s . Урок получения новых знаний "Интеллектуальный экспресс"
Изучив на предыдущих уроках понятие алгоритма, необходимо его повторить, добиться усвоения основных типов алгоритма, подробно рассмотреть способ построения алгоритма каждого типа в виде блок-схемы.

s
Основные цели урока: * Проверка знаний основных теоретических вопросов по теме "Показательная функция" * Проверка знаний по темам "Использование условного оператора при составлении тестов", "Стандартные функции TPascal" * Введение понятия "показательное уравнение" * Формирование навыков решения простейших показательных уравнений * Умение анализировать и на основании экспериментальных данных делать выводы * Воспитание познавательного интереса к математике и информатике * Воспитание наблюдательности, самостоятельности, способности к коллективной работе

s . Занятие по теме: "Организация ветвления на языке Паскаль"
Разработка занятия по теме: "Организация ветвления на языке Паскаль" с использованием связи с жизнью, различных форм и методов практической работы с учащимися.

s . Танграм и графический диктант
Отработка навыков работы по координатной плоскости по алгоритму.

s . Новый взгляд на координаты точек. Перевод чисел из различных систем счисления в десятичную и обратно
В статье описан ещё один способ перевода чисел из десятичной системы счисления в двоичную систему. Суть его заключается в подборе чисел ряда степеней двойки, просуммировав которые можно получить заданное десятичное число. Кроме описанного способа в статье предлагаются варианты заданий по переводу чисел из различных систем счисления в десятичную, в дальнейшем используемых при построении рисунков в графическом редакторе Microsoft Paint.

s . Графика в текстовом режиме языка программирования Turbo Pascal
Данный урок проводится в последний час изучаемой темы "Одномерные массивы", на котором ставится проблема сохранения больших массивов данных. Cвязь предмета прграммирования с жизнью показывает целесообразность его изучения.

s . Метод Монте-Карло вычисления площадей фигур и его реализация в среде Delphi
Метод приближенного вычисления площадей фигур - метод Монте-Карло.

s . "Три в одном" - пример решения задачи в Turbo Pascal, Delphi и Flash
Организация в программе разветвлений. Для практического исследования организации разветвлений разобрано решение задачи по физике. Данный урок рассчитан на тех, кто уже знаком с азами программирования и имеет элементарные навыки работы в программной среде Turbo Pascal (v7.1), Delphi (v6 или v7) и Flash (v5 или MX).

s . Из опыта работы школы программистов
В данной статье рассмотрен опыт работы Школы программистов Центра дополнительного образования детей города Усинска Республики Коми, как одна из форм работы по информатизации образования.

s . Магические кубы
Описанное исследование задачи о магических кубах явилось результатом совместного творчества учителя, группы учащихся, увлекающихся математикой и группы ребят, интересующихся программированием. Совместная работа над этой проблемой показала креативные возможности соединения математики и информатики на занятиях кружка, при подготовке к олимпиаде, на занятиях по предпрофильной подготовке по названным предметам.

s . Использование компьютерных технологий при изучении темы: "Показательные уравнения"
Основные цели урока: * Проверка знаний основных теоретических вопросов по теме "Показательная функция" * Проверка знаний по темам "Использование условного оператора при составлении тестов", "Стандартные функции TPascal" * Введение понятия "показательное уравнение" * Формирование навыков решения простейших показательных уравнений * Умение анализировать и на основании экспериментальных данных делать выводы * Воспитание познавательного интереса к математике и информатике * Воспитание наблюдательности, самостоятельности, способности к коллективной работе

s . Школа программиста: компьютерные игры изнутри
Так как основной контингент кружка по программированию составляют учащиеся 6-8-х классов, не имеющие специализированной математической подготовки, представляется нецелесообразным полное и строгое изложение языка программирования. Альтернативой этому является программирование компьютерных игр.

s . Двоичный поиск. Метод половинного деления
Данная тема формирует у учащихся понятие о приближенных(численных) методах решения прикладных задач, дает понятие метода двоичного поиска нахождения элемента в упорядоченном множестве и метода деления пополам, используемого для нахождения с заданной точностью корня уравнения f(x)=0.

s . Программирование списков в среде Delphi
Последнее время на уроках информатики стали вводиться элементы объектно-ориентированного визуального программирования, которое существенно отличается от традиционного. Использование новых форм и методов в процессе обучения программированию очень актуально.

s . Первые уроки программирования

Список литературы

Паскаль

Основная литература

  1. Павловская Т.А. Паскаль. Программирование на языке высо­кого уровня: Учебник для вузов. – СПб.: Питер, 2007. – 293 с.
  2. Павловская Т.А. Паскаль. Программирование на языке высо­кого уровня: Практикум. – СПб.: Питер, 2007. – 317 с.
  3. Окулов С. Основы программирования
  4. Огнева М.В. TurboPascal Первые шаги
  5. Программирование на языке Паскаль: задачник.под редакцией О. Ф. Усковой, 2002

Дополнительная литература

  1. Фаронов В. В. Турбо Паскаль 7.0. Практика программирования: учебное пособие / Фа­ронов В. В. — М.: ОМД Групп, 2003. — 415с.
  2. Немнюгин С. А. Turbo Pascal. Программи­рование на языке высокого уровня: [учебник для вузов по направлению «Информатика и вычисл. техника»]/ Немнюгин С. А. — 2-е изд. — СПб.и др.: Питер, 2007. — 543с.
  3. Голицына О. Л. Основы алгоритмизации и программирования: [учебное пособие для сред.проф. образования по специальности «Информатика и вычисл. техника»]/ Голи­цына О. Л., Попов И. И. — М.: Форум, Ин­фра-М, 2004. — 430с.
  4. Архангельский А. Я. Язык Pascal и основы программирования в Delphi: [учебное посо­бие для вузов по направлению «Информа­тика и вычислительная техника»]/ Архан­гельский А. Я. — М.: БИНОМ, 2004. — 495с.
  5. Попов В. Б. Паскаль и Дельфи: самоучитель / Попов В. Б. — СПб.и др.: Питер, 2004. — 543с.
  6. Культин Н.Б. Программирование в TurboPascal 7.0 и Delphi: самоучитель [для начи­нающих программистов]/ Культин Н.Б. — 2-е изд. — СПб.: БХВ-Петербург, 2002. — 407с.
  7. Епанешников А. М. Программирование в среде TurboPascal 7.0: Диалог-МИФИ / Епанешников А. М., Епанешников В. А. — Изд. 4-е, испр. и доп. — М.: ДИАЛОГ-МИФИ, 2002. — 367с.
  8. Артемьев И. Т. Программирование на языке TurboPascal: [лаб. практикум:Для студен­тов 1 и 2 курсов физ. и мат. фак.]/ Артемьев И. Т., Новикова С. В., [отв. ред. Артемьев И. Т.]; Чуваш.гос. ун-т им. И. Н. Ульянова — Чебоксары: Изд-во Чуваш.ун-та, 2000. — 159 с.
  9. Крылов Е. В. Техника разработки программ: [учебник для вузов по направлениям «Ин­форматика и вычислительная техника» и «Техника и технологии] : в 2 кн. / Крылов Е. В., Острейковский В. А., Типикин Н. Г. — М.: Высш. шк., 2008. — 469с.
  10. Истомин Е. П. Программирование на алго­ритмических языках высокого уровня: учеб­ник / Истомин Е. П., Неклюдов С. Ю., Балт. ин-т упр. — СПб.: Изд-во Михайлова В. А., 2003. — 718с.
  11. Робертсон Лесли Анна Программирование — это просто: пошаговый подход / [пер. с 4-го англ. изд. О. С. Журавлевой] ; под ред. С. М. Молявко, Робертсон Лесли Анна — М.: Би­ном. Лаб. знаний, 2008. — 383с.
  12. Ванюлин А.Н. Сборник задач по программированию. Чебоксары, 2003
  13. Пичугин В.Н., Фёдоров Р.В. Структуры и алгоритмы компьютерной обработки данных. Чебоксары, 2008
  14. Павлов Л.А. Структуры и алгоритмы обработки данных, Чебоксары, 2008
  15. Златопольский Д.М. Сборник задач по программированию
  16. Шень А. Программирование: Теоремы и задачи
  17. Сухарев М. Турбо Паскаль 7.0. Теория и практика программирования
  18. Шелест В. Программирование
  19. Климова Л.М. Паскаль 7.0. Практическое программирование. Решение типовых задач.
  20. Милов А.В. Основы программирования в задачах и примерах
  21. Васюкова Н. Д., Тюляева В. В. — Практикум по основам программирования. Язык ПАСКАЛЬ
  22. Дональд Алкок — Паскаль в иллюстрациях (1991)
  23. Аляев, Козлов Алгоритмизация и языки программирования Pascal, C++, Visual Basic. Учебно-справочное пособие. 2002
  24. Васильев П.П. Турбо Паскаль в примерах и задачах
  25. Рапаков Г. Г., Ржеуцкая С. Ю. Программирование на языке Pascal, 2004
  26. М. С. Долинский Алгоритмизация и программирование на TurboPascal: от простых до олимпиадных задач, 2005
  27. Ю. А. Шпак TurboPascal 7.0 на примерах, 2003

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, оставляя место для экспериментов с собственными расширениями.

У каждого языка программирования своё назначение. Одни прекрасно подходят для веба, другие для десктопных приложений, в третьих нуждается 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-летней историей он это заслужил.