![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Why learn F#? This multi-paradigm language not only offers you an enormous productivity boost through functional programming, it also lets you develop applications using your existing object-oriented and imperative programming skills. With Programming F#, you'll quickly discover the many advantages of Microsoft's new language, which includes access to all the great tools and libraries of the .NET platform.
Learn how to reap the benefits of functional programming for your next project -- whether it's quantitative computing, large-scale data exploration, or even a pursuit of your own. With this comprehensive guide, F# team member Chris Smith gives you a head start on the fundamentals and advanced concepts of the F# language.
Любая методология разработки, инструмент, технология или язык программирования привлекает к себе внимание по разным причинам. Это может быть нечто инновационное и тогда по прошествию десятка или двух лет (!), до него таки дотянутся руки всего остального компьютерного сообщества. Так было практически со всеми идеями, которым пришлось пройти длительный путь от конференций гиков до признания широкой общественностью. Другим способом ворваться в «мейнстрим» является поддержка уже известного вендора, например такого, как компания … Майкрософт. Большинство людей инерционны и не будут вкладывать свои силы в «нонейм» инструменты, пока не удостоверятся, что их капиталовложение будет востребовано. Если же инструментом занимается подобный вендор, то риск изучить что-то, что не пригодится в будущем, очень не велик.
На самом деле такое мнение весьма близоруко, поскольку при изучении нового инструмента, языка или технологии вы развиваетесь, узнаете что-то новое и включая способности применять эти подходы в другом контексте. Это особенно справедливо, когда речь касается новых парадигм программирования, таких как функциональное программирование, которое само по себе не привязано к конкретному языку или технологии.
Если говорить о книге Криса Смита «Программирование на языке F#» (Chris Smith “Programming F#”), то в ней можно выделить несколько составляющих. Во-первых, в ней рассказывается о функциональных «фишках», таких как функции первого рода, неизменяемость, сопоставление с образцом (a.k.a. pattern matching), размеченные объединения (discriminated unions), отложенные вычисления, каррирование функций, мемоизация и т.д. Во-вторых, это некоторые функциональные возможности специфичные для языка F#, такие как вычислительные выражения (computation expressions), генерация списков и последовательностей (list comprehensions и sequence comprehensions), асинхронные выражения (async workflow) и др. Третьей составляющей является тема мультипарадигменного программирования в языке F#, в которой автор рассматривает изменяемость, императивное и объектно-ориентированное программирование. Эта тема тесно связана с межъязыковым взаимодействием, которое сводится к использованию из языка F# объектно-ориентированных библиотек, таких как BCL, а также использованию сборок, полученных на языке F# в объектно-ориентированном окружении.
Мне кажется, что книга будет наиболее полезна читателям уже знакомым с объектно-ориентированным программированием и программированием на платформе .Net, поскольку именно эти темы в книге раскрыты весьма слабо (а неточности в объектной терминологии просто напрягают). Но это не является серьезной проблемой, поскольку книг, посвященных платформе .Net и языку C# достаточно много и попытаться переплюнуть Рихтера или Скита и втиснуть в несколько глав то, чему другие авторы посвящают книги – мало реально. Но с другой стороны, «функциональная сторона» описана достаточно неплохо и информации будет вполне достаточно, чтобы читатель начал применять полученные знания на практике. А поскольку многие современные разработчики как раз таки обладают знаниями в ООП и языке C# и посматривают в сторону функционального программирования, то эта книга будет именно тем, что нужно.
З.Ы. Да, кстати, эта книга уже очень скоро должна появиться на русском языке. Я не знаю точной даты выхода, но поскольку я закончил ее редактирование пару недель назад, то речь, в любом случае, идет о неделях, а не о месяцах.
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |