11 |
A Scala DSL for Rust code generationSegeljakt, Klas January 2018 (has links)
Continuous Deep Analytics (CDA) is a new form of analytics with performance requirements exceeding what the current generation of distributed systems can offer. This thesis is part of a five year project in collaboration between RISE SICS and KTH to develop a next generation distributed system capable of CDA. The two issues which the system aims to solve are computation sharing and hardware acceleration. The former refers to how BigData and machine learning libraries such as TensorFlow, Pandas and Numpy must collaborate in the most efficient way possible. Hardware acceleration relates to how the back-end of current generation general purpose data processing systems such as Spark and Flink are bottlenecked by the Java Virtual Machine (JVM). As the JVM abstracts over the underlying hardware, its applications become portable but also forfeit the opportunity to fully exploit the available hardware resources. This thesis aims to explore the area of Domain Specific Languages (DSLs) and code generation as a solution to hardware acceleration. The idea is to translate incoming queries to the system into low-level code, tailor suited to each worker machine’s specific hardware. To this end, two Scala DSLs for generating Rust code have been developed for the translation step. Rust is a new, low-level programming language with a unique take on memory management which makes it as safe as Java and fast as C. Scala is a language which is well suited towards development of DSLs due to its flexible syntax and semantics. The first DSL is implemented as a string interpolator. The interpolator splices strings of Rust code together, at compile time or runtime, and passes the result to an external process for static checking. The second DSL instead provides an API for constructing an abstract syntax tree, which after construction can be traversed and printed into Rust source code. The API combines three concepts: heterogeneous lists, fluent interfaces, and algebraic data types. These allow the userto express advanced Rust syntax such as polymorphic structs, functions, and traits, without sacrificing type safety. / Kontinuerlig Djup Analys (CDA) är en ny form av analys med prestandakrav som överstiger vad den nuvarande generationen av distributerade system kan erbjuda. Den här avhandlingen är del av ett project mellan RISE SICS och KTH för att utveckla ett nästa-generations distribuerat system kapabelt av CDA. Det är två problem som systemet syftar på att lösa: hårdvaruacceleration och beräkningsdelning. Det första handlar om hur BigData och maskininlärningssystem som sådan som TensorFlow, Pandas och Numpy måste kunna samarbeta så effektivt som möjligt. Hårdvaruacceleration relaterar till hur back-end delen i den dagens distribuerade beräknings system, såsom Spark och Flink, flaskhalsas av Javas Virtuella Maskin. JVM:en abstraherar över den underliggande hårvaran. Som resultat blir dess applikationer portabla, men ger också upp möjligheten att fullständigt utnyttja de tillgängliga hårdvaruresurserna. Den här avhandlingen siktar på att utforska området kring Domänspecifika Språk (DSLer) och kodgenerering som en lösning till hårdvaruacceleration. Idén är att översätta inkommande förfrågningar till låg-nivå kod, skräddarsydd till varje arbetar maskin’s specifika hårdvara. Till detta ändamål har två Scala DSLer utvecklats för generering av Rust kod. Rust är ett nytt låg-nivå språk med ett unikt vidtagande kring minneshantering som gör det både lika säkert som Java och snabbt som C. Scala är ett språk som passar bra tillutveckling av DSLer pågrund av dess flexibla syntax och semantik. Den första DSLen är implementerad som en sträng-interpolator. Interpolatorn sammanfogar strängar av Rust kod, under kompileringstid eller exekveringstid, och passerar resultatet till enextern process för statisk kontroll. Den andra DSLen består istället av ett API för att konstruera ett abstrakt syntaxträd, som efteråt kan traverseras och skrivas ut till Rust kod. API:et kombinerar tre koncept: heterogena listor, flytande gränssnitt, och algebraiska datatyper. Dessa tillåter användaren att uttrycka avancerad Rust syntax, såsom polymorfiska strukts, funktioner, och traits, utan att uppoffra typsäkerhet.
|
12 |
A JavaScript Backend for the Miking CompilerRågstad, William January 2022 (has links)
This thesis presents the design and implementation of an extension of the self-hosted Miking compiler to enable the generation of JavaScript code for different runtime environments and web browsers. Miking is a framework for developing domain-specific and general-purpose programming languages through sound language fragment composition, among other things, to create efficient compilers. Miking Core encapsulates a meta-language called Miking Lang and a fundamental functional Miking Expression language which Miking Lang itself is also lowered to. The presented backend translates Miking expressions into semantically equivalent effective, readable, sound, and correct JavaScript programs. In this report, development challenges, implementation methods, and techniques are also discussed and evaluated along with a review of the final compiler backend. Likewise, details on JavaScript-specific optimizations and pattern-matching compilation are presented, including how tail recursion is handled to enable complex Miking programs to be compiled into flexible and efficient JavaScript. / Detta examensarbete presenterar design och implementation för utveckling av Miking-kompilatorn, med syfte att möjliggöra generering av JavaScript-kod för olika exekveringsmiljöer och webbläsare. Miking är ett ramverk för att utveckla domänspecifika och generella programmeringsspråk genom sund komposition av språksfragment som kan används för att skapa effektiva kompilatorer. Miking Core ramverket innehåller ett metaspråk kallat Miking Lang, vilket ”sänks” till det mer grundläggande funktionella Miking Expression-språket. ”Sänkning” betyder i huvudsak att skriva om mer komplexa semantiska konstruktioner i form av enklare. Den backend som presenteras översätter Miking-uttryck till semantiskt ekvivalenta JavaScript program som också är effektiva, läsbara, sunda och korrekta. I denna rapport diskuteras och utvärderas även utvecklingsutmaningar, implementeringsmetod och andra tekniker som har använts under arbetet. På samma sätt presenteras detaljer om JavaScript-specifika optimeringar och mönstermatchningskompilering, inklusive hur svansrekursion hanteras för att möjliggöra kompilering av komplexa Miking-program till flexibel och effektiv JavaScript med hjälp av ”trampoline” teknik.
|
13 |
En studie om ChatGPT som verktyg i programvaruutveckling:Möjligheter och begränsningar / A study on ChatGPT as a tool in software development: Possibilities and limitationsElias, Khaleel, Yousif, Fahed January 2023 (has links)
Denna studie presenterar en undersökning om användningen av ChatGPT inom programvaruutveckling. Med den snabba tillväxten av artificiell intelligens (AI) och dess inverkan på teknikområdet, har verktyg som ChatGPT blivit alltmer relevanta inom mjukvaruutveckling. Studiens huvudsyfte är att undersöka hur ChatGPT kan fungera som ett verktyg i programvaruutvecklingsprocessen och om det kan bidra till att underlätta utvecklingsprocessen för en utvecklare.Genom en kombination av enkätundersökningar och experiment har studien visat att ChatGPT har potential att vara ett värdefullt verktyg inom programvaruutveckling. Detta genom att erbjuda automatisk kodkomplettering och andra hjälpmedel som kan förbättra utvecklarnas effektivitet. Resultaten från denna studie indikerar att integrationen av AI-verktyg som ChatGPT i mjukvaruutvecklingsprocessen kan leda till förbättrade arbetsflöden och ökad produktivitet. Dock bör ytterligare forskning genomföras för att fullt ut förstå fler potentiella fördelar och utmaningar. För att ytterligare förstå ChatGPT:s roll inom programvaruutveckling rekommenderas det att utföra mer omfattande fältstudier där verktyget används i verkliga utvecklingsprojekt. / This study presents an investigation into the use of ChatGPT in the software development field. With the rapid growth of artificial intelligence (AI) and its impact on the technology field, tools like ChatGPT have become increasingly relevant in software development. The main aim of the study is to investigate how ChatGPT can work as a tool in the software development process and if it can help facilitate the development process for a developer.Through a combination of questionnaire survey and experiments, the study has shown that ChatGPT has the potential to be a tool of great value in software development. This by offering automatic code completion and other aids that can improve developers' efficiency. The results of this study indicate that the integration of AI tools such as ChatGPT into the software development process can lead to improved workflows and increased productivity. However, further research should be conducted to better understand potential benefits and challenges. To further understand ChatGPT's role in software development, it is recommended to conduct more extensive field studies where the tool is used in real world development projects.
|
14 |
Implicit Message Integrity Provision : In Heterogeneous Vehicular Systems / Implicit Integritet i Heterogena Fordonsmiljöer SystemsMolloy, Paul January 2023 (has links)
Vehicles on the road today are complex multi-node computer networks. Security has always been a critical issue in the automotive computing industry. It is becoming even more crucial with the advent of autonomous vehicles and driver assistant technology. There is potential for attackers to control vehicles maliciously. Traditionally Original Equipment Manufacturers have relied on physical security and a firewall to secure vehicles but with network connected and autonomous capable vehicles this is not enough. The concept of defence in depth is required. This means not trusting that internal traffic inside the firewall is benign. Each node in the vehicles network should be able to verify the authenticity and validity of communications it receives from other nodes. Implementation of the crypto-graphic systems for doing this is error prone. Therefore a key issue in the thesis is reducing the attack surface by developing these checks in the autonomous vehicle stack in a scalable way so the programmer does not have to be aware of this security layer on a day-to-day basis nor re-implement it for each node in these heterogeneous systems. Although message integrity and authenticity verification have been studied and implemented in many fields, the area of heterogeneous autonomous systems present unique research challenges. There are tight performance constraints due to the real time requirements for vehicle control systems and data publishing rates. It is an open question if this approach can achieve performance within the bounds required for a reliable autonomous vehicle. Additionally the security benefit of scalably automatically generating the message integrity verification code across all of the nodes in a heterogeneous system would help the field quantify the defect reduction and security benefit of this kind of code generation on complex software systems. / Dagens fordon på vägarna är komplexa datanät med flera noder. Säkerheten har alltid varit en viktig fråga inom bilindustrin. Det blir ännu viktigare i och med tillkomsten av autonoma fordon och förarassistentteknik. Det finns en potential för angripare att styra fordon på ett illvilligt sätt. Traditionellt har tillverkare av originalutrustning förlitat sig på fysisk säkerhet och en brandvägg för att säkra fordonen, men med nätverksanslutna och autonoma fordon räcker detta inte längre. Begreppet försvar på djupet är nödvändigt. Detta innebär att man inte kan lita på att den interna trafiken innanför brandväggen är godartad. Varje nod i fordonets nätverk bör kunna kontrollera äktheten och giltigheten hos den kommunikation som den tar emot från andra noder. Genomförandet av kryptografiska system för att göra detta är felkänsligt. En viktig fråga i avhandlingen är därför att minska angreppsytan genom att utveckla dessa kontroller i det autonoma fordonet på ett skalbart sätt så att programmeraren inte behöver vara medveten om detta säkerhetslager dagligen eller implementera det på nytt för varje nod i dessa heterogena system. Även om meddelandeintegritet och äkthetskontroll har studerats och genomförts inom många områden, innebär området heterogena autonoma system unika forskningsutmaningar. Det finns snäva prestandabegränsningar på grund av realtidskraven för fordonskontrollsystem och datapubliceringshastigheter. Det är en öppen fråga om detta tillvägagångssätt kan uppnå prestanda inom de gränser som krävs för ett tillförlitligt autonomt fordon. Dessutom skulle säkerhetsfördelarna med en skalbar automatisk generering av koden för verifiering av meddelandets integritet över alla noder i ett heterogent system hjälpa fältet att kvantifiera felminskningen och säkerhetsfördelarna med denna typ av kodgenerering i komplexa programvarusystem.
|
15 |
Användning av ChatGPT : En intervjustudie om generativ AI som ett interaktivt bollplank hos Utvecklare / Use of ChatGPT : An Interview Study on Generative AI as an Interactive Sounding Board for DevelopersBerling, Kevin January 2024 (has links)
Utvecklare ställs inför ständigt mer komplexa problem och utmaningar som kräver innovativalösningar. Traditionellt har de använt kollegor, forum och dokumentation som resurser för attbolla idéer och utarbeta lösningar. Med de senaste framstegen inom artificiell intelligens (AI)har nya möjligheter öppnats upp. AI har potentialen att fungera inte bara som ensamtalspartner utan också som en kritiker och problemlösare i utvecklarens arbetsflöde.Denna studie utforskar interaktionen mellan utvecklare och ChatGPT i deras dagliga arbetemed ett särskilt fokus på hur ChatGPT kan användas som ett bollplank. Genom en kvalitativforskningsmetod, baserad på djupgående semistrukturerade intervjuer med nio utvecklare,undersöker studien hur dessa utvecklare integrerar ChatGPT i sina arbetsflöden och vilkaverktyg och metoder de använder för att underlätta denna interaktion. Analysen belyser ocksåChatGPT bidrag till problemlösning och beslutsfattande samt de tekniska och organisatoriskautmaningar som utvecklarna möter.Resultaten visar att ChatGPT är ett värdefullt verktyg för att förbättra kodkvaliteten, skapatemplates och boilerplate-kod samt för att effektivisera dokumentation ochöversättningsprocesser. Dock identifierades begränsningar såsom långsam respons, behovetav specifika formuleringar och svårigheter med att hantera komplexa eller nischade problem.Studien konkluderar att trots dessa utmaningar har ChatGPT en betydande potential attfungera som en konstruktiv partner i utvecklares dagliga arbete, vilket kan leda till ökadeffektivitet och förbättrad kvalitet i mjukvaruutvecklingsprocessen.
|
Page generated in 0.0603 seconds