ABSTRACT
Go, a new programming language backed by Google, has the potential for widespread use: it deserves an evaluation. Design patterns are records of idiomatic programming practice and inform programmers about good program design. In this study, we evaluate Go by implementing design patterns, and porting the "pattern-dense" drawing framework HotDraw into Go, producing GoHotDraw. We show how Go's language features affect the implementation of Design Patterns, identify some potential Go programming patterns, and demonstrate how studying design patterns can contribute to the evaluation of a programming language.
- Golang.org Community, 2010. http://golang.org/doc/community.html; Accessed March - November 2010.Google Scholar
- Effective Go, 2010. http://golang.org/doc/effective_go.html; Accessed March-August 2010.Google Scholar
- Golang.org, 2010. http://golang.org; Accessed March-August 2010.Google Scholar
- Sherman R. Alpert, Kyle Brown, and Bobby Woolf. The Design Patterns Smalltalk Companion. Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA, 1998. Google ScholarDigital Library
- Shyamal Suhana Chandra and Kailash Chandra. A Comparison of Java and C#. J. Comput. Small Coll., 20(3):238--254, 2005. Google ScholarDigital Library
- Steven Clarke. Evaluating a new programming language. In 13th Workshop of the Psychology of Programming Interest Group, pages 275--289, 2001.Google Scholar
- Ward Cunningham. A CRC Description of HotDraw. http://c2.com/doc/crc/draw.html, 1994. Retrieved 15/07/2010.Google Scholar
- Erich Gamma. JHotDraw. http://jhotdraw.sourceforge.net/, 1996. Retrieved 15/07/2010.Google Scholar
- Erich Gamma, Richard Helm, Ralph E. Johnson, and John Vlissides. Design Patterns. Elements of Reusable Object-Oriented Software. Addison-Wesley, March 1995. Google ScholarDigital Library
- Diwaker Gupta. What is a good first programming language? Crossroads, 10(4):7--7, 2004. Google ScholarDigital Library
- Said Hadjerrouit. Java as first programming language: a critical evaluation. SIGCSE Bull., 30(2):43--47, 1998. Google ScholarDigital Library
- Ross Harmes and Dustin Diaz. Pro JavaScript Design Patterns. Apress, 1 edition, December 2007. Google ScholarDigital Library
- Neal M. Holtz and William J. Rasdorf. An evaluation of programming languages and language features for engineering software development. Engineering with Computers, 3(4):183--199, December 1988.Google ScholarCross Ref
- Ralph E. Johnson. Documenting frameworks using patterns. In OOPSLA '92: Conference Proceedings on Object-Oriented Programming Systems, Languages, and Applications, pages 63--76, New York, NY, USA, 1992. ACM. Google ScholarDigital Library
- Wolfram Kaiser. Become a programming Picasso with JHotDraw. JavaWorld, February 2001.Google Scholar
- Linda McIver. Evaluating languages and environments for novice programmers. In 14th Workshop of the Psychology of Programming Interest Group, pages 100--110. Brunel University, June 2002.Google Scholar
- Steven J. Metsker and William C. Wake. Design Patterns in Java. Addison-Wesley, Upper Saddle River, NJ, 2. edition, 2006.Google Scholar
- Cade Metz. Google programming Frankenstein is a Go. The Register, May 2010.Google Scholar
- Russ Olsen. Design Patterns in Ruby. Addison-Wesley Professional, 1 edition, December 2007. Google ScholarDigital Library
- Kevin R. Parker, Thomas A. Ottaway, Joseph T. Chao, and Jane Chang. A Formal Language Selection Process for Introductory Programming Courses. Journal of Information Technology Education, 5:133--151, 2006.Google ScholarCross Ref
- Rob Pike. Another go at language design. http://www.stanford.edu/class/ee380/Abstracts/100428-pike-stanford.pdf, April 2010. Retrieved 15/07/2010.Google Scholar
- Terrence W Pratt and Marvin V Zelkowitz. Programming Languages: Design and Implementation. Pearson Education, Inc., 4 edition, 2001. Google ScholarDigital Library
- Dirk Riehle. Case Study: The JHotDraw Framework. In Framework Design: A Role Modeling Approach, chapter 8, pages 138--158. ETH ZÃijrich, 2000.Google Scholar
- Frank Schmager. Evaluating the GO Programming Language with Design Patterns. Master's thesis, Victoria University of Wellington, 2010. https://ecs.victoria.ac.nz/twiki/pub/Main/TechnicalReportSeries/ECSTR11-01.pdf.Google Scholar
- Douglas C. Schmidt, Michael Stal, Hans Rohnert, and Frank Buschmann. Pattern-Oriented Software Architecture, Volume 2: Patterns for Concurrent and Networked Objects. Wiley, Chichester, UK, 2000. Google ScholarDigital Library
- Panu Viljamaa. Client-specified self. In Pattern Languages of Program Design, chapter 26, pages 495--504. Addison-Wesley Publishing Co., New York, NY, USA, 1995. Google Scholar
- N. Wirth. Programming languages: What to demand and how to assess them. In Symposium on Software Engineering. Belfast, April 1976.Google Scholar
- Bobby Woolf. Null object. In Pattern Languages of Program Design 3, chapter 1, pages 5--18. Addison-Wesley Longman Publishing Co., Inc., 1997. Google Scholar
Index Terms
- GoHotDraw: evaluating the Go programming language with design patterns
Recommendations
Go Model and Object Oriented Programming
Proceedings of the 19th Brazilian Symposium on Programming Languages - Volume 9325Go is a contemporary language aiming to support OO programming where the core OO feature, inheritance, is intentionally excluded. Go uses the concepts of embedding and interface to provide its object model. To understand the design of Go and its ...
Pattern matching for object-like structures in the Go programming language
ICOOOLPS '11: Proceedings of the 6th Workshop on Implementation, Compilation, Optimization of Object-Oriented Languages, Programs and SystemsThis paper explores the feasibility of implementing pattern matching for the Go programming language. The design of pattern matching is taken from Scala, and reimplemented using Go's constructs and new language extensions, namely casestruct and trait.
...
Definitional Interpreters for Higher-Order Programming Languages
Higher-order programming languages (i.e., languages in which procedures or labels can occur as values) are usually defined by interpreters that are themselves written in a programming language based on the lambda calculus (i.e., an applicative language ...
Comments