Polyglot Programming a Business Perspective

Total Page:16

File Type:pdf, Size:1020Kb

Polyglot Programming a Business Perspective Polyglot Programming A business perspective Hans-Christian Fjeldberg Master of Science in Computer Science Submission date: June 2008 Supervisor: Hallvard Trætteberg, IDI Co-supervisor: Carl Christensen, Bekk Consulting AS Norwegian University of Science and Technology Department of Computer and Information Science Problem Description Polyglot programming is the activity of using several programming languages in a software system. This is commonly used in the industry, for example when embedding SQL in code, but not much research has been done on this topic. The goal of this master thesis is twofold: 1. Get an understanding of methods and techniques for polyglot programming and integration, when these are applicable, and positive and negative effects of polyglot programming. 2. Showing how polyglot programming is used in industrial projects today, and formulate guidelines for the use of polyglot programming based on these experiences. This master thesis should give the industry in general, and Bekk Consulting AS in particular better measures for deciding whether polyglot programming is the right choice for a particular project. It should also give polyglot programming more credibility by researching scenarios that give business value, not only confirming that something is possible. Assignment given: 15. January 2008 Supervisor: Hallvard Trætteberg, IDI Acknowledgements First of all would I like to thank Christian Schwarz, whose help has been es- sential in organising this master thesis. The supervisor for this thesis has been Hallvard Trætteberg at NTNU, and co-superviser has been Carl Christensen at BEKK. Thank you both for guiding me through this process. For excellent proof reading, I would like to thank Liv Marie Gustavson. The case study could not have been done without some willing interview sub- jects. For this, I would like to thank consultants at BEKK and representatives of the customers. Additional interviews have also been conducted to get a broader view of poly- glot programming, and I would like to thank Neal Ford, Ola Bini and Jay Fields, and finally Aslak Hellesøy who put me in touch with these three. Trondheim, June 10th, 2008 Hans-Christian Fjeldberg i Abstract Polyglot programming is the activity of programming in more than one lan- guage within the same context. Much like humans use different languages to make expressions more effective, the goal of polyglot programming is to render simpler solutions by combining the best solutions from different pro- gramming languages. Because the term polyglot programming has been coined only recently, no aca- demic research has been done on polyglot programming before. This research has therefore consisted of a literature study to synthesise the opinions of those who have discussed polyglot programming, and an explorative case study to research how polyglot programming is used in a Norwegian consulting firm. The focus of the research has been business benefits and problems. During the literature study, the expected advantages and disadvantages were found, in addition to examples were polyglot programming can give business value. A part of the literature study has also been a description of the different language paradigms, and a layered description of how they can be organised. The case study consisted of three smaller case studies, which were analysed based on the theoretical propositions discovered in the literature study, namely the perceived advantages and disadvantages. Using pattern matching, poly- glot programming was found to offer increased productivity, and in the only case where it was addressed, easier maintenance. In addition, the use of poly- glot programming helped motivate and change the developers’ perspective. It was also found that the frameworks written in the new languages were easy to learn because they offered a more natural solution to the problem, discrediting the perceived disadvantage of lack of knowledge. The disadvantage of tool support was, however, confirmed. Based on the literature study and case study, guidelines for how to utilise poly- glot programming are also described, and as a compromise between having free and no language choice, it is suggested that a set of languages should be used. This set should consist of different types of languages, and will give the developers more flexibility, and at the same time give management control over which languages are used. iii Contents Acknowledgements i Abstract iii 1 Introduction 1 1.1 Research method . .2 1.2 Research contributions . .2 2 Research context 3 2.1 Research goal . .3 2.2 Research questions . .4 2.3 Research approach . .4 2.3.1 Literature study . .4 3 Polyglot programming 5 3.1 Definition . .5 3.2 Advantages associated with polyglot programming . .6 3.2.1 Productivity . .7 3.2.2 Maintainability . .8 3.3 Disadvantages associated with polyglot programming . .8 3.3.1 Knowledge . .9 3.3.2 Maintainability . .9 3.3.3 Developer tools support . .9 3.4 Summary . 10 v 4 Technical platforms 11 4.1 The business platforms . 11 4.1.1 The .NET platform . 12 4.1.2 The Java platform . 13 4.1.3 Comparison of the polyglot programming support in the .NET and the Java platforms . 15 4.2 Language classification . 15 4.2.1 The imperative paradigm . 16 4.2.2 The object oriented paradigm . 16 4.2.3 The functional paradigm . 17 4.2.4 The logical paradigm . 19 4.2.5 Statically or dynamically typed languages . 19 4.2.6 Domain specific languages . 20 4.2.7 The language layers . 21 4.3 Summary . 22 5 Examples 23 5.1 Web development . 23 5.2 Testing . 24 5.3 Concurrency . 26 5.4 Business rules . 27 5.5 Summary . 28 6 Research process 29 6.1 Case study research . 29 6.1.1 Data collection . 30 6.1.2 Data analysis . 31 6.2 Case study design . 32 6.2.1 Data collection . 32 6.2.2 Data analysis . 33 6.3 Case study implementation . 33 vi 6.3.1 Data collection . 33 7 Bekk Consulting AS - A case study 35 7.1 Web development . 35 7.1.1 Buypass . 36 7.1.2 Web based extranet solution . 37 7.2 Testing . 39 7.2.1 Statens vegvesen . 39 7.3 Summary . 39 8 Discussion 41 8.1 Polyglot programming context of the cases . 41 8.2 Advantages . 42 8.2.1 Productivity . 42 8.2.2 Maintainability . 42 8.2.3 Motivation and change of perspective . 43 8.3 Disadvantages . 43 8.3.1 Knowledge . 43 8.3.2 Maintainability . 44 8.3.3 Tool support . 45 8.4 Critique of polyglot programming . 46 8.5 Research questions . 46 8.5.1 RQ1: How is polyglot programming used today? . 46 8.5.2 RQ2: Guidelines for using polyglot programming . 46 9 Conclusion 49 References 51 A Interviews 57 A.1 Neal Ford . 58 A.2 Ola Bini . 61 vii A.3 Jay Fields . 64 B Technologies used in the case studies 67 B.1 Ruby . 67 B.2 Ruby on Rails . 68 B.3 RSpec . 68 B.4 Watir . 69 C Abbreviations 71 viii List of Figures 4.1 The relationship between DLR, CLR, CTS and CLS . 12 4.2 The relationship between different parts of the Java platform . 14 4.3 The relationship between the stable, dynamic and domain layer. 22 7.1 Buypass’ architecture . 37 ix List of Tables 3.1 Levels of polyglot programming of the example architectures .7 xi Chapter 1 Introduction Throughout much of the last decade, the focus in business has been on one standard language for software development, mainly C# or Java. The ratio- nale for this is that it makes things easier, both for the developers, manage- ment when tutoring and hiring employees and the system administrators. The rationale is not wrong, but ignores one important aspect. In enterprise de- velopment, the programming environment is partly language, but more so frameworks. Normally, frameworks for XML, SQL, web development and web services are used to make it easier for the developers. So even though all these frameworks are written in the same language, they introduce new ab- stractions and normally require extensive knowledge on how to configure the framework. It is therefore a good idea to look for languages that can do the same job as the framework, but better. If it is more naturally implemented in the other language, the cost of learning a new language will be equivalent to learning a new framework (Fowler, 2007a). This approach has been coined polyglot programming. To be a polyglot is to know or use several languages, and is manifested with the introduction of English words in non-English languages, like for example Norwegian. One extreme example of polyglotism is the upper class Lebanese, who speak a mix of French, English and Arabic at the same time. Even though this is not al- ways useful, sometimes expressions in another language are more effective than translating the expression to the native language. Applied to software engineering, to be a polyglot is to use several program- ming languages when creating software. This is used extensively in practise, for example SQL and HTML embedded in PHP code, but only limited research has been conducted on this topic. Even though polyglot programming is pos- sible, it is more important to emphasise the real business benefits of using it. Possible examples include testing, concurrency, and web development. Prob- lems to consider include management issues like training and support for new 1 CHAPTER 1. INTRODUCTION languages. It is also important to have a good framework for choosing the correct language to solve the problem at hand. 1.1 Research method The chosen research methods for this research are a literature study to get an extensive overview of the field, and an explorative case study to investigate how polyglot programming is used in a Norwegian consulting firm.
Recommended publications
  • X10 Language Specification
    X10 Language Specification Version 2.6.2 Vijay Saraswat, Bard Bloom, Igor Peshansky, Olivier Tardieu, and David Grove Please send comments to [email protected] January 4, 2019 This report provides a description of the programming language X10. X10 is a class- based object-oriented programming language designed for high-performance, high- productivity computing on high-end computers supporting ≈ 105 hardware threads and ≈ 1015 operations per second. X10 is based on state-of-the-art object-oriented programming languages and deviates from them only as necessary to support its design goals. The language is intended to have a simple and clear semantics and be readily accessible to mainstream OO pro- grammers. It is intended to support a wide variety of concurrent programming idioms. The X10 design team consists of David Grove, Ben Herta, Louis Mandel, Josh Milthorpe, Vijay Saraswat, Avraham Shinnar, Mikio Takeuchi, Olivier Tardieu. Past members include Shivali Agarwal, Bowen Alpern, David Bacon, Raj Barik, Ganesh Bikshandi, Bob Blainey, Bard Bloom, Philippe Charles, Perry Cheng, David Cun- ningham, Christopher Donawa, Julian Dolby, Kemal Ebcioglu,˘ Stephen Fink, Robert Fuhrer, Patrick Gallop, Christian Grothoff, Hiroshi Horii, Kiyokuni Kawachiya, Al- lan Kielstra, Sreedhar Kodali, Sriram Krishnamoorthy, Yan Li, Bruce Lucas, Yuki Makino, Nathaniel Nystrom, Igor Peshansky, Vivek Sarkar, Armando Solar-Lezama, S. Alexander Spoon, Toshio Suganuma, Sayantan Sur, Toyotaro Suzumura, Christoph von Praun, Leena Unnikrishnan, Pradeep Varma, Krishna Nandivada Venkata, Jan Vitek, Hai Chuan Wang, Tong Wen, Salikh Zakirov, and Yoav Zibin. For extended discussions and support we would like to thank: Gheorghe Almasi, Robert Blackmore, Rob O’Callahan, Calin Cascaval, Norman Cohen, Elmootaz El- nozahy, John Field, Kevin Gildea, Sara Salem Hamouda, Michihiro Horie, Arun Iyen- gar, Chulho Kim, Orren Krieger, Doug Lea, John McCalpin, Paul McKenney, Hiroki Murata, Andrew Myers, Filip Pizlo, Ram Rajamony, R.
    [Show full text]
  • Exploring Languages with Interpreters and Functional Programming Chapter 22
    Exploring Languages with Interpreters and Functional Programming Chapter 22 H. Conrad Cunningham 5 November 2018 Contents 22 Overloading and Type Classes 2 22.1 Chapter Introduction . .2 22.2 Polymorphism in Haskell . .2 22.3 Why Overloading? . .2 22.4 Defining an Equality Class and Its Instances . .4 22.5 Type Class Laws . .5 22.6 Another Example Class Visible ..................5 22.7 Class Extension (Inheritance) . .6 22.8 Multiple Constraints . .7 22.9 Built-In Haskell Classes . .8 22.10Comparison to Other Languages . .8 22.11What Next? . .9 22.12Exercises . 10 22.13Acknowledgements . 10 22.14References . 11 22.15Terms and Concepts . 11 Copyright (C) 2017, 2018, H. Conrad Cunningham Professor of Computer and Information Science University of Mississippi 211 Weir Hall P.O. Box 1848 University, MS 38677 (662) 915-5358 Browser Advisory: The HTML version of this textbook requires use of a browser that supports the display of MathML. A good choice as of November 2018 is a recent version of Firefox from Mozilla. 1 22 Overloading and Type Classes 22.1 Chapter Introduction Chapter 5 introduced the concept of overloading. Chapters 13 and 21 introduced the related concepts of type classes and instances. The goal of this chapter and the next chapter is to explore these concepts in more detail. The concept of type class was introduced into Haskell to handle the problem of comparisons, but it has had a broader and more profound impact upon the development of the language than its original purpose. This Haskell feature has also had a significant impact upon the design of subsequent languages (e.g.
    [Show full text]
  • Modernizing Applications with IBM CICS
    Front cover Modernizing Applications with IBM CICS Russell Bonner Sophie Green Ezriel Gross Jim Harrison Debra Scharfstein Will Yates Redpaper IBM Redbooks Modernizing Applications with IBM CICS December 2020 REDP-5628-00 Note: Before using this information and the product it supports, read the information in “Notices” on page v. First Edition (December 2020) © Copyright International Business Machines Corporation 2020. All rights reserved. Note to U.S. Government Users Restricted Rights -- Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp. Contents Notices . .v Trademarks . vi Preface . vii Accompanying education course . vii Authors. viii Now you can become a published author, too! . viii Comments welcome. viii Stay connected to IBM Redbooks . ix Chapter 1. Introduction. 1 1.1 CICS and the hybrid multi-cloud . 2 1.2 Migrating to the hybrid multi-cloud . 2 1.2.1 Maintaining the status quo . 2 1.2.2 Using cloud-native applications. 2 1.2.3 Modernizing existing applications . 3 1.3 CICS Hello World COBOL example . 3 Chapter 2. IBM CICS application development . 5 2.1 Application development in CICS . 6 2.1.1 Batch processing versus online transaction processing . 6 2.1.2 Programming paradigm. 6 2.1.3 Basic architecture of a CICS program. 7 2.1.4 CICS resources. 9 2.2 CICS sample application. 10 2.3 CICS modernization . 11 2.4 CICS built-in transactions . 12 2.4.1 CICS Execute Command Interpreter . 12 2.4.2 CICS Execution Diagnostic Facility. 13 Chapter 3. Coding applications to run in IBM CICS. 15 3.1 Introduction to the EXEC CICS application programming interface .
    [Show full text]
  • Dissertation Submitted in Partial Fulfillment of the Requirements for The
    ON THE HUMAN FACTORS IMPACT OF POLYGLOT PROGRAMMING ON PROGRAMMER PRODUCTIVITY by Phillip Merlin Uesbeck Master of Science - Computer Science University of Nevada, Las Vegas 2016 Bachelor of Science - Applied Computer Science Universit¨at Duisburg-Essen 2014 A dissertation submitted in partial fulfillment of the requirements for the Doctor of Philosophy { Computer Science Department of Computer Science Howard R. Hughes College of Engineering The Graduate College University of Nevada, Las Vegas December 2019 c Phillip Merlin Uesbeck, 2019 All Rights Reserved Dissertation Approval The Graduate College The University of Nevada, Las Vegas November 15, 2019 This dissertation prepared by Phillip Merlin Uesbeck entitled On The Human Factors Impact of Polyglot Programming on Programmer Productivity is approved in partial fulfillment of the requirements for the degree of Doctor of Philosophy – Computer Science Department of Computer Science Andreas Stefik, Ph.D. Kathryn Hausbeck Korgan, Ph.D. Examination Committee Chair Graduate College Dean Jan Pedersen, Ph.D. Examination Committee Member Evangelos Yfantis, Ph.D. Examination Committee Member Hal Berghel, Ph.D. Examination Committee Member Deborah Arteaga-Capen, Ph.D. Graduate College Faculty Representative ii Abstract Polyglot programming is a common practice in modern software development. This practice is often con- sidered useful to create software by allowing developers to use whichever language they consider most well suited for the different parts of their software. Despite this ubiquity of polyglot programming there is no empirical research into how this practice affects software developers and their productivity. In this disser- tation, after reviewing the state of the art in programming language and linguistic research pertaining to the topic, this matter is investigated by way of two empirical studies with 109 and 171 participants solving programming tasks.
    [Show full text]
  • On the Interaction of Object-Oriented Design Patterns and Programming
    On the Interaction of Object-Oriented Design Patterns and Programming Languages Gerald Baumgartner∗ Konstantin L¨aufer∗∗ Vincent F. Russo∗∗∗ ∗ Department of Computer and Information Science The Ohio State University 395 Dreese Lab., 2015 Neil Ave. Columbus, OH 43210–1277, USA [email protected] ∗∗ Department of Mathematical and Computer Sciences Loyola University Chicago 6525 N. Sheridan Rd. Chicago, IL 60626, USA [email protected] ∗∗∗ Lycos, Inc. 400–2 Totten Pond Rd. Waltham, MA 02154, USA [email protected] February 29, 1996 Abstract Design patterns are distilled from many real systems to catalog common programming practice. However, some object-oriented design patterns are distorted or overly complicated because of the lack of supporting programming language constructs or mechanisms. For this paper, we have analyzed several published design patterns looking for idiomatic ways of working around constraints of the implemen- tation language. From this analysis, we lay a groundwork of general-purpose language constructs and mechanisms that, if provided by a statically typed, object-oriented language, would better support the arXiv:1905.13674v1 [cs.PL] 31 May 2019 implementation of design patterns and, transitively, benefit the construction of many real systems. In particular, our catalog of language constructs includes subtyping separate from inheritance, lexically scoped closure objects independent of classes, and multimethod dispatch. The proposed constructs and mechanisms are not radically new, but rather are adopted from a variety of languages and programming language research and combined in a new, orthogonal manner. We argue that by describing design pat- terns in terms of the proposed constructs and mechanisms, pattern descriptions become simpler and, therefore, accessible to a larger number of language communities.
    [Show full text]
  • An Analysis of the Dynamic Behavior of Javascript Programs
    An Analysis of the Dynamic Behavior of JavaScript Programs Gregor Richards Sylvain Lebresne Brian Burg Jan Vitek S3 Lab, Department of Computer Science, Purdue University, West Lafayette, IN fgkrichar,slebresn,bburg,[email protected] Abstract becoming a general purpose computing platform with office appli- The JavaScript programming language is widely used for web cations, browsers and development environments [15] being devel- programming and, increasingly, for general purpose computing. oped in JavaScript. It has been dubbed the “assembly language” of the Internet and is targeted by code generators from the likes As such, improving the correctness, security and performance of 2;3 JavaScript applications has been the driving force for research in of Java and Scheme [20]. In response to this success, JavaScript type systems, static analysis and compiler techniques for this lan- has started to garner academic attention and respect. Researchers guage. Many of these techniques aim to reign in some of the most have focused on three main problems: security, correctness and dynamic features of the language, yet little seems to be known performance. Security is arguably JavaScript’s most pressing prob- about how programmers actually utilize the language or these fea- lem: a number of attacks have been discovered that exploit the lan- tures. In this paper we perform an empirical study of the dynamic guage’s dynamism (mostly the ability to access and modify shared behavior of a corpus of widely-used JavaScript programs, and an- objects and to inject code via eval). Researchers have proposed ap- alyze how and why the dynamic features are used.
    [Show full text]
  • Thinking in C++ Volume 2 Annotated Solution Guide, Available for a Small Fee From
    1 z 516 Note: This document requires the installation of the fonts Georgia, Verdana and Andale Mono (code font) for proper viewing. These can be found at: http://sourceforge.net/project/showfiles.php?group_id=34153&release_id=105355 Revision 19—(August 23, 2003) Finished Chapter 11, which is now going through review and copyediting. Modified a number of examples throughout the book so that they will compile with Linux g++ (basically fixing case- sensitive naming issues). Revision 18—(August 2, 2003) Chapter 5 is complete. Chapter 11 is updated and is near completion. Updated the front matter and index entries. Home stretch now. Revision 17—(July 8, 2003) Chapters 5 and 11 are 90% done! Revision 16—(June 25, 2003) Chapter 5 text is almost complete, but enough is added to justify a separate posting. The example programs for Chapter 11 are also fairly complete. Added a matrix multiplication example to the valarray material in chapter 7. Chapter 7 has been tech-edited. Many corrections due to comments from users have been integrated into the text (thanks!). Revision 15—(March 1 ,2003) Fixed an omission in C10:CuriousSingleton.cpp. Chapters 9 and 10 have been tech-edited. Revision 14—(January ,2003) Fixed a number of fuzzy explanations in response to reader feedback (thanks!). Chapter 9 has been copy-edited. Revision 13—(December 31, 2002) Updated the exercises for Chapter 7. Finished rewriting Chapter 9. Added a template variation of Singleton to chapter 10. Updated the build directives. Fixed lots of stuff. Chapters 5 and 11 still await rewrite. Revision 12—(December 23, 2002) Added material on Design Patterns as Chapter 10 (Concurrency will move to Chapter 11).
    [Show full text]
  • Ferrite: a Judgmental Embedding of Session Types in Rust
    Ferrite: A Judgmental Embedding of Session Types in Rust RUOFEI CHEN, Independent Researcher, Germany STEPHANIE BALZER, Carnegie Mellon University, USA This paper introduces Ferrite, a shallow embedding of session types in Rust. In contrast to existing session type libraries and embeddings for mainstream languages, Ferrite not only supports linear session types but also shared session types. Shared session types allow sharing (aliasing) of channels while preserving session fidelity (preservation) using type modalities for acquiring and releasing sessions. Ferrite adopts a propositions as types approach and encodes typing derivations as Rust functions, with the proof of successful type-checking manifesting as a Rust program. We provide an evaluation of Ferrite using Servo as a practical example, and demonstrate how safe communication can be achieved in the canvas component using Ferrite. CCS Concepts: • Theory of computation ! Linear logic; Type theory; • Software and its engineering ! Domain specific languages; Concurrent programming languages. Additional Key Words and Phrases: Session Types, Rust, DSL ACM Reference Format: Ruofei Chen and Stephanie Balzer. 2021. Ferrite: A Judgmental Embedding of Session Types in Rust. In Proceedings of International Conference on Functional Programming (ICFP 2021). ACM, New York, NY, USA, 36 pages. 1 INTRODUCTION Message-passing concurrency is a dominant concurrency paradigm, adopted by mainstream lan- guages such as Erlang, Scala, Go, and Rust, putting the slogan “to share memory by communicating rather than communicating by sharing memory”[Gerrand 2010; Klabnik and Nichols 2018] into practice. In this setting, messages are exchanged over channels, which can be shared among several senders and recipients. Figure 1 provides a simplified example in Rust.
    [Show full text]
  • Asynchronous Liquid Separation Types
    Asynchronous Liquid Separation Types Johannes Kloos, Rupak Majumdar, and Viktor Vafeiadis Max Planck Institute for Software Systems, Germany { jkloos, rupak, viktor }@mpi-sws.org Abstract We present a refinement type system for reasoning about asynchronous programs manipulating shared mutable state. Our type system guarantees the absence of races and the preservation of user-specified invariants using a combination of two ideas: refinement types and concurrent separation logic. Our type system allows precise reasoning about programs using two ingredients. First, our types are indexed by sets of resource names and the type system tracks the effect of program execution on individual heap locations and task handles. In particular, it allows making strong updates to the types of heap locations. Second, our types track ownership of shared state across concurrently posted tasks and allow reasoning about ownership transfer between tasks using permissions. We demonstrate through several examples that these two ingredients, on top of the framework of liquid types, are powerful enough to reason about correct behavior of practical, complex, asynchronous systems manipulating shared heap resources. We have implemented type inference for our type system and have used it to prove complex invariants of asynchronous OCaml programs. We also show how the type system detects subtle concurrency bugs in a file system implementation. 1998 ACM Subject Classification F.3.1 Specifying and Verifying and Reasoning about Pro- grams, D.2.4 Software/Program Verification Keywords and phrases Liquid Types, Asynchronous Parallelism, Separation Logic, Type Sys- tems 1 Introduction Asynchronous programming is a common programming idiom used to handle concurrent interactions. It is commonly used not only in low-level systems code, such as operating systems kernels and device drivers, but also in internet services, in programming models for mobile applications, in GUI event loops, and in embedded systems.
    [Show full text]
  • Graalvm Twitter Case Study
    December 11, 2019 CASE STUDY: ORACLE AND TWITTER How Oracle GraalVM Supercharged Twitter’s Microservices Platform Basic Research on Computing Fundamentals Delivers Once-in-a-Lifetime Performance Improvements Holger Mueller Vice President and Principal Analyst Copy Editor: Jim Donahue Layout Editor: Aubrey Coggins Produced exclusively for Constellation Research clients TABLE OF CONTENTS At a Glance ..............................................................................................3 The Company ............................................................................................4 The Challenges ..........................................................................................4 The Solution .............................................................................................5 The Impact ...............................................................................................7 The Takeaways ...........................................................................................8 The Recommendations ..................................................................................9 Analyst Bio .............................................................................................11 About Constellation Research ..........................................................................12 AT A GLANCE Twitter · Headquarters: San Francisco Twitter runs one of the most visible social networks in the · 2018 Revenue: $3.04 billion world. Its move to a microservices infrastructure has addressed · No.
    [Show full text]
  • Thinking in C++ 2Nd Edition Volume 2
    Thinking in C++ 2nd edition Volume 2: Standard Libraries & Advanced Topics To be informed of future releases of this document and other information about object- oriented books, documents, seminars and CDs, subscribe to my free newsletter. Just send any email to: [email protected] ________________________________________________________________________ “This book is a tremendous achievement. You owe it to yourself to have a copy on your shelf. The chapter on iostreams is the most comprehensive and understandable treatment of that subject I’ve seen to date.” Al Stevens Contributing Editor, Doctor Dobbs Journal “Eckel’s book is the only one to so clearly explain how to rethink program construction for object orientation. That the book is also an excellent tutorial on the ins and outs of C++ is an added bonus.” Andrew Binstock Editor, Unix Review “Bruce continues to amaze me with his insight into C++, and Thinking in C++ is his best collection of ideas yet. If you want clear answers to difficult questions about C++, buy this outstanding book.” Gary Entsminger Author, The Tao of Objects “Thinking in C++ patiently and methodically explores the issues of when and how to use inlines, references, operator overloading, inheritance and dynamic objects, as well as advanced topics such as the proper use of templates, exceptions and multiple inheritance. The entire effort is woven in a fabric that includes Eckel’s own philosophy of object and program design. A must for every C++ developer’s bookshelf, Thinking in C++ is the one C++ book you must have if you’re doing serious development with C++.” Richard Hale Shaw Contributing Editor, PC Magazine Thinking In C++ 2nd Edition, Volume 2 Bruce Eckel President, MindView Inc.
    [Show full text]
  • Polyglot Programming
    International Journal of Engineering Research & Technology (IJERT) ISSN: 2278-0181 Vol. 3 Issue 2, February - 2014 Polyglot Programming C. Mritula Arun. B. C Christ University University of Madras Bangalore, India. Chennai, India Abstract—Polyglot programming is the technique of choosing and that can help to complete a specific task more flexibly and using the right tool that is more keenly shaped for the job that easily. Comparing to the real world scenario, humans learn has to be performed. The advent of polyglot programming or and use many languages for an effective communication polyglot programmer’s focuses on solving a problem by using ensuring that the goal of conveying the information is various best software’s suitable for that job yielding the required successfully accomplished. result. The paper focuses on discussing the knits and knots of polyglot programming and few of its possible applications. Languages evolve to meet the changing environments in which they find themselves. [5] Mixing and matching various languages and platforms can be a flexible option to achieve a task more easily. This can be done by choosing a language that Keywords- Polyglot programming; Framework; JVM; is most suitable for the problem. On using a tool that is more keenly shaped for the task keeps the job of a programmer much at ease. The idea of polyglot programming is not I. INTRODUCTION (POLYGLOT PROGRAMMING) entirely new one, it is just the terminology. It has been quite in Software is the most essential component of the computer practice that many tools and applications run as a combination which is written using any high-level programming language of two or more software’s one in front end other for in a human interpretable form that makes life easier and implementing business logics and other for database performing tasks more efficient.
    [Show full text]