581 |
Linda Implementations Using Monitors and Message PassingLeveton, Alan L. 01 January 1990 (has links)
Linda is a new parallel programming language that is built around an interprocess communication model called generative communication that differs from previous models in specifying that shared data be added in tuple form to an environment called tuple space, where a tuple exists independently until some process chooses to use it. Interesting properties arise from the model, including space and time uncoupling as well as structured naming. We delineate the essential Linda operations, then discuss the properties of generative communication. We are particularly concerned with implementing Linda on top of two traditional parallel programming paradigms - process communication through globally shared memory via monitors, and process communication in local memory architectures through the use of message passing constructs. We discuss monitors and message passing, then follow with a description of the two Linda implementations.
|
582 |
A Metamodel Family for Role-Based Modeling and Programming LanguagesKühn, Thomas, Leuthäuser, Max, Götz, Sebastian, Seidl, Christoph, Aßmann, Uwe 05 July 2021 (has links)
Role-based modeling has been proposed almost 40 years ago as a means to model complex and dynamic domains, because roles are able to capture both context-dependent and collaborative behavior of objects. Unfortunately, while several researchers have introduced the notion of roles to modeling and programming languages, only few have captured both the relational and the context-dependent nature of roles. In this work, we classify various proposals since 2000 and show the discontinuity and fragmentation of the whole research field. To overcome discontinuity, we propose a family of metamodels for role-based modeling languages. Each family member corresponds to a design decision captured in a feature model. In this way, it becomes feasible to generate a metamodel for each role-based approach. This allows for the combination and improvement of the different role-based modeling and programming languages and paves the way to reconcile the research field.
|
583 |
Towards More Scalable and Practical Program SynthesisYanjun Wang (12240227) 29 April 2022 (has links)
<p>Program synthesis aims to generate programs automatically from user-provided specifications and has the potential to aid users in real-world programming tasks from different domains. Although there have been great achievements of synthesis techniques in specific domains such as spreadsheet programming, computer-aided education and software engineering, there still exist huge barriers that keep us from achieving scalable and practical synthesis tools.</p>
<p><br></p>
<p>This dissertation presents several techniques towards more scalable and practical program synthesis from three perspectives: 1) intention: Writing formal specification for synthesis is a major barrier for average programmers. In particular, in some quantitative synthesis scenarios (such as network design), the first challenge faced by users is expressing their optimization targets. To address this problem, we present comparative synthesis, an interactive synthesis framework that learns near optimal programs through comparative queries, without explicitly specified optimization targets. 2) invention: Synthesis algorithms are key to pushing the performance limit of program synthesis. Aiming to solve syntax-guided synthesis problems efficiently, we introduce a cooperative synthesis technique that combines the merits of enumerative and deductive synthesis. 3) adaptation: Besides functional correctness, quality of generated code is another important aspect. Towards automated provably-correct optimization over tree traversals, we propose a stack-based representation for iterations in tree traversals and an encoding to Monadic Second-Order logic over trees, which enables reasoning about tree traversal transformations which were not possible before.</p>
|
584 |
Adaptable Java Agents (AJA) — a Tool for Programming o f Multi-Agent Systems / Adaptabilni java agenti – alat za programiranje multi-agentskih sistemaBađonski Mihal 07 April 2004 (has links)
<p>The main goal of this thesis is the creation o f the tool agent-oriented programming tool AJA. AJA is the acronym for Adaptable Java Agents. AJA consists o f two programming languages:<br />- A higher-level language used for the description of the main agent parts. This language is called HADL, which is the acronym for Higher Agent Definition Language.<br />- A lower-level language used for the programming o f the agent parts defined in HADL. This language is called Java+. It is actually Java enriched with the constructs for accessing higher-level agent parts defined in HADL.<br />A translator from AJA to Java is implemented in the practical part o f the thesis. AJA agents have the following features: - Agent communicates with other agents using a construct called negotiation. The messages sent can be encrypted or digitally signed in order to ensure the security of the system. - Agent possesses adaptable parameters and neural nets that adapt themselves when the environment changes.<br />- Agent has reflexes, which are the reactive component o f the agent architecture.<br />- Agent can perform its actions parallel. Actions execution is synchronized.<br />- Agent is accessible via Internet, because it acts as a simple HTTP server. People can use this way to communicate with an agent.<br />- Agent has Java Swing based graphical user interface. Its owner uses this interface to communicate with the agent.<br />- Because o f the fact that Java-i- language extends Java, it is possible to use all useful Java features in the implementation o f AJA agents (e.g. JDBC for the database access). The thesis also presents an original approach of integrating artificial intelligence techniques, such as neural nets, with a programming language. Having the artificial intelligence components as a part of the programming language runtime environment makes their use straightforward. A programmer uses the language constructs that are implemented using the artificial intelligence<br />without the need for understanding their background and theory.<br />The thesis contains eight chapters and three appendixes. In the first chapter, an overview of agents and multi-agent systems is given. The second chapter surveys existing agent-oriented programming languages and tools. The third chapter introduces AJA and describes the architecture of AJA agents. The syntax and semantics o f AJA languages HADL and Java+ is described in the fourth chapter. The fifth chapter presents adaptable AJA constructs in more details. To demonstrate and test the created tool, a case-study multi-agent system has been implemented in AJA. There are four personal digital assistant agents in the system. The sixth chapter describes the example agents and positively evaluates the tool. In the seventh chapter the related work and tools are analyzed and compared to AJA. The last chapter concludes the thesis. The first appendix describes the implementation details of the AJA to Java translator. The second appendix is a guide for the installation and usage of the implemented AJA to Java translator. Finally, the third<br />appendix describes step by step how to translate, compile, run, and use the example agents. The thesis contains many references, which include almost all the most important and the most actual papers in the field. The reference list can be found at the end o f the thesis.</p> / <p>Glavni doprinos doktorske teze je napravljeni alat za programiranje agenata AJA . AJA - Adaptabilni Java Agenti je jezički alat za programsku implementaciju agenata Sastoji se od dva programska jezika:<br />- Jezik višeg nivoa kojim se opisuju glavne kom ponente agenta. Ovaj jezik se naziva HADL - Higher Agent Definition Language.<br />- Jezik nižeg nivoa koji služi za implementaciju pojedinih komponenti agenta specificiranih HADL jezikom . Ovaj jezik se najava Java+, jer je on zapravo programski jezik Java obogaćen konstrukcijama pomoću kojih je moguće pristupati komponentama agenta, definisanim u jezik u HADL.<br />AJA agent poseduje sledeće osobine:<br />- Sigurna kom unikacija sa drugim A JA agentim a koristeći mehanizam pregovaranja, šifrovanje i digitalno potpisivanje poruka.<br />- Mogućnost adaptiranja na promene u okruženju u kom se nalazi, koristeći neuralne mreže i adaptabilne parametre.<br />- Reaktivnost zasnovana n a kom ponenti zvanoj refleks.<br />- Paralelno izvršavanje akcija agenta u z njihovu internu sinhronizaciju.<br />- D ostupnost agenta preko Interneta. Agent se ponaša kao jednostavan HTTP server. Na ovaj način se drugim osobama omogućuje da komuniciraju sa agentom .<br />- G rafički korisnički interfejs zasnovan n a Java Swing tehnologiji<br />- Pošto se u program iranju agenta koristi Java+, moguće je uposliti sve pogodnosti Jave, kao što su na primer pristup bazama podataka koristeći JDBC , rad sa multimedijalnim sadržajem , itd.<br />U tezi je predstavljen i originalni pristup integrisanja tehnika veštačke inteligencije sa program skim jezikom . U građujući kom ponente veštačke inteligencije u izvršnu okolinu je z ik a čini n jihovo korišćenje veom a jednostavnim . Programer ne mora da bude ekspert iz veštačke inteligencije a da pri tome koristi konstrukcije jezika koje su implementirane pomoću veštačke inteligencije. AJA specifikacija agenta se sastoji od HADL i Java+ delova. U tezi je implementiran prevodioc kojim se A JA specifikacija prevodi u skup klasa programskog jezika Java. Implementiran je i jedan multi-agentski sistem kojim se praktično pokazuje korišćenje i mogućnosti napravljenog alata D oktorska teza sadrži i detaljan pregled oblasti o agentskpj m etodologiji. O n a kruniše višegodišnji rad kandidata i njegovog mentora u ovoj sve značajnijoj oblasti računarstva.<br />Teza sadrži o sam glava i tri dodatka. U prvoj glavi se opisuje oblast agenata i m ulti-agentskih sistem a. Pregled postojećih agentskih program skih jezik a i alata se daje u drugoj glavi. O pis A JA agenata i njihove arhitekture je dat u trećoj glavi teze. Četvrta glava se bavi sintaksom i sem antikom oba A JA jezika: H A D L -a i Jave+. Adaptabilni elem enti A JA agenata se opisuju u petoj glavi. U šestoj glavi je opisan m ulti-agentski sistem koji j e ujed n o i prim er prim ene A JA alata. A JA se sa drugim postojećim agentskim alatim a upoređuje u sedm oj glavi. Osma glava sadrži zaključak. N a kraju se u tri dodatka detaljno opisuju im plem entacija prevodioca A JA -e u Javu, instalacija prevodioca i korišćenje napravljenog m ulti-agentskog sistema respektivno. U doktorskom radu su korišćene i navedene brojne reference kojim a su obuhvaćeni gotovo svi najznačajniji i najaktuelniji radovi iz oblasti multi-agentskih sistema. Lista referenci je navedena na kraju teze.</p>
|
585 |
Multi-threaded User Interfaces in JavaLudwig, Elmar 27 July 2006 (has links)
With the rise of modern programming languages like Java that include native support for multi-threading, the issue of concurrency in graphical applications becomes more and more important. Traditional graphical component libraries for Java have always used the threading concepts provided by the language very carefully, telling the programmer that the use of threads in this context is often unnecessarily burdensome and complex. On the other hand, experience gained from systems like Inferno or BeOS shows that the use of concurrency in graphical applications is clearly manageable and leads to a different program design, once you dissociate the application from the limitations of the GUI library. This thesis describes the design of a general architecture that allows for the separation of a program´s user interface from the application logic using thread communication. It enables the use of concurrency in the application code without requiring any degree of thread-safety at the native interface component level.
|
586 |
Automation in CS1 with the Factoring Problem GeneratorParker, Joshua B. 01 December 2009 (has links) (PDF)
As the field of computer science continues to grow, the number of students enrolled in related programs will grow as well. Though one-on-one tutoring is one of the more effective means of teaching, computer science instructors will have less and less time to devote to individual students. To address this growing concern, many tools that automate parts of an instructor’s job have been proposed. These tools can assist instructors in presenting concepts and grading student work, and they can help students learn to program more effectively. A growing group of intelligent tutoring systems attempts to tie all of this functionality into a single tool that is meant to be used throughout an entire CS course or series of courses.
To contribute to this emerging area, the Factoring Problem Generator (FPG) is presented in this work. The FPG creates and grades problems in C in which students search for and extract blocks of repeated code into individual functions, learning to utilize parameters and return values as they do so. The problems created by the FPG are highly configurable by instructors such that the difficulty can be finely tuned to suit students’ individual needs. Instructors can choose whether or not to include arrays, pointers, certain elemental data types, certain operators, or certain kinds of statements, among other things. The FPG is additionally capable of generating a set of test cases for each generated problem. These test cases fully exercise students’ solutions by covering all branches of execution, and they ensure that program functionality does not change as students factor code into functions.
Initial experimentation with the system has suggested that the FPG can be integrated into a beginning CS curriculum and with further refinement could become a standard tool in the CS classroom.
|
587 |
Programming Language Fragmentation and Developer Productivity: An Empirical StudyKrein, Jonathan L. 10 February 2011 (has links) (PDF)
In an effort to increase both the quality of software applications and the efficiency with which applications can be written, developers often incorporate multiple programming languages into software projects. Although language specialization arguably introduces benefits, the total impact of the resulting language fragmentation (working concurrently in multiple programming languages) on developer performance is unclear. For instance, developers may solve problems more efficiently when they have multiple language paradigms at their disposal. However, the overhead of maintaining efficiency in more than one language may outweigh those benefits. This thesis represents a first step toward understanding the relationship between language fragmentation and programmer productivity. We address that relationship within two different contexts: 1) the individual developer, and 2) the overall project. Using a data-centered approach, we 1) develop metrics for measuring productivity and language fragmentation, 2) select data suitable for calculating the needed metrics, 3) develop and validate statistical models that isolate the correlation between language fragmentation and individual programmer productivity, 4) develop additional methods to mitigate threats to validity within the developer context, and 5) explore limitations that need to be addressed in future work for effective analysis of language fragmentation within the project context using the SourceForge data set. Finally, we demonstrate that within the open source software development community, SourceForge, language fragmentation is negatively correlated with individual programmer productivity.
|
588 |
Investigation of Reason as a substitute for JavaScript / Undersökning av Reason som ett substitut till JavaScriptPettersson, Axel January 2020 (has links)
JavaScript has in recent years become one of the most utilized programming languages for developing different kinds of applications. However, even though it has received a lot of praise for its simplicity, versatility and highly active community, it lacks some functionalities and features that a lot of programmers highly value, like static and strict typing, compile-time debugging, and to not be required to make use of third-party libraries to integrate crucial functionality. However, several new languages built on top of JavaScript have been developed to address and resolve these issues developers find with JavaScript without losing the benefits that come with it. One of these super- set languages is Reason, the new syntax and toolchain powered by the OCaml compiler. This thesis aims to address whether there are scenarios where Reason could act as a reasonable substitute of JavaScript by investigating how the languages compare in regards to different criteria. The criteria examined are writability, data structures and typing, reliability and testing, community support, market demand, portability, and performance. The findings show that using Reason over JavaScript could result in higher reliability and robustness due to static type checking, compile-time debugging, and other usable feature like pattern matching and explicitly defined custom data structures, which is convenient when dealing with advanced data. On the other hand, Reason’s interoperability with JavaScript is something that is not very straight-forward and makes it difficult to integrate Reason into an existing JavaScript codebase or include one of the thousand of JavaScript- written dependencies available on npm. Furthermore, with Reason being a rather young language yet to be used by a larger audience, both the community support and market demand are a lot smaller than that of JavaScript and have yet to see a significant growth, which leads to questions about the overall survival of the language. Both of the languages have a significant role and contribute with different kind of functionality. However, with the non-straightforward interoperability, Reason loses a lot of potential benefits to be gained from JavaScript, which could be problematic in the long run and could impact the future of Reason. / JavaScript har under senare år blivit ett av de mest använda programmeringsspråken för att utveckla olika typer av applikationer. Men även om det har fått mycket beröm för sin enkelhet, mångsidighet och mycket aktivt nätgemenskap, saknar det vissa funktioner och egenskaper som många programmerare uppskattar mycket, som statisk och strikt typning, felsökning under kompilering och att inte vara I behov av tredjepartsbibliotek för att integrera grundläggande funktionalitet. Flera nya språk som är byggda ovanpå JavaScript har utvecklats för att lösa de problem som utvecklare har med JavaScript, utan att förlora fördelarna med det. Ett av dessa supersetsspråk är Reason, den nya syntaxen och verktygskedjan som drivs av OCaml-kompilatorn. Denna avhandling syfte är att utvärdera om det finns scenarier där Reason kan fungera som en rimlig ersättare för JavaScript, detta kommer genomföras genom att undersöka hur språken jämförs med varandra med avseende på olika kriterier. Kriterierna som undersöks är skrivbarhet, datastrukturer och typning, tillförlitlighet och testning, nätgemenskap, marknadsförfrågan, portabilitet, och prestanda. Resultaten visar att användning av Reason över JavaScript kan leda till högre tillförlitlighet på grund av statisk typkontroll, felsökning under kompilering och andra användbara funktioner som mönstermatchning och anpassade datastrukturer, båda underlättar vid hantering avancerade och komplexa datastrukturer. Däremot är Reasons kompabilitet med JavaScript komplicerad, vilket gör det svårt att integrera Reason i en befintlig JavaScript- kodbas eller inkludera ett av de tusentals JavaScript-skrivna biblioteken som finns tillgängliga på npm. Eftersom Reason är ett ganska ungt språk som ännu inte används på en större skala, så är både nätgemenskapen och marknadens efterfrågan mycket mindre än JavaScript och har ännu inte sett en betydande tillväxt, vilket leder till frågor om den långsiktiga överlevnaden av språket. Båda språken har en betydande roll och bidrar med olika slags funktioner. Men med den komplicerade kompatibiliteten med JavaScript så förlorar Reason en hel del potentiella fördelar som kan uppnås genom JavaScript, vilket kan vara problematiskt på lång sikt och kan påverka Reasons framtid.
|
589 |
CUDA Web API Remote Execution of CUDA Kernels Using Web ServicesBecker, Massimo J 01 June 2012 (has links) (PDF)
Massively parallel programming is an increasingly growing field with the recent introduction of general purpose GPU computing. Modern graphics processors from NVIDIA and AMD have massively parallel architectures that can be used for such applications as 3D rendering, financial analysis, physics simulations, and biomedical analysis. These massively parallel systems are exposed to programmers through in- terfaces such as NVIDIAs CUDA, OpenCL, and Microsofts C++ AMP. These frame- works expose functionality using primarily either C or C++. In order to use these massively parallel frameworks, programs being implemented must be run on machines equipped with massively parallel hardware. These requirements limit the flexibility of new massively parallel systems. This paper explores the possibility that massively parallel systems can be exposed through web services in order to facilitate using these architectures from remote systems written in other languages. To explore this possi- bility, an architecture is put forth with requirements and high level design for building a web service that can overcome limitations of existing tools and frameworks. The CUDA Web API is built using Python, PyCUDA, NumPy, JSON, and Django to meet the requirements set forth. Additionaly, a client application, CUDA Cloud, is built and serves as an example web service client. The CUDA Web API’s performance and its functionality is validated using a common matrix multiplication algorithm implemented using different languages and tools. Performance tests show runtime improvements for larger datasets using the CUDA Web API for remote CUDA kernel execution over serial implementations. This paper concludes that existing limitations associated with GPGPU usage can be overcome with the specified architecture.
|
590 |
A Visual Programming Language in Virtual Reality : A Usability Evaluation and Its Potential for Reducing Sedentary Behavior / Ett Visuellt Programeringsspråk I Virtual Reality : En användbarhetsutvärdering och dess potential för att minska stillasittande beteendeJonsson, Adam January 2023 (has links)
Sedentary behavior is linked to numerous adverse effects on a person’s health, such as obesity, depression, and a higher risk of cardiovascular events. Professions that are primarily sedentary have increased due to the growth of office-related occupations, one of which is software engineering. A potential intervention to reduce sedentary behavior is to utilize new interactive technologies such as virtual reality (VR) to change the work context and allow software engineers to interact with their work environment in a more embodied manner. This study has designed and evaluated a visual programming language (VPL) in VR for its potential to reduce sedentary behavior and its compromise on usability. Ten participants solving simple programming tasks using the VPL in VR revealed the potential of reducing continuous sedentary behavior with light physical activity. The main contributor to this activity was the need to walk to and from interactive elements placed a few meters from each other in the design. However, the usability evaluation showed that users modify the environment over time to reduce this distance such that less walking is needed. In contrast, movement induced by navigating to code blocks and getting an overview of the current state of the work had positive marks and a high contribution to the observed movement. Lastly, the second contributor to physical activity was moving blocks around. The usability evaluation indicates that using VR controllers was slower than using a mouse but allowed more precise interactions. / Stillasittande beteende har ett flertal negativa effekter på en persons hälsa, såsom obesitas, depression och en högre risk för kardiovaskulära händelser. Yrken som främst är stillasittande har ökat på grund av tillväxten av yrken som är kontorsbaserade, till exempel mjukvaruutveckling. Ett potentiellt ingripande för att minska stillasittande beteende är att använda nya interaktiva tekniker, så som virtuell verklighet (VR) för att förändra arbets kontexten och låta mjukvaruingenjörer interagera med sin arbetsmiljö på ett mer förkroppsligat sätt. Denna studie har utvecklat och utvärderat en visuellt programmeringsspråk (VPL) i VR för dess potential att minska stillasittande beteende och dess kompromiss på användbarhet. Tio deltagare som löste enkla programmeringsuppgifter med hjälp av VPL i VR visade potentialen för att bryta upp stillasittande beteende med lätt fysisk aktivitet. Den främsta bidragsgivaren till den observerade aktivitet var behovet av att gå till och från interaktiva element placerade med några meter avstånd från varandra. Utvärderingen visade dock att användare modifierar miljön över tid för att minska detta avstånd så att man behöver gå mindre. Däremot hade rörelser när man behöver navigera till kodblock och få en överblick över arbetet positiva kommentarer och ett högt bidrag till den observerade aktiviteten. Slutligen var aktiviteten att flytta runt block den handling som bidrog näst mest till den observerade fysisk aktivitet. Utvärderingen av användbarheten indikerar att VR-kontroller var långsammare än att använda en mus men tillät mer tillförlitliga interaktioner.
|
Page generated in 0.0276 seconds