Null

1 사전적인 뜻

'값이 없음'을 나타내는 영단어. 같은 단어가 독일어에선 없음과 비슷하지만 다른 숫자 0으로 쓰인다는 것에 유의.에null이

2 프로그래밍 용어

ASCII 코드는 0, 유니코드는 U+0000이 널 문자다.[1]

C 프로그래밍에서는 '존재하지 않는 메모리 주소'를 NULL로 나타낸다. 특정 포인터 변수를 초기화할 때는 실제로 메모리를 할당하기 전에 NULL로 초기화하는 버릇을 들이자. 이런 식으로

char *ptr = NULL;
ptr = (char*)malloc(...);

포인터 변수와 관련된 연산에서 값이 0인 정수 상수식이 나오면 이를 곧 NULL로 해석한다(사실 NULL은 0, 혹은 (void*)0과 같도록 정의되어야 한다). 따라서 위의 코드는 아래와 같이 써도 된다.

char *ptr = 0;
ptr = (char*)malloc(...);

흔히 ASCII나 유니코드 상에서 NULL의 문자값이 0이라 메모리 주소로 사용할때의 NULL도 0일 거라고 생각하고 코딩을 하는 경우가 있는데 위험하다. C 표준은 코드상에 직접 나타나는 0에 NULL이란 의미를 부여하고 있지만, 내부적으로 실제로 NULL 값이 뭐가 되는지는 규정하지 못한다. 이는 프로그램이 컴파일되는 시스템이 결정하며, 따라서 NULL != 0x0인 경우가 있다. 이런 예에서는 위의 char *ptr = 0;이란 코드가 실제로 ptr에 주소값 0x0을 대입하지 않는다. 애당초 그 코드 자체가 '시스템에 정의된 NULL 값을 대입한다'는 의미지 0x0을 대입한다는 의미가 아니니까.

하지만 워낙 많은 시스템에서 NULL을 0으로 정의하고 있었고, 오래 전부터 내려온 코드들에 대해 호환성을 가지기 위해 개발환경이 맞춰지다 보니 이제는 0이 아닌 환경을 생각도 하기 힘들어졌다.

다만 프로그램의 구체성을 높이기 위해서 0과 Null을 다르게 만드는 프로그래밍 언어도 있다. Java, JavaScript, PHP에서는 Null은 Null이지 0으로 대체할 수 없다. 단, PHP의 경우 주의할 사항이 있다.

$test = NULL;
print ( $test == 0 ) ? "true" : "false" ; // (1)
print ( $test === 0 ) ? "true" : "false" ; // (2)

위와 같이 비교하면 (1)[2]은 대충 퉁치고 넘어가는 느슨한 비교이기 때문에 true가 출력되고, (2)[3]는 변수의 자료형까지 다 비교하므로 false가 출력된다. PHP 이외에도 이와 유사한 형태로 비교 연산자를 분리한 언어에서는 이와 유사한 식으로 인식한다.

Lisp 에서는 데이터 단위가 리스트인지라, 복수인 nil 을 사용하며, false 의 의미도 겸한다.

Objective-C에서는 NULL,nil,NIL 모두 기술적으론 똑같이 (void *0)이긴 하지만 혼용해서는 안된다. NULL은 고전적인 C 널 포인터, NIL은 클래스 널 포인터,nil은 인스턴스 널 포인터로 서로 역할이 나뉘어져 있다. 혼용하면 여러가지 의미로 지옥을 맛보게 된다(..).

널 레퍼런스를 처음 만든 Tony Hoare가[4] billion dollar mistake였다 라고 회고한 적 있다. 널 포인터를 체크하지 않고 사용해서 발생하는 버그가 엄청나게 많기 때문. 때문에 최신 언어들은 null reference를 배제하려는 움직임을 보인다.

힙합LE에서는 어그로성 글에 이 Null 댓글을 달아주는 불문율이 있다.

3 아머드 코어링크스 미도 아우리엘의 탑승기

미도 아우리엘 항목을 참고.

4 메탈기어 솔리드 포터블 옵스의 등장인물

Null.jpg
일본어판 성우는 충격과 공포후쿠야마 준, 영어판은 Larc Spies. 사실 충격과 공포...라고는 해도 Null의 정체(스포일러)그 성우를 생각하면 해당 캐릭터의 소년시절 음성으로 꽤 어울리는 미성이다.

최강의 전사(절대병사) 계획으로 인해 정신 및 육체개조를 당한 병사. 이후 최강의 전사계획이 폐기되자 이 관리하고 있었다. 정신개조로 인해 인간적 감정이 존재하지 않고, 어떠한 임무라도 수행을 할 수 있지만 치명적인 단점이 존재했기에 계획은 중도 폐기.

단점에 대해서는 최강의 전사항목에서 언급한다.

덕분에 개발넘버조차 받지 못하고, 기억도, 감정도, 개발넘버도 없다는 無라는 의미에서 Null이라는 암호명을 받는다. 본편에서 커밍햄은 Null을 인형이라 평가. 본편 초반에는 기재부족으로 배양액의 정제가 늦어져 재조정중이었다.

이후 핵 발사 사일로에 잠입한 빅 보스(네이키드 스네이크)를 생포하라는 명령을 받고 투입되지만, 접전 끝에 실패. 스네이크는 중간에 난입한 커닝엄에 의해 제압당하고 포로가 되지만 Null은 절대병사인 자신과 대등한 전투능력을 보이는 빅 보스에 의해 자아에 문제가 생겨, 이후에는 모든 명령을 무시하고 스네이크를 죽이려 움직인다. 자신을 막으려는 동료들을 마체테로 썰어버리는 것은 덤(...). 심지어는 의 명령조차 무시하고 달려들다가 진의 ESP와 나이프술에 제압당하고 조정실로 끌려가기도 한다.

이것은 완벽하지 않은 기억초기화가 원인으로 기억초기화시 이전의 임무나 자신의 신상정보등 대부분의 정보가 지워지지만, 유일하게 임무를 실행하면서 자신이 적을 살육하는 정보만이 계속 남아 있었기 때문. 이후, 초기화가 되는 중에도 꿈으로 이 장면을 계속 보게되고, 어느새 Null인 자신에게는 최강의 전사와 맞붙어서 살아남는 병사는 있어서는 안된다.라는 정체성이 확립되어버리게 되었다. 이것은 비슷한 임무를 반복적으로 행한 탓에 무의식적으로 각인된 기억이 영향을 주지 않았나 싶다.

한참 등장없이 뜸하다가 스네이크 일행이 변전소에 시한폭탄을 장치했을 때 스네이크를 찾아 헤매면서 자신의 동료들을 살육하다가 스네이크와 마주쳐서 2차전을 벌인다. 2차전에서 돌입하기 전에 스네이크가 Null을 기억해내면서 그의 과거가 드러난다.

1,2차 공히 패턴은 동일한데 마체테와 M10 잉그램을 사용하며 공격한다. 포터블 옵스의 보스전이 거의 그렇지만 이벤트 애니메이션에서 묘사되는 것에 비해서 굉장히 지리하고 박력없는 전투를 해야한다(...) 보스답게 CQC는 걸리지 않고 롤링으로 들이대면 칼부림을 하므로 총질로 승부를 봐야한다. 정면에서 총질을 하면 칼로 총탄을 튕겨내는데 싱글액션 아미의 도탄만큼은 잘 방어하지 못한다.

총을 10발씩 3번 쏘고 재장전하는데 총을 쏠때 코너에서 숨어있다가 한번 쏘고나서 눌이 잠깐 멈칫하는사이에 나와있다가 총을 쏘면 다시 코너로 숨는걸 반복. 눌이 3번을 쏘고 장전을 시작하면 냅다뛰쳐나와서 머리에 총알을 박아주는 식으로 공략하면 꽤 쉽게 클리어 할 수 있다. 타이밍이 늦으면 공격에 실패하니 주의. 별 의미없지만 건물위나 아주 멀리까지 도망가면 점프를 하며 쫒아오는걸 감상할수 있다. 공격 패턴 자체는 1, 2차전이 동일. 파이선과 달리 전투의 결말은 스태미너 킬이건 일반 킬이건 동일하므로 마음놓고 M16A1 같은 걸로 총질을 해도 상관없다. 도탄을 튕겨내지 못하는 것을 이용해서 오셀롯(2주차 이후)이나 권총 S랭크인 대원에게 SAA를 들려서 도망다니면서 적당히 아무데나 총질만해도 쉽게 이길 수 있다.

여담이지만 Null이라는 암호명은 '제로'와 비슷한 뜻이면서도 다른 뜻이다. 둘 다 아무것도 존재하지 않는 것, 無를 나타내는 의미에서는 같지만, 수치로 표현하면 제로는 숫자의 0(정수로서 -1과 +1 사이의 값을 갖는), Null은 0값조차도 존재하지 않는 아무 수치도 가지지 않는 값을 의미한다. 이 뜻이 중요한 이유가 있는데, 위의 내용에 관련하여 포터블옵스 본편에서 애국자들과 관련된 떡밥하나가 던져지기 때문. 오셀롯과의 전화내용에서 확인 할 수 있다.

주의. 내용 누설이 있습니다.

이 틀 아래의 내용은 이 문서가 설명하는 작품의 줄거리나 결말, 반전 요소가 직, 간접적으로 포함되어 있습니다. 작품의 내용 누설을 원치 않으시면 이하 내용을 읽지 않도록 주의하거나 문서를 닫아주세요.


전투 전에 그의 몸놀림에서 스네이크가 자신이 Null과 만난 적이 있음을 떠올린다. Null은 4년전 모잠비크에서 만난 반 정부 게릴라 소속의 소년병이었다. 당시 어눌한 몇 마디의 독일어와 함께 정부군 수십명을 혼자서 난도질하는 모습을 보여주었고, 이때 정부군은 두려워하면서 '프랭크 예거'라는 별명을 붙였다. 여기서 프랭크(frank)는 솔직하다는 의미이며 그가 정부군을 마치 '사냥꾼'처럼 살육한다는 뜻으로 '헌터'라고 불렀다가 그가 독일어를 사용하는 관계로 사냥꾼이라는 의미의 독일어인 '예거'(Jäger)라는 이름을 붙여준 것. 스네이크는 '무구한 소년의 솔직한(frank) 모습으로 정부군에게 접근해, 냉혹한 사냥꾼(hunter)처럼 목숨을 빼앗았지.' 라는 말을 한다. 이에 Null은 절대병사인 자신이 있는 곳에 다른 병사는 있을수 없으므 이름 따윈 필요없다고 덤비지만 스네이크에게 털리고 나서 결국 기억이 돌아온다.

모잠비크 내전 당시 전쟁의 도구로 이용당하던 소년 Null, 즉 '프랭크 예거'는 빅 보스에게 구출되어 보호시설로 보내졌지만, 그 특수한 성장과정 때문에 CIA의 주목을 받아 최강의 전사계획의 대상으로 지정되어버린다. 아마도 그가 꿈에서 보았다는 "나를 구해준 강한 팔과 웃음 소리"는 자신을 구원했던 사람, 즉 스네이크를 의미하는 것인듯하며 기억이 있던 시절의 프랭크는 빅 보스를 자신을 구원해주고 기억의 공백을 메워준 사람으로 존경하고 있었다.

메탈기어 2 솔리드 스네이크를 해보았다면 '프랭크 헌터'라는 이름이, 메탈기어 솔리드를 해보았다면 '프랭크 예거'라는 이름이 낯익을텐데 그의 정체는 나오미 헌터의 오빠이자 훗날 FOXHOUND에서 그레이 폭스라 불리는 남자다. 이 사람이 칼로 총알 튕겨내는 스킬은 사이보그 버프가 아니었다!

이후 스네이크와 동료들의 보호를 받으며 엔딩에서는 로이 캠벨이 정신적으로 크게 상처를 입었기에 임무는 무리라며 재활센터로 보내버려서 그대로 은퇴할 줄 알았으나 어찌된 일인지 후에 자신을 구해준 빅 보스에게 은혜를 갚기 위해 FOXHOUND에 입대한다.(아마도 근성으로 재활훈련을 전부 끝마친듯 싶다-_-) 이후 그가 메탈기어 2 솔리드 스네이크에서 폭스하운드를 떠나 빅보스를 도와 잔지바랜드 항쟁에 참가하게 되는 것도 두번이나 빅 보스에게 목숨을 구함받은 은혜와 그에 따르는 존경심이 있었기 때문.

그리고 이 사이에 임무수행중에 나오미를 주워서 의동생으로 삼고 미국으로 건너가 나오미가 대학에 다닐때까지 뒷바라지를 해주고 다시 전쟁터로 향한다. 상세한 내용은 나오미 헌터 항목을, 이후의 활약상은 그레이 폭스 항목을 참고.

1주차에서는 유니크 캐릭터로 사용할 수 없지만 2주차에서 한번 세이브 하고 다시 로드하면 아군으로 들어와있다. 스토리 전개가 일반 킬이라도 스태미너 킬과 마찬가지로 죽지 않은 것으로 전개되기 때문인지 파이선이나 진처럼 스태미너 킬 조건은 붙어있지 않다. 유니크 캐릭터 중에서는 쓸만한 편에 속하는데 CQC와 서브머신건 스킬이 S이고 다른 전투계 능력도 괜찮은편이라 스니킹 팀으로 활약할 수 있는 캐릭터. 센스도 60으로 스네이크보다 높아서 잠입임무로 적격이다. 전용무기인 마체테는 휘두르는 속도가 좀 느리지만 3연격을 맞으면 대부분의 일반 적병은 죽는다. 정확히는 앞에 1,2타가 빗나가도 3타째만 맞으면 즉사(...)라는 무시무시한 무기. 암살 플레이라면 꽤 유용하긴 하지만 몰래 등뒤에서 마체테를 썰어댈 정도로 접근할 수 있다면 다른 무기로도 간단하게 홀드업시켜 무력화하거나 죽일 수 있으므로 실제로 마체테가 특별히 유용한지는 좀 의문. 얼럿 상태에서 긴급대처로 근접한 병사들을 죽이고 도망칠 때는 약간 유용하다.

이름라이프스태미너센스기본장비커리어
눌 (Null)13040060마체테(고정)없음
스킬레벨권총SMG소총샷건저격중화기CQC투척트랩기술의료
ASABCCSBABC
  1. 문자 '0'과는 다르다. 문자 '0'의 아스키 코드값은 48
  2. '='이 2개
  3. '='이 3개
  4. Quick sort를 발명한 사람이다