Тезисы: Многие годы доминирующей парадигмой при создании промышленных программных систем было императивное программирование. Другие парадигмы, такие, как логическое и функциональное программирование, в основном использовались в исследовательских проектах и обучении, а в индустриальном масштабе – скорее в виде исключения.
В настоящее время ситуация начинает меняться, и в индустриальных языках программирования появляется все больше мультипарадигмальных элементов. Рассматривая семейство языков на платформе .NET можно заметить, что в языке C# 3.0 появилось множество функциональных элементов, таких, как лямбда-выражения, вывод типов, замыкания и встроенный язык запросов LINQ. Это позволяет причислить C# к мультипарадигмальным языкам программирования, хотя в большей степени он остается императивным объектно-ориентированным языком, не предоставляя достаточное количество стимулов для написания кода в функциональном стиле (неизменяемые данные, лаконичный синтаксис и т.д.).
Причиной возросшего интереса к другим парадигмам программирования в области индустрии программного обеспечения является возрастающая сложность приложений, в том числе многопоточных приложений для многоядерных процессоров. Функциональное программирование с неизменяемыми структурами данных требует от программиста соответствующего подхода к решению задач, позволяющего прозводить более эффективное распараллеливание алгоритма, упрощая тем самым параллельное программирование. В дополнение к этому, функциональная парадигма обеспечивает дополнительные возможности использования функциональной абстрации, приводит к более надежному, свободному от ошибок и к более компактному программному коду.
Понимая возрастающую важность функционального подхода, Майкрософт планирует включить в следующую версию Visual Studio в качестве базового языка функциональный язык программирования F#. Будучи мультипарадигмальным языком, с такими императивными возможностями, как циклы и модифицируемые структуры данных, F# обеспечивает сквозное двустороннее взаимодействие с платформой .NET, позволяя прозрачно использовать .NET Framework из функционального кода, а также подключать к императивным проектам библиотеки, реализованные на F#. В своей основе F# тем не менее является функциональным языком, наследником OCaml и семейства ML-языков, с лаконичным синтаксисом и статической типизацией с выводом типов. За счет краткости синтаксиса и наличия псевдо-интерпретатора F# становится привлекательной опцией не только в образовательных или исследовательских сценариях, но и при разработке реальных программных систем или в качестве скриптового языка.
В данной презентации мы знакомим слушателей с языком F#, показываем несколько примеров использования языка совместно с .NET Framework (включая managed DirectX), а также обсуждаем вопросы использования функциональных языков в индустриальном программировании.