Movatterモバイル変換


[0]ホーム

URL:


Ir para o conteúdo
Wikipédia
Busca

F Sharp

Origem: Wikipédia, a enciclopédia livre.
 Nota: o título deste verbete seriaF#. Porém, devido alimitações técnicas sobre o uso decerquilhas em títulos, utilizou-seF Sharp.
 Nota: Este artigo é sobre a linguagem de programação. Para a nota/acorde musical, vejaFá sustenido.
Este artigo ou seção pode conter informações desatualizadas.Se tem conhecimento sobre o tema abordado, edite a página e inclua as informações mais recentes, citandofontesconfiáveis eindependentes. —Encontre fontes:Google (N • L • A • I • WP refs)  • ABW  • CAPES
F#
Paradigma
Surgido em2005 (20–21 anos)
Últimaversão10.0.0(11 de novembro de 2025; há 3 meses)
Criado por
Estilo de tipagem
  • estática
  • forte
  • inferida
Influenciada por
LicençaLicença MIT[2]
Extensão do arquivo
  • .fs
  • .fsi
  • .fsx
  • .fsscript
Página oficialfsharp.org

F# é umalinguagem de programaçãomultiparadigma para a plataforma.NET, que englobaprogramação funcional,imperativa eorientada a objetos. Pertence à família daslinguagens ML, e é em grande parte compatível com a linguagemOCaml. Foi inicialmente desenvolvida por Don Syme naMicrosoft Research, e então migrou para a Microsoft Developer Division. É distribuida como parte doVisual 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 linguagemOCaml,C++ e ML. É uma linguagem criada de propósito para a plataforma .NET e portanto é orientada a objetos.

Visão Geral

[editar |editar código]

Programação funcional

[editar |editar código]

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 comandolet é usado para atribuir valores ao nome. Por exemplo:

letx=3+4

Programação imperativa

[editar |editar código]

F# também suporta programação imperative, com suporte para loops (for e while, mesmo sembreak oucontinue) e valores mutáveis utilizando a palavra-chavemutable:

// definindo 'x' com valor inicial '1'letmutablex=1// Mudando o valor de 'x' para '3'x<-3

Programação orientado a objetos

[editar |editar código]

F#, como as outras linguagensCLI, 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:

  • Notação de ponto (e.g.x.Name)
  • Expressões de objecto (e.g.{ new obj() with member x.ToString() = "Olá!" })
  • Construção de objecto (e.g.new Form())
  • Testes de tipo (e.g.x :? string)
  • Coerções de tipo (e.g.x :?> string)
  • Argumentos com nome (e.g.x.Method(someArgument=1))
  • Argumentos opcionais (e.g.x.Method(optionalArgument=1, ?optionalArgument=Some 1)

Suporte para programação orientada em objetos em padrões inclui:

  • Testes de tipo (e.g.:? string as s)
  • Padrões ativos, que podem ser definidos sobre tipos de objetos.[3]

Objetos em F# podem ser declarados comoclass,struct,interface ou delegado tipo definidos, correspondentes às formas encontradas no C#. Por exemplo, uma classe com um construtor com "name" e "age" e declarando duas propriedades:

// Uma declação de um simples objetotypePerson(name:string,age:int)=memberx.Name=namememberx.Age=age

Programação assíncrona

[editar |editar código]

F# suporta programação assíncrona através de fluxos de trabalho assíncronos. Um fluxo de trabalho assíncrona é definida como uma sequência de comandos dentro de umasync { ... }(outask { ... } para interopabilidade com as Tasks .NET), por exemplo:

letfetchurl=async{letrequest=WebRequest.Create(url)let!response=request.GetResponseAsync()useresponseStream=resposta.GetResponseStream()usestreamReader=newSystem.IO.StreamReader(responseStream)returnstreamReader.ReadToEnd()}

F# também suporta programação orientada a atores (como em Erlang e Elixir) utilizando oMailboxProcessor:

// Tipo de mensagem enviada para o atortypeMessage=|Increment|Decrement|GetofAsyncReplyChannel<int>// Cria e inicia o atorletcounter=MailboxProcessor.Start(funinbox->async{// Loop que recebe uma mensagemletrecloop(count:int)=async{let!message=inbox.Receive()matchmessagewith|Increment->return!loop(count+1)|Decrement->return!loop(count-1)|Contagemchannel->channel.Replycountreturn!loopcount}// Inicia o loop para fazer com que o ator execute indefinidamentereturn!loop0})counter.PostIncrementcounter.PostIncrementcounter.PostDecrementletcount=counter.PostAndReplyGetprintfn"A contagem é de %i"count// 1

Programação paralela

[editar |editar código]

A programação paralela é parcialmente suportado através doAsync.Parallel,Async.Start e outras operações que executam o bloco assíncrono em paralelo.A programação paralela também é suportada através deArray.Parallel funcional na biblioteca padrão do F#.

Unidades de medida

[editar |editar código]

O sistema de tipos do F# suporta unidades de medida verificando pelos números. A catacterísticas daunidade 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 |editar código]

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.

JavaScript

[editar |editar código]

F# pode compilar paraJavaScript utilizando o compiladorFable (Também pode compilar para outras como Dart, TypeScript, Rust e Python).

Publicação do código fonte

[editar |editar código]

Em 4 de novembro de 2010, no blog de Don Syme, foi anunciada a liberação do código fonte sob alicença Apache 2.0.[4] O compilador e as bibliotecas estão agora disponíveis como um repositório noGitHub[5]

Ferramentas de Desenvolvimento

[editar |editar código]

Pode-se programar em F# em qualquer editor de texto. Há alguns que possuem suporte específico, como o EMACS.O Visual F# daMicrosoft 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 é umframework 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 eWindows, 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 |editar código]

Desenvolvimento Web

[editar |editar código]

F# é usado em conjunto comASP,.NET,KnockoutJS e outros frameworks para programação Web.F# é o núcleo doWebSharper, onde ele é executado como um código .NET no servidor e comoJavaScript no cliente.

Programação Analítica

[editar |editar código]

Dentre outras linguagens, F# é utilizado para programação financeira quantitativa, Comércio de energia, BI e jogos doFacebook.

Comunidade de Código Aberto

[editar |editar código]

A comunidade de código aberto do F# inclui “The F# Software Foundation” e “F# Open Source Group at GitHub”.

História

[editar |editar código]

F# foi desenvolvida e implementada por Don Syme, noMicrosoft 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 |editar código]
Programa Olá Mundo
printfn"Olá, Mundo!"
Lista com três inteiros
letlist=[1;2;3]
União discriminada
typeMyDU=|Item1|Item2ofint*int|Item3ofvalue1:string*value:int
Criando uma classe
typePerson(name:string,age:int)=memberx.Name=namememberx.Age=age
Tipos nulos[6] (F# 9)
letvariable:string|null=nullletcheckNull(v:'t|null)=// Função para verificar se uma variável é nula.matchvwith|null->true// É nulo.|_->false// Não é nulo.checkNullvariable// true

Fable

openFable.Core// Implementa a função alert(texto) do javascript.[<Global>]letalert:string->unit=jsNative// Diz hello world no navegador.alert"Hello World from JS"

Unidades de medida

[<Measure>]typeh// horas[<Measure>]typekm// quilômetrosletvelocidade=30.0<km/h>

Ver também

[editar |editar código]

Referências

  1. Syme, Granicz & Cisternino (2007):2 "F# also draws from Haskell particularly with regard to two advanced language features calledsequence expressions andworkflows."
  2. «Licensa do F#» 
  3. «Pattern Matching in F# Part 2 : Active Patterns». Consultado em 24 de novembro de 2012 
  4. Announcing the F# Compiler + Library Source Code Drop (em inglês)
  5. «dotnet/fsharp». Consultado em 8 de junho de 2021 
  6. Whats new in F# 9 Consultado em 26 de dezembro de 2024

Bibliografia

[editar |editar código]
  • (em inglês)Expert F# -Antonio Cisternino, Adam Granicz, Don Syme - 2007 - Apress

Ligações externas

[editar |editar código]
Obtida de "https://pt.wikipedia.org/w/index.php?title=F_Sharp&oldid=71225186"
Categorias:
Categorias ocultas:

[8]ページ先頭

©2009-2026 Movatter.jp