DOI QR코드

DOI QR Code

A Concise Korean Programming Language "Sprout"

간결한 한글 프로그래밍 언어 "새싹"

  • 천준석 (부산대학교 전기전자컴퓨터공학과) ;
  • 강도훈 (부산대학교 전기전자컴퓨터공학과) ;
  • 김건우 (부산대학교 전기전자컴퓨터공학과) ;
  • 우균 (부산대학교 전기전자컴퓨터공학과)
  • Received : 2014.12.12
  • Accepted : 2015.02.11
  • Published : 2015.04.15

Abstract

Most programming languages are designed based on English. It becomes another barrier in learning programming languages in non-English speaking country. If a programming language is presented using a native language, the education cost of programming will be much cheaper and the programming itself can be much more fun. However, designing the programming languages based on native languages has not been much focused or published up to now. It is partly because the evolution of popular programming languages is so fast, and partly because the efficiency of programs is much stressed than the source code. But, the designing of programming languages based on native language is not a small issue, especially if we reflect on the education of programming. In fact, there have been significant efforts reported in the Korean programming languages so far, but it has not practically been used in the education. This paper introduces yet another Korean programming language, namely Sprout, which is concise and can be easily learned by beginners. To demonstrate the conciseness of Sprout, we have performed two experiments on Sprout. Firstly, we compared the sizes of the programs in Sprout with those in former Korean programming languages. Secondly, we compared the size of Sprout, the language itself, with those of popular programming languages such as C and Python. According to the experiments, Sprout programs are more concise to 10% on average than those in former Korean languages. Furthermore, Sprout itself is more compact to 24% on average than other popular programming languages.

현재 사용되고 있는 대부분의 프로그래밍 언어는 영어를 기반으로 제작되어 있다. 이러한 점은 비영어권 국가에서 프로그래밍 언어를 배우는 데 장벽이 된다. 완전하게 자국어로 만들어진 프로그래밍 언어가 있다면 프로그래밍의 교육비용이 많이 줄게 될 뿐만 아니라 학생들도 더 많은 흥미를 느끼게 될 것이다. 그러나 자국어를 바탕으로 한 프로그래밍 언어 설계는 큰 주목을 받지 못했으며 발표된 연구 결과도 많지 않다. 그 원인은 한편으로 프로그래밍 언어가 너무 빠르게 발전하고 있기 때문이며 다른 한편으로는 소스코드보다 프로그램의 효율성이 더 강조되어 왔기 때문이다. 하지만 자국어를 바탕으로 프로그래밍 언어를 설계하는 것은 하찮은 문제가 아니며 특히 프로그래밍 교육 측면에서 매우 중요하다. 사실 한글 프로그래밍 언어 분야에는 적잖은 연구 결과가 있었지만 실제로 한글 언어가 실제로 교육에 사용된 사례는 드물다. 이 논문에서는 배우기 쉬운 한글 프로그래밍 언어인 새싹을 소개한다. 새싹의 간결성을 입증하기 위해 두 개의 실험을 수행하였다. 첫째, 새싹으로 작성된 프로그램과 다른 한글 프로그래밍 언어로 작성된 프로그램의 크기를 비교하였다. 둘째, 새싹 언어 자체의 크기를 C나 Python 등 널리 사용되는 언어의 크기와 비교하였다. 실험 결과 새싹으로 작성된 프로그램의 크기는 다른 한글 프로그래밍 언어로 작성된 프로그램보다 평균 10% 더 간결하였다. 또한, 새싹 언어의 크기는 널리 사용되는 언어보다 평균 24% 간결하였다.

Keywords

Acknowledgement

Supported by : 한국연구재단

References

  1. EF English Proficiency Index. Education First [Online]. Available: http://www.ef.co.uk/epi/
  2. Alfred Thompson (2011, Jul 21). Why are all programming languages in English? [Online]. Available: http://blogs.msdn.com/b/alfredth/archive/2011/07/21/why-are-all-programming-languages-in-english.aspx
  3. Wikipedia. Non-English-based programming langu ages [Online]. Available: http://en.wikipedia.org/wiki/Non-English-based_programming_languages
  4. McIver Linda and Conway Damian, "Seven deadly sins of introductory programming language design," Software Engineering: Education and Practice, pp. 19-31, 2008.
  5. Chang-kwon Cho, HanPL: Design and Implementation of a Hangul Programming Language, Master thesis, Pusan National University, 2013.
  6. Kanemune Susumu and Kuno Yasushi, "Dolittle: an object-oriented language for K12 education," Euro-Logo, pp. 144-153, 2005.
  7. Python Central. Cutting and slicing strings in Python [Online]. Available: http://www.pythoncentral.io/cuttng-and-slicing-strings-in-python/
  8. Wikipedia. Korean postpositions [Online]. Available: http://en.wikipedia.org/wiki/Korean_postpositions
  9. Bettini, Lorenzo, Implementing Domain-Specific Languages with Xtext and Xtend, Packt Publishing Ltd, 2013.
  10. Eysholdt Moritz and Behrens Heiko, "Xtext: implement your language faster than the quick and dirty way," Proc. of the ACM international conference companion on Object oriented programming systems languages and applications companion, pp. 307-309, 2010.
  11. Behrens Heiko, Clay Michael, Efftinge Sven, Eysholdt Moritz and Friese Peter, Xtext user guide, Eclipse, 2008.
  12. Kernighan Brian W, Ritchie Dennis M and Ejeklint Per, The C programming language, 2nd Ed., prentice-Hall Englewood Cliffs, 1988.
  13. TIOBE Software. TIOBE Index for November 2014 [Online]. http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
  14. Van Rossum Guido and Drake Fred L, Python language reference manual, Network Theory, 2003.
  15. Meyerson Jeff, "The Go Programming Language," Software, IEEE, Vol. 31, No. 5, pp. 104-104, Mar. 2014.
  16. Arvind Kumar Bansal, Introduction to Programming Languages, CRC Press, 2013.
  17. JTC1/SC22/WG14. Rationale for International Standard-Programming Languages-C [Online]. Available: http://www.open-std.org/jtc1/sc22/wg14/www/C99RationaleV5.10.pdf (downloaded 2014, Dec. 12)
  18. JTC1/SC22/WG21. Programming Languages - C++ [Online]. Available: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3690.pdf (downloaded 2014, Dec. 12)
  19. James Gosling, Bill Joy, Guy L. Steele Jr., The Java Language Specification, Java SE 7 Edition, Addison-Wesley Professional, 2013.
  20. Python Software Foundation, Lexical analysis -python 2.7.8 documentation [Online]. Available: https://docs.python.org/2/reference/lexical_analysis.html
  21. Google. The go programming language specification. Available: http://golang.org/ref/spec
  22. Gunwoo Kim and Gyun Woo, "A Comparison of Programming Language Size for Programming Teacher," The 39th Conference of the KIPS, Korea Information Processing Society, pp. 1081-1084, May. 2013.
  23. Gungsung Nam, The standard procedure of Java 2nd Edition, Dowoo pub, 2010.
  24. Wesley Chun, The standard procedure of Java 2nd Edition Core Python Programming 2nd Edition, Prentice Hall, 2006.
  25. Sungwoo Yun, The C++ Programming, Orange Media, 2010.
  26. Google. A Tour to Go. Available: http://go-tourkr.appspot.com/

Cited by

  1. Development of Safe Korean Programming Language Using Static Analysis vol.5, pp.4, 2016, https://doi.org/10.3745/KTCCS.2016.5.4.79