• Расширяем C# с помощью Roslyn. Безопасные вызовы

      У вас никогда не возникало ощущения, что в языке X, на котором вы в данный момент программируете чего-то не хватает? Какой-нибудь небольшой, но приятной плюшки, которая может и не сделала бы вашу жизнь абсолютно счастливой, но определенно добавила бы немало радостных моментов. И вот вы с черной завистью посматриваете на язык Y, в котором эта штуковина есть, грустно вздыхаете и тайком льете по ночам слезы бессилия в любимую подушку. Бывало?
      Будем лечить
    • Нововведения F# 3.0

        На прошедшей недавно конференции Build кроме уже широко освещенной и обсужденной презентации Windows 8, Metro UI и WinRT было еще немало интересного. В том числе, Дон Сайм и его команда представили developer preview новой, третьей по счету, версии языка программирования F#, который является частью developer preview Visual Studio 11 (и, кстати, уже может быть опробована вами по ссылке).

        Читать дальше →
        • +38
        • 2.6k
        • 8
      • Почему мне не нравится Веб 2.0

          image
          Впервые решил написать что-то не про F#, и может, зря. :)
          Наверно, прочитав нижеследующее, одни скажут, что это просто бесформенный поток мыслей, другие сочтут меня ретроградом, третьи — Дон Кихотом, борющимся с ветряными мельницами. Возможно. Но иногда почему бы и не побороться.
          Да, мне не нравится Веб 2.0, даже не весь Веб 2.0, а конкретная его часть, однако часть, я бы сказал, довольно образующая. Ведь как чаще всего определяют текущее состояние интернета? Как эпоху user-generated content. И что же является главным апологетом этой концепции, как не блогосфера? Так вот, мне не нравятся блоги. Да и не сами блоги, а главным образом способ их использования.
          Читать дальше →
        • Об F# для архитекторов

          • Translation
          Данная статья выросла из доклада, сделанного Крисом Смитом, одним из разработчиков F# на конференции DevLink. В целом она носит обзорный характер, однако несмотря на это, и на то, что усилиями shwars, mezastel и отчасти вашего покорного слуги F# уже не раз мелькал на Хабре, думаю что этот язык программирования не стал еще настолько очевиден всем, чтобы эта статья полностью потеряла смысл. Более того, здесь Крис пытается ответить на главный вопрос, который, думаю, мучает всех, кто хоть раз слышал о F#. Где же все-таки его применять? Получилось у него или нет – вам судить. Надеюсь после прочтения у вас хоть что-то относительно всего этого прояснится. Если так, я буду считать свою миссию перевыполненной :)
          P.S. Первый перевод, поэтому не обессудьте за некоторые возможные баги.
          image
          Читать дальше
        • Катаморфизм в F#

            Введение


            Упомяну сразу, данная статья написана по мотивам целой серии постов в отличном блоге Inside F#. Тем не менее она не является переводом в чистом виде, а скорее вольным изложением, чтобы доступным языком объяснить — что же за зверь такой, катаморфизм, и с чем его едят. Слово это думаю не очень на слуху, чего стоит хотя бы тот факт, что статьи по нему нет в русской википедии (и вообще ни в одной национальной, кроме почему-то голландской. Наверно ФП как-то соответсвует духу травокурения)
            Итак, строго говоря, катаморфизм в функциональном программировании — это обобщение свертки списков, которые (как я уже рассказывал) являются специфическим типом размеченного объединения, на произвольные размеченные объединения.
            Читать дальше →
          • F# на практике

              Введение


              Пожалуй два наиболее часто задаваемых (следовательно, животрепещущих) вопроса в комментариях к моей обзорной статье о F# были следующие:
              1. Почему он так похож на OCaml?
              2. На кой черт он вообще сдался?
              Ответ на первый вопрос не представляет особой сложности — он так похож на OCaml, потому что сделан целиком и полностью на его основе. Хорошо это или плохо? Да скорее хорошо, это явно лучше, чем придумывать совершенно новый синтаксис, который еще не известно, насколько будет хорош. Плюс к тому, по OCaml достаточно много документации, так что даже на первых порах проблем с (само)обучением быть не должно.
              Со вторым вопросом разобраться куда сложнее, особенно сейчас, когда язык пребывает в состоянии беты и является пока что лишь объектом изучения излишне любознательных программистов. Однако несмотря на довольно краткое с ним знакомство, мне уже довелось разок применить его для достижения вполне прагматических целей, о чем и поведаю в этом небольшом посте.
              Заранее оговорюсь, конечно же, не последнее, что побудило меня решать поставленную задачу именно на F# — желание попрактиковаться в новом языке. Конечно же, программу можно было написать и на C#, и возможно она получилась бы ненамного длиннее (повторюсь, возможно, я не проверял). Так или иначе, программа была написана, и дело свое сделала.
              Читать дальше →
            • Три парадигмы F#

                Введение


                Все, кто так или иначе связан с .NET программированием знает, что уже в следующую версию Visual Studio будет встроен новый язык программирования — F#, который позиционируется как функциональный, чем сразу, так уж повелось, вызывает подозрения в бесполезности. Для того, чтобы показать, что F# — куда больше, чем просто ФЯП (хотя и просто ФЯП — это очень немало), я и написал все нижеследующее.
                Эта статья, несмотря на изрядную длину, не претендует на то, чтобы полностью описать всю функциональность языка. Это всего лишь краткий обзор, призванный продемонстрировать широкий спектр возможностей, каждая из которых заслуживает отдельной статьи, и даже не одной.
                Кроме того, написав такой пространный пост, я хотел сделать задел на будущее, чтобы в дальнейшем мне не отвлекаться на незначительные вещи базового уровня. Конечно, сразу головой в пруд — это действенно, но и какой-никакой фундамент не помешает.
                А уже в следующий раз я приведу пример на волнующую тему пригодности F# для обычной профессиональной программистской деятельности.
                И еще раз, под катом действительно МНОГО текста. И не говорите потом, что я вас не предупреждал. =)
                Читать дальше →
              • Интерпретатор для HQ9+ на F#

                  Пока полномасштабная статья про поддержку F# различных парадигм еще готовится к выпуску, постараюсь занять ваше внимание некоторыми приятными и не отягощающими мелочами.
                  Вот скажите, знаете ли вы, что есть на свете такой замечательный язык программирования, как HQ9+? А чем же он такой замечательный? Ну например, назовите еще хоть один язык, где легендарная программа «Hello, world!» состоит из одного символа. Заметьте, не строки, не оператора, а символа — «H». Более того, этот язык настолько хорош, что куайн для него записывается тоже одним символом -«Q».
                  Читать дальше →
                • Решаем Project Euler на F#: Задачи 3, 7, 10

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

                    Простые числа
                  • Решаем Project Euler на F#: Задача 1

                      Прочитав первые несколько статей из цикла Влюбляемся в F#, я и в самом деле, если не влюбился в него, то по меньшей мере заинтересовался. Настолько, что не вытерпел ожидания следующей дозы и решил продолжить изучение самостоятельно.
                      В процессе луркинга я наткнулся на чрезвычайно увлекательный сайт Project Euler, который на мой взгляд, как нельзя лучше подходит, чтобы постепенно изучить все, или по крайней мере большинство тонкостей F#. Сейчас я предлагаю для начала рассмотреть решение самой первой задачи с этого сайта. Она очень простая, и ее решение думаю не вызовет сложностей даже у тех, кто знаком с F# только по вышеприведенной статье. Итак…
                      Задача 1