Установка и настройка F# на Ubuntu Server
В инструкции описана установка языка программирования 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:
Добавьте репозиторий 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#.
Нажмите любую клавишу и программа завершится.