.-ㅅ-
65
2022-05-04 00:23:21
6
3806

System.out.println()문 한 문장만에도 많은 일이 일어나네요.


한 번쯤 소스 코드를 보거나 분석해보라는 글을 본 적이 있었는데,

시작을 자바 System.out.println("Hello World")으로 디버깅 해보라는 말이 있어서 시도해봤습니다.


하나씩 다음 스탭으로 넘어가면서 보고 있는데 꽤 많은 절차가 있길래 보면서 굉장히 놀랐습니다.

부끄럽게도 모든 과정을 이해할 수는 없었지만,

그나마 알 수 있었던 점은 터미널에 문장 한 줄을 띄우려면,

내가 입력한 문장을 버퍼로 만들고 버퍼가 전부 구성되면 그 때 버퍼를 시스템에 flush 한다는 점이었습니다.


print()안에 문자열이 아닌 정수나 float, 오브젝트 등 아무 데이터 타입을 넣어도 에러가 안 뜨는 이유가

당연하게도 이미 데이터 타입마다 오버로딩이 되어 있는 상태였고

변수가 null값이라도 valueOf()을 통해 null인 변수는 "null" 문자열으로 반환하는 식으로 되어 있었습니다.


이 과정에서 한 가지 얻어간 건 String에 대한 이해였습니다.

리터럴로 표현한 String이 원시 데이터 타입이 아니라는 건 책으로 배웠지만 조금 아리송 했었는데,

print를 디버깅하는 과정에서 String도 결국 실제 문장을 담은 byte로 된 배열과 각종 메소드로 이루어진 클래스라는 점을 눈으로 직접 확인해보니 확실히 이해가 되더라고요.


System.out.println("Hello World"); 이 간단한 한 문장도 원래는 데이터 타입을 신경 써야 되고 버퍼로 만들고 해야 하는 것들이,

단 한 줄로 쉽게 만들 수 있다는 점에서 자바 개발하신 분들께 감사한 기분마저 듭니다.

그런데 조금만 더 생각해보니 나는 그저 api 사용자일 뿐인가 하는 좌괴감마저 듭니다..

15
1
  • 댓글 6

  • 어떻게하는거야
    9
    2022-05-04 00:36:39

    자괴감이 들 필요는 전혀 없어요

    깨달음을 얻은 것에 큰 성과를 거뒀다고 생각합니다

  • jjna0825
    703
    2022-05-04 01:01:02

    밥 한그릇을 먹기위해서는 비료 재작업체와 트랙터 제조사들의 기술력을 발판으로 벼농사를.....

    뭐 모든 분야가 다 그런거죠

  • 팬더재즈Bass
    1k
    2022-05-04 05:40:08

    그런분들이 있어야 우리도 먹고 살죠

  • 레인3
    1k
    2022-05-04 10:00:25
    코어는 가져다 써야 더 중요한 일에 시간을 쓸 수 있죠. 그러지 않고서야 어떻게 우주선을 띄울까요
  • 오내가젊
    1k
    2022-05-09 09:58:11

    얼마 전에 책에서 본 내용이 생각 나네요.


    개발자는 프로그래밍을 하는 것인가? 프로그래밍을 당하는 것인가?

  • cppp
    260
    2022-05-10 23:34:35

    저는 어셈블리어 공부하면서 인텔에게 무한한 감사함을 느꼈습니다...

  • 로그인을 하시면 댓글을 등록할 수 있습니다.