F♯
| F♯ | |
|---|---|
| 120px | |
| Paradigma | funcional, imperativo, orientação a objetos |
| Surgido em | Primeira versão em 2005 (última revisão em 2009) |
| Criado por | Don Syme, Microsoft Research |
| Estilo de tipagem: | estática, forte, inferida |
| Influenciada por | Standard ML, ML, OCaml, C♯ |
F♯ é uma linguagem de programação multiparadigma para a plataforma .NET, que engloba programação funcional, imperativa e orientada a objetos. Pertence à família das linguagens ML, e é em grande parte compatível com a linguagem OCaml. Foi inicialmente desenvolvida por Don Syme na Microsoft Research, e então migrou para a Microsoft Developer Division. É distribuida como parte do Visual Studio 2010.
As propriedades desta linguagem e o seu ambiente constituem uma plataforma ideal para a informática científica porque utiliza a inferência de tipo. A performance de F# iguala-se com a linguagem OCaml, C++ e ML. É uma linguagem criada de propósito para a plataforma .NET e portanto é orientada a objetos.
Índice |
Visão Geral [editar]
Programação funcional [editar]
F# é uma linguagem de programação primeiramente funcional. Os tipos não precisam ser dadas de forma explícita pelo programador, estes são deduzidos no processo de compilação. O comando let é usado para atribuir valores ao nome. Por exemplo:
let x = 3 + 4
Programação imperativa [editar]
F# para programação de forma imperativa suporta:
forloopswhileloopsarrayshash table
Valores e campos gravados podem ser mutáveis, por exemplo:
// definindo 'x' com valor inicial '1' let mutable x = 1 // Mudando o valor de 'x' para '3' x <- 3
Programação orientado a objetos [editar]
F#, como as outras linguagens CLI, pode-se usar tipos CLI e objetos através da programação orientada a objetos. F# suporta programação voltada à objetos que inclui expressões:
- dot-notation (e.g.
x.Name) - object expressions (e.g.
{ new obj() with member x.ToString() = "hello" }) - object construction (e.g.
new Form()) - type tests (e.g.
x :? string) - type coercions (e.g.
x :?> string) - named arguments (e.g.
x.Method(someArgument=1)) - named setters (e.g.
new Form(Text="Hello")) - optional arguments (e.g.
x.Method(OptionalArgument=1)
Suporte para programação orientada em objetos em patterns inclui:
- type tests (e.g.
:? string as s) - active patterns, which can be defined over object types.1
F# tipo objeto pode ser declarado como class, struct, interface, enum ou delegado tipo definidos, correspondentes às formas encontradas no C#. Por exemplo, uma classe com um contrutor com "name" e "age" e declarando duas propriedas:
/// Uma declação de um simples objeto type Person(name : string, age : int) = member x.Name = name member x.Age = age
programação assíncrona [editar]
F# suporta programação assíncrona através de fluxos de trabalho assíncronos. Um fluxo de trabalho assíncrona é definida como uma seqüência de comandos dentro de um {async ... }, por exemplo:
let asynctask = async { let req = WebRequest.Create(url) let! response = req.GetResponseAsync() use stream = response.GetResponseStream() use streamreader = new System.IO.StreamReader(stream) return streamreader.ReadToEnd() }
Programação paralela [editar]
A programação paralela é parcialmente suportado através do Async.Parallel, Async.Start e outras operações que executam o bloco assíncrono em paralelo. A programação paralela também é suportada através de Array.Parallel funcional na biblioteca padrão do F#.
Unidades de medida [editar]
O sistema de tipos do F# suporta unidades de medida verificando pelos números. A catacterísticas da unidade de medida se integra com o tipo do F# requisitando um mínimo de anotações no código do usuário.
Metaprogramação [editar]
F# permite algumas formas de customização de sintaxe para suportar códigos de domínio específico sem a linguagem F#, particularmente através de expressões de computadores.
Publicação do código fonte [editar]
Em 4 de novembro de 2010, no blog de Don Syme, foi anunciada a liberação do código fonte sob a licença Apache 2.0.2 O compilador e as bibliotecas estão agora disponíveis como code drops no F# PowerPack no site do CodePlex.3
Ferramentas de Desenvolvimento [editar]
Pode-se programar em F# em qualquer editor de texto. Há alguns que possuem suporte específico, como o EMACS. O Visual F# da Microsoft inclui integração total com o Visual Studio. Com o serviço instalado, o Visual Studio pode ser usado para criar em debugar projetos em F#. WebSharper é um framework que permite desenvolver e manter front-ends complexos em JavaScript e HTML5, em F#. MonoDevelop é um ambiente de desenvolvimento integrado que suporta F# em Linux, Mac e Windows, incluindo suporte para o console interativo, como no Visual Studio. Sharp Develop suporta F# desde a versão 3.0. LINQPad suporta F# desde a versão 2.x.
Áreas de Aplicação [editar]
Desenvolvimento Web [editar]
F# é usado em conjunto com ASP, .NET, KnockoutJS e outros frameworks para programação Web. F# é o núcleo do WebSharper, onde ele é executado como um código .NET no servidor e como JavaScript no cliente.
Programação Analítica [editar]
Dentre outras linguagens, F# é utilizado para programação financeira quantitativa, Comércio de energia, BI e jogos do Facebook.
Comunidade de Código Aberto [editar]
A comunidade de código aberto do F# inclui “The F# Software Foundation” e “F# Open Source Group at GitHub”.
História [editar]
F# foi desenvolvida e implementada por Don Syme, no Microsoft Research, em Cambridge. Andrew Kennedy contribuiu no desenvolvimento de unidades de medidas. A linguagem F# e as ferramentas Visual F# para Windows são desenvolvidas pela Microsoft. “The F# Software Foundation” desenvolve o compilador de código aberto e ferramentas baseadas em lançamentos de código aberto do “Microsoft Visual F# Team”.
Exemplos de código [editar]
printfn "Olá, Mundo!"
- Lista com 3 inteiros
let list = [ 1; 2; 3 ]
- Criando uma classe
type Person(name : string, age : int) = member x.Name = name member x.Age = age
Referências
- ↑ Pattern Matching in F# Part 2 : Active Patterns. Página visitada em 2012-11-24.
- ↑ Announcing the F# Compiler + Library Source Code Drop (em inglês)
- ↑ Microsoft Lança F# Sob Licença Apache
Ver também [editar]
Bibliografia [editar]
- (em inglês) Expert F# - Antonio Cisternino, Adam Granicz, Don Syme - 2007 - Apress
Ligações externas [editar]
- Página oficial (em inglês)
- Introduction à F# (em francês)
- The F# Survival Guide (em inglês)