Haskell IDE от FP Complete
Приветствую всех Хабражителей! Многие люди, интересующиеся языком Haskell, высказывают пожелание, что неплохо было бы иметь хорошую IDE. Но, как известно, с IDE для Haskell дела обстоят неважно. Да, есть Leksah, но, по мнению большинства, эта IDE откровенно сыровата. Признаюсь, лично мне она вообще не понравилась. Поэтому сегодня мы взглянем на IDE от компании FP Complete.
{- Будет много картинок -}
Что это за FP Complete? Эта компания известна как популяризатор Haskell. Причём замахнулись они на эту популяризацию весьма серьёзно: FP Complete is dedicated to bringing the Haskell programming language into the mainstream software market by being the leading developer of commercial Haskell software tools and services.»
И вот среди прочих их творений выделяется онлайн-IDE, которую они всячески продвигают. Да, речь идёт о веб-приложении, так что ничего скачивать и устанавливать не придётся. По правде говоря, я весьма скептично относился к идее онлайн-IDE, однако, после знакомства с их системой, моё отношение начало меняться. На мой взгляд, их IDE по меньшей мере заслуживает нашего внимания.Сколько это стоит Есть несколько вариантов использования их IDE: Совсем бесплатный. Недорогой. (Относительно) дорогой. Как обычно, всё сводится к количеству пользователей и к уровню техподдержки. Совсем бесплатный вариант подразумевает, фактически, ознакомительный уровень использования (подробности чуть позже). Самый недорогой вариант из платных — индивидуальный, он значительно более полезный для реальной жизни. Цена вопроса — $99 в год. Остальные варианты мы рассматривать не будем, кому интересно — взгляните сами.К счастью, у них есть пробный период, составляющий 4 недели бесплатного использования со всеми возможностями. Для этой заметки я пошёл именно этим путём.
Приступим После регистрации (или же входа через ваш профиль Google+) создаём новый пустой проект:
Сразу после создания мы попадаем в IDE:
Перед нами — стандартная «Hello World»-заготовка. Обращаю ваше внимание на зелёный квадратик с весёлой рукой:
Это индикатор успешной компиляции проекта. Если этот индикатор желтоватого цвета — компилятор о чём-то вас предупреждает, если же красного — компилятор высказывает своё категорическое нежелание собирать ваш проект. Но в данный момент всё хорошо, поэтому жмём на стандартный значок «Play» синего цвета, рядом с зелёной рукой — и внизу получаем ожидаемый вывод на консоль:
Итак, начало положено.
Дружба с GitHub Как обычно, начинаем с репозитория. К счастью, FP IDE крепко дружит с GitHub. В верхней части вы увидите значок со знакомым осьмикотом, нажатие на который открывает список привычных действий:
Помните, выше я сказал, что бесплатный режим использования является по сути ознакомительным? Вот первое ограничение: работать с GitHub вы сможете только в платной версии.
Обратите внимание, что операции Push и Pull пока недоступны. Дабы исправить это, жмём на кнопку «Unauthorized» и переносимся в GitHub:
После того, как связь с GitHub налажена, указываем наш пустой репозиторий (который у нас уже есть):
и теперь — долгожданный push:
Теперь откроем наш проект на GitHub:
и видим, что всё уже тут. Теперь дружбу FP IDE и GitHub водой не разлить. Кстати, к этому моменту вам уже придёт письмо о том, что в ваш GitHub-аккаунт был добавлен новый SSH-ключик.
Внешний вид Здесь выбор небогат: вы можете только выбрать одну из предложенных цветовых тем, а также изменить размер шрифта. Умолчальную тему вы уже видели, а есть ещё такая:
и такая:
Чтобы изменить тему или шрифт, нажмите на значок с картиной справа:
А где же наш исполняемый файл? Итак, наш проект работает. Можно вносить изменения, компилировать и смотреть результат. Для простых учебных целей этого уже достаточно. Но что если мы захотим получить наш исполняемый файл? Для этого жмём на значок с грузовичком и выбираем пункт «Download»:
Начнётся загрузка архива. Внутри вы найдёте исполняемый файл Main. Но не спешите запускать его, как это кинулся делать я. К сожалению, на моём Mac это хозяйство не заработало:
$ ./Main -bash: ./Main: cannot execute binary file Изучение документации открыло правду:
Ну что ж, пусть будет Ubuntu. А поскольку мой рабочий Linux — это именно Ubuntu 12.04 LTS, я попробовал. Работает. И не тянет за собой никаких хитрых зависимостей, только стандартные:
$ ldd Main linux-vdso.so.1 => (0×00007ffffaffe000) libgmp.so.10 => /usr/lib/x86_64-linux-gnu/libgmp.so.10 (0×00007ff96e3b0000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0×00007ff96e0b4000) librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0×00007ff96deab000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0×00007ff96dca7000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0×00007ff96d8e7000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0×00007ff96d6c9000) /lib64/ld-linux-x86–64.so.2 (0×00007ff96e636000) Кстати, вот вам и второе ограничение бесплатной версии IDE: скачать исполняемый файл можно лишь в платной версии.Клавиатурные сочетания Вернёмся к коду. Для нашего удобства нам доступны некоторые клавиатурные сочетания:
Я попробовал — работают. Например, по нажатию на Ctrl-i, когда курсор стоял на функции putStrLn, внизу появляется мини-подсказка:
Настройка проекта Если мы хотим писать нечто более сложное, чем «Hello World», нам понадобится настройка проекта. Нажатие на значок с тремя горизонтальными полосками (справа вверху) откроет нам список настроек:
Тут можно сделать весьма многое: выбрать среду сборки, указать расширения языка Haskell, дописать флаги компилятора, и так далее в том же духе. Очень важной является также возможность установки стороннего пакета. В качестве примера я выбрал пакет MissingH. Учитывая, что этот пакет живёт в Hackage, пишем так:
То есть указываем не только имя пакета, но и его полную версию. И как только вы это сделаете — пакет немедленно будет установлен и готов к использованию, никаких дополнительных действий с вашей стороны не понадобится.
Помощники Внизу вас ожидают ещё четыре кнопки:
Слева направо: Reformat code, Info of identifier (Ctrl-i), Autocomplete identifier (Ctrl-space), Go to definition (Ctrl-B). Всё стандартно. Кстати, реформат откровенно слабый: кое-что выравнивает, но сильные форматные огрехи не правит. Жаль.
Чуть ниже этих кнопок мы видим пять вкладок, среди которых History, для просмотра истории изменений:
Обратите внимание, что имена авторов изменений разные. Это потому что последнее изменение я сделал в GitHub-репозитории, а потом запуллил сюда.
Вкладка Hoogle позволяет искать разные Haskell-штуки в одноимённом поисковом сервисе:
А последняя вкладка поможет нам искать внутри проекта:
Работа с модулями Добавим дополнительный модуль в наш проект:
Готово. Разумеется, модуль можно не только добавить, но и удалить, и скачать.
Публикация проекта Чтобы сделать проект публичным (то есть доступным даже для тех, у кого нет аккаунта FP Complete), следует воспользоваться кнопкой со стрелочкой, вверху:
Теперь наш проект открыт всему миру. Чтобы убедиться в этом, зайдём с другого, неавторизованного браузера:
Работает.
Заключение Уфф, много получилось, но короче никак. В общем, штуку они сделали перспективную, на мой взгляд. Лично я вижу два основных применения этой IDE: обучение Haskell, возможность коллективной онлайн-работы над кодом. Причём всё это — без привязки к компьютеру с установленной Haskell Platform. Ради прикола я даже зашёл туда с iPad и запустил код на выполнение:
Так что теперь разработку на Haskell можно вести и с планшета. :-)
Всё. Теперь хочу услышать ваше мнение об этой IDE, уважаемые Хабрахаскеллеры.