935 resultados para Linguagem de programação funcional adaptativa
Resumo:
A programming style can be seen as a particular model of shaping thought or a special way of codifying language to solve a problem. Adaptive languages have the basic feature of allowing the expression of programs which self-modifying through adaptive actions at runtime. The conception of such languages calls for a new programming style, since the application of adaptive technology in the field of programming languages suggests a new way of thinking. With the adaptive style, programming language codes can be structured in such a way that the codified program therein modifies or adapts itself towards the needs of the problem. The adaptive programming style may be a feasible alternate way to obtain self-modifying consistent codes, which allow its use in modern applications for self-modifying code.
Resumo:
No projeto de arquiteturas computacionais, a partir da evolução do modelo cliente-servidor, surgiram os sistemas distribuídos com a finalidade de oferecer características tais como: disponibilidade, distribuição, compartilhamento de recursos e tolerância a falhas. Estas características, entretanto, não são obtidas de forma simples. As aplicações distribuídas e as aplicações centralizadas possuem requisitos funcionais distintos; aplicações distribuídas são mais difíceis quanto ao projeto e implementação. A complexidade de implementação é decorrente principalmente da dificuldade de tratamento e de gerência dos mecanismos de comunicação, exigindo equipe de programadores experientes. Assim, tem sido realizada muita pesquisa para obter mecanismos que facilitem a programação de aplicações distribuídas. Observa-se que, em aplicações distribuídas reais, mecanismos de tolerância a falhas constituem-se em uma necessidade. Neste contexto, a comunicação confiável constitui-se em um dos blocos básicos de construção. Paralelamente à evolução tanto dos sistemas distribuídos como da área de tolerância a falhas, foi possível observar também a evolução das linguagens de programação. O sucesso do paradigma de orientação a objetos deve-se, provavelmente, à habilidade em modelar o domínio da aplicação ao invés da arquitetura da máquina em questão (enfoque imperativo) ou mapear conceitos matemáticos (conforme o enfoque funcional). Pesquisadores demonstraram que a orientação a objetos apresenta-se como um modelo atraente ao desenvolvimento de aplicações distribuídas modulares e tolerantes a falhas. Diante do contexto exposto, duas constatações estimularam basicamente a definição desta dissertação: a necessidade latente de mecanismos que facilitem a programação de aplicações distribuídas tolerantes a falhas; e o fato de que a orientação a objetos tem-se mostrado um modelo promissor ao desenvolvimento deste tipo de aplicação. Desta forma, nesta dissertação definem-se classes para a comunicação do tipo unicast e multicast, nas modalidades de envio confiável e não-confiável. Além destes serviços de comunicação básicos, foram desenvolvidas classes que permitem referenciar os participantes da comunicação através de nomes. As classes estão organizadas na forma de um pacote, compondo um framework. Sua implementação foi desenvolvida usando Java. Embora não tivessem sido requisitos básicos, as opções de projeto visaram assegurar resultados aceitáveis de desempenho e possibilidade de reuso das classes. Foram implementados pequenos trechos de código utilizando e testando a funcionalidade de cada uma das classes de comunicação propostas.
Resumo:
Neste estudo são discutidos alguns aspectos relacionados à escolha da primeira linguagem de programação em currículos de ciência da computação, com interesse especial em Pascal e Java. A primeira linguagem é amplamente adotada para ensinar programação aos novatos, enquanto a segunda está ganhando popularidade como uma linguagem moderna e abrangente, que pode ser usada em muitas disicplinas ao longo de um curso degraduação em computação como ferramenta para ensinar desde recursos básicos de programação até tópicos mais avançados. Embora vários problemas quanto ao ensino de Java, com a primeira linguagem de programação, possam ser apontadas, consideramosque Java é uma boa escolha, visto que (a) oferece apoio a importantes questões conceituais e tecnológicos e, (b) é possível contornar algumas complexidades da linguagem e da plataforma Java para torná-las mais adequadas à alunos iniciantes. Além disso, considerando a grande popularidade de Pascal nos currículos de cursos de computação, uma eventual adoção de Java conduz à outro problema: a falta de professores aptos a lecionar programação orientada a objetos. Sugerimos que este problema de migração de Pascal para Java seja enfrentado através de smplificação do ambiente de desenvolvimento de programas, uso de um pacote com classes que facilitam a entrada e saída, e o desenvolvimento de um catálogo comparativo de programas implementados em ambas as linguagens. Neste estudo também é apresentado o JEduc, um IDE muito simples com o objetivo de dar suporte ao ensino da linguagem de programação orientada a objetos Java aos novatos. Oferece componentes desenvolvidos em Java que integram edição, compilação e execução de programas Java. Além das funcionalidades comuns a um IDE, JEduc foi desenvolvido para gir como uma ferramente pedagógica: simplifica a maioria das mensagens do compilador e erros da JRE, permite a inserção de esqueletos de comandos, e incorpora pacotes especiais para esconder alguns detalhes sintáticos e semânticos indesejáveis.
Resumo:
A simulação é uma das ferramentas mais utilizadas para a aplicação da análise sistêmica nos mais diversos estudos. Ao longo do tempo, vários modelos foram desenvolvidos para representar sistemas de recursos hídricos, utilizando a simulação. Dentre esses modelos, está o Propagar MOO, que simula a propagação de vazões em uma bacia hidrográfica, submetida à decisões operacionais de suprimento de demandas e de operação de reservatórios, introduzidas pelo usuário através de rotinas escritas na linguagem de programação Pascal Script. A utilização eficiente dessas rotinas permite ao usuário ampliar a capacidade e flexibilidade do modelo na representação de um sistema hídrico. Com o objetivo de contribuir na ampliação da flexibilidade do modelo Propagar MOO e de sua aplicabilidade à modelagem de sistemas de recursos hídricos em geral, bem como facilitar o estudo da linguagem de programação Pascal Script e motivar os profissionais da área no desenvolvimento de novas rotinas aplicadas ao modelo, foram implementadas, através do presente trabalho, rotinas genéricas contendo estratégias de planejamento do uso da água e de operação de reservatórios, bem como ferramentas para analisar seus resultados. Para ampliar essa contribuição, foi aprimorada a possibilidade de simulação da geração de energia hidrelétrica em pontos de uma rede hidrográfica, com a criação de novas ferramentas para esse fim, na estrutura interna do modelo. Por fim, para que o próprio usuário pudesse construir ferramentas para auxiliar na verificação dos resultados obtidos nas simulações, esse estudo apresenta a implementação de rotinas de uso geral para servir como exemplos de ferramentas de análise de dados.
Resumo:
Em vista da maior complexidade da programação paralela e distribuída em relação à programação de ambientes centralizados, novas ferramentas vêm sendo construídas com o objetivo de auxiliar o programador desses ambientes a desempenhar sua tarefa de formas mais eficazes e produtivas. Uma das ferramentas que há algum tempo tem sido usada na programação centralizada e aos poucos está sendo empregada também na programação concorrente é a programação visual. A programação visual se vale da presença de elementos visuais na especificação dos programas como peças chaves do processo de desenvolvimento de software. No caso específico da programação concorrente, a programação visual é especialmente útil pela capacidade que os gráficos têm de representar de forma mais adequada estruturas bidimensionais. Um programa concorrente, por relacionar no espaço diversos elementos com seus próprios fluxos de execução, faz surgir duas dimensões de análise que são mais difíceis de serem observadas através de programas textuais. Atualmente existem ferramentas de programação visual paralela e distribuída, mas a ênfase é dada na programação paralela, sem muita atenção a aplicações de sistemas abertos ou cliente-servidor. Além disso, tais ferramentas sofrem da falta de apoio à engenharia do software. Considerando essas deficiências, este trabalho apresenta uma ferramenta de programação visual para o desenvolvimento de aplicações compostas por objetos distribuídos que ofereça também a possibilidade de aplicar os principais conceitos da engenharia de software, como reutilização e orientação a objeto. Nesta ferramenta, o programador especifica de maneira visual a estrutura do seu programa, insere o código textual para a lógica da aplicação e o ambiente se encarrega do tratamento da distribuição e da comunicação de mais baixo nível. A aplicação é representada como um grafo dirigido, onde os nodos representam os objetos distribuídos e os arcos indicam os relacionamentos existentes entre esses objetos. A especificação dos programas é modular, baseando-se na reunião de componentes reutilizáveis, o que torna o sistema altamente configurável e extensível. Tanto a implementação da ferramenta quanto o código das aplicações geradas usam a linguagem de programação Java. A linguagem de programação visual projetada não especifica detalhes a respeito de como irá funcionar a comunicação e distribuição dos objetos. Portanto, foram implementados componentes para comunicação e outros recursos de programação distribuída, como locks e dados globais para serem usados nas aplicações. Para validar os principais objetivos da ferramenta, foram implementados alguns exemplos de aplicações distribuídas, como um pequeno sistema de bate-papo.
Resumo:
Este trabalho tem por objetivo apresentar e estudar a aplicação de uma ferramenta chamada PCP – Pseudo-Compilador Portugol, criada para auxiliar estudantes de programação a aprimorar o raciocínio lógico e a criar programas estruturados, sem que precisem se preocupar com comandos e instruções em Inglês ou tenham conhecimento de uma linguagem de programação específica. Por ser uma ferramenta que usa somente palavras do nosso idioma, os alunos podem direcionar todo o seu raciocínio no entendimento e resolução do problema em forma de algoritmo. O estudo experimental realizado neste trabalho pretende analisar e comparar o aprendizado entre grupos de alunos de disciplinas de programação utilizando e não utilizando esta ferramenta. Além de acompanhar o desempenho dos alunos, pretende também coletar informações durante as baterias de testes e obter as opiniões dos mesmos em relação ao PCP, no que se refere às facilidades, dificuldades, pontos positivos e falhas apresentadas. Este estudo é apresentado em duas etapas, com oito baterias de teste em cada uma. Na primeira etapa foram selecionados alunos do Curso de Ciência da Computação da UNIGRAN, em Dourados-MS; na segunda etapa foram selecionados alunos da Escola Anglo Decisivo. Estas duas etapas possibilitam a análise do aprendizado proporcionado pela ferramenta com alunos que já têm alguma noção de programação e com alunos que não tiveram nenhum contato com o desenvolvimento de programas.
Resumo:
Este trabalho apresenta um mapeamento centrado nas construções não usuais da linguagem Nautilus, para a linguagem convencional, no caso Java, mantendo propriedades com atomicidade que são requisitos da semântica formal da linguagem. Nautilus é originalmente uma linguagem de especificação baseada em objetos, textual que suporta objetos concorrentes e não deterministas. Desde então a linguagem foi modificada aom extensões como classes e uma notação diagramática, além de se investigar seu uso como linguagem de programação. Suas construções incomuns (reificação, agregação, etc.) são baseados em seu domínio semântico: Automâtos Não Sequenciais. Este domíno satisfaz composição diagonal, i.e refinamentos se compõem (verticalmente) refletindo uma descrição gradual de sistemas, envolvendo múltiplos níveis de abstração, e distribui-se através de combinadores (horizontalmente), o que significa que o refinamento de um sistema composto é a combinação de do refinamento de suas partes.O trabalho inclui um mapeamento inicial de um subconjunto da linguagem(objeto base, reificação, agregação e visão), uma versão ampliada para abranger mais construções( interação e classes), e uma versão refinada mais concorrente e sugestões de modificação na linguagem.
Resumo:
Esse trabalho de dissertação está incluído no contexto das pesquisas realizadas no Grupo de Processamento Paralelo e Distribuído da UFRGS. Ele aborda as áreas da computação de alto desempenho, interfaces simples de programação e de sistemas de interconexão de redes velozes. A máquina paralela formada por agregados (clusters) tem se destacado por apresentar os recursos computacionais necessários às aplicações intensivas que necessitam de alto desempenho. Referente a interfaces de programação, Java tem se mostrado uma boa opção para a escrita de aplicações paralelas por oferecer os sistemas de RMI e de soquetes que realizam comunicação entre dois computadores, além de todas as facilidades da orientação a objetos. Na área a respeito de interconexão de rede velozes está emergindo como uma tentativa de padronização a nova tecnologia Infiniband. Ela proporciona uma baixa latência de comunicação e uma alta vazão de dados, além de uma série de vantagens implementadas diretamente no hardware. É neste contexto que se desenvolve o presente trabalho de dissertação de mestrado. O seu tema principal é o sistema Aldeia que reimplementa a interface bastante conhecida de soquetes Java para realizar comunicação assíncrona em agregados formados por redes de sistema. Em especial, o seu foco é redes configuradas com equipamentos Infiniband. O Aldeia objetiva assim preencher a lacuna de desempenho do sistema padrão de soquetes Java, que além de usar TCP/IP possui um caráter síncrono. Além de Infiniband, o Aldeia também procura usufruir dos avanços já realizados na biblioteca DECK, desenvolvida no GPPD da UFRGS. Com a sua adoção, é possível realizar comunicação com uma interface Java sobre redes Myrinet, SCI, além de TCP/IP. Somada a essa vantagem, a utilização do DECK também proporciona a propriedade de geração de rastros para a depuração de programas paralelos escritos com o Aldeia. Uma das grandes vantagens do Aldeia está na sua capacidade de transmitir dados assincronamente. Usando essa técnica, cálculos da aplicação podem ser realizados concorrentemente com as operações pela rede. Por fim, os canais de dados do Aldeia substituem perfeitamente aqueles utilizados para a serialização de objetos. Nesse mesmo caminho, o Aldeia pode ser integrado à sistemas que utilizem a implementação de soquetes Java, agora para operar sobre redes de alta velocidade. Palavras-chave: Arquitetura Infiniband, agregado de computadores, linguagem de programação Java, alto desempenho, interface de programação.
Resumo:
Java Card technology allows the development and execution of small applications embedded in smart cards. A Java Card application is composed of an external card client and of an application in the card that implements the services available to the client by means of an Application Programming Interface (API). Usually, these applications manipulate and store important information, such as cash and confidential data of their owners. Thus, it is necessary to adopt rigor on developing a smart card application to improve its quality and trustworthiness. The use of formal methods on the development of these applications is a way to reach these quality requirements. The B method is one of the many formal methods for system specification. The development in B starts with the functional specification of the system, continues with the application of some optional refinements to the specification and, from the last level of refinement, it is possible to generate code for some programming language. The B formalism has a good tool support and its application to Java Card is adequate since the specification and development of APIs is one of the major applications of B. The BSmart method proposed here aims to promote the rigorous development of Java Card applications up to the generation of its code, based on the refinement of its formal specification described in the B notation. This development is supported by the BSmart tool, that is composed of some programs that automate each stage of the method; and by a library of B modules and Java Card classes that model primitive types, essential Java Card API classes and reusable data structures
Resumo:
Neste trabalho, apresentamos uma ferramenta cujo intuito é auxiliar não-programadores, jogadores de videogame, na criação de extensões na forma de Add-ons para World of Warcraft, o jogo online. Nele, o usuário pode criar extensões customizando completamente sua interface, de forma a reinventar a sua experiência de jogo e melhorar sua jogabilidade. A criação de extensões para aplicativos e jogos surgiu da crescente necessidade de fornecer aos usuários mecanismos eficientes de Programação por Usuário Final, permitindo que os mesmos preenchessem suas necessidades singulares através da criação, customização e especificação de extensões em software. Em World of Warcraft mais especificamente, os Add-ons exploram um tipo de extensão na qual os jogadores passam a programar sua própria interface de usuário ou a fazer uso de interfaces criadas por outros usuários. No entanto, realizar a programação dessas extensões - os Add-ons - não é uma tarefa fácil. Dentro deste contexto, desenvolvemos a ferramenta EUPAT for WoW (do inglês, End-User Programming Assistance Tool for World of Warcraft) que oferece assistência à criação de Add-ons. Além disso, investigamos como usuários jogadores com e sem conhecimento de programação são beneficiados. Os resultados desta pesquisa permitiram refletir sobre as estratégias de assistência de programação por usuário final no contexto de jogos
Resumo:
New programming language paradigms have commonly been tested and eventually incorporated into hardware description languages. Recently, aspect-oriented programming (AOP) has shown successful in improving the modularity of object-oriented and structured languages such Java, C++ and C. Thus, one can expect that, using AOP, one can improve the understanding of the hardware systems under design, as well as make its components more reusable and easier to maintain. We apply AOP in applications developed using the SystemC library. Several examples will be presented illustrating how to combine AOP and SystemC. During the presentation of these examples, the benefits of this new approach will also be discussed
Resumo:
Pós-graduação em Artes - IA
Resumo:
Pós-graduação em Engenharia Mecânica - FEG
Resumo:
Learning to program or master a programming language is not an easy task, and the base of process should by study Logic Programming, beginning to learning through the development of pseudocodes, algorithms and flowcharts, for, techniques that facilitate the construction and understanding of what you want to accomplish, to that is subsequently developed or elaborated a program. Reflecting on the learning of Logic Programming, this article presents information about software SCRATCH in relation to logic (pseudocodes), and how it provides support to the understanding of student learning in this course.
Resumo:
Atualmente, as linguagens de programação são usadas por pessoas com formação em domínios cada vez mais diversos e distintos do habitual, tendo já chegado ao domínio das artes. A linguagem Processing, que tem um cariz visual e que possibilita o desenvolvimento de aplicações/performances com elementos visuais e sonoros, foi mesmo projetada para ser usada por artistas. Contudo, a preparação prévia e a sensibilidade do público-alvo desta linguagem, enquanto aprendizes, é bastante distinta da preparação dos alunos comuns de linguagem de programação. Por esse motivo, é aqui proposto um conjunto de metodologias de ensino/aprendizagem adaptadas, no sentido de criar entusiasmo na aprendizagem e atingir um êxito efetivo.