2008/04/18 01:22

후위표기법과 어순 잡상

일반적으로 산술식은 '중위 표기법'을 쓰는 게 표준이죠.

    1+1 = 2 
    1 더하기 1은 2

초등학교에 들어가면 저 수식을 읽는 법을 배웁니다. "1더하기 1은 2와 같다." 라고 읽어야 한다고 배우죠.
1 plus 1 equals 2 의 영어 문장을 그대로 번역한 걸 겁니다.
영어 어순으로는 기호와 단어가 1대1 대응이 되고 자연스럽습니다. 우리말론 별로죠.



'후위 표기법' 이란 게 있습니다. 연산자의 두 항을 각각 A, B, 연산자를 Op 라고 놓아보죠. 중위 표기법은 AOpB로 씁니다. 반면 후위 표기법은 ABOp로 쓰죠. 저 위의 산술식 1+1 = 2 를 후위 표기법으로 쓰면 11+2= 가 될 겁니다.

낯선 표기법이라서 뭐가뭔지 헷갈리지만 의외로 우리말 어순과 잘 맞아떨어집니다. 
    1    1     +        2    =
    1에 1을 더하면 2와 같다



영어는 어순이 SVO인 반면 한국어는 SOV이기 때문에 벌어지는 일입니다. S와 O를 연산자의 각 항에 대응시키고 V에 연산자를 대응시킬 수 있거든요. 수식 표기법을 한국어 사용자가 개발했다면 후위 표기가 표준 표기법이 될 수도 있었을 것 같습니다.


후위 표기법은 괄호가 필요 없기 때문에 컴퓨터 등에서 잘 사용되고 있습니다.

덧글

  • 역설 2008/04/23 18:23 # 답글

    (2+3)*2=10
    2+3*2=8

    2 3 + 2 * = 10

    2 더하기 3 곱하기 2는....
    2에 3을 더한 값에 2를 곱하면 10과 같다.

    오오...!!
  • 성큼이 2008/04/25 00:46 # 답글

    역설// 등호 연산자는 뒤로 안 옮기셨군요 ㅎㅎ
  • ㄴㅇㄱ 2009/02/09 14:40 # 답글

    factor 언어 http://langdev.net/post/260 가 이런 류 인걸로 압니다 :)
  • 성큼이 2009/02/12 10:16 #

    나중에 컴터 언어에 대한 조예가 깊어지면 만들어볼까 했던 거랑 비슷하게 생겼네요.
    흥미롭군요 ㅎㅎ
  • 달룟 2009/02/11 11:45 # 삭제 답글

    프로그램 규모가 커지면 읽기가 쉽지 않다는 문제가...



    x DUP DUP SQ SWAP -2 * 1 +
  • 성큼이 2009/02/12 10:17 #

    잘 만들어야겠죠. 그냥 자연어로 된 문장도 읽기 어렵게 되기 쉽상이라...
  • 123 2012/04/17 20:05 # 삭제 답글

    주인장님 후위 중위 전위 표기법 말고는 다른 표기법도 있나요?
    제가 언어를 공부를 하는데 컴퓨터언어 말고 실제언어요 도움이 될만한 내용들 같아서 구글로 뒤지다가 댓글남깁니다
    컴퓨터언어는 잼병인지라..
  • 성큼이 2012/04/17 23:52 #

    S, V, O가 배열되는 방식에 관한 것은 http://en.wikipedia.org/wiki/Word_order 항목을 살펴보시면 될 겁니다.

    전위 중위 후위 표기법은 연산자가 어디에 놓이는 게 적절한가에 관한 거라서 프로그래밍 언어에 주로 해당된다고 보시면 될 것 같아요.
  • 123 2012/10/06 09:14 # 삭제 답글

    죄송합니다! 또 와서 여쭈어 보겠습니다..ㅎ
    제가 한번 찾아보니 전위식 후위식 중위식이 있던데
    같은원리로 아랍어쪽 v s o 어순의 언어를 전위식으로 볼수도 있겠군요?
  • 성큼이 2012/10/08 09:04 #

    ㅋㅋ 네 그렇게 됩니다.
  • 123 2012/10/11 13:38 # 삭제 답글

    아이쿠 감사합니다.
    계속 질문을 해도 괜찮은지 모르겠습니다....
    혹시 프로그래밍언어에서 연산자를 안쓰는 식이 있나요?

    보통 실제 언어에서는 연산자를 동사로 볼때
    you good 너 거기 처럼 중간에 생략이 가능한데 프로그래밍언어에서도 이런식으로 생략이 된 문장이 있나요?

    자꾸 귀찮게 해서 죄송합니다..

  • 성큼이 2012/10/11 18:11 #

    기본적으로 프로그래밍 언어는 컴퓨터에게 어떤 일을 하라고 시키기 위한 겁니다.
    동사가 아예 없으면 아무 일도 안 할거라서 사실상 무의미하죠.

    동사가 생략된 경우가 있을 수 있는데, 생략된 게 무엇인지 명백한 경우에는 추론할수도 있겠죠.
    좀 애매하고 문맥을 파악해야되는 경우는 어렵습니다. 컴퓨터는 일단 엄청 멍청한 기계니까요.

댓글 입력 영역