990 resultados para Functional programming languages


Relevância:

80.00% 80.00%

Publicador:

Resumo:

O desenvolvimento aplicacional é uma área em grande expansão no mercado das tecnologias de informação e como tal, é uma área que evolui rápido. Os impulsionadores para esta característica são as comunicações e os equipamentos informáticos, pois detêm características mais robustas e são cada vez mais rápidos. A função das aplicações é acompanhar esta evolução, possuindo arquiteturas mais complexas/completas visando suportar todos os pedidos dos clientes, através da produção de respostas em tempos aceitáveis. Esta dissertação aborda várias arquiteturas aplicacionais possíveis de implementar, mediante o contexto que esteja inserida, como por exemplo, um cenário com poucos ou muitos clientes, pouco ou muito capital para investir em servidores, etc. É fornecido um nivelamento acerca dos conceitos subjacentes ao desenvolvimento aplicacional. Posteriormente é analisado o estado de arte das linguagens de programação web e orientadas a objetos, bases de dados, frameworks em JavaScript, arquiteturas aplicacionais e, por fim, as abordagens para definir objetivos mensuráveis no desenvolvimento aplicacional. Foram implementados dois protótipos. Um deles, numa arquitetura multicamada com várias linguagens de programação e tecnologias. O segundo, numa única camada (monolítica) com uma única linguagem de programação. Os dois protótipos foram testados e comparados com o intuito de escolher uma das arquiteturas, num determinado cenário de utilização.

Relevância:

80.00% 80.00%

Publicador:

Resumo:

Dissertação para obtenção do Grau de Doutor em Engenharia Informática

Relevância:

80.00% 80.00%

Publicador:

Resumo:

Linear logic has long been heralded for its potential of providing a logical basis for concurrency. While over the years many research attempts were made in this regard, a Curry-Howard correspondence between linear logic and concurrent computation was only found recently, bridging the proof theory of linear logic and session-typed process calculus. Building upon this work, we have developed a theory of intuitionistic linear logic as a logical foundation for session-based concurrent computation, exploring several concurrency related phenomena such as value-dependent session types and polymorphic sessions within our logical framework in an arguably clean and elegant way, establishing with relative ease strong typing guarantees due to the logical basis, which ensure the fundamental properties of type preservation and global progress, entailing the absence of deadlocks in communication. We develop a general purpose concurrent programming language based on the logical interpretation, combining functional programming with a concurrent, session-based process layer through the form of a contextual monad, preserving our strong typing guarantees of type preservation and deadlock-freedom in the presence of general recursion and higher-order process communication. We introduce a notion of linear logical relations for session typed concurrent processes, developing an arguably uniform technique for reasoning about sophisticated properties of session-based concurrent computation such as termination or equivalence based on our logical approach, further supporting our goal of establishing intuitionistic linear logic as a logical foundation for sessionbased concurrency.

Relevância:

80.00% 80.00%

Publicador:

Resumo:

Mutable state can be useful in certain algorithms, to structure programs, or for efficiency purposes. However, when shared mutable state is used in non-local or nonobvious ways, the interactions that can occur via aliases to that shared memory can be a source of program errors. Undisciplined uses of shared state may unsafely interfere with local reasoning as other aliases may interleave their changes to the shared state in unexpected ways. We propose a novel technique, rely-guarantee protocols, that structures the interactions between aliases and ensures that only safe interference is possible. We present a linear type system outfitted with our novel sharing mechanism that enables controlled interference over shared mutable resources. Each alias is assigned separate, local roles encoded in a protocol abstraction that constrains how an alias can legally use that shared state. By following the spirit of rely-guarantee reasoning, our rely-guarantee protocols ensure that only safe interference can occur but still allow many interesting uses of shared state, such as going beyond invariant and monotonic usages. This thesis describes the three core mechanisms that enable our type-based technique to work: 1) we show how a protocol models an alias’s perspective on how the shared state evolves and constrains that alias’s interactions with the shared state; 2) we show how protocols can be used while enforcing the agreed interference contract; and finally, 3) we show how to check that all local protocols to some shared state can be safely composed to ensure globally safe interference over that shared memory. The interference caused by shared state is rooted at how the uses of di↵erent aliases to that state may be interleaved (perhaps even in non-deterministic ways) at run-time. Therefore, our technique is mostly agnostic as to whether this interference was the result of alias interleaving caused by sequential or concurrent semantics. We show implementations of our technique in both settings, and highlight their di↵erences. Because sharing is “first-class” (and not tied to a module), we show a polymorphic procedure that enables abstract compositions of protocols. Thus, protocols can be specialized or extended without requiring specific knowledge of the interference produce by other protocols to that state. We show that protocol composition can ensure safety even when considering abstracted protocols. We show that this core composition mechanism is sound, decidable (without the need for manual intervention), and provide an algorithm implementation.

Relevância:

80.00% 80.00%

Publicador:

Resumo:

The MAP-i Doctoral Program of the Universities of Minho, Aveiro and Porto

Relevância:

80.00% 80.00%

Publicador:

Resumo:

La programación concurrente es una tarea difícil aún para los más experimentados programadores. Las investigaciones en concurrencia han dado como resultado una gran cantidad de mecanismos y herramientas para resolver problemas de condiciones de carrera de datos y deadlocks, problemas que surgen por el mal uso de los mecanismos de sincronización. La verificación de propiedades interesantes de programas concurrentes presenta dificultades extras a los programas secuenciales debido al no-determinismo de su ejecución, lo cual resulta en una explosión en el número de posibles estados de programa, haciendo casi imposible un tratamiento manual o aún con la ayuda de computadoras. Algunos enfoques se basan en la creación de lenguajes de programación con construcciones con un alto nivel de abstración para expresar concurrencia y sincronización. Otros enfoques tratan de desarrollar técnicas y métodos de razonamiento para demostrar propiedades, algunos usan demostradores de teoremas generales, model-checking o algortimos específicos sobre un determinado sistema de tipos. Los enfoques basados en análisis estático liviano utilizan técnicas como interpretación abstracta para detectar ciertos tipos de errores, de una manera conservativa. Estas técnicas generalmente escalan lo suficiente para aplicarse en grandes proyectos de software pero los tipos de errores que pueden detectar es limitada. Algunas propiedades interesantes están relacionadas a condiciones de carrera y deadlocks, mientras que otros están interesados en problemas relacionados con la seguridad de los sistemas, como confidencialidad e integridad de datos. Los principales objetivos de esta propuesta es identificar algunas propiedades de interés a verificar en sistemas concurrentes y desarrollar técnicas y herramientas para realizar la verificación en forma automática. Para lograr estos objetivos, se pondrá énfasis en el estudio y desarrollo de sistemas de tipos como tipos dependientes, sistema de tipos y efectos, y tipos de efectos sensibles al flujo de datos y control. Estos sistemas de tipos se aplicarán a algunos modelos de programación concurrente como por ejemplo, en Simple Concurrent Object-Oriented Programming (SCOOP) y Java. Además se abordarán propiedades de seguridad usando sistemas de tipos específicos. Concurrent programming has remained a dificult task even for very experienced programmers. Concurrency research has provided a rich set of tools and mechanisms for dealing with data races and deadlocks that arise of incorrect use of synchronization. Verification of most interesting properties of concurrent programs is a very dificult task due to intrinsic non-deterministic nature of concurrency, resulting in a state explosion which make it almost imposible to be manually treat and it is a serious challenge to do that even with help of computers. Some approaches attempts create programming languages with higher levels of abstraction for expressing concurrency and synchronization. Other approaches try to develop reasoning methods to prove properties, either using general theorem provers, model-checking or specific algorithms on some type systems. The light-weight static analysis approach apply techniques like abstract interpretation to find certain kind of bugs in a conservative way. This techniques scale well to be applied in large software projects but the kind of bugs they may find are limited. Some interesting properties are related to data races and deadlocks, while others are interested in some security problems like confidentiality and integrity of data. The main goals of this proposal is to identify some interesting properties to verify in concurrent systems and develop techniques and tools to do full automatic verification. The main approach will be the application of type systems, as dependent types, type and effect systems, and flow-efect types. Those type systems will be applied to some models for concurrent programming as Simple Concurrent Object-Oriented Programming (SCOOP) and Java. Other goals include the analysis of security properties also using specific type systems.

Relevância:

80.00% 80.00%

Publicador:

Resumo:

Nuestra Web tiene como eje central divulgar todo el material desarrollado en el Proyecto Wolframio, queriendo ser una herramienta sencilla y ágil para gestionar el material y ser más accesible para los usuarios. Para el desarrollo del proyecto se ha diseñado una arquitectura en la que conviven varias tecnologías y varios lenguajes de codificación y programación: HTML, PHP, MySQL, Java script, AJAX, JQUERY y CSS.

Relevância:

80.00% 80.00%

Publicador:

Resumo:

El projecte es centra en el desenvolupament d'un recol·lector de notícies publicades a una llarga llista de blocs ampliada contínuament pel desenvolupador i pels usuaris, afegint els seus blocs preferits. L'aplicació desenvolupada realitza una recol·lecció contínua de notícies consultant les possibles novetats que apareguin en cada un dels blocs inscrits a l'aplicació. Se'ls hi aplica un classificador per idioma i per temàtica i es relaciona amb les altres notícies existents si aquestes parlen sobre el mateix tema. En l'aplicació desenvolupada hi ha la possibilitat d'escollir entre les temàtiques ofertes i en l'idioma que ha estat publicada la notícia. Pel desenvolupament del projecte s'ha desitjat que la plataforma sigui el més compatible possible amb la tecnologia actual fent servir diversos llenguatges de programació que han permès desenvolupar cada un dels algorismes necessaris pel desenvolupament global de l'aplicació; en ordre d'ús he fet servir Php, Matlab, Html, MySql, CSS3, Javascript i XML. s'ha de destacar que el projecte aporta una comoditat per tots aquells lectors de blocs que es troben tantes vegades amb notícies ja llegides en els diferents blocs que consulten.

Relevância:

80.00% 80.00%

Publicador:

Resumo:

Aquest treball de final de carrera vol fer un estudi comparatiu entre el llenguatge XQuery del W3C i el llenguatge X-Query de Tamino, amb una valoració de les possibilitats que ofereix aquest sistema nadiu en el treball amb XML amb relació al llenguatge de consultes sobre XML definit pel W3C.

Relevância:

80.00% 80.00%

Publicador:

Resumo:

Aquest document descriu els passos necessaris per a desenvolupar una botiga virtual a Internet, per mitjà de les fases d'anàlisi, disseny i codificació. L'aplicació en qüestió ha de permetre als diferents tipus d'usuaris fer tasques de manteniment (altes, baixes i actualitzacions) i de consulta dels diversos elements del domini del problema.

Relevância:

80.00% 80.00%

Publicador:

Resumo:

Aquest TFC es basa en la implementació d'un programa de gestió de treballadors per a aplicar-lo a una empresa de petites dimensions, dedicada al manteniment d'aparells elevadors.

Relevância:

80.00% 80.00%

Publicador:

Resumo:

L'objectiu d'aquest treball de final de carrera és clar pel que fa a la funcionalitat: es tracta de fer un analitzador de xarxa (vulgarment conegut com a detector) que funcioni en entorns Linux i amb interfícies d'usuari gràfiques.

Relevância:

80.00% 80.00%

Publicador:

Resumo:

L'objectiu fonamental d'aquest treball és estudiar les relacions que hi ha a nivell teòric entre XML (eXtensible Markup Language) i RDF (Resource Description Language).

Relevância:

80.00% 80.00%

Publicador:

Resumo:

En aquest projecte s'ha implementat una capa de persistència basada en metadades sota la plataforma .NET, utilitzant el llenguatge de programació C#.

Relevância:

80.00% 80.00%

Publicador:

Resumo:

Aquest estudi té com a objectiu introduir el lector en dues tecnologies complementàries, XML i RDF. L'estudi mostra els inicis dels llenguatges de marcatge i explica perquè van ser concebuts.