1,490 research outputs found

    The Subtle and Counterintuitive Hazards of Non-Sequential Evaluation in Languages of the C Family

    Get PDF
    In the family of programming languages derived from the C programming language, the order of evaluation of expressions between sequence points is left undefined and may be counterintuitive. While most programmers assume that this lack of a defined order refers only to a lack of preference between left-to-right and right-to-left sequential evaluation, the standards actually permit, and language processors implement, a variety of non-sequential evaluation orders. In some cases, particularly those where expressions containing sequence points are combined without an intervening sequence point, computed results can be unanticipated, and can vary with different compilers for the same code. Yet these results fail to trigger any warning from compilers or syntax-checkers. Because languages of the C family dominate Information Systems curricula and new business application code, the risk that code in those languages may give incorrect results without any warning from automated tools presents significant hazards against the integrity of financial calculations. This article explains those hazards and outlines countermeasures

    An efficient, parametric fixpoint algorithm for analysis of java bytecode

    Get PDF
    Abstract interpretation has been widely used for the analysis of object-oriented languages and, in particular, Java source and bytecode. However, while most existing work deals with the problem of flnding expressive abstract domains that track accurately the characteristics of a particular concrete property, the underlying flxpoint algorithms have received comparatively less attention. In fact, many existing (abstract interpretation based—) flxpoint algorithms rely on relatively inefHcient techniques for solving inter-procedural caligraphs or are speciflc and tied to particular analyses. We also argüe that the design of an efficient fixpoint algorithm is pivotal to supporting the analysis of large programs. In this paper we introduce a novel algorithm for analysis of Java bytecode which includes a number of optimizations in order to reduce the number of iterations. The algorithm is parametric -in the sense that it is independent of the abstract domain used and it can be applied to different domains as "plug-ins"-, multivariant, and flow-sensitive. Also, is based on a program transformation, prior to the analysis, that results in a highly uniform representation of all the features in the language and therefore simplifies analysis. Detailed descriptions of decompilation solutions are given and discussed with an example. We also provide some performance data from a preliminary implementation of the analysis

    Strategic Directions in Object-Oriented Programming

    Get PDF
    This paper has provided an overview of the field of object-oriented programming. After presenting a historical perspective and some major achievements in the field, four research directions were introduced: technologies integration, software components, distributed programming, and new paradigms. In general there is a need to continue research in traditional areas:\ud (1) as computer systems become more and more complex, there is a need to further develop the work on architecture and design; \ud (2) to support the development of complex systems, there is a need for better languages, environments, and tools; \ud (3) foundations in the form of the conceptual framework and other theories must be extended to enhance the means for modeling and formal analysis, as well as for understanding future computer systems

    What Java Developers Know About Compatibility, And Why This Matters

    Full text link
    Real-world programs are neither monolithic nor static -- they are constructed using platform and third party libraries, and both programs and libraries continuously evolve in response to change pressure. In case of the Java language, rules defined in the Java Language and Java Virtual Machine Specifications define when library evolution is safe. These rules distinguish between three types of compatibility - binary, source and behavioural. We claim that some of these rules are counter intuitive and not well-understood by many developers. We present the results of a survey where we quizzed developers about their understanding of the various types of compatibility. 414 developers responded to our survey. We find that while most programmers are familiar with the rules of source compatibility, they generally lack knowledge about the rules of binary and behavioural compatibility. This can be problematic when organisations switch from integration builds to technologies that require dynamic linking, such as OSGi. We have assessed the gravity of the problem by studying how often linkage-related problems are referenced in issue tracking systems, and find that they are common

    Implementing and monitoring the use of artificial canopy bridges by mammals and birds in an Indonesian agroforestry environment

    Get PDF
    Deforestation is a major threat to biodiversity, particularly within tropical forest habitats. Some of the fastest diminishing tropical forest habitats in the world occur in Indonesia, where fragmentation is severely impacting biodiversity, including on the island of Java, which holds many endemic species. Extreme fragmentation on the western part of the island, especially due to small-scale agriculture, impacts animal movement and increases mortality risk for mainly arboreal taxa. To mitigate this risk in an agroforest environment in Garut District, West Java, we installed 10 canopy bridges and monitored them through camera trapping between 2017 and 2019. Five of the monitored bridges were made of waterlines and five of rubber hose. We recorded Javan palm civets using the waterline bridges 938 times, while Javan slow lorises used the waterlines 1079 times and the rubber bridges 358 times. At least 19 other species used the bridges for crossing or perching. Our results demonstrate that relatively simple and cost-effective materials can be used to mitigate the effects of habitat fragmentation. We also recommend the use of camera traps to monitor the effectiveness of these interventions

    Draining the Swamp: Micro Virtual Machines as Solid Foundation for Language Development

    Get PDF
    Many of today\u27s programming languages are broken. Poor performance, lack of features and hard-to-reason-about semantics can cost dearly in software maintenance and inefficient execution. The problem is only getting worse with programming languages proliferating and hardware becoming more complicated. An important reason for this brokenness is that much of language design is implementation-driven. The difficulties in implementation and insufficient understanding of concepts bake bad designs into the language itself. Concurrency, architectural details and garbage collection are three fundamental concerns that contribute much to the complexities of implementing managed languages. We propose the micro virtual machine, a thin abstraction designed specifically to relieve implementers of managed languages of the most fundamental implementation challenges that currently impede good design. The micro virtual machine targets abstractions over memory (garbage collection), architecture (compiler backend), and concurrency. We motivate the micro virtual machine and give an account of the design and initial experience of a concrete instance, which we call Mu, built over a two year period. Our goal is to remove an important barrier to performant and semantically sound managed language design and implementation

    Evolution of a supply chain management game for the trading agent competition

    Get PDF
    TAC SCM is a supply chain management game for the Trading Agent Competition (TAC). The purpose of TAC is to spur high quality research into realistic trading agent problems. We discuss TAC and TAC SCM: game and competition design, scientific impact, and lessons learnt

    Management implications of moving from a traditional structured systems development methodology to object-orientation

    Get PDF
    Thesis (M.S.) University of Alaska Fairbanks, 2003As software application systems become larger and more complex, many software employers and managers believe that the key to sustaining its competitive advantage in the computing technology market lies in its software engineering capabilities. Software crisis situation seems to be a common occurrence in the software development environment as systems become larger and more complex. Object Orientation (OO) has been proposed as a viable alternative to traditional approach (i.e., structured techniques), an approach that many hope will solve the current software crisis. 00 is a new paradigm, and it requires new types of knowledge, new specialists, and significant changes in the mindset, an entirely different way of thinking, representing and solving a problem. The transition of moving toward the 00 from the traditional approach may involve a high risk of failure if the managers do not understand the nature of paradigm shifts and do not anticipate the future. The problem of moving to 00 has become very important. An understanding of potential problems from migrating to the new paradigm helps managers make a smoother paradigm shift. The implications and challenges of the 00 paradigm are presented. The study suggests that Object-Oriented System Development (OOSD) requires more discipline, management and training than traditional software development does. Education and experience are keys for the success of any OOSD project
    • …
    corecore