Spelling suggestions: "subject:"[een] FUNCTIONAL PROGRAMMING"" "subject:"[enn] FUNCTIONAL PROGRAMMING""
101 |
Implantation des futures sur un système distribué par passage de messagesLasalle-Ratelle, Jérémie 08 1900 (has links)
Ce mémoire présente une implantation de la création paresseuse de tâches desti-
née à des systèmes multiprocesseurs à mémoire distribuée. Elle offre un sous-ensemble des fonctionnalités du Message-Passing Interface et permet de paralléliser certains problèmes qui se partitionnent difficilement de manière statique grâce à un système de
partitionnement dynamique et de balancement de charge. Pour ce faire, il se base sur le
langage Multilisp, un dialecte de Scheme orienté vers le traitement parallèle, et implante
sur ce dernier une interface semblable à MPI permettant le calcul distribué multipro-
cessus. Ce système offre un langage beaucoup plus riche et expressif que le C et réduit
considérablement le travail nécessaire au programmeur pour pouvoir développer des
programmes équivalents à ceux en MPI. Enfin, le partitionnement dynamique permet
de concevoir des programmes qui seraient très complexes à réaliser sur MPI. Des tests
ont été effectués sur un système local à 16 processeurs et une grappe à 16 processeurs
et il offre de bonnes accélérations en comparaison à des programmes séquentiels équiva-
lents ainsi que des performances acceptables par rapport à MPI. Ce mémoire démontre
que l’usage des futures comme technique de partitionnement dynamique est faisable sur
des multiprocesseurs à mémoire distribuée. / This master’s thesis presents an implementation of lazy task creation for distributed
memory multiprocessors. It offers a subset of Message-Passing Interface’s functionality
and allows parallelization of some problems that are hard to statically partition thanks
to its dynamic partitionning and load balancing system. It is based on Multilisp, a
Scheme dialect for parallel computing, and implements an MPI like interface on top
of it. It offers a richer and more expressive language than C and simplify the work
needed to developp programs similar to those in MPI. Finally, dynamic partitioning
allows some programs that would be very hard to develop in MPI. Tests were made
on a 16 cpus computer and on a 16 cpus cluster. The system gets good accelerations
when compared to equivalent sequential programs and acceptable performances when
compared to MPI. It shows that it is possible to use futures as a dynamic partitioning
method on distributed memory multiprocessors.
|
102 |
Sur l’utilisation du langage de programmation Scheme pour le développement de jeux vidéoSt-Hilaire, David 10 1900 (has links)
Ce mémoire vise à recenser les avantages et les inconvénients de
l'utilisation du langage de programmation fonctionnel dynamique
Scheme pour le développement de jeux vidéo. Pour ce faire, la
méthode utilisée est d'abord basée sur une approche plus théorique. En
effet, une étude des besoins au niveau de la programmation exprimés
par ce type de développement, ainsi qu'une description détaillant les
fonctionnalités du langage Scheme pertinentes au développement de
jeux vidéo sont données afin de bien mettre en contexte le sujet. Par
la suite, une approche pratique est utilisée en effectuant le
développement de deux jeux vidéo de complexités croissantes: Space Invaders et
Lode Runner. Le développement de ces jeux vidéo a mené à l'extension du
langage Scheme par plusieurs langages spécifiques au domaine et
bibliothèques, dont notamment un système de programmation orienté
objets et un système de coroutines. L'expérience acquise par le
développement de ces jeux est finalement comparée à celle d'autres
développeurs de jeux vidéo de l'industrie qui ont utilisé Scheme
pour la création de titres commerciaux. En résumé, l'utilisation de ce
langage a permis d'atteindre un haut niveau d'abstraction favorisant
la modularité des jeux développés sans affecter les performances de
ces derniers. / This master's thesis aims at pinpointing the pros and cons of using
the dynamic functionnal language Scheme for developing video
games. The method used is first based on a theoretical
approach. Indeed, the specific requirements for video game programming
and a detailed description of relevant Scheme features are presented.
Then, a practical approach is taken by presenting two video games
developed using the Scheme language: Space Invaders and Lode Runner. Their
development resulted in the creation of various domain-specific
languages and libraries, such as an objec- oriented system and a
coroutine system. Each of these are presented separately in their respective
chapter. Finally, the experience achieved in this process is compared
to the experience acquired by some video game companies that also used
Scheme for the developpement of their titles. The use of
Scheme allowed us to perform various high-level abstractions that
improved the modularity of the video games developed, without
affecting their performance.
|
103 |
Implantation des futures sur un système distribué par passage de messagesLasalle-Ratelle, Jérémie 08 1900 (has links)
Ce mémoire présente une implantation de la création paresseuse de tâches desti-
née à des systèmes multiprocesseurs à mémoire distribuée. Elle offre un sous-ensemble des fonctionnalités du Message-Passing Interface et permet de paralléliser certains problèmes qui se partitionnent difficilement de manière statique grâce à un système de
partitionnement dynamique et de balancement de charge. Pour ce faire, il se base sur le
langage Multilisp, un dialecte de Scheme orienté vers le traitement parallèle, et implante
sur ce dernier une interface semblable à MPI permettant le calcul distribué multipro-
cessus. Ce système offre un langage beaucoup plus riche et expressif que le C et réduit
considérablement le travail nécessaire au programmeur pour pouvoir développer des
programmes équivalents à ceux en MPI. Enfin, le partitionnement dynamique permet
de concevoir des programmes qui seraient très complexes à réaliser sur MPI. Des tests
ont été effectués sur un système local à 16 processeurs et une grappe à 16 processeurs
et il offre de bonnes accélérations en comparaison à des programmes séquentiels équiva-
lents ainsi que des performances acceptables par rapport à MPI. Ce mémoire démontre
que l’usage des futures comme technique de partitionnement dynamique est faisable sur
des multiprocesseurs à mémoire distribuée. / This master’s thesis presents an implementation of lazy task creation for distributed
memory multiprocessors. It offers a subset of Message-Passing Interface’s functionality
and allows parallelization of some problems that are hard to statically partition thanks
to its dynamic partitionning and load balancing system. It is based on Multilisp, a
Scheme dialect for parallel computing, and implements an MPI like interface on top
of it. It offers a richer and more expressive language than C and simplify the work
needed to developp programs similar to those in MPI. Finally, dynamic partitioning
allows some programs that would be very hard to develop in MPI. Tests were made
on a 16 cpus computer and on a 16 cpus cluster. The system gets good accelerations
when compared to equivalent sequential programs and acceptable performances when
compared to MPI. It shows that it is possible to use futures as a dynamic partitioning
method on distributed memory multiprocessors.
|
104 |
Translating relational queries into iterative programsFreytag, Johann Christoph, January 1900 (has links)
Thesis (Ph. D.)--Harvard University, 1985. / Includes bibliographical references (p).
|
105 |
Eine funktionale Methode der WissensrepräsentationOertel, Wolfgang 01 March 2024 (has links)
Das Anliegen der Arbeit besteht in der Entwicklung eines Wissensrepräsentationsmodells, das sich insbesondere für die Beschreibung komplex strukturierter Objekte eignet. Den Ausgangspunkt bildet eine Charakterisierung der Problematik der Wissensrepräsentation. Aus der Darstellung eines für das Gebiet der rechnergestützten Konstruktion typischen Diskursbereiches Getriebekonstruktion lassen sich Anforderungen an Modelle zur Beschreibung komplex strukturierter Objekte in Wissensbasen ableiten. Der Hauptteil der Arbeit besteht in der Entwicklung eines funktionalen Wissensrepräsentationsmodells, das diesen Anforderungen gerecht wird. Das Modell ermöglicht gleichzeitig eine effiziente Implementation wissensbasierter Systeme auf der Grundlage der Programmiersprache LISP sowie das Herstellen von Beziehungen zu Datenmodellen einerseits und Wissensrepräsentationsmodellen, insbesondere der Prädikatenlogik erster Ordnung, andererseits. Unter Bezugnahme auf die Datenbanktechnologie wird die Struktur von Wissensbanksystemen beschrieben. Ein wesentlicher Aspekt der Arbeit besteht im Aufzeigen der Möglichkeit und des Weges, das Wissen eines Konstrukteurs zu formalisieren und in eine Wissensbasis abzubilden.:1. Einleitung
2. Wissensrepräsentation in technischen Systemen
3. Beispielsdiskursbereiche
4. Funktionales Wissensrepräsentationsmodell
5. Beziehungen zwischen Prädikatenlogik erster Ordnung und funktionalem Wissensrepräsentationsmodell
6. Aufbau von Wissensbanksystemen
7. Anwendung des funktionalen Wissensrepräsentationsmodells für die Implementation wissensbasierter Systeme
8. Schlussbemerkungen
|
106 |
Do Widget Libraries Need Mutable Data?Arumugasamy, Akshay Kumar 11 1900 (has links)
This thesis examines trends in the academic and professional literature around immutable
data and its relationship with declarative User Interfaces (UIs). Immutable
data types are preferred by academic authors due to their increased safety, and commercial
languages are increasing their support for them over time. More recently,
declarative UIs are an exploding topic in industry, and these are related, although
not as closely as one would expect. Declarative programming tries to focus on highlevel
requirements, not low-level details. It is easier to do this if functions have no
side effects, and immutable data is a guaranteed way of achieving this. To highlight
this property, the declarative UI framework Flutter advertises “stateless widgets”,
but their existence puts in highlights the lack of this property in most widgets. Consequently,
we ask whether it is feasible to build a Graphical User Interface (GUI)
toolkit using purely immutable data structures. To accomplish this objective, a
purely immutable GUI toolkit is sketched and partially developed using Elm, a purely
functional language in which all data structures are immutable. To understand the
requirements of a GUI toolkit, we categorize and put in historical context, different
design paradigms for UIs and relate them to core software-design principles. Leading
toolkits allow developers to visualize and manage multiple views of their interfaces, including the view hierarchy, layout, interface to business logic, and focus management.
By creating a concrete example, the research aims to provide insight into the
limitations of utilizing purely immutable data within a GUI framework and suggests
future work to mitigate these. / Thesis / Master of Science (MSc)
|
107 |
[en] A SURVEY OF FUNCTION VALUES IN IMPERATIVE PROGRAMMING LANGUAGES / [pt] UM LEVANTAMENTO SOBRE O SUPORTE A FUNÇÕES COMO VALORES EM LINGUAGENS IMPERATIVASLUIZ ROMARIO SANTANA RIOS 30 March 2020 (has links)
[pt] Se diz que uma linguagem de programação tem funções de primeira classe quando ela fornece a capacidade de manipular funções da mesma maneira que outros valores, isto é, guardar em variáveis, passar como parâmetros, etc.. Programar com funções de primeira classe abre o programadora novas formas de abstração e é o padrão em linguagens de programação funcionais. Porém, se tratando de linguagens imperativas (incluindo linguagens orientadas a objeto), cada linguagem tem semântica, propriedades e terminologia diferentes para funções—em grande parte graças a seu foco em mutabilidade, que as linguagens funcionais não têm. Para esclarecer essas diferenças, nós fizemos um levantamento sobre a especificação de funções como valores em linguagens de programação imperativas de várias disciplinas diferentes. Para cada linguagem, nós ilustramos, nos baseando em exemplos, as propriedades dos valores de funções nela,destacando onde ela difere de outras linguagens—tudo isso usando uma terminologia consistente em todas as linguagens. Nós esperamos oferecer uma referência para desenvolvedores compararem e contrastarem as diferentes versões de funções num só lugar. / [en] A programming language is said to have first-class functions when it provides the capability of manipulating functions in the same way as other values, i.e., storing in variables, passing as parameters, etc.. Programming with first-class functions opens the programmer to new forms of abstractions and it s the default in functional programming languages. However, in the realm of imperative languages (including object-oriented languages), each language has different semantics, properties, and terminology for functions—in great part, thanks to their focus on mutability, which isn t present in functional languages. To help shed light on these differences, we made a survey of the specifi-cation of function values in imperative programming languages from many different disciplines. For each language, we illustrate, based on examples,the properties of function values in it, highlighting where it differs from other languages—all this with a consistent terminology in all languages. We provide a reference that compares and contrasts different renditions offunctions in one single place and conclude that the design of functions in a language depends on the interaction of its features and constraints with its functions.
|
108 |
Možnosti deklarativního programování v jazyku Java 8 / Possibilities of Declarative Programming in Java 8Rytych, Maxim January 2015 (has links)
This paper concerns itself with possibilities of declarative programming in the new version of Java 8 language, specifically using elements adopted from the domain of functional programming languages: function as a value and lazy streams of data. The goal of this paper is to demonstrate possibilities of declarative programming using these elements, analyze its implementation and design own extensions. The contribution lies particularly in showing possibilities of the new elements, implementation analysis and design of a new functionality. The output can be used by a Czech reader, who is at least slightly advanced in the field of information technologies. The paper is divided into a theoretical and practical parts. Theoretical part is covered by chapters 3-8. Theoretical part describes motivation for introduction of the new elements, describes functional programming and its basic principles, then it shows basic principles of the newly introducted elements and ends with the description of the java.util.stream package. Pactical part is covered by chapters 9 and 10. Practical part concerns with stream oper-ations and extension design of existing functionality.
|
109 |
Programming tools for intelligent systemsConsidine, Breandan 04 1900 (has links)
Les outils de programmation sont des programmes informatiques qui aident les humains à programmer des ordinateurs. Les outils sont de toutes formes et tailles, par exemple les éditeurs, les compilateurs, les débogueurs et les profileurs. Chacun de ces outils facilite une tâche principale dans le flux de travail de programmation qui consomme des ressources cognitives lorsqu’il est effectué manuellement. Dans cette thèse, nous explorons plusieurs outils qui facilitent le processus de construction de systèmes intelligents et qui réduisent l’effort cognitif requis pour concevoir, développer, tester et déployer des systèmes logiciels intelligents. Tout d’abord, nous introduisons un environnement de développement intégré (EDI) pour la programmation d’applications Robot Operating System (ROS), appelé Hatchery (Chapter 2). Deuxièmement, nous décrivons Kotlin∇, un système de langage et de type pour la programmation différenciable, un paradigme émergent dans l’apprentissage automatique (Chapter 3). Troisièmement, nous proposons un nouvel algorithme pour tester automatiquement les programmes différenciables, en nous inspirant des techniques de tests contradictoires et métamorphiques (Chapter 4), et démontrons son efficacité empirique dans le cadre de la régression. Quatrièmement, nous explorons une infrastructure de conteneurs basée sur Docker, qui permet un déploiement reproductible des applications ROS sur la plateforme Duckietown (Chapter 5). Enfin, nous réfléchissons à l’état actuel des outils de programmation pour ces applications et spéculons à quoi pourrait ressembler la programmation de systèmes intelligents à l’avenir (Chapter 6). / Programming tools are computer programs which help humans program computers. Tools come in all shapes and forms, from editors and compilers to debuggers and profilers. Each of these tools facilitates a core task in the programming workflow which consumes cognitive resources when performed manually. In this thesis, we explore several tools that facilitate the process of building intelligent systems, and which reduce the cognitive effort required to design, develop, test and deploy intelligent software systems. First, we introduce an integrated development environment (IDE) for programming Robot Operating System (ROS) applications, called Hatchery (Chapter 2). Second, we describe Kotlin∇, a language and type system for differentiable programming, an emerging paradigm in machine learning (Chapter 3). Third, we propose a new algorithm for automatically testing differentiable programs, drawing inspiration from techniques in adversarial and metamorphic testing (Chapter 4), and demonstrate its empirical efficiency in the regression setting. Fourth, we explore a container infrastructure based on Docker, which enables reproducible deployment of ROS applications on the Duckietown platform (Chapter 5). Finally, we reflect on the current state of programming tools for these applications and speculate what intelligent systems programming might look like in the future (Chapter 6).
|
Page generated in 0.0693 seconds