Опыт реального мира, отлаживая производство функциональная программа?

16
задан Steve Steiner 28 December 2008 в 01:51
поделиться

6 ответов

К сожалению, printf отладка, кажется, состояние практики для Стандарта ML, Objective Caml и Haskell. Существует определенная отладка в интерактивном read-eval-print цикле, но после того как Ваше приложение поражает 25 000 или 50 000 строк, это менее полезно.

, Если Вам повезло использовать Haskell, , существует исключение : QuickCheck необходим для тестирования и deubgging. QuickCheck может использоваться даже на комбинациях кода Haskell и C, как продемонстрировано опытом с менеджер окон Xmonad .

стоит отметить, что приблизительно в 1990 Andrew Tolmach создал очень хороший отладчик путешествия во времени для Стандарта ML Нью-Джерси, но что это не считали стоящим поддержания. Также стоит отметить, что однажды отладчик OCaml (также отладчик путешествия во времени) работал только над байт-кодом, который был inconvneient и отказался нарушать барьеры абстракции, которые сделали это бесполезным. Это было вокруг выпуска приблизительно 3.07; возможно, вещи улучшились.

Также в начале 1990-х, Henrik Nilsson создал интересный отладчик для Haskell, но главным образом то, что он сделал, было, предотвращают отладчик от случайного изменения поведения оценки программы. Это было интересно, но только сосискам lavzy-оценки.

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

12
ответ дан 30 November 2019 в 21:29
поделиться

Основные инструменты, которые мы используем на работе (магазин Haskell):

  1. QuickCheck
  2. HPC : визуальный инструмент покрытия программы на Haskell (мы разработали его самостоятельно)
  3. Logging / printf / trace
  4. Иногда, отладчик GHCi
6
ответ дан 30 November 2019 в 21:29
поделиться

Мое текущее задание состоит в том, чтобы реализовать новые опции и поддерживать большую систему, реализованную в ocaml и C#. Большая часть "логики" реализована в caml и GUI, и доступ к данным находится в C#. Методы отладки в значительной степени, поскольку Вы описываете большой вход и утверждаете для разработки то, что пошло не так, как надо.

Дополнительно у нас есть большое количество модульных тестов, которые являются просто caml сценариями для тестирования логики и справки для определения любых ошибок регрессии.

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

я довольно часто использую отладчик C# для отладки части C# приложения, ocaml отладчик действительно все же работает под окнами, таким образом, мы не используем его. Хотя мы надеемся однажды, что мы можем зафиксировать это, но это не верхняя часть нашего списка приоритетов. Я иногда использовал windbg для исследования управляемых и неуправляемых проблем памяти, хотя это оказалось вызванным сторонним компонентом, реализованным в C#.

Так в целом, ничто необычное, но это, кажется, работает хорошо, мы не видим слишком многих производственных проблем.

Спасибо, Ограбьте

3
ответ дан 30 November 2019 в 21:29
поделиться

F# имеет интеграцию Visual Studio, таким образом, можно присоединить отладчик к программе и установить точки останова, часы, и т.д., точно так же, как с любым другим языком.NET.

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

3
ответ дан 30 November 2019 в 21:29
поделиться

Несколько лет назад, когда я сделал это, я должен был использовать комбинацию отладки printf и QuickCheck. В эти дни я также использовал бы ghci встроенный отладчик.

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

1
ответ дан 30 November 2019 в 21:29
поделиться

OCaml и F # оба имеют отличные отладчики. OCaml's время обратимо. F # имеет отличную IDE и поддержку многопоточности.

1
ответ дан 30 November 2019 в 21:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: