1. dynamic typing 을 기본으로 하되 function 에서 static type 을 옵션으로 지정가능하게 한다

func foo(s) {
    println s
}

foo("Hello")

func foo2(string s) {      // optional argument type
    println s
}

foo2("Hello")

기대효과: 정적 체킹 능력의 향상, vm 으로 컴파일할 때 힌트 역할



2. prefix notation 과 type 을 결부시켜버린다

python 에서 indentation 을 실제 block 과 연동시킴으로서 얻은 효과 (적은 타이핑, 컨벤션 통일) 에서 영감

예를 들어 C++엔진과 결합된 스크립트에서 GameObject 들은 모두 go 라는 Prefix 를 갖도록 지정한다

var goPlayer
func SetTarget(goTarget) {...}

위치를 지칭하는 vector3 은 모두 pos 라는 prefix 를 갖도록 지정

func MoveTo(posTarget) {...}

물론 어떤 type 과 어떤 prefix 를 연결시킬 것인가는 별도로 지정가능하게

#bindTypePrefix(GameObject, go)
#bindTypePrefix(Vector3, pos)

같은 식으로...


Joel spolsky 의 Hungarian notation 에 대한 부분을 읽어보면 원래 이 방식은 app 단위로 사용하기 위해

만든 것인데, 그것이 system 단위로 사용하게 되면서 의미가 변질되었고, 불필요하고 불편하기만 한

존재로 오인받게 되었다는 얘기가 나온다.

기대효과: 더 짧은 코드, 표기법의 강제화


혹시 이런 아이디어를 이미 사용하고 있는 언어나 환경을 본 적이 있으시면 알려주세요

imcgames 의 김학규입니다