# data[].attributes.body
È uma forma de computação em que vários cálculos são realizados ao mesmo tempo,[1] operando sob o princípio de que grandes problemas geralmente podem ser divididos em problemas menores, que então são resolvidos concorrentemente (em paralelo). Existem diferentes formas de computação paralela: em bit, instrução, de dado ou de tarefa. A técnica de paralelismo já é empregada há vários anos, principalmente na computação de alto desempenho, mas recentemente o interesse no tema cresceu devido às limitações físicas que previnem o aumento de frequência de processamento.

# data[].attributes.body
é um tipo de dado usado para representar uma certa quantidade de variáveis de valores homogêneos. Uma matriz é uma série de variáveis do mesmo tipo referenciadas por um único nome, onde cada variável é referenciada através de um índice entre colchetes.

# data[].attributes.attachment_link.title
Lógica de Programação - Matrizes - Definição, Declaração e  Atribuição (novo)

# data[].attributes.body
Programação lógica é um paradigma de programação que faz uso da lógica matemática. John McCarthy [1958] foi o primeiro a publicar uma proposta de uso da lógica matemática para programação.
A primeira linguagem de programação lógica foi a Planner, a qual permitia a invocação orientada a padrões de planos procedimentais de asserções e de objetivos. Com a necessidade de adaptação aos sistemas de memória muito limitada, que eram disponíveis quando ela foi desenvolvida. A linguagem Planner usava estruturas de controle de backtracking, de tal forma que apenas um único caminho computacional tinha que ser armazenado por vez. Em seguida, o Prolog foi desenvolvido como uma simplificação do Planner que permitia a invocação orientada a padrões apenas a partir de objetivos (também baseado em backtracking).[1]

# data[].attributes.attachment_link.title
O que é Lógica de Programação | Duvido você não entender agora

# data[].attributes.body
Programação declarativa é um paradigma de programação baseado em programação funcional, programação lógica e programação restritiva. Tal termo é utilizado para discernir tais linguagens em relação à linguagens de programação imperativa. Esta programação dita que o programador deve modelar um dado problema através de assertivas acerca dos objetos do universo de discurso, ou seja, definindo o relacionamento lógico existente entre a cabeça e o corpo da cláusula, e nunca descrevendo como seus procedimentos funcionam. As soluções declarativas são usualmente mais fáceis de desenvolver e possuem a clareza e limpidez da pura lógica.

# data[].attributes.attachment_link.title
PROGRAMAÇÃO DECLARATIVA COM JAVAFX: UM PARADIGMA NA CONSTRUÇÃO DE INT…

# data[].attributes.attachment_link.description
TCC apresentado em 22.08.2008 sobre a tecnologia JAVAFX

# data[].attributes.body
Programação procedural ou programação procedimental é um paradigma de programação que se baseia em procedimentos, que são executados numa sequência.Ela é derivada da programação imperativa, mas acrescentando procedimentos (em inglês, procedure calls), de forma a organizar o código em blocos que possam ser reutilizados.

# data[].attributes.attachment_link.title
O que é programação procedural e não procedural?

# data[].attributes.attachment_link.description
Li nessa resposta, mas sem muitos detalhes, que: ”[...] a programação procedural é uma evolução da programação estruturada [...]”
E nesta resposta também: [...] programação procedural é al…

# data[].attributes.body
Programação Estruturada (PE) é um padrão ou paradigma de programação da engenharia de softwares, com ênfase em sequência, decisão e, iteração (sub-rotinas, laços de repetição, condicionais e, estruturas em bloco),[1][2] criado no final de 1950 junto às linguagens ALGOL 58 e ALGOL 60.
Este paradigma é normalmente formado por código em um único bloco[2] e foi impulsionado pelas vantagens práticas que o paradigma oferece, e também pelo 'teorema do programa estruturado [en]' (de 1966, também chamado de teorema de Böhm-Jacopini) e a carta aberta de Dijkstra 'Go To Statement Considered Harmful' (de 1968). De fato, muitas linguagens não possuem GOTOs para desincentivar a programação não-estruturada (nota: Donald Knuth advogou o GOTO em algumas circunstâncias[4].

# data[].attributes.attachment_link.title
Aprenda PROGRAMAÇÃO ESTRUTURADA em 10 MINUTOS

# data[].attributes.body
é um paradigma de programação de software que descreve a computação como ações, enunciados ou comandos que mudam o estado (variáveis) de um programa.[1] Semelhante ao comportamento imperativo das linguagens naturais que expressam ordens, programas imperativos são uma sequência de comandos para o computador executar.

# data[].attributes.attachment_link.readable_text
Todos nós que somos apaixonados por programação e seus muitos paradigmas já ouvimos falar sobre programação imperativa, declarativa, reativa e tantos outros conceitos relacionados.

Em muitos eventos que eu tenho participado de desenvolvimento Web têm-se falado muito frases deste tipo:

"Uma das grandes vantagens do Angular é que ele é baseado em programação "O Javascript dá suporte a programação declarativa, imperativa e funcional". declarativa".

Mas, qual a real diferença entre estes paradigmas e por que é importante entendê-los?

A questão principal é que se você entende o paradigma ou conceitos fundamentais sob os quais uma determinada linguagem, framework ou biblioteca foram construídos, a curva de aprendizado torna-se cada vez mais rápida e a velocidade de adaptação a ele é muito maior.

Mas, sem mais delongas, vamos às características destes três conceitos.

Para se entender o que é programação imperativa, vamos primeiramente voltar ao significado original deste termo na nossa amada, querida e difícil língua portuguesa:

Imperativo: que acentua o caráter de mando, de autoridade, ou que exprime uma ordem; autoritário.

Então, imperatividade dá a ideia de dar ordens ou se dizer com todas as letras o que se deve fazer a alguém. E pode-se dizer que programação imperativa possui ideia semelhante.

Baseado em instruções e comandos, o programador diz como e o quê exatamente um programa ou rotina deve realizar. É neste paradigma que surgiram os famosos laços de repetição, estruturas condicionais, atribuição de valor à variáveis e controle de estado. A maioria de nós programadores utilizamos este paradigma de programação no nosso dia a dia sem, muitas vezes, nos darmos conta disto.

Instruções como if, while, switch e for são típicas de linguagens de programação imperativas.

Uma das principais características do paradigma declarativo é que não há preocupação na maneira ou método de execução de uma determinada rotina. Em outras palavras, o foco não está no "como" e sim no "que".

Por mais incrível que possa parecer, um dos principais exemplos de utilização de programação declarativa na nossa rotina de programador é a utilização da linguagem SQL. Quando especificamos uma simples instrução SELECT, simplesmente declaramos ao banco de dados o que queremos, sem necessidade de nos importarmos com os procedimentos que o gerenciador de banco de dados adotará para fazer funcionar corretamente a instrução. Esta característica torna o modo de programação declarativo muito mais simples e legível em comparação à programação imperativa.

Um dos principais exemplos atuais e consenso em relação aos benefícios da utilização de programação declarativa está preconizado no Angular, framework javascript que possui implementações declarativas.

Como exemplo, suponhamos que temos que implementar em uma página Web uma funcionalidade que, caso o usuário marque a opção de seleção em um controle do tipo checkbox, uma mensagem deve ser exibida, caso contrário, a mensagem deve ser ocultada.

Utilizando JQuery e o modo de programação imperativo, a implementação ficaria semelhante a isto:

Para a implementação funcionar conforme o desejado foi necessária a criação de uma função que possuísse a implementação, especificando de forma imperativa o que deveria acontecer no caso o estado do controle checkbox fosse alterado.

Caso decidíssemos utilizar Angular no nosso projeto, que possui um modo de programação declarativo, a implementação ficaria semelhante a esta:

Repararam na simplicidade? Possui exatamente o mesmo resultado da primeira implementação, mas com nenhuma linha de código adicional além do HTML. O modo de programação declarativa tem se mostrado bastante eficaz para front-end.

A programação reativa talvez não possa ser considerada um paradigma de programação como os demais citados, mas representa um conceito que tem sido amplamente utilizado nas aplicações Web modernas, onde pode haver uma complexidade extremamente alta das interações do usuário e a grande necessidade de disponibilidade das aplicações, exigindo grande performance de resposta e assincronismo. Em sistemas reativos a aplicação responde ou REAGE a eventos disparados por interações de usuário ou situações comuns em aplicações como falhas, sobrecarga de requisições, dentre outros, retornando apenas ao que foi solicitado e/ou respondendo de maneira adequada a cada situação.

Atualmente, escalabilidade é um pré-requisito cada vez mais fundamental ao se planejar a arquitetura de um sistema Web, considerando altas exigências por performance, tempo de resposta, processamento de grande quantidade de requisições simultaneamente, acesso de diversos dispositivos, dentre outras características. E aí que entra a programação reativa, juntamente com outros conceitos como microservice, computação em nuvem, etc.

E para se definir e padronizar o conceito de sistemas reativos, foi criado o Manifesto Reativo, com alguns princípios referentes a este modo de projetar as aplicações:

Basicamente, os sistemas reativos precisam atender a quatro principais características: elasticidade, resiliência, responsividade e ser orientado a mensagens. Considerando a importância destas quatro características, acho que este assunto merece um artigo exclusivo no futuro para tratarmos apenas delas.

Para dar suporte a este paradigma foram criados ou adaptados alguns frameworks e bibliotecas, como o React. js, desenvolvido e mantido pelo Facebook, e que vem sendo utilizado por grandes empresas como o Netflix.

Bom, por enquanto é só pessoal. Muito obrigado por ter lido esta postagem até o final. Espero que eu tenha contribuí

do um pouco para sua compreensão sobre estes conceitos.

Para acompanhar sobre outros conteúdos relacionados à desenvolvimento de software e eventos de tecnologia, pode me seguir nas redes sociais:

Linkedin: https://www.linkedin.com/in/alexandremalavasi

# data[].attributes.attachment_link.description
Todos nós que somos apaixonados por programação e seus muitos paradigmas já ouvimos falar sobre programação imperativa, declarativa, reativa e tantos outros conceitos relacionados. Em muitos eventos que eu tenho participado de desenvolvimento Web têm-se falado muito frases deste tipo: "Uma das grandes vantagens do Angular é que ele é baseado em programação "O Javascript dá suporte a programação declarativa, imperativa e funcional ".

# data[].attributes.body
Em ciência da computação, programação funcional é um paradigma de programação que trata a computação como uma avaliação de funções matemáticas e que evita estados ou dados mutáveis. Ela enfatiza a aplicação de funções, em contraste da programação imperativa, que enfatiza mudanças no estado do programa.

# data[].attributes.body
Programação orientada a objetos (POO, ou OOP segundo as suas siglas em inglês) é um paradigma de programaçãobaseado no conceito de "objetos", que podem conter dados na forma de campos, também conhecidos como atributos, e códigos, na forma de procedimentos, também conhecidos como métodos. Uma característica de objetos é que um procedimento de objeto pode acessar, e geralmente modificar, os campos de dados do objeto com o qual eles estão associados (objetos possuem uma noção de "this" (este) ou "self" (próprio)).

# data[].attributes.attachment_link.title
O que é Programação Orientada a Objetos - Conceitos Básicos de POO

# data[].attributes.body
Programação orientada a eventos é um paradigma de programação. Diferente de programas tradicionais que seguem um fluxo de controle padronizado, o controle de fluxo de programas orientados a evento são guiados por indicações externas, chamadas eventos.[1] Sua aplicação é grande no desenvolvimento de sistemas de interface com o usuário.
A maioria das ferramentas e arquiteturas de desenvolvimento de GUI existentes depende de programação orientada a eventos. [2] A estrutura Java AWT processa todas as alterações na interface do usuário em um único thread, chamado de thread de despacho de eventos . Da mesma forma, todas as atualizações da interface do usuário na estrutura Java JavaFX ocorrem no JavaFX Application Thread.

Programação orientada a eventos é um paradigma de programação. Diferente de programas tradicionais que seguem um fluxo de controle padronizado, o controle de fluxo de programas orientados a evento são guiados por indicações externas, chamadas eventos.[1] Sua aplicação é grande no desenvolvimento de sistemas de interface com o usuário.

A maioria das ferramentas e arquiteturas de desenvolvimento de GUI existentes depende de programação orientada a eventos. [2] A estrutura Java AWT processa todas as alterações na interface do usuário em um único thread, chamado de thread de despacho de eventos . Da mesma forma, todas as atualizações da interface do usuário na estrutura Java JavaFX ocorrem no JavaFX Application Thread.

# data[].attributes.attachment_link.readable_text
A programação orientada a eventos refere-se a um modelo de programação por computador, onde são usados ​​os eventos que determinam o fluxo de controle de um programa.

Não é um tipo de tecnologia ou linguagem de programação, mas uma abordagem implementada durante o estágio de desenvolvimento do produto. Basicamente, ele separa a lógica de processamento de eventos do restante do código de um programa.

Esse tipo de programação é projetado para descobrir eventos à medida que eles acontecem, usando um procedimento de manipulação de eventos apropriado para lidar com eles, geralmente chamando uma função ou método.

Teoricamente, o estilo desta programação é compatível com todas as linguagens de programação, embora possa ser diferente na maneira como é implementada.

Em geral, em um aplicativo orientado a eventos, há um loop principal que "escuta" novos eventos recebidos, acionando uma chamada de função quando eles são detectados. Portanto, sua operação se concentra nos eventos, decidindo o que executar e em que ordem.

Recursos de programação orientada a eventos

Dependência de eventos

O fluxo do programa é fornecido por eventos que podem ser ações do usuário, mensagens de outros programas, etc., separando a lógica de processamento dos eventos do restante do código do programa, contrastando assim com o processamento em lote.

Os eventos em si podem variar de aceitar ou rejeitar uma solicitação de empréstimo, chamada de evento de alto nível, a um usuário pressionando uma tecla, que é um evento de baixo nível.

Orientado a serviço

É usado para escrever programas projetados para o serviço sem diminuir a velocidade do computador, pois a orientação do serviço consome apenas pouco poder de processamento. Além disso, os serviços geralmente são executados no contexto do sistema operacional.

Eventos

É uma condição que surge durante a execução de um programa e requer alguma ação por parte do sistema. Cada evento é diferente por natureza, alguns exigem que o programa recupere e exiba certas informações, e outros que alguns cálculos e alterações de status são iniciados.

Os eventos incluem mouse, teclado, interface do usuário e ações a serem disparadas no programa quando elas ocorrerem. Isso significa que o usuário deve interagir com um objeto no programa, como clicar em um botão do mouse, usar o teclado para selecionar um botão etc.

É uma unidade específica do programa que é ativada para reagir a um evento. Ou seja, é um tipo de função ou método que executa uma ação específica quando um determinado evento é acionado.

Por exemplo, poderia ser um botão que, quando o usuário clica nele, exibe uma mensagem e, quando clica no botão novamente, fecha a mensagem.

Funções de ativação

São funções que decidem qual código executar quando um evento específico ocorre. Eles são usados ​​para selecionar qual manipulador de eventos usar quando ocorrer um evento.

Tempo controlado

É um código específico que é executado em um determinado momento. Isso significa que é uma tarefa predefinida a ser realizada.

A atualização do Windows é um exemplo de controle de tempo em que o usuário pode definir quando atualizar ou quando verificar e baixar a atualização.

Exemplos de programação orientada a eventos

Programas orientados a eventos tornaram-se muito comuns. Entre os exemplos mais notórios estão o processamento de texto, ferramentas de desenho, planilhas etc.

A maioria dos sistemas de mensagens modernos também segue o padrão orientado a eventos, enquanto os sites em larga escala usam arquiteturas escalonáveis ​​e orientadas a eventos de natureza distribuída. Outros exemplos são:

- Uma tecla foi pressionada (editor de texto).

- Um novo calendário de tarefas está pronto para ser distribuído a toda a equipe (sistema de gerenciamento).

- Uma mensagem HTML (servidor da web) foi recebida.

- Um padrão de comércio ilegal foi detectado (detecção de fraude).

- Um carro em um jogo de computador colide com outro carro (jogo de corrida).

- Um robô chegou ao seu destino (gerenciamento de armazém em tempo real).

Permissão de trabalho

Um exemplo prático de um evento usado na programação orientada a eventos pode ser um funcionário solicitando uma permissão de trabalho em um sistema. Quando esse funcionário emitir sua solicitação, ele ativará uma notificação que será enviada ao gerente para aprovação.

O gerente pode visualizar os detalhes da solicitação, aprová-la ou rejeitá-la, atualizando-se no sistema sem a necessidade de iniciar sessões adicionais.

Iniciação de ações

As ações de um programa que segue os fundamentos da programação orientada a eventos são iniciadas por eventos:

- De hardware.

- agendado.

- De tempo de execução.

- A partir do sistema operacional.

- Ativado por instruções do usuário fornecidas através da interação com a GUI do programa.

De maneira mais simples, os programadores precisam responder à seguinte pergunta: "O que deve acontecer quando um determinado evento ocorre?"

A seguinte rotina de pseudocódigo mostra como um agendador muito simples pode funcionar. Consiste em um loop principal que é executado continuamente até que ocorra alguma condição de terminação.

Quando um evento ocorre, o planejador deve determinar o tipo de evento e selecionar um manipulador de eventos apropriado ou manipular o evento se não houver um manipulador de eventos adequado.

Vantagem

Processamento mais rápido

Devido à disseminação de dados entre vários processadores e manipuladores de eventos.

Interatividade

Essa é a vantagem mais importante da programação orientada a eventos, melhorando a experiência do usuário. Os usuários atuais desejam participar ativamente e não permanecer consumidores passivos.

Assim, os programas baseados em eventos ajudam os usuários a navegar por sua própria experiência e a explorar uma variedade de opções, sem restrições pré-definidas.

Menos codificação de decisões

Essa abordagem de programação tem muitas vantagens para todas as partes interessadas, pois requer menos decisões de codificação do que os aplicativos tradicionais.

Muitos eventos são determinados pelas ações do usuário, em vez de terem codificação avançada para todos os cenários possíveis. Enquanto os aplicativos tradicionais agem, os aplicativos orientados a eventos reagem.

Flexibilidade

É adequado às tendências recentes da engenharia de software, como computação em nuvem, microsserviços e à necessidade de melhor escalabilidade com sistemas flexíveis e distribuídos.

Bilhetes válidos

Elimina a possibilidade de entradas com valores inválidos. Um aplicativo tradicional faz uma pergunta e permite ao usuário escrever uma resposta. Aplicativos orientados a eventos geralmente oferecem um conjunto de opções, como botões ou como menus suspensos.

Manutenção fácil

A necessidade de corrigir e ajustar o código existente ao adicionar ou remover qualquer módulo é eliminada. O sistema continua a funcionar sem problemas, independentemente de tais ajustes.

Portanto, esse planejamento é adequado para aplicativos com fluxos de controle baseados em um conjunto de eventos internos e externos, em vez de baseados na estrutura.

Desvantagens

Fluxo de controle complexo

Essa abordagem de programação não é a melhor opção para aplicativos pequenos e simples, porque os esforços que devem ser feitos não são sensatos.

O desenvolvimento de um aplicativo orientado a eventos aumenta a complexidade do design e entrega do sistema. Isso ocorre porque as arquiteturas de software tradicionais são baseadas em interações baseadas em solicitação, em vez de interações orientadas a eventos.

Além disso, também é necessária uma grande preparação devido à necessidade de loops de eventos incessantemente dinâmicos.

Não substitui a programação estruturada

Note-se que a programação orientada a eventos não substitui a programação estruturada tradicional, mas apenas a complementa.

As metodologias tradicionais de programação permanecem essenciais para escrever o programa geral, enquanto os elementos de codificação orientados a eventos servem apenas para ajudar a projetar a GUI.

Flexibilidade

A flexibilidade da programação orientada a eventos, que é sua vantagem indiscutível, também se transforma em fraude em certos cenários. Uma dessas manifestações é a imprevisibilidade de um programa orientado a eventos, caso ele tenha alterações e controle mais fraco sobre o sistema geral.

Embora os codificadores gostem de usar a programação orientada a eventos para poder fazer ajustes sem atrito, como remover ou adicionar alguns módulos funcionais, esses ajustes podem levar a alterações inesperadas na funcionalidade.

Na programação convencional, o sistema descobre essas anomalias operacionais muito rapidamente, fornecendo um relatório ao programador sobre suas causas. No ambiente de programação orientado a eventos, a detecção de tais falhas é menos rápida e fácil.

Formulários

Como a programação orientada a eventos acaba sendo mais uma abordagem do que um tipo de linguagem, aplicativos baseados em eventos podem ser criados em qualquer linguagem de programação.

A programação orientada a eventos está transformando o mundo dos serviços de desenvolvimento de software e se tornando parte integrante do desenvolvimento atual. Sua difusão foi estimulada pelo Windows e pela difusão de ambientes visuais.

Um caso de uma situação orientada a eventos seria semelhante a um timer de ativação definido para executar uma tarefa específica em um horário específico, como tocar e comunicar algo que diz "Acorde!".

Interface gráfica do usuário

Essa abordagem de programação se concentra em eventos. Suas áreas de aplicação mais comuns incluem a criação da interface gráfica do usuário (GUI), aplicativos de servidor e desenvolvimento de jogos para vários jogadores.

Embora os programas convencionais estabeleçam o fluxo de eventos e tenham controle sobre as opções do usuário, essa programação mais inovadora serviu para criar a GUI.

A GUI mudou a interação homem-computador, oferecendo aos usuários várias opções na forma de menus suspensos, janelas, botões e caixas de seleção.

Portanto, em vez de seguir a ordem padrão de ações definida pelo computador, os usuários podem escolher um dos muitos comandos disponíveis por conta própria.

Além de aplicar extensivamente essa programação em interfaces gráficas do usuário, também em aplicativos que executam determinadas ações em resposta à entrada do usuário, como aplicativos da Web JavaScript.

Referências

1. Raspal Chima (2018). Aplicativos orientados a eventos no desenvolvimento de software. Consultores de mirtilo. Retirado de: bbconsult.co.uk.

2. Quorum (2020). Criando aplicativos - Lição 1: Introdução à programação orientada a eventos. Retirado de: quorumlanguage.com.

3. Margaret Rouse (2012). Aplicativo orientado a eventos. Techtarget. Retirado de: searchitoperations.techtarget.com.

4. Ensaios do Reino Unido (2018). Recursos de programação orientada a eventos. Retirado de: ukessays.com.

5. Souvik Banerjee (2019). Programação orientada a eventos: por que é tendência agora? RS Websols. Retirado de: rswebsols.com.

6. Techopedia (2018). Programa orientado a eventos. Retirado de: roofpedia.com.

7. Technology UK (2020). Programação orientada a eventos. Retirado de: technologyuk.net.

# data[].attributes.attachment_link.title
Programação orientada a eventos: recursos, exemplos, benefícios, aplicativos - Maestrovirtuale.com

# data[].attributes.attachment_link.description
A programação orientada a eventos refere-se a um modelo de programação por computador, onde são usados ​​os eventos que determinam o fluxo de controle de um programa. Não é um tipo de tecnologia ou linguagem de programação, mas uma abordagem implementada durante o estágio de desenvolvimento do produto.

# data[].attributes.body
Programação concorrente ou programação simultânea é um paradigma de programação para a construção de programas de computador que fazem uso da execução simultânea de várias tarefas computacionais interativas, que podem ser implementadas como programas separados ou como um conjunto de threads criadas por um único.

# data[].attributes.body
Programação genérica refere-se a um tipo de abstração no processo de desenvolvimento de software, voltado para a construção de algoritmos que independem de um determinado tipo ou estrutura de dados e que, no entanto, sejam tão eficientes quanto se construídos acoplados a uma determinada estrutura.

# data[].attributes.attachment_link.authors[].name
Contribuidores dos projetos da Wikimedia

# data[].attributes.attachment_link.title
Programação genérica – Wikipédia, a enciclopédia livre

# data[].attributes.attachment_link.description
Origem: Wikipédia, a enciclopédia livre.

# data[].attributes.body
As linguagens de programação esotéricas ou esolangs são essencialmente linguagens criadas com um intuito experimental, ou seja, criar algo novo, muitas vezes estranho e fora da caixa, que seja difícil de programar.