Алексей Махоткин

домашняя страница

Критика Standard ML — введение

Автор: Andrew W. Appel (NSF оказала частичную поддержку в рамках гранта CCR-9002786), Принстонский университет

Пересмотренная версия CS-TR-364-92, 12 ноября 1992

Standard ML — прекрасный язык для многих областей программирования. Он безопасен, производителен, достаточно абстрактен, и краток. Различные аспекты языка прекрасно выполняют свою функцию. Однако, ничто не совершенно: в Standard ML есть несколько недостатков. В некоторых случаях решение очевидно, но в других требуются еще дополнительные исследования.

Мета-Язык (Meta-Language) системы доказательства теорем Edinburgh LCF превратился в самостоятельную систему программирования, а затем в Standard ML. В результате дальнейшей эволюции язык стабилизировался.

В этом документе язык критикуется с двух точек зрения: с точки зрения пользователя и с точки зрения реализатора. В первой части этой статьи описано, почему ML так приятно использовать, а во второй части описано, почему некоторые из возможностей языка интересно компилировать. Третья и четвертые части статьи указывают на некоторые неприятности, с которыми приходится иметь дело программистам на ML и авторам реализаций.

Перевод на русский язык Copyright © Алексей Махоткин 2002-2005

Почему мне нравится ML

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

Радости компиляции ML

  • Безопасность
  • Проверка типов при компиляции
  • Анализ представления
  • Разделение статической и динамической семантики
  • Неизменяемые записи
  • Изменяемые ячейки
  • Аккуратная зависимость по управлению
  • Отсутствие равенства указателей
  • Система модулей
  • Продолжения (continuations) как объекты первого класса

Проблемы и ловушки компиляции ML

  • Опечатки в имени конструктора
  • Перегрузка
  • Переменные слабых типов
  • Грамматика ML
  • Инфиксные операторы
  • Инфиксная нотация и модули

Comments