skip to main content
10.1145/1937117.1937127acmconferencesArticle/Chapter ViewAbstractPublication PagessplashConference Proceedingsconference-collections
research-article

GoHotDraw: evaluating the Go programming language with design patterns

Published:17 October 2010Publication History

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.

References

  1. Golang.org Community, 2010. http://golang.org/doc/community.html; Accessed March - November 2010.Google ScholarGoogle Scholar
  2. Effective Go, 2010. http://golang.org/doc/effective_go.html; Accessed March-August 2010.Google ScholarGoogle Scholar
  3. Golang.org, 2010. http://golang.org; Accessed March-August 2010.Google ScholarGoogle Scholar
  4. Sherman R. Alpert, Kyle Brown, and Bobby Woolf. The Design Patterns Smalltalk Companion. Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA, 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Shyamal Suhana Chandra and Kailash Chandra. A Comparison of Java and C#. J. Comput. Small Coll., 20(3):238--254, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. Steven Clarke. Evaluating a new programming language. In 13th Workshop of the Psychology of Programming Interest Group, pages 275--289, 2001.Google ScholarGoogle Scholar
  7. Ward Cunningham. A CRC Description of HotDraw. http://c2.com/doc/crc/draw.html, 1994. Retrieved 15/07/2010.Google ScholarGoogle Scholar
  8. Erich Gamma. JHotDraw. http://jhotdraw.sourceforge.net/, 1996. Retrieved 15/07/2010.Google ScholarGoogle Scholar
  9. Erich Gamma, Richard Helm, Ralph E. Johnson, and John Vlissides. Design Patterns. Elements of Reusable Object-Oriented Software. Addison-Wesley, March 1995. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Diwaker Gupta. What is a good first programming language? Crossroads, 10(4):7--7, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. Said Hadjerrouit. Java as first programming language: a critical evaluation. SIGCSE Bull., 30(2):43--47, 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Ross Harmes and Dustin Diaz. Pro JavaScript Design Patterns. Apress, 1 edition, December 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. 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 ScholarGoogle ScholarCross RefCross Ref
  14. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  15. Wolfram Kaiser. Become a programming Picasso with JHotDraw. JavaWorld, February 2001.Google ScholarGoogle Scholar
  16. 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 ScholarGoogle Scholar
  17. Steven J. Metsker and William C. Wake. Design Patterns in Java. Addison-Wesley, Upper Saddle River, NJ, 2. edition, 2006.Google ScholarGoogle Scholar
  18. Cade Metz. Google programming Frankenstein is a Go. The Register, May 2010.Google ScholarGoogle Scholar
  19. Russ Olsen. Design Patterns in Ruby. Addison-Wesley Professional, 1 edition, December 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. 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 ScholarGoogle ScholarCross RefCross Ref
  21. 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 ScholarGoogle Scholar
  22. Terrence W Pratt and Marvin V Zelkowitz. Programming Languages: Design and Implementation. Pearson Education, Inc., 4 edition, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. Dirk Riehle. Case Study: The JHotDraw Framework. In Framework Design: A Role Modeling Approach, chapter 8, pages 138--158. ETH ZÃijrich, 2000.Google ScholarGoogle Scholar
  24. 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 ScholarGoogle Scholar
  25. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  26. 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 ScholarGoogle Scholar
  27. N. Wirth. Programming languages: What to demand and how to assess them. In Symposium on Software Engineering. Belfast, April 1976.Google ScholarGoogle Scholar
  28. Bobby Woolf. Null object. In Pattern Languages of Program Design 3, chapter 1, pages 5--18. Addison-Wesley Longman Publishing Co., Inc., 1997. Google ScholarGoogle Scholar

Index Terms

  1. GoHotDraw: evaluating the Go programming language with design patterns

    Recommendations

    Comments

    Login options

    Check if you have access through your login credentials or your institution to get full access on this article.

    Sign in
    • Published in

      cover image ACM Conferences
      PLATEAU '10: Evaluation and Usability of Programming Languages and Tools
      October 2010
      51 pages
      ISBN:9781450305471
      DOI:10.1145/1937117

      Copyright © 2010 ACM

      Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

      Publisher

      Association for Computing Machinery

      New York, NY, United States

      Publication History

      • Published: 17 October 2010

      Permissions

      Request permissions about this article.

      Request Permissions

      Check for updates

      Qualifiers

      • research-article

      Acceptance Rates

      Overall Acceptance Rate5of8submissions,63%

      Upcoming Conference

    PDF Format

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader