Refine
Year of publication
Document Type
- Article (31128)
- Part of Periodical (11550)
- Book (8266)
- Doctoral Thesis (5713)
- Part of a Book (3967)
- Working Paper (3385)
- Review (2939)
- Contribution to a Periodical (2368)
- Preprint (2084)
- Report (1560)
Language
- German (42718)
- English (29217)
- French (1060)
- Portuguese (840)
- Spanish (309)
- Croatian (302)
- Multiple languages (258)
- Italian (198)
- mis (174)
- Turkish (168)
Has Fulltext
- yes (75568) (remove)
Keywords
- Deutsch (1076)
- Literatur (868)
- taxonomy (760)
- Deutschland (553)
- Rezension (511)
- new species (449)
- Rezeption (354)
- Frankfurt <Main> / Universität (341)
- Übersetzung (326)
- Geschichte (300)
Institute
- Medizin (7691)
- Präsidium (5170)
- Physik (4464)
- Extern (2738)
- Wirtschaftswissenschaften (2686)
- Gesellschaftswissenschaften (2369)
- Biowissenschaften (2184)
- Biochemie und Chemie (1975)
- Frankfurt Institute for Advanced Studies (FIAS) (1686)
- Center for Financial Studies (CFS) (1628)
Software evolves. Developers and programmers manifest the needs that arise due to evolving software by making changes to the source code. While developers make such changes, reusing old code and rewriting existing code are inevitable. There are many challenges that a developer faces when manually reusing old code or rewriting existing code. Software tools and program transformation systems aid such reuse or rewriting of program source code. But there are significantly occuring development tasks that are hard to accomplish manually, where the current state-of-the-art tools are still not able to adequately automate these tasks. In this thesis, we discuss some of these unexplored challenges that a developer faces while reusing and rewriting program source code, the significance of such challenges, the existing automation support for these challenges and how we can improve upon them.
Modern software development relies on code reuse, which software developers
typically realize through hand-written abstractions, such as functions,
methods, or classes. However, such abstractions can be challenging to
develop and maintain. An alternative form of reuse is \emph{copy-paste-modify}, in which developers explicitly duplicate source code to adapt the duplicate for a new purpose. Copy-pasted code results in code clones, i.e., groups of code fragments that are similar to each other. Past research strongly suggests that copy-paste-modify is a popular technique among software developers. In this paper, we perform a small user study that shows that copy-paste-modify can be substantially faster to use than manual abstraction.
One might propose that software developers should forego hand-written abstractions in favour of copying and pasting. However, empirical evidence also shows that copy-paste-modify complicates software maintenance and increases the frequency of bugs. Furthermore, the developers in an informal poll we conducted strongly preferred to read code written using abstractions. To address the concern around copy-paste-modify, we propose a tool that merges similar pieces of code and automatically creates suitable abstractions. Our tool allows developers to get the best of both worlds: easy reuse together with custom abstractions. Because different kinds of abstractions may be beneficial in different contexts, our tool provides multiple abstraction mechanisms, which we selected based on a study of popular open-source repositories.
To demonstrate the feasibility of our approach, we have designed and implemented a prototype merging tool for C++ and evaluated our tool on a number of clones exhibiting some variation, i.e near clones, in popular Open Source packages. We observed that maintainers find our algorithmically created abstractions to be largely preferable to existing duplicated code. Rewriting existing code can be considered as a form of program transformation, where a program in one form is transformed into a program in another form. One significant form of program transformation is data representation migration that involves changing the type of a particular data structure, and then updating all of the operations that has a control or data dependence on that data structure according to the new type. Changing the data representation can provide benefits such as improving efficiency and improving the quality of the computed results. Performing such a transformation is challenging, because it requires applying data-type specific changes to code fragments that may be widely scattered throughout the source code connected by dataflow dependencies. Refactoring systems are typically sensitive to dataflow dependencies, but are not programmable with respect to the features of particular data types. Existing program transformation languages provide the needed flexibility, but do not concisely support reasoning about dataflow dependencies.
To address the needs of data representation migration, we propose a new approach to program transformation that relies on a notion of semantic dependency: every transformation step propagates the transformation process onward to code that somehow depends on the transformed code. Our approach provides a declarative transformation specification language, for expressing type-specific transformation rules. We further provide scoped rules, a mechanism for guiding rule application, and tags, a device for simple program analysis within our framework, to enable more powerful program transformations.
We have implemented a prototype transformation system based on these ideas for C and C++ code and evaluate it against three example specifications, including vectorization, transformation of integers to big integers, and transformation of array-of-structs data types to struct-of-arrays format. Our evaluation shows that our approach can improve program performance and the precision of the computed results, and that it scales to programs of at least 3700 lines.
Vitamin-D-Mangel – ein Risikofaktor für Diabetes : wie Forscher das Immunsystem umprogrammieren
(2016)
Was tun, wenn das Immunsystem nicht mehr zwischen fremden und eigenen Zellen unterscheiden kann? Bei Diabetes Typ 1, einer der häufigsten Autoimmunerkrankungen, gibt es bisher keine Heilung. Besonders schwierig wird die Therapie, wenn parallel dazu weitere Autoimmunerkrankungen auftreten. Mit Vitamin D und anderen Immunmodulatoren soll sich die Situation der Patienten in Zukunft grundlegend verbessern.
Organspenden retten und verlängern Leben : Prof. Dr. Ingeborg Hauser im Interview mit Dr. Anne Hardy
(2016)
Der 21. Mai 2015 ist für Claudia und Timothy Pillar ein besonderer Tag. Seitdem verbindet das Paar mehr als die Erlebnisse einer fast vierzigjährigen Ehe und ein gemeinsamer Sohn. Tim Pillar hat seiner Frau eine Niere gespendet und ihr damit wieder ein (fast) normales Leben ermöglicht. Inzwischen spricht sie von ihrer Krankheit in der Vergangenheitsform.
Überraschende neue Antworten auf die althergebrachte Frage nach dem »Eigenen« und »Fremden« geben die Romane des indischstämmigen Schriftstellers Moyez G. Vassanji, der in Kenia geboren wurde, seit Jahrzehnten in Kanada lebt und heute zu den bedeutendsten Autoren der ostafrikanischen Gegenwartsliteratur zählt. Seine Protagonisten verkörpern eine transregionale Verflechtungsgeschichte, die aus europäischer Perspektive kaum wahrgenommen wird, aber durchaus Impulse für aktuelle Debatten geben kann.
Der Film als modernes mobiles Medium lebt von Erfahrungen des Eigenen und Fremden. Zeigten die Reisefilme zu Beginn des 20. Jahrhunderts bewusst die »wunderbare Differenz« zur eigenen Wirklichkeit, wurde in der heilen Welt der Heimatfilme nach Ende des Zweiten Weltkriegs das Eigene für den Konsum verfügbar gemacht. Erst die Hollywood-Blockbuster verfolgten die Strategie, das kulturell Fremde so zu minimieren, dass daraus der für alle verständliche »Dialekt der Moderne« wurde.
Einflüsse aus anderen Sprachen gehören zum Sprachwandel. Doch wie viele fremde Wörter und Wendungen verträgt eine Sprache? Wann sind sie das Salz in der Suppe? Wann und warum gelten sie als Störfaktor? Das Verhältnis zum Fremdwort kann viel aussagen über den allgemeinen Zustand einer Sprachgemeinschaft – vor allem der deutschen.