Установка языка программирования F# и настройка рабочего окружения на Ubuntu 18.04

В инструкции описана установка языка программирования F# на виртуальный сервер Ubuntu Server 18 с помощью .NET Core и Mono, а также примеры компиляции программного кода F#.

Что такое F# ?

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

Преимущества F#:

  • Простота - простой язык, который легко изучить;
  • Сильная среда разработки для клиентских и серверных приложений Windows;
  • F# Interactive - запуск кода непосредственно в IDE, идеально подходит для написания сценариев и тестирования;
  • Проверка статического типа - ловит много ошибок во время компиляции;
  • Автоматическое обобщение - функции по мере возможности автоматически делаются обобщенными.

Установка F# с помощью .NET Core

Microsoft предоставляет .NET Core Software Development Kit (SDK) для разработчиков на F#. NET Core Software Development Kit (SDK) - это набор библиотек и инструментов, которые позволяют разработчикам создавать приложения и библиотеки .NET Core. Он как правило поддерживает несколько языков программирования, имеет среду выполнения и компилятор. На этом этапе будет выполнена установка SDK.

После того, как вы подключились к виртуальному серверу и открыли терминал, с помощью команды wget выполните загрузку пакетов из репозитория Microsoft:

wget -q https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb

Добавьте репозиторий Microsoft и установите пакеты в вашу систему, используя инструкцию dpkg -i:

sudo dpkg -i packages-microsoft-prod.deb

Добавьте репозиторий Universe, который даст доступ к зависимости apt-transport-https для передачи пакетов через протокол https:

sudo add-apt-repository universe

sudo apt install apt-transport-https

Примечание: Universe - поддерживаемое сообществом бесплатное программное обеспечение с открытым исходным кодом

Затем обновите локальный репозиторий:

sudo apt update

Наконец, установите актуальную версию .NET SDK. В нашей инструкции будет использована версия 2.2:

sudo apt install dotnet-sdk-2.2

Для проверки успешной установки .NET SDK выведите информацию:

dotnet --info

Ожидаемый вывод:

Welcome to .NET Core!
---------------------

Learn more about .NET Core: https://aka.ms/dotnet-docs

Use 'dotnet --help' to see available commands or visit: https://aka.ms/dotnet-cli-docs
 
Telemetry

---------

The .NET Core tools collect usage data in order to help us improve your experience. The data is anonymous and doesn't include command-line arguments. The data is collected by Microsoft and shared with the community. You can opt-out of telemetry by setting the DOTNET_CLI_TELEMETRY_OPTOUT environment variable to '1' or 'true' using your favorite shell.


Read more about .NET Core CLI Tools telemetry: https://aka.ms/dotnet-cli-telemetry
...

Также будет выведена информация об установке:

.NET Core SDK (reflecting any global.json):

Version:   2.2.300

Commit:    73efd5bd87

Runtime Environment:

OS Name:     ubuntu

OS Version:  18.04

OS Platform: Linux

RID:         ubuntu.18.04-x64

Base Path:   /usr/share/dotnet/sdk/2.2.300/

Host (useful for support):

 Version: 2.2.5

 Commit:  0a3c9209c0
.NET Core SDKs installed:
 2.2.300 [/usr/share/dotnet/sdk]

.NET Core runtimes installed:

 Microsoft.AspNetCore.All 2.2.5 [/usr/share/dotnet/shared/Microsoft.AspNetCore.All]

 Microsoft.AspNetCore.App 2.2.5 [/usr/share/dotnet/shared/Microsoft.AspNetCore.App]

 Microsoft.NETCore.App 2.2.5 [/usr/share/dotnet/shared/Microsoft.NETCore.App]

To install additional .NET Core runtimes or SDKs:

 https://aka.ms/dotnet-download

Теперь .NET Core готово к использованию.

В настройках по умолчанию некоторая информация об использовании команд отправляется в Microsoft, чтобы ее отключить необходимо добавить строку в конец файла настроек среды .profile:

export DOTNET_CLI_TELEMETRY_OPTOUT=1

И активировать изменения:

source ~/.profile

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

Установка F# с помощью Mono

Для установки Mono добавьте репозиторий и ключ с помощью следующих команд:

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF echo "deb https://download.mono-project.com/repo/ubuntu stable-bionic main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list

Обновите локальный репозиторий пакетов:

sudo apt update

С помощью следующей команды установите Mono и F#:

sudo apt install mono-complete fsharp

Установка Mono может занять некоторое время.

По завершении этих действий на виртуальном сервере будет установлен компилятор fsharp и fsharpi. Для активации fsharpi просто введите в консоль следующую команду:

fsharpi Чтобы проверить, что все работает верно, выведете приветственную строку:

printfn "Hello World!";;

Ожидаемый вывод:

Hello World! val it : unit = () Для выхода из оболочки используйте команду:

#quit;;

Компиляция программ на F# с помощью .NET Core

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

dotnet new console -lang F# -o FSharpHello

Здесь опция new создает новый проект, console означает, что проект консольный, -lang задает язык программирования, я опция -o создает директорию для проекта. После выполнения команды вы можете перейти в директорию:

сd FSharpHello

В каталоге находится файл конфигурации проекта FSharpHello.fsproj и каталог obj, который используется для хранения временных объектных файлов. А в файле Program.fs расположен исходный код. Откройте его в вашем текстовом редакторе:

nano Program.fs

В качестве содержимого файла будет автоматически сгенерирована программа, выводящая фразу "Hello World from F#!":

// Learn more about F# at http://fsharp.org
open System
[<EntryPoint>]
let main argv =
   printfn "Hello World from F#!"
   0 // return an integer exit code

Чтобы скомпилировать и запустить этот код, используйте следующую команду из каталога проекта ~/FSharpHello:

dotnet run

Вы увидите следующую строку в консоли:

Hello World from F#!

Компиляция программ на F# с помощью Mono

Создайте новый файл, например:

nano hello.fs

Добавьте следующие программные строки в файл:
open System
let hello() =
printf "Who are you? "
let name = Console.ReadLine()
printfn "Oh, Hello %s!\nI'm F#." name
hello()
Console.ReadKey() |> ignore

В данной программе вызывается функция hello(), которая запрашивает имя и выводит приветствие.

Для компиляции программы выполните следующую команду, очень похожую на компиляцию программ C/C++ на Linux:

fsharpc hello.fs -o hello

Чтобы запустить скомпилированный исполняемый файл выполните следующую команду:

mono hello

В консоли появится сообщение:

Who are you?

Консоль будет ожидать ввода данных. Если вы введете Admin, то вывод будет следующий:

Oh, Hello Admin!

I'm F#.

Нажмите любую клавишу и программа завершится.