Monday, October 1, 2012

프로그래밍을 한글로?

Programmers.Stackexchange에 올려져 있는 글을 읽는중 어떤 C# 소스코드가 그리스어로 써져있는 것을 발견하였다. 참 신기하다고 생각하던 와중, "어쩌면 한글로도 코딩이 가능하지 않을까?" 라고 의문이 생겨 한글로 간단한 프로그램을 짜봤다.


   1:  namespace 대한민국
   2:  {
   3:      public class 학생
   4:      {
   5:          public string 이름 { get; private set; }
   6:          public string 좌우명 { get; private set; }
   7:   
   8:          public 학생(string 이름, string 좌우명)
   9:          {
  10:              this.이름 = 이름;
  11:              this.좌우명 = 좌우명;
  12:          }
  13:      }
  14:      public class 대학교
  15:      {
  16:          private List<학생> 재학생목록 = new List<학생>();
  17:   
  18:          public void 입학(학생 입학생)
  19:          {
  20:              재학생목록.Add(입학생);
  21:          }
  22:   
  23:          public void 재학생출력()
  24:          {
  25:              foreach (학생 선택된학생 in 재학생목록)
  26:              {
  27:                  Console.WriteLine("이름: {0}", 선택된학생.이름);
  28:                  Console.WriteLine("좌우명: {0}", 선택된학생.좌우명);
  29:              }
  30:          }
  31:      }
  32:      public class 프로그램
  33:      {
  34:          static void Main(string[] args)
  35:          {
  36:              대학교 스쿨오브헬 = new 대학교();
  37:              스쿨오브헬.입학(new 학생("전땅끄", "본인은 단돈 29만원과 땅끄로 이 신성하고 거룩한 국가의 민주주의를 발전시켰소"));
  38:              스쿨오브헬.입학(new 학생("이피카츄", "여러분 이거 다 거짓말인거 아시죠!!!"));
  39:              스쿨오브헬.입학(new 학생("빵상아줌마", "빵빵 똥똥똥똥 땅땅 따라라라라~~~"));
  40:   
  41:              스쿨오브헬.재학생출력();
  42:          }
  43:      }
  44:  }












출력:


보다시피 public, class, string 같은 키워드를 제외하면 한글로도 코드를 작성할 수 있다. 참으로 신기해서 이 기능이 C# 아니면 Visual Studio 에서 지원해 주는 기능인지 알아본 결과, C#에서 자체적으로 지원해 주는 기능이라는걸 금방 알 수 있었다.

CLI내 C# 기준에 적힌 바로는: 

A source file is an ordered sequence of Unicode characters.
I.8.5.1 Valid names
All name comparisons are done on a byte-by-byte (i.e., case sensitive, locale- independent, also known as code-point comparison) basis. Where names are used to access built-in VES-supplied functionality (e.g., the class initialization method) there is always an accompanying indication on the definition so as not to build in any set of reserved names. 

즉, 소스 코드내에서의 이름 비교는 바이트 단위로 하기 때문에 시스템 로케일과 상관없이 유니코드를 지원하는 언어는 아무것이나 쓸 수 있다는 뜻이다.

유니코드 지원이라고 할지라도 다른 언어는 잘 모르겠으나 한국어의 경우는 거의 실용성이 없을듯 싶다. 우선 윗 코드만 참고해도 영문과 한글을 번갈아 가면서 읽는것도 다소 난해하게 느껴며 그 이상으로 영문으로 코드를 작성하는 것 보다 훨씬 더 많은 키를 입력해야 한다는 느낌도 강하게 든다.

혹시나 한글로 소스코드를 짜보신분이 있으신지 궁금하다. 독자들중 그런 경험이 있으신 분이 있다면, 그 경험담을 공유해 주셨으면 한다.

No comments:

Post a Comment