Refine
Year of publication
Document Type
- Monograph/Edited Volume (27)
- Article (18)
- Report (1)
Is part of the Bibliography
- yes (46)
Keywords
- Lively Kernel (4)
- Smalltalk (4)
- Debugging (3)
- Squeak (3)
- Experimentation (2)
- Forschungskolleg (2)
- Hasso Plattner Institute (2)
- Hasso-Plattner-Institut (2)
- Java (2)
- JavaScript (2)
- Klausurtagung (2)
- Live-Programmierung (2)
- Prototyping (2)
- Python (2)
- Service-oriented Systems Engineering (2)
- Versionsverwaltung (2)
- Visualisierung (2)
- Werkzeuge (2)
- collection types (2)
- continuous integration (2)
- exploratory programming (2)
- kontinuierliche Integration (2)
- live programming (2)
- memory optimization (2)
- software engineering (2)
- tools (2)
- version control (2)
- virtual machines (2)
- virtuelle Maschinen (2)
- visualization (2)
- AI Lab (1)
- Abhängigkeiten (1)
- Abschlussbericht (1)
- Algorithmen (1)
- Analog-zu-Digital-Konvertierung (1)
- Anfragesprache (1)
- Architektur (1)
- Aspect-oriented Programming (1)
- Benutzerinteraktion (1)
- Beschränkungen und Abhängigkeiten (1)
- Blockheizkraftwerke (1)
- CSCW (1)
- CoExist (1)
- Constraints (1)
- Context-oriented Programming (1)
- Context-oriented programming (1)
- ContextErlang (1)
- ContextJS (1)
- Continuous Testing (1)
- Continuous Versioning (1)
- Custom Writable Class (1)
- DSA (1)
- Data structure optimization (1)
- Datenbank (1)
- Datensatz (1)
- Datenvisualisierung (1)
- Design (1)
- Distributed debugging (1)
- Domain Objects (1)
- Dynamic Type System (1)
- Dynamic adaptation (1)
- Dynamic analysis (1)
- Dynamische Typ Systeme (1)
- Effizienz (1)
- Energiesparen (1)
- Evolution (1)
- Explore-first Programming (1)
- Extensibility (1)
- FRP (1)
- Fault Localization (1)
- Field study (1)
- Functional Lenses (1)
- Geschäftsanwendungen (1)
- GitHub (1)
- Hauptspeicherdatenbank (1)
- Heuristiken (1)
- Human Factors (1)
- Häkeln (1)
- Identifiers (1)
- Implementation (1)
- Interpreter (1)
- JCop (1)
- JIT (1)
- JIT compilers (1)
- KI-Labor (1)
- Languages (1)
- Literature review (1)
- Liveness (1)
- Measurement (1)
- Mehrfamilienhäuser (1)
- Meta-tracing (1)
- Mobile Application Development (1)
- Morphic (1)
- Muster (1)
- Musterabgleich (1)
- Nebenläufigkeit (1)
- Newspeak (1)
- Object Constraint Programming (1)
- Object Versioning (1)
- Object-Oriented Programming (1)
- Objekt-Constraint Programmierung (1)
- Objekt-Orientiertes Programmieren (1)
- Objekt-orientiertes Programmieren mit Constraints (1)
- Online survey (1)
- Open implementations (1)
- Optimierungen (1)
- Pattern Matching (1)
- Patterns (1)
- Performance (1)
- Ph.D. Retreat (1)
- Ph.D. retreat (1)
- Prognosen (1)
- Programmieren (1)
- Programmiererlebnis (1)
- Programmierkonzepte (1)
- Programming Environments (1)
- Programming Languages (1)
- REST (1)
- Racket (1)
- Record and refinement (1)
- Record and replay (1)
- Regressionstests (1)
- Research School (1)
- Ruby (1)
- Sammlungsdatentypen (1)
- Schriftartgestaltung (1)
- Schriftrendering (1)
- Scope (1)
- Scrollytelling (1)
- Serialisierung (1)
- Skript-Entwicklungsumgebungen (1)
- Softwarearchitektur (1)
- Softwareproduktlinien (1)
- Softwaretests (1)
- Source Code Readability (1)
- Spaltenlayout (1)
- Speicheroptimierungen (1)
- Sprachspezifikation (1)
- StackOverflow (1)
- Synchronisation (1)
- Testergebnisse (1)
- Testpriorisierungs (1)
- Transaktionen (1)
- Travis CI (1)
- Uniform Access Principle (1)
- Unveränderlichkeit (1)
- Value classes (1)
- Virtual machines (1)
- Virtuelle Maschinen (1)
- Visualisierungskonzept-Exploration (1)
- Web applications (1)
- Web browsers (1)
- Zugriffskontrolle (1)
- access control (1)
- active layers (1)
- algorithms (1)
- analog-to-digital conversion (1)
- architecture (1)
- architecture recovery (1)
- aspect-oriented programming (1)
- ausführbare Semantiken (1)
- benutzergenerierte Inhalte (1)
- cogeneration units (1)
- comprehension (1)
- computer-aided design (1)
- context groups (1)
- contextual-variability modeling (1)
- continuous testing (1)
- contracts (1)
- crochet (1)
- data set (1)
- data visualization (1)
- debugging (1)
- demografische Informationen (1)
- demographic information (1)
- dependencies (1)
- design (1)
- digital picture archive (1)
- digitales Bildarchiv (1)
- direct manipulation (1)
- direkte Manipulation (1)
- dynamic typing (1)
- dynamic AOP (1)
- dynamic programming languages (1)
- dynamic service adaptation (1)
- dynamic typing (1)
- dynamische Programmiersprachen (1)
- dynamische Sprachen (1)
- efficiency (1)
- energy savings (1)
- entity-component-system (1)
- executable semantics (1)
- exploratives Programmieren (1)
- final report (1)
- font engineering (1)
- font rendering (1)
- forecasts (1)
- functional languages (1)
- functional lenses (1)
- functional programming (1)
- funktionale Programmierung (1)
- group-based behavior adaptation (1)
- heuristics (1)
- immutable values (1)
- implied methods (1)
- integrated development environments (1)
- integrierte Entwicklungsumgebungen (1)
- interactive media (1)
- interaktive Medien (1)
- interpreters (1)
- intuitive Benutzeroberflächen (1)
- intuitive interfaces (1)
- kontinuierliches Testen (1)
- language specification (1)
- languages (1)
- left recursion (1)
- lively groups (1)
- lively kernel (1)
- liveness (1)
- mehrdimensionale Belangtrennung (1)
- mehrsprachige Ausführungsumgebungen (1)
- modularity (1)
- morphic (1)
- multi-dimensional separation of concerns (1)
- multi-family residential buildings (1)
- object-constraint programming (1)
- object-oriented languages (1)
- object-oriented programming (1)
- objektorientiertes Programmieren (1)
- optimizations (1)
- packrat parsing (1)
- parsing expression grammars (1)
- periodic tasks (1)
- periodische Aufgaben (1)
- polyglot execution environments (1)
- predicated generic functions (1)
- program (1)
- programming (1)
- programming experience (1)
- prototyping (1)
- reactive (1)
- reactive object queries (1)
- reaktive Programmierung (1)
- rechnerunterstütztes Konstruieren (1)
- regression testing (1)
- remodularization (1)
- research school (1)
- runtime adaptations (1)
- scripting environments (1)
- scrollytelling (1)
- separation of concerns (1)
- serialization (1)
- service-oriented systems engineering (1)
- small talk (1)
- smalltalk (1)
- software architecture (1)
- software development (1)
- software product lines (1)
- software tests (1)
- squeak (1)
- synchronization (1)
- test case prioritization (1)
- test results (1)
- traceability (1)
- tracing (1)
- use-cases (1)
- user interaction (1)
- user-generated content (1)
- visual language (1)
- visual languages (1)
- visualization concept exploration (1)
- visuelle Sprache (1)
- visuelle Sprachen (1)
- web-based development (1)
- web-based development environment (1)
- web-basierte Entwicklungsumgebung (1)
- webbasierte Entwicklung (1)
We present object versioning as a generic approach to preserve access to previous development and application states. Version-aware references can manage the modifications made to the target object and record versions as desired. Such references can be provided without modifications to the virtual machine. We used proxies to implement the proposed concepts and demonstrate the Lively Kernel running on top of this object versioning layer. This enables Lively users to undo the effects of direct manipulation and other programming actions.
Complexity in software systems is a major factor driving development and maintenance costs. To master this complexity, software is divided into modules that can be developed and tested separately. In order to support this separation of modules, each module should provide a clean and concise public interface. Therefore, the ability to selectively hide functionality using access control is an important feature in a programming language intended for complex software systems.
Software systems are increasingly distributed, adding not only to their inherent complexity, but also presenting security challenges. The object-capability approach addresses these challenges by defining language properties providing only minimal capabilities to objects. One programming language that is based on the object-capability approach is Newspeak, a dynamic programming language designed for modularity and security. The Newspeak specification describes access control as one of Newspeak’s properties, because it is a requirement for the object-capability approach. However, access control, as defined in the Newspeak specification, is currently not enforced in its implementation.
This work introduces an access control implementation for Newspeak, enabling the security of object-capabilities and enhancing modularity. We describe our implementation of access control for Newspeak. We adapted the runtime environment, the reflective system, the compiler toolchain, and the virtual machine. Finally, we describe a migration strategy for the existing Newspeak code base, so that our access control implementation can be integrated with minimal effort.
When realizing a programming language as VM, implementing behavior as part of the VM, as primitive, usually results in reduced execution times. But supporting and developing primitive functions requires more effort than maintaining and using code in the hosted language since debugging is harder, and the turn-around times for VM parts are higher. Furthermore, source artifacts of primitive functions are seldom reused in new implementations of the same language. And if they are reused, the existing API usually is emulated, reducing the performance gains. Because of recent results in tracing dynamic compilation, the trade-off between performance and ease of implementation, reuse, and changeability might now be decided adversely.
In this work, we investigate the trade-offs when creating primitives, and in particular how large a difference remains between primitive and hosted function run times in VMs with tracing just-in-time compiler. To that end, we implemented the algorithmic primitive BitBlt three times for RSqueak/VM. RSqueak/VM is a Smalltalk VM utilizing the PyPy RPython toolchain. We compare primitive implementations in C, RPython, and Smalltalk, showing that due to the tracing just-in-time compiler, the performance gap has lessened by one magnitude to one magnitude.
In object-oriented programming, polymorphic dispatch of operations decouples clients from specific providers of services and allows implementations to be modified or substituted without affecting clients.
The Uniform Access Principle (UAP) tries to extend these qualities to resource access by demanding that access to state be indistinguishable from access to operations. Despite language features supporting the UAP, the overall goal of substitutability has not been achieved for either alternative resources such as keyed storage, files or web pages, or for alternate access mechanisms: specific kinds of resources are bound to specific access mechanisms and vice versa. Changing storage or access patterns either requires changes to both clients and service providers and trying to maintain the UAP imposes significant penalties in terms of code-duplication and/or performance overhead.
We propose introducing first class identifiers as polymorphic names for storage locations to solve these problems. With these Polymorphic Identifiers, we show that we can provide uniform access to a wide variety of resource types as well as storage and access mechanisms, whether parametrized or direct, without affecting client code, without causing code duplication or significant performance penalties.
Developing large software projects is a complicated task and can be demanding for developers. Continuous integration is common practice for reducing complexity. By integrating and testing changes often, changesets are kept small and therefore easily comprehensible. Travis CI is a service that offers continuous integration and continuous deployment in the cloud. Software projects are build, tested, and deployed using the Travis CI infrastructure without interrupting the development process. This report describes how Travis CI works, presents how time-driven, periodic building is implemented as well as how CI data visualization can be done, and proposes a way of dealing with dependency problems.