Comparing Languages for Engineering Server Software: Erlang, Go, and Scala with Akka
Total Page:16
File Type:pdf, Size:1020Kb
Load more
Recommended publications
-
Fortran Isolates the CSE Community
Fortran Isolates the CSE Community Roscoe A. Bartlett, Oak Ridge National Laboratory 10/08/2013 Introduction testing and test-driven development (TDD) by Fortran-only developers. While the research and The continued usage of Fortran as a dominant data supporting the effectiveness of unit testing and programming language isolates the computational TDD has been around for many years [10, 3, 12, 7], science & engineering (CSE) community and hinders the usage of these very successful approaches is very the learning and adoption of modern software low in the Fortran CSE development community. engineering methods. The issue is not primarily that This claim is backed up by personal experience, web Fortran is not suitable for developing many different posts, web searches, and observations by other types of software. Indeed, the are many examples of authors. One interesting data point is that a Google quality CSE software written in Fortran that can search of \Fortran Unit Test" (on 10/4/2013) brings legitimately be considered to be \self-sustaining up a limited number of relevant search results but software" (i.e. clean design and code, well tested, the top result is for the FRUIT Fortran Unit Test minimal controlled dependencies, etc., see [1]). framework [5] (written in Ruby). Right on the main The problem is that there are many CSE page for FRUIT is a quote from FRUIT's author development groups and communities that only Andrew Hang Chen which states: know Fortran and are therefore isolated from the broader software development community where Most of the FORTRAN are important Fortran usage is extremely low (ranked 24th in the in nature, used in nuclear and aerospace TIOBE Index from Nov. -
Akka Java Documentation Release 2.2.5
Akka Java Documentation Release 2.2.5 Typesafe Inc February 19, 2015 CONTENTS 1 Introduction 1 1.1 What is Akka?............................................1 1.2 Why Akka?..............................................3 1.3 Getting Started............................................3 1.4 The Obligatory Hello World.....................................7 1.5 Use-case and Deployment Scenarios.................................8 1.6 Examples of use-cases for Akka...................................9 2 General 10 2.1 Terminology, Concepts........................................ 10 2.2 Actor Systems............................................ 12 2.3 What is an Actor?.......................................... 14 2.4 Supervision and Monitoring..................................... 16 2.5 Actor References, Paths and Addresses............................... 19 2.6 Location Transparency........................................ 25 2.7 Akka and the Java Memory Model.................................. 26 2.8 Message Delivery Guarantees.................................... 28 2.9 Configuration............................................. 33 3 Actors 65 3.1 Actors................................................ 65 3.2 Typed Actors............................................. 84 3.3 Fault Tolerance............................................ 88 3.4 Dispatchers.............................................. 103 3.5 Mailboxes.............................................. 106 3.6 Routing................................................ 111 3.7 Building Finite State Machine -
Up up and Out: Scaling Software with Akka
UP UP AND OUT: SCALING SOFTWARE WITH AKKA Jonas Bonér CTO Typesafe @jboner Scaling software with Jonas Bonér CTO Typesafe @jboner ScalingScaling softwaresoftware with with ScalingScaling softwaresoftware with with Akka (Áhkká) The name comes from the goddess in the Sami (native swedes) mythology that represented all the wisdom and beauty in the world. It is also the name of a beautiful mountain in Laponia in the north part of Sweden ScalingScaling softwaresoftware with with Manage System Overload Scale UP & Scale OUT How can we achieve this? How can we achieve this? Let’s use Actors How can we achieve this? What is an Actor? What is an Actor? What is an Actor? • Akka's unit of code organization is called an Actor What is an Actor? • Akka's unit of code organization is called an Actor • Like Java EE servlets and session beans, Actors is a model for organizing your code that keeps many “policy decisions” separate from the business logic What is an Actor? • Akka's unit of code organization is called an Actor • Like Java EE servlets and session beans, Actors is a model for organizing your code that keeps many “policy decisions” separate from the business logic • Actors may be new to many in the Java community, but they are a tried-and-true concept (Hewitt 1973) used for many years in telecom systems with 9 nines uptime Program at a Higher Level Program at a Higher Level Program at a Higher Level • Never think in terms of shared state, state visibility, threads, locks, concurrent collections, thread notifications etc. -
A Software Framework for the Actor Model Focusing on the Optimization of Message Passing
AICT 2018 : The Fourteenth Advanced International Conference on Telecommunications Actor4j: A Software Framework for the Actor Model Focusing on the Optimization of Message Passing David Alessandro Bauer, Juho Mäkiö Department of Informatics and Electronics University of Applied Sciences Emden/Leer Emden, Germany Email: [email protected], [email protected] Abstract—Common actor implementations often use also the Scale Cube by Abbott [6], which describes the three standardized thread pools without special optimization for the dimensions of scalability. message passing. For that, a high-performance solution was To ensure high parallelization, its one benefit to use worked out. The actor-oriented software framework Akka uses multi-core systems. The computer world of the last few internally a ForkJoinPool that is intended for a MapReduce years has been characterized by a change ("The Free Lunch approach. However, the MapReduce approach is not relevant for message passing, as it may lead to significant performance Is Over" [7]) from constantly increasing computing power losses. One solution is to develop a thread pool that focuses on to multi-core systems due to technical limitations. In the message passing. In the implementation of the Actor4j particular, technical progress always lags behind practical framework, the message queue of the actors is placed in requirements (Wirth's law [8]). Up to now, Moore's law was threads to enable an efficient message exchange. The actors are “that the number of transistors available to semiconductor operated directly from this queue (injecting the message), manufacturers would double approximately every 18 to 24 without further ado. -
Python - the Most Attractive & Fastest-Growing Programming Language for Developers
Vol-6 Issue-5 2020 IJARIIE-ISSN(O)-2395-4396 Python - The Most Attractive & Fastest-growing Programming Language for Developers Vishwa Prakash (SRKUMTSE1804) M-Tech, Department of Software Engineering, R.K.D.F. Institute of Science & Technology, Bhopal, M.P., India ABSTRACT Python is a very suitable and easy language for both learning and real-world programming. It is a powerful and high-level object-oriented programming language and created by Guido van Rossum. It is a very good choice for those who are learning programming for the first time because of its simple syntax. It has various standard libraries so it using by a developer in vast range and its capacity to integrate with other languages and use their features attract developers too. In this paper, we describe the main characteristics and features of Python programming. We also discuss the reasons behind python being credited as the most fastest-growing high-level object orient language. We collected the contents of the research done over the articles procured from various magazines and popular websites. This paper then discusses applications of Python programming. To end with we will see a few good examples where python programming is being used. Keyword : - Python, programming languages, object-oriented, open-source, interoperability, Real-world. etc… 1. INTRODUCTION In the late 1980s, Python was conceived, while its implementation began in late 1989 by Guido van Rossum in the Netherlands atCWI (Centrum Wiskunde & Informatica). It was implemented as a successor of ABC language and capable of interfacing and exception handling with the operating system Amoeba. Author Van Rossum is Python's principal and his continuing central role in deciding the road to the development of Python. -
Reactive Programming with Scala, Lagom, Spark, Akka and Play
Issue October 2016 | presented by www.jaxenter.com #53 The digital magazine for enterprise developers Reactive Programming with Scala, Lagom, Spark, Akka and Play Interview with Scala creator Martin Odersky The state of Scala The Lagom Framework Lagom gives the developer a clear path DevOpsCon 2016: Our mission statement This is how we interpret modern DevOps ©istockphoto.com/moorsky Editorial Reactive programming is gaining momentum “We believe that a coherent approach to systems architec- If the definition “stream of events” does not satisfy your ture is needed, and we believe that all necessary aspects are thirst for knowledge, get ready to find out what reactive pro- already recognized individually: we want systems that are Re- gramming means to our experts in Scala, Lagom, Spark, Akka sponsive, Resilient, Elastic and Message Driven. We call these and Play. Plus, we talked to Scala creator Martin Odersky Reactive Systems.” – The Reactive Manifesto about the impending Scala 2.12, the current state of this pro- Why should anyone adopt reactive programming? Because gramming language and the technical innovations that await it allows you to make code more concise and focus on im- us. portant aspects such as the interdependence of events which Thirsty for more? Open the magazine and see what we have describe the business logic. Reactive programming means dif- prepared for you. ferent things to different people and we are not trying to rein- vent the wheel or define this concept. Instead we are allowing Gabriela Motroc, Editor our authors to prove how Scala, Lagom, Spark, Akka and Play co-exist and work together to create a reactive universe. -
The First Programming Language and Freshman Year in Computer Science: Characterization and Tips for Better Decision Making
The first programming language and freshman year in computer science: characterization and tips for better decision making Sónia Rolland Sobral [0000-0002-5041-3597] 1 REMIT, Universidade Portucalense, Porto, Portugal [email protected] Abstract. The ability to program is the “visible” competency to acquire in an introductory unit in com- puter science. However, before a student is able to write a program, he needs to understand the problem: before formalizing, the student must have to (be able) to think, (be able) to solve and (be able) to define. At an early stage of learning there are no significant differences between programming languages. The discussion of the early programming language continues: probably never will be a consensus among academics. The Association for Computing Machinery (ACM) and Institute of Electrical and Electronics Engineers (IEEE) computer science curriculum recommendations haven't clearly defined which programming language to adopt: it is the course directors and teachers who must make this choice, consciously and not only following the trends. This article presents a set of items that should be considered when you make a programming lan- guage choice for the first programming unit in higher education computer science courses. Keywords: Programming Languages, Undergraduate Studies; Introduction to Programming. 1 Introduction Programmability is the “visible” skill to be acquired in an introductory unit in computer science. Program- ming can be considered an art [1], a science [2], a discipline [3] or even the science of abstraction [4]. However, using a programming language is no more than a method for the programmer can communicate instructions to the computer. -
Lightweight Affinity and Object Capabilities in Scala
http://www.diva-portal.org Postprint This is the accepted version of a paper presented at ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA). Citation for the original published paper: Haller, P., Loiko, A. (2016) LaCasa: Lightweight Affinity and Object Capabilities in Scala. In: Proceedings of the 2016 ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications (pp. 272-291). Association for Computing Machinery (ACM) https://doi.org/10.1145/3022671.2984042 N.B. When citing this work, cite the original published paper. © Author | ACM 2016. This is the author's version of the work. It is posted here for your personal use. Not for redistribution. The definitive Version of Record was published in Proceedings of the 2016 ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications, http://dx.doi.org/10.1145/3022671.2984042. Permanent link to this version: http://urn.kb.se/resolve?urn=urn:nbn:se:kth:diva-197902 LACASA: Lightweight Affinity and Object Capabilities in Scala Philipp Haller Alex Loiko KTH Royal Institute of Technology, Sweden Google, Sweden ∗ [email protected] [email protected] Abstract difficulty of reasoning about program behavior and software Aliasing is a known source of challenges in the context of architecture [3], and it can introduce data races in concur- imperative object-oriented languages, which have led to im- rent programs. These observations have informed the devel- portant advances in type systems for aliasing control. How- opment of a number of type disciplines aimed at providing ever, their large-scale adoption has turned out to be a surpris- static aliasing properties, such as linear types [33, 51, 64], ingly difficult challenge. -
The Power of Interoperability: Why Objects Are Inevitable
The Power of Interoperability: Why Objects Are Inevitable Jonathan Aldrich Carnegie Mellon University Pittsburgh, PA, USA [email protected] Abstract 1. Introduction Three years ago in this venue, Cook argued that in Object-oriented programming has been highly suc- their essence, objects are what Reynolds called proce- cessful in practice, and has arguably become the dom- dural data structures. His observation raises a natural inant programming paradigm for writing applications question: if procedural data structures are the essence software in industry. This success can be documented of objects, has this contributed to the empirical success in many ways. For example, of the top ten program- of objects, and if so, how? ming languages at the LangPop.com index, six are pri- This essay attempts to answer that question. After marily object-oriented, and an additional two (PHP reviewing Cook’s definition, I propose the term ser- and Perl) have object-oriented features.1 The equiva- vice abstractions to capture the essential nature of ob- lent numbers for the top ten languages in the TIOBE in- jects. This terminology emphasizes, following Kay, that dex are six and three.2 SourceForge’s most popular lan- objects are not primarily about representing and ma- guages are Java and C++;3 GitHub’s are JavaScript and nipulating data, but are more about providing ser- Ruby.4 Furthermore, objects’ influence is not limited vices in support of higher-level goals. Using examples to object-oriented languages; Cook [8] argues that Mi- taken from object-oriented frameworks, I illustrate the crosoft’s Component Object Model (COM), which has unique design leverage that service abstractions pro- a C language interface, is “one of the most pure object- vide: the ability to define abstractions that can be ex- oriented programming models yet defined.” Academ- tended, and whose extensions are interoperable in a ically, object-oriented programming is a primary focus first-class way. -
Programming Languages: a Survey
International Journal on Recent and Innovation Trends in Computing and Communication ISSN: 2321-8169 Volume: 5 Issue: 5 307 – 313 _______________________________________________________________________________________________ Programming Languages: A Survey Krishan Kumar1, Sonal Dahiya2 Assistant professor, ASET, Amity University Haryana, Gurgaon, Haryana, India1,2 [email protected], [email protected] Abstract— 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. Keywords— Java Programming, Python, Ruby, C. __________________________________________________*****_________________________________________________ I. INTRODUCTION It is difficult to decide which programming languages are most widely used. One language may occupy the greater number of programmer hours, a different one have more lines of code, a third may utilize the most CPU time, and so on. Some languages are very popular for particular kind of applications. For example, COBOL is still strong in the corporate data center, often on large mainframes; FORTRAN in engineering applications; C in embedded applications and operating systems; and other languages are regularly used to write much different kind of applications. Various methods of measuring language popularity has been used, i.e; A. Counting the number of times the language name is mentioned in web searches, such as is done by Google Trends. B. counting the number of job advertisements that mention the language [1][2] C. -
Programming Language Trends in Open Source Development: an Evaluation Using Data from All Production Phase Sourceforge Projects
Programming Language Trends in Open Source Development: An Evaluation Using Data from All Production Phase SourceForge Projects Daniel P. Delorey Charles D. Knutson C. Giraud-Carrier Brigham Young University Brigham Young University Brigham Young University TMCB 2230 TMCB 2214 TMCB 3326 Provo, UT 84602 Provo, UT 84602 Provo, UT 84602 [email protected] [email protected] [email protected] ABSTRACT for natural language like those studied by Sapir, but for pro- In this work, we analyze data collected from the CVS repos- gramming languages as well. itories of 9,997 Open Source projects hosted on SourceForge in an effort to understand trends in programming language A tendency to hesitate in adopting new programming lan- usage in the Open Source community between 2000 and guages, however, may stifle creativity as the limited features 2005. The trends we consider include: 1) the relative popu- of an out-dated language prevent developers from conceiv- larity of the ten most popular programming languages over ing of novel solutions. To quote a well-worn cliche,“When all time, 2) the use of multiple programming languages by indi- you have is a hammer, everything looks like a nail.” Nielson vidual programmers and by individual projects, and 3) the [5] has demonstrated that developers hesitate to use multi- programming languages most often used in combination. paradigm features even after migrating to a new language opting instead to program as if they were using their old Categories and Subject Descriptors language. D.2.8 [Software Engineering]: Metrics—Performance Mea- sures, Process Metrics, Product Metrics In this paper, we use data gathered from the CVS reposito- ries of Open Source projects hosted on SourceForge to eval- Keywords uate trends in programming language usage among Open Source developers. -
Akka Java Documentation Release 2.2.4
Akka Java Documentation Release 2.2.4 Typesafe Inc March 04, 2014 CONTENTS 1 Introduction 1 1.1 What is Akka?............................................1 1.2 Why Akka?..............................................3 1.3 Getting Started............................................3 1.4 The Obligatory Hello World.....................................7 1.5 Use-case and Deployment Scenarios.................................8 1.6 Examples of use-cases for Akka...................................9 2 General 10 2.1 Terminology, Concepts........................................ 10 2.2 Actor Systems............................................ 12 2.3 What is an Actor?.......................................... 14 2.4 Supervision and Monitoring..................................... 16 2.5 Actor References, Paths and Addresses............................... 19 2.6 Location Transparency........................................ 25 2.7 Akka and the Java Memory Model.................................. 26 2.8 Message Delivery Guarantees.................................... 28 2.9 Configuration............................................. 33 3 Actors 65 3.1 Actors................................................ 65 3.2 Typed Actors............................................. 84 3.3 Fault Tolerance............................................ 88 3.4 Dispatchers.............................................. 103 3.5 Mailboxes.............................................. 106 3.6 Routing................................................ 111 3.7 Building Finite State Machine