따배씨++ (2-3. 정리하기)

김동우·2021년 2월 17일
0

안녕하세요. 김동우입니다.

이번 글은 그냥 여흥 정도이니, 가볍게 넘겨주셨으면 좋겠습니다.

( + 이 글은 따배씨++의 숙제와도 같은 것을 적어두는 노트입니다. 이전 글을 보신 분들은 아시겠지만, 당장 PS에 관련된 지식인지는 저도 잘 모르겠습니다. 그래도 쭉 적을테니, 누군가 보시게된다면 킬링타임으로만 읽는 것을 추천드립니다. )

그럼 시작하겠습니다.

먼저, C++ 에서 세미콜론은 무엇을 의미하는지 생각해봅시다.

;

우린 이 기호를 어디서 봤을까요?

땀이 흐르는 모양 같기도 하고, l or p 자판을 타이핑하려다 오타로 사용하는 것 외에 일상에서는 사용할 일이 딱히 없었습니다.

그런데 이제는 아닙니다. JS, CSS, Java 등등 많은 언어가 세미콜론을 사용합니다. C 계열 언어도 예외는 아니죠.

파이썬은 이단아입니다. 🤣🤣

왜 하필 세미콜론을 쓸까요? 이 녀석을 문장의 끝이라 알리는 기호로 채택한 것은 어떤 이유일까요?

  1. 먼저, 세미콜론의 역할입니다.

    이 글을 적기 위해 제가 따로 강의를 들을 줄 몰랐지만, 제가 알고 있는 지식 선에서 말씀드리겠습니다.
    우리가 작성한 코드를 컴파일 할 경우, C++의 컴파일러는 React의 build과정과도 같은 코드의 변환이 이루어집니다. 이렇게 작성하면 감이 안오실 것 같으니 소스를 한 번 작성해봅시다.

    int main(void){
    int x = 3;
    int y = x + 3;
    std::cout << y << std:endl;
    }

    이러한 코드가 있고, 우리의 컴파일러는 이 녀석을 실행 프로그램인 exe로 변환해야 합니다.
    exe 파일은 컴퓨터에게 너 임마, 콘솔창 띄워서 y 출력해! 라는 의도를 전달해야하며, 이러한 과정에서 우리의 코드는 다양한 변화를 경험하게 됩니다.

    그 과정에서 일어나는 것 중 일부가 단일행 코드로의 변환입니다.

    위와 같은 코드가

    int main(void){int x=3;int y=x+3;std:cout<<y<<std:endl;}

    이렇게 바뀌는 것이죠. 그럼 여기서 세미콜론은 어떤 역할을 할까요? 가시적인 효과만 봐도 행으로 구성되었던 명령문들을 구분해주는 아주 중요한 역할을 맡고 있습니다.
    마치 하나의 함수 내에 존재하는 명령문들의 긴 흐름의 방향을 세미콜론이 꾸준하게 지시하고 있는 느낌을 받습니다. 3줄짜리 코드에서 느끼기는 어렵지만, 20줄 정도의 코드만 되어도 확실히 느껴질 것 같습니다.

    이러한 내용에 흥미가 있고, 보다 더 깊게 아셔야겠다면, 좋은 강의를 하나 올려두도록 하겠습니다.

    C에서는 세미콜론을 왜 쓰는걸까?

  2. 그럼 왜 하필 세미콜론을 사용할까요? 마침표도 아니고 말이죠.

다양한 가설과 추측들이 존재하고 있고, 개발자의 의도를 명확하게 파악하는 것은 후대에 이르러서는 정말 어려운 일일겁니다.

그럼에도 신빙성이 있는 일부 가설을 보면, ALGOL, PL/I 등에서 영감을 받은 것이라는 의견이 있습니다.
쉽게 얘기하면 대물림이죠.

두번째로는 영문 에세이 등에서는 세미콜론을 밀접한 관계에 있는 두 문장 사이에 사용하고는 합니다. 이러한 컴퓨터 언어들이 개발된 곳의 언어가 영어임을 감안하면, 각 함수나 조건, 반복문 내의 명령문들이 밀접한 관계에 있다. 라는 생각을 할 수도 있겠습니다. 함수와 함수 사이 혹은, 다양한 조건문과 반복문 사이에는 세미콜론이 들어가지 않으니까요.

세번째로는 협회에서 마침표가 아닌 그냥 세미콜론으로 협의했다. 라는 말도 있습니다.

제가 생각하기에는 모두 맞는 말이라고는 생각합니다. 모두 다 설득력이 있는 말이니까요. 애초에 COBOL이라는 지금은 잘 사용하지 않는 언어에서는 마침표를 사용했었다고 합니다. 자연어와 상당히 가깝게 느껴지도록 말이죠.

포스트코로나 시대에 이르러 COBOL은 다시 한 번 잠시 수면 위로 떠오르게 되었지만요.

자, 이번 글은 여기서 마치겠습니다.

0개의 댓글

관련 채용 정보