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 단위로 사용하게 되면서 의미가 변질되었고, 불필요하고 불편하기만 한
존재로 오인받게 되었다는 얘기가 나온다.
기대효과: 더 짧은 코드, 표기법의 강제화
혹시 이런 아이디어를 이미 사용하고 있는 언어나 환경을 본 적이 있으시면 알려주세요