No mundo de hoje, F Sharp é um tópico que tem chamado a atenção de pessoas de todas as idades e origens. Seja pelo seu impacto na sociedade, pela sua relevância no campo profissional ou pela sua influência na cultura popular, F Sharp posicionou-se como um tema de interesse geral que gera todo o tipo de opiniões e debates. Da sua origem às suas possíveis consequências, F Sharp tem despertado o interesse de acadêmicos, ativistas, formadores de opinião e do público em geral, tornando-se objeto de estudo e inúmeras discussões. Neste artigo exploraremos diferentes aspectos relacionados a F Sharp e sua importância no mundo atual.
![]() | Este artigo ou seção pode conter informações desatualizadas. |
F# | |
---|---|
![]() | |
Paradigma | |
Surgido em | 2005 (19–20 anos) |
Última versão | 9.0.0 (12 de novembro de 2024 | )
Criado por |
|
Estilo de tipagem |
|
Influenciada por | |
Licença | Licença MIT[2] |
Extensão do arquivo |
|
Página oficial | fsharp |
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 2019 e como parte do .NET.
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.
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
F# para programação de forma imperativa suporta:
for
loopswhile
loopsarrays
hash 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
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:
x.Nome
){ new obj() with member x.ToString() = "olá" }
)new Form()
)x :? string
)x :?> string
)x.Method(someArgument=1)
)x.Method(OptionalArgument=1)
Suporte para programação orientada em objetos em padrões inclui:
:? string as s
)Objetos em F# podem ser declarados como class
, struct
, interface
, enum
ou delegado tipo definidos, correspondentes às formas encontradas no C#. Por exemplo, uma classe com um contrutor com "nome" e "idade" e declarando duas propriedades:
/// Uma declação de um simples objeto
type Person(nome : string, idade : int) =
member x.Nome = nome
member x.Idade = idade
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 url =
async {
let pedido = WebRequest.Create(url)
let! resposta = pedido.GetResponseAsync()
use fluxoDeResposta = resposta.GetResponseStream()
use leitorDeFluxo = new System.IO.StreamReader(fluxoDeResposta)
return leitorDeFluxo.ReadToEnd()
}
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#.
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.
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 computacionais.
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.[4] O compilador e as bibliotecas estão agora disponíveis como um repositório no GitHub[5]
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 depurar 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.
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.
Dentre outras linguagens, F# é utilizado para programação financeira quantitativa, Comércio de energia, BI e jogos do Facebook.
A comunidade de código aberto do F# inclui “The F# Software Foundation” e “F# Open Source Group at GitHub”.
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”.
printfn "Olá, Mundo!"
let list =
type UniaoDiscriminada =
| Item1
| Item2 of int * int
| Item3 of valor1: string * valor2: int
type Person(name : string, age : int) =
member x.Name = name
member x.Age = age
let variavel: string | null = null
let checkNull (v: 't | null) = // Função para verificar se uma variável é nula.
match v with
| null -> true // É nulo.
| _ -> false // Não é nulo.
checkNull variavel // true