파이썬3과 함께 한글로 프로그래밍하기 :: 2009/07/30 12:50

문득 한글로 프로그래밍하면 가독성이 조금 더 좋을까란 상상을 해봤다. 용어의 번역이 깔끔하다면 당연히 모국어 코드가 좀 더 읽히기 쉽지 않을까? 그러고보니 파이썬 3.0 부터는 국제화 식별자(i18n identifier)가 가능하기 때문에 얼마나 그럴지 테스트해볼 수 있겠다. (국제화 식별자로 많은 부분 한글화가 가능하지만 아직 예약어는 어쩔 수 없음)

일단 문제는 간단한 DNA서열의 Reverse complement 문제 (한글로 하면 핵산역상보)
import unittest
from hangul_python import *

class 핵산(유형):
    def 생성될때(자기, 이름, 염기서열):
        자기.이름 = 이름
        자기.염기서열 = 염기서열

    def 역상보서열(자기):
        결과 = 배열()
        핵산상보사전 = 사전(A='T', T='A', G='C', C='G')
        for 염기 in 자기.염기서열:
            결과.추가(핵산상보사전.가져오기(염기))
        return 빈문자로연결(뒤집기(결과))

class 역상보시험(시험사례):
    def test_역상보(시험):
        내핵산 = 핵산('가', 'AGTC')
        시험.같아야함('가', 내핵산.이름)
        시험.같아야함('AGTC', 내핵산.염기서열)
        시험.같아야함('GACT', 내핵산.역상보서열())

if __name__ == '__main__':
    unittest.main()

오, 일단 가독성은 조금 더 좋아보인다. 테스트도 통과한다. 한글 번역을 얼마나 깔끔하게 할 수 있는가가 관건인 듯 하다. 예약어가 눈에 거슬리긴 한데, 저 부분도 레퍼 같은걸 만들어서 인터프리터로 보내기전에 변역해주는 방법을 쓰면 쓸 만하게 할 수도 있을 것 같다. (하지만 이 방법은 안 깔끔하다. ㅡ.ㅡ;)

위 코드가 동작하기 위해서는 hangul_python.py 가 있어야 한다. 아래와 같은.
import unittest

class 유형:
    def __init__(자기, *인수, **키워드인수):
        자기.생성될때(*인수, **키워드인수)

class 시험사례(unittest.TestCase):
    같아야함 = unittest.TestCase.assertEquals

class 배열(list):
    추가 = list.append

class 사전(dict):
    가져오기 = dict.get

class 문자(str):
    연결 = str.join

뒤집기 = reversed
빈문자로연결 = 문자().연결

"빈문자로연결" 같이 좀 더 직관적인 단어들을 더 만들 수도 있겠다. 또한 위의 용어들도 조금 더 쓰기 편한 용어로 고치고, 또 많은 사람들이 같이 일종의 "한글 파이썬 표준" 같은걸 만들면 조금 더 영어에 익숙하지 않은 사람들이 프로그래밍하는데 도움이 될 수 있지 않을까?
Trackback Address :: http://yong27.biohackers.net/trackback/360
  • BlogIcon gwlee | 2009/07/30 18:38 | PERMALINK | EDIT/DEL | REPLY

    가독성이 좋다기보다는 이해도가 올라간거아닌가요??
    모국어로 프로그래밍하니 함수나 클래스들에 대한 설명은
    자연스럽게.. ㅋㅋ >_< 쵝오!!!

    • BlogIcon yong27 | 2009/07/31 07:54 | PERMALINK | EDIT/DEL

      가독성이 좋다 == 이해도가 올라가다 아닐까? 읽기 좋아지니까 이해도 빨리~

  • BlogIcon gwlee | 2009/07/31 15:02 | PERMALINK | EDIT/DEL | REPLY

    가독성이 아무리 좋아도 그게 히브리어로 돼있으면 이해도는 제로라는~ ㅋ
    그런 의미에서 물어본거에요~ ㅎㅎ

Name
Password
Homepage
Secret