10 research outputs found

    Programming Language Feature Agglomeration

    Get PDF
    Feature-creep is a well-known phenomenon in software systems. In this paper, we argue that feature-creep also occurs in the domain of programming languages. Recent languages are more expressive than earlier languages. However recent languages generally extend rather than replace the syntax (sometimes) and semantics (almost always) of earlier languages. We demonstrate this trend of agglomeration in a sequence of languages comprising Pascal, C, Java, and Scala. These are all block-structured Algol-derived languages, with earlier languages providing explicit inspiration for later ones. We present empirical evidence from several language-specific sources, including grammar definitions and canonical manuals. The evidence suggests that there is a trend of increasing complexity in modern languages that have evolved from earlier languages

    Programming Languages: A Survey

    Get PDF
    The world of Programming Languages is very dynamic. Every company is launching their own programming language which can cater their specific demand and requirement. In this paper, we discussed various popular rankings proposed by different organizations to decide most popular language on basis of various factors like number of Google Trends searches, number of job advertisements, and number of books sold for that language and many more factors

    Software Education for Changing Computing Technology

    Get PDF
    Software education has been dominated by procedural-based programming languages such as BASIC, FORTRAN and C, and before that, the assembly languages. The primary reason that this methodology has held such sway in education was that it allowed quick action for the first major users of computers. This approach was the most straight-forward means of utilizing hardware that, over the last 60 years, has gotten faster and more complex through smaller and more densely packed elements. However, traditional advances as described by Moore’s law are now reaching both physical and economic limits. Pure object-oriented programming approaches offer benefits for hardware that is highly parallel and that is of non-traditional design. This work describes the evolution of computational technology, explores features of pure object-oriented languages such as Squeak Smalltalk, and discusses proactive curricula options

    Estudio Comparativo y Análisis de Rendimiento de los Lenguajes de Manipulación de Datos en Bases de Datos Orientadas a Objetos y Bases de Datos Objeto-Relacionales

    Get PDF
    El modelo relacional puro posee restricciones: los tipos de datos deben ser atómicos para satisfacer la primera forma normal, así como las demás. Para tratar objetos complejos existen dos opciones: lenguajes de manipulación de datos que respeten el POO y manejen objetos persistentes o bases de datos objeto-relacionales; quienes proveen constructores para manipular datos complejos respetando el modelo relacional. Los lenguajes de programación (LP) tuvieron desarrollo creciente, adaptándose a necesidades de diferentes dominios de aplicación, liberando versiones periódicas adaptadas a estándares. Esto generó adaptaciones a pautas de diseño e implementación de programas, permitiendo el desarrollo de aplicaciones para bases de datos (BD). Estas adaptaciones en LP no específicos para BD poseen la restricción impuesta por el modelo de BD y el modelo del LP, lo que no se produce en lenguajes específicos para BD. Además, los LP poseen características para producir software con cualidades como confiabilidad, mantenibilidad y eficiencia, entre otras. Se plantea la realización del estudio comparativo de los lenguajes de manipulación de datos en sistemas de BD, analizando rendimiento de lenguajes orientados a objetos en función de las cualidades del software que produce con ellos, y comparándolos con los lenguajes de manipulación de datos en BD objeto-relacionales

    AN INVESTIGATION OF COMMON CODING ERRORS IN OPEN SOURCE GRAPHICAL USER INTERFACE CODE

    Get PDF
    Introduction: This thesis investigates the occurrence of coding errors in the Open Source Software (OSS) Graphical User Interface (GUI) code. Characteristics of coding errors in the OSS GUI code are explored and analyzed so that guidelines are proposed to lower the influence of coding errors in OSS GUI software. Background: This thesis recognizes the increased prominence of, as well as the increased total volume of OSS GUI code within modern software applications. This thesis seeks to identify whether specific types of errors manifest themselves more frequently in GUI code. The rationale behind this investigation is that: if specific errors are known to occur in specific locations then they can be more easily identified; if specific errors are due to specific causes then they can be more easily recognized in earlier stages of software development. Methods: Common coding errors were selected and examined in example OSS code using an automatic code inspection. An analysis of results from this inspection identified the frequency and location (i.e. in GUI or non-GUI code) of the common coding error. An initial sample of OSS GUI projects was selected to be examined and a wider range of OSS GUI projects was randomly chosen to evaluate the results that were obtained from the initial sample. Results: It was found that there are some differences in the type of errors within differing portions of source code. Certain types of coding errors were more frequently identified in GUI code than non-GUI code and corresponding typical GUI coding error-prone behaviors were summarized. Discussion: Awareness of these differences helps predict errors during the earlier stages of software development. Comprehension of these GUI coding error-prone behaviours contributes to prevent typical GUI coding errors as much as possible during the whole lifecycle of OSS GUI projects

    Software Technology Maturation and Software Security

    Get PDF
    Software technology maturation, also referred to as technology transfer, is as difficult as it is rare, mostly because of the time scale involved. Software maturation is defined as the process of taking a piece of technology from conception to popularization. Frequently, software engineers and developers tend to oversimplify the problems of technology transfer. They attribute problems to management pressures that complicate the use of software-engineering practices. However, a good understanding of the processes and problems is necessary to effectively tackle the technology-transfer problem. Without that understanding, the transfer of inappropriate technology to an organization without the maturity to understand and absorb it is likely to do harm, rather than to bring benefits. This research aims to answer two research questions regarding the technology maturation. Namely, is Redwine and Riddle's "Software Technology Maturation" study the accepted and gold standard within the software engineering discipline for assessing the maturation of software technology? Secondly, can the software technology maturation study be applied to other areas of software technology? The purpose of this research is to answer these questions of interest which will serve as the basis for the second implementation; applying the Redwine and Riddle criteria to the comparatively young discipline of software security. The primary goal for the second implementation is to explore and extend the second research question and demonstrate the maturity phases for the field of software security

    A Methodology for Transforming Java Applications Towards Real-Time Performance

    Get PDF
    The development of real-time systems has traditionally been based on low-level programming languages, such as C and C++, as these provide a fine-grained control of the applications temporal behavior. However, the usage of such programming languages suffers from increased complexity and high error rates compared to high-level languages such as Java. The Java programming language provides many benefits to software development such as automatic memory management and platform independence. However, Java is unable to provide any real-time guarantees, as the high-level benefits come at the cost of unpredictable temporal behavior.This thesis investigates the temporal characteristics of the Java language and analyses several possibilities for introducing real-time guarantees, including official language extensions and commercial runtime environments. Based on this analysis a new methodology is proposed for Transforming Java Applications towards Real-time Performance (TJARP). This method motivates a clear definition of timing requirements, followed by an analysis of the system through use of the formal modeling languageVDM-RT. Finally, the method provides a set of structured guidelines to facilitate the choice of strategy for obtaining real-time performance using Java. To further support this choice, an analysis is presented of available solutions, supported by a simple case study and a series of benchmarks.Furthermore, this thesis applies the TJARP method to a complex industrialcase study provided by a leading supplier of mission critical systems. Thecase study proves how the TJARP method is able to analyze an existing and complex system, and successfully introduce hard real-time guaranteesin critical sub-components

    Combining functional and object-imperative software components

    Get PDF
    Yksi ensimmäisistä tehtävistä ohjelman toteutuksen alkuvaiheessa on ohjelmointikielen valinta. Tutkimukset ovat osoittaneet, että sopivan ohjelmointikielen valinnalla on suuri merkitys ohjelman elinkaarikustannuksiin. Siksi valinta tulisikin tehdä hyvin perusteltujen syiden pohjalta. Koska yleisimmin käytetyt ohjelmointikielet ovat olio-imperatiivisia, on siksi olemassa erittäin paljon valmiita ohjelmistokomponentteja, jotka on toteutettu näillä kielillä. Täysin uuttakaan ohjelmaa toteutettaessa ei yleensä haluta toteuttaa kaikkia ominaisuuksia aivan alusta asti, vaan ohjelmiston suunnittelussa pyritään hyödyntämään olemassa olevia komponentteja. Kun ohjelmointikieleksi valitaan esimerkiksi funktionaalinen kieli, on usein varauduttava liittymään jollain muulla ohjelmointikielellä toteutettuun komponenttiin. Tällaisissa tapauksissa kahden erilaisen ohjelmointikielen ja niiden paradigmojen yhdistäminen saattaa olla haasteellista. Tässä diplomityössä tutkitaan, miten C#:lla ja F#:lla toteutettujen komponenttien yhdistäminen voidaan tehdä ja miten eri paradigmojen yhdistämisestä seuraavat ongelmat voidaan ratkaista. Tämän lisäksi työssä tutkittiin C#:n ja F#:n käytettävyyttä haastattelututkimuksen avulla. Tutkimuksella selvitettiin, millaisia etuja funktionaalisen F#:n käytöllä on verrattuna olio-imperatiiviseen C#:iin ja saadaanko sen käytöstä niin paljon hyötyä, että sitä kannattaa käyttää vaikka joutuisi tekemään lisätyötä C#:lla toteutettuun ohjelmaan liittyäkseen. Tämä diplomityö on tehty Atostek Oy:lle, jossa C#- ja F#-kieliä on hyödynnetty useissa käytännön ohjelmistoprojekteissa. Siinä missä C# on yleisesti käytetty olio-imperatiivinen kieli, on F# funktionaalinen. C#:n ja F#:n tapauksessa yhteinen ajoympäristö, Microsoftin .NET, ratkaisee ison osan eri kielillä kirjoitettujen komponenttien yhdistämisen ongelmista. Ratkaisematta kuitenkin jää edelleen paradigmojen yhdistämisestä aiheutuvat haasteet. Haastattelututkimuksella onnistuttiin saamaan selville ohjelmistosuunnittelijoiden kummankin kielen käytännön hyödyntämiseen perustuvat mielipiteet. Haastattelujen tulokset ovat keskenään hyvin yhdenmukaisia ja antavat hyvän kuvan funktionaalisen F#:n hyödyntämisestä käytännössä.One of the first tasks when starting the implementation of a new program is to choose a programming language. Studies show that software life cycle cost can be influenced by choosing an appropriate programming language. Therefore the selection of the language should be based on rational reasoning. The most popular programming languages today are object-imperative. Therefore there exist plenty of ready-made software components implemented in those languages. Even when implementing a completely new program, it is not usually appropriate to implement all its features from scratch. Therefore, ready-made components are used. When, for example, a functional programming language is chosen as the implementation language, the program must be prepared to be integrated to components implemented in some other language. In these cases integrating different languages and different paradigms may raise problems. This master’s thesis describes how software components implemented with C# and F# can be integrated, and how the problems caused by the different programming paradigms can be solved. Also the usability of C# and F# is studied by interviewing software developers who have used the languages in practice. The study also tried to find out what are the benefits of using F# compared to C# and if the benefits overcome the extra work that is required to integrate components implemented in another programming paradigm. This master’s thesis is made for Atostek Oy, where C# and F# programming languages are used in software projects. C# is a widely used object-imperative language, and F# is its functional counterpart. Both languages are executed in the Microsoft’s .NET framework. In the case of C# and F#, the runtime environment solves most of the problems of integrating software components implemented in different programming languages. However, the problems caused by different paradigms must still be solved. Results of the interviews show what are the software developers’ thoughts on using both languages in practice. The results were consistent and provide a comprehensive view to the practical use of F#

    Monitor de rendimiento de un videojuego empleando un API de simulación de eventos discretos

    Full text link
    [ES] El módulo de simulación discreta RT-DESK, desarrollado en la UPV, permite la ejecución de videojuegos, aplicaciones de Realidad Virtual o la simulación de sistemas en tiempo real. Está desarrollado en C++. El alumno tendrá que introducir puntos de control dentro del núcleo del motor para facilitar su monitorización, determinar el rendimiento del sistema y poder ajustar el funcionamiento del motor a la carga de simulación requerida. Se puede emplear cualquier tipo de videojuego realizado por el alumno o partir de un ejemplo de uso del UGK consistente en otro videojuego denominado Space Invaders o cualquier otro a convenir.[EN] The RT-DESK discrete simulation module, developed at the UPV, allows the execution of video games, Virtual Reality applications or the simulation of real-time systems. It is developed in C ++. The student will have to introduce control points into the engine core to facilitate monitoring, determine the system performance and be able to adjust the operation of the engine to the required simulation load. You can use any type of video game made by the student or from an example of using the UGK consisting of another video game called Space Invaders or any other to be agreed.Araque Jiménez, A. (2021). Monitor de rendimiento de un videojuego empleando un API de simulación de eventos discretos. Universitat Politècnica de València. http://hdl.handle.net/10251/174131TFG
    corecore