표현식(expression) vs 문(statement)

고병찬·2024년 9월 8일

TIL

목록 보기
29/54

표현식(expression)이라는 개념은 코드를 작성하며 의식하거나 말로 표현한 적이 거의 없는 것 같다. 문(statement)는 그래도 표현식 보다는 조금 더 많이 말하는 것 같다. 예를 들어 if문 처럼

어쩌다보니 두 개념을 구분해야하는 상황 두 가지를 봐서 정리해두려고 한다.

  1. react에서 && 혹은 || 연산자를 쓰는 이유
  2. 파이썬에서 exec와 eval의 차이

첫번째는 멘토님과의 멘토링에서 멘토님이 왜 이런지 궁금하지 않으신가요?라고 하시며 알려주셔서 알게되었고 두번째는 인터넷 서치하다가 들어간 블로그에서 알게 되었다.

표현식(expression) vs 문(statement)

두 개념을 영어로 보면 그 개념이 더 잘 와닿는 것 같다. 그래도 표현식은 여전히 잘 와닿지 않는다. expression이라...

표현식(expression)

참고한 블로그에 따르면

Expression은 ‘수식’이라는 뜻으로 하나 이상의 값으로 표현(reduce)될 수 있는 코드를 말한다. 핵심은, expression들은 평가(evaluate)가 가능해서 하나의 ‘값’으로 환원된다는 것이다.

기본적으로 표현식은 값을 생성하는 자바스크립트 코드입니다.

라고 설명한다. 첫번째 인용은 파이썬을 바탕으로 설명하고 두번째 인용은 JS를 바탕으로 설명하지만 대부분 언어에서 비슷하게 쓰이는 것 같아서 괜찮은듯

결국 마지막에 어떤 값이 나온다면 그걸 표현식이라고 생각하면 될 것 같다.

문(statement)

다음은 statement. statement는 ‘진술’, ‘서술’의 의미로 프로그래밍에서는 실행가능한(executable) 최소의 독립적인 코드 조각을 일컫는다.

자바스크립트 프로그램은 일련의 문입니다. 각 문은 컴퓨터가 무언가를 하도록 지시하는 것입니다.

expression은 마치 명사와 같다면 statement는 나에게 동사처럼 다가왔다. 프로그래밍 언어에서 어떤 동작을 지정해놓은 진술(statement)인 것이라고 생각했다. 그래서 가장 간단하게는 각 언어에 있는 키워드가 statement라고 생각했다. 키워드는 각자 정해진 역할이 있다는 것인이까!

정리

표현식(expression) == 어떤 값을 반환 == 평가(evaluate)될 수 있음
문(statement) == 동작이 정해져있음 == 실행(excute)될 수 있음

react에서 && 혹은 || 연산자를 쓰는 이유

https://dev-boku.tistory.com/entry/%EB%B2%88%EC%97%AD-%EB%AC%B8-vs-%ED%91%9C%ED%98%84%EC%8B%9D

파이썬에서 exec와 eval의 차이

https://shoark7.github.io/programming/knowledge/expression-vs-statement

레퍼런스

https://shoark7.github.io/programming/knowledge/expression-vs-statement
https://dev-boku.tistory.com/entry/%EB%B2%88%EC%97%AD-%EB%AC%B8-vs-%ED%91%9C%ED%98%84%EC%8B%9D
https://velog.io/@jakeseo_me/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EA%B0%9C%EB%B0%9C%EC%9E%90%EB%9D%BC%EB%A9%B4-%EC%95%8C%EC%95%84%EC%95%BC-%ED%95%A0-33%EA%B0%80%EC%A7%80-%EA%B0%9C%EB%85%90-7-%ED%91%9C%ED%98%84%EC%8B%9D%EA%B3%BC-%EB%AC%B8Statement-%EB%B2%88%EC%97%AD-2xjuhvbal7
https://docs.python.org/ko/3/reference/simple_stmts.html#grammar-token-python-grammar-expression_stmt

profile
안녕하세요, 반갑습니다.

0개의 댓글