Pull to refresh

Влюбляемся в F#: Доза 0: Зачем нужен ещё один язык программирования?

Reading time 3 min
Views 34K

Дорогие Хабраколлеги!



Хочу предложить вашему вниманию возможность приобщиться еще к одному языку программирования: F#. Идея писать такого рода заметки возникла из жизни — по роду своей деятельности мне приходится рассказывать про F#, и когда меня спрашивают, где можно попродробнее прочитать об этом языке — приходится ссылаться на англоязычные ресурсы. Поэтому я решил потихоньку рассказывать про F# в своем блоге, а теперь еще и на хабре, увидев замечательное сообщество стартап-программист. Поскольку F# — очень красивый язык, который никого не оставит равнодушным — я решил озаглавить цикл статей "влюбляемся в F#", а каждую из статей называть "дозой": по окончании их употребления вы должны будете подсесть на F#, а я буду мучительно эксплуатировать ваше терпение, делая вынужденные (из-за недостатка времени) перерывы между дозами.



Недавно было объявлено, что в составе стандартной поставки Visual Studio 2010 появится, помимо Visual Basic и C#,  ещё один язык программирования: F#. Это, как можно догадаться по названию, язык преимущественно функционального программирования, берущий своё начало в языках OCaml, ML и т.д. Хотя кто-то мог ошибочно догадаться, что это реализация Fortran для .NET :)



Почему “преимущественно функционального”? Потому, что это также и объектно-ориентированный язык, прекрасно интегрирующийся с платформой .NET, и немножно императивный. Можно рассматривать F# как полноценное пришествие функционального программирования на платформу .NET (в смысле его индустриальной доступности), а можно и как еще один .NET-язык с множеством “причуд” и со странным, но очень компактным синтаксисом. Судите сами, вот как записывается на F# быстрая сортировка Хоара (для сравнения посмотрите, как выглядят алгоритмы, записанные на C или Pascal, по ссылке):



let rec quicksort = function
  [] -> []
  | h::t -> quicksort ([ for x in t when x<=h -> x]) 
            @ [h] @ quicksort ([ for x in t when x>h -> x]);;


Зачем же Майкрософт начал в последние несколько лет вкладывать усилия в функциональный язык, да еще и ставить его в один ряд с “основными” языками платформы .NET? Ведь известно, что функциональное программирование не слишком используется в индустиальном программировании!



На то есть причины. В последнем выпуске Dr.Dobb’s Journal есть целая статья, посвященная этому вопросу. Одна из основных причин – функциональное программирование позволяет проще писать многопоточные приложения для многоядерных процессоров. Почему это так – мы рассмотрим в следующем уроке, где будем говорить о том, что же такое функциональное программирование. Кроме того, функциональные программы не допускают или минимизируют побочные эффекты, что увеличивает надежность программ и упрощает отладку. В целом можно сказать, что функциональное программирование позволяет нам писать в несколько раз меньше кода, но при этом заставляет больше думать. Если Вы любите работать головой, а не пальцами – обратите внимание на F# и на функциональное программирование. А я постараюсь вам помочь сделать это безболезненно, на русском языке.



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



Майкрософт в реализации Visual Studio позиционирует F# как язык, удобный для решения различных задач обработки данных. В то же время не предполагается (хотя это и возможно), что F# будет широко использоваться для построения пользовательских интерфейсов, поэтому поддержки F# со стороны визуальных дизайнеров не обещается.



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



Сейчас же с удовольствием отвечу на ваши вопросы и приму пожелания по поводу того, о каких аспектах языка F# вы бы хотели услышать в первую очередь. Все это – в комментариях ниже, или в группе вконтакте. Также поделитесь, используйте ли вы функциональные языки программирования в работе? Преподавали ли вам функциональное программирование в вузе? Мне будет интересно услышать, насколько знакома аудитория моих читателей с функциональным программированием!


Tags:
Hubs:
+51
Comments 93
Comments Comments 93

Articles