자바스크립트 공부에 앞서 기본적으로 알아야하는 부분을 알아봅시다.

Wang yurin·2022년 9월 20일
0

상대방에게 무언가를 알려줄 때 어떻게하면 내가 전달하고 싶은 것을 나만의 언어로 쉽고 재미있게 잘 전달할 수 있을까?를 고민합니다.
설명이 미흡하지만 궁금하신 점이나 보완해야 하는 부분이 있다면 댓글 부탁드립니다.
피드백은 언제나 환영입니다! 😉

프로그래밍이 뭐죠? 🧐

프로그래밍 언어로 컴퓨터와 커뮤니케이션을하며 프로그램을 만드는 행위라고 볼 수 있습니다.
우리는 사람과 대화를 할 때에도 상대방이하는 말의 의도를 파악하고 이해하며 소통을 합니다.

마찬가지로 컴퓨터에게 "이거해! 저거해!" 등 무언가 실행을 요구하기 위해 우리가 먼저 무엇을 원하는지(요구사항)을 명확하게 이해한 후 적절한 문제 해결 방안의 정의가 필요합니다.

  1. 문제(요구사항)을 명확하게 이해한다.
  2. 복잡한 것을 단순하게 분해한다.
  3. 자료를 정리하고 구분한다.
  4. 순서에 맞게 행위를 배열한다.

위의 순서로 프로그래밍을 할 때 우리는 컴퓨터의 시각에서 문제를 바라보아야합니다.

왜냐하면 컴퓨터는 0과 1만 아는 똑똑하지만 바보인 친구이기 때문이죠. 사람과 말이 통하지 않습니다.

그렇기 때문에 프로그래밍 언어로 컴퓨터와 대화를 해야하며 컴퓨터가 알아들을 수 있도록 정확하고 상세하게 요구사항을 코드로 작성해야합니다.


프로그래밍 언어란? ✍️

컴퓨터와 대화를 할 때 우리가 일상에서 쓰는 말들로 말을하면 컴퓨터가 알아 들을 수 있을까요?
서로 사용하는 언어가 다르기 때문에 그것은 불가능합니다.

그럼 서로 소통을 하기 위해 누군가 언어를 맞춰줘야하는데 우리가 컴퓨터보다 조금 더 나으니까 컴퓨터가 이해할 수 있는 언어로 앞으로 말을 해봅시다.

그런데 이게 컴퓨터에게 직접적으로 말하는게 조금 부담스러운데요,
아래 사진을 보시죠

x86 아키텍쳐의 리눅스 환경에서 "Hello world"를 출력하는 기계어 코드입니다.
간단한 Hello world을 출력하기 위해 저런 코드를 사용한다는 것이 어질어질합니다.

그렇기 때문에 우리는 우리가 이해할 수 있는 약속된 문법으로 구성된 프로그래밍 언어를 사용하여 프로그램을 작성하고 그것을 컴퓨터가 이해할 수 있도록 기계어로 변환하는 변역기를 이용해야하는데 이것을 컴파일러 또는 인터프리터라고 합니다.

프로그래밍은 프로그래밍 언어를 사용해 컴퓨터에게 실행을 요구하는 일종의 커뮤니케이션이다.
프로그래밍 언어는 구문(syntax)과 의미(semantics)의 조합으로 표현된다.

우리는 앞으로 자바스크립트 코드를 통해 컴퓨터와 커뮤니케이션을 할 준비가 되었습니다!


구문(syntax)과 의미(semantics) 📄

우리는 영어를 배울 때 단어와 문법을 공부한 경험이 있을겁니다.
올바른 단어와 문법을 사용하는게 좋지만 이것만 잘 한다고해서 원활한 소통이 100% 이루어진다고 할 수는 없습니다.
상대방이 말하는 것에 대한 정확한 이해가 필요하고 그에 맞는 적절한 단어 선택과 더불어 결론을 향해 나아가는 의미있는 문장 구성이 필요합니다.

프로그래밍 언어도 마찬가지입니다.
대부분의 프로그래밍 언어는 "변수와 값", "키워드", "연산자", "표현식과 문", "조건문"과 "반복문"에 의한 흐름제어, "함수", "객체", "배열" 등의 자료구조와 같은 문법을 제공합니다.

프로그래밍 언어가 제공하는 문법을 적절하게 사용하여 변수를 통해 값을 저장하고 참조하며 연산자로 값을 연산/평가하고 조건문과 반복문에 의한 흐름제어로 코드의 실행 순서를 제어하고 함수로 재사용이 가능한 문의 집합을 만들며 객체, 배열 등의 자료를 구조화합니다.


기본 개념과 동작 원리를 아는게 왜 중요할까요? 💡

우리가 해야할 일은 문제를 해결하기 위한 방안을 고안하고 이것을 문법에 맞게 코드로 구현하는 것입니다.

구현된 코드는 의도한 대로 정확히 동작하여 문제를 해결해야하고 내가 구현한 코드가 컴퓨터 내부에서 어떻게 동작할 것인지, 무엇을 돌려줄 것인지 예측 가능해야하며 이것을 동료에게 명확히 설명 할 수 있어야합니다.

기본 개념과 동작 원리를 이해하지 못한 상태에서 단순히 동작만 하는 코드를 만들고 그것에 만족한다면 내가 구현한 코드는 언제 무너져도 이상할 것이 없는 사상누각일 뿐입니다. 신뢰할 수 없으며 유지보수하기에 어려운 코드가 되며 문제 해결 능력의 성장은 멈출 것입니다.

그렇기 때문에 기본 개념과 동작 원리의 이해는 어렵고 생소한 용어들로 이루어진 기술적 의사소통을 가능하게하고, 자신의 머릿 속에서 코드를 실행시키는 능력을 갖게합니다.

이를 통해 다른 사람이 작성한 코드를 이해하는 것은 물론 의도 또한 파악하게 되어 효과적인 코드를 생산할 수 있는 기본기를 쌓을 수 있습니다.

profile
프론트엔드 개발자 꿈나무 💫

0개의 댓글