WIL 7 -항해99 2주차 (22.11.27)

Pablaw·2022년 11월 27일
0

WIL

목록 보기
8/12
post-thumbnail

ES(ECMAScript)에 대해서

ES(ECMAScript)는 프로그래밍 언어가 아니라 스크립트 언어들에 대한 표준, 규격이라고 할 수 있다.

JavaScript를 표준화하기 위해서 만들어졌지만 어도비 플래시의 액션스크립트, MS의 J스크립트 등의 구현체들도 포함하고 있다.
ES의 시작은 다양한 스크립트 언어들이 개발되면서 각 스크립트 언어들간의 표준이 필요하다는 목소리가 커지면서 등장하게 되었다.

1997년 6월의 ES 1판을 시작으로 불규칙하게 제정되어 왔지만 2015년부터는 매년 6월 규칙적으로 개정판이 제정되고 있다.

ES6(2015)가 큰 의미를 지니는 이유는 ES5(2009) 이하 명세에서 문제되었던 많은 부분이 해결되었고 다양한 기능이 추가되었기 때문이다.
React나 Vue 등 유명 라이브러리도 개발 환경을 ES6에 맞춰 바꾸고 개발을 이어가고 있다.

ES5와 ES6 사이에 여러모로 큰 변화가 있었기 때문에 이에 따라 ES6+의 자바스크립트를 모던 자바스크립트라고 부른다.

ES5와 ES6의 비교

  1. 변수 선언 키워드(let, const) 추가
    ES6 이전 var 키워드는 함수 레벨 스코프를 가지며 암묵적 재할당이 가능하다.
    이는 다시 말해서 변수 선언시 키워드의 생략이 가능했고 중복선언이 이루어질 수도 있다는 문제를 가지고 있다.

    이와 관련한 단점을 보완하기 위해 ES6에서는 블록 레벨 스코프를 지니는 let, const 키워드가 추가되었다.
    이에 따라 전역 레벨을 스코프를 지니는 var와는 달리 스코프에 따라 유효한 범위를 지닐 수 있게 되고 중복선언을 방지하고 선언 시점부터 변경이 가능한 변수인지 불가능한지를 알 수 있게 개선이 되었다.

  2. 화살표 함수(Arrow function) 추가

    ES6 이후로는 화살표 함수 기능이 추가되어 함수를 간결하게 나타낼 수 있다.

    이를 통해 가독성 및 유지 보수가 향상되었다고 할 수 있는데 유지 보수 측면에서는 기존 함수는 선언과 초기화 할당이 동시에 이루어지는 일명 '1급 객체'이기 때문에 사람이 보는 코드의 순서와는 다르게 렌더링이 이루어진다.

    이에 따라 예기치 못한 문제가 발생할 수 있지만 화살표 함수를 사용하며 익명함수로 선언하게 되며 이러한 문제없이 예상되는 순서대로 사용할 수 있게 된다.

  3. Template literal 추가
    ``(백틱)을 사용해서 문자열과 함께 '${표현식}' 표시로 자바스크립트 표현식을 함께 편리하게 삽입할 수 있게 되었다. 이를 통해 줄바꿈을 원하는대로 편리하게 작성할 수 있게 되었고
    문자열과 더불어 변수 값을 함께 편리하게 작성할 수 있게 되었다.

알고리즘의 중요성

프로그래밍 기본 주간을 맞아서 알고리즘 문제풀이를 원없이 하게 되었다.
취업의 관문으로 코딩테스트 패스를 위해서 알고리즘 문제를 풀어야 하는가 생각했었다.
하지만 프로그래밍 언어에 지속적으로 노출되는 환경에서 코드를 작성하면 할수록 왜 알고리즘을 풀어야하는지
조금은 와닿게 된 느낌이 든다.

프로그래밍 언어는 컴퓨터의 연산과 사람의 사고 간의 단절을 이어주는 가교역할을 한다고 생각한다.
웹 서비스를 개발할 때 사람이 서비스를 기획하고 컨텐츠를 개발하더라도 컴퓨터의 연산과정으로 이어지지 못하면 무용지물이다.
프로그래밍 언어는 기본적으로 컴퓨터 친화적이고 규칙과 문법이 엄격하게 적용되는 논리적인 언어이다.
사람 간의 대화라면 표현이 서툴고 어리숙해도 의도만 어떻게든 전달된다면 큰 문제없이 넘어갈 수 있다.
하지만 컴퓨터와의 대화는 문법과 규칙에 어긋나면 곧바로 에러로 이어지고 다음 단계로 넘어갈 수 없다.
작성한 코드들이 배포까지 문제없이 이어지기 위해서 논리적인 코드 작성이 필수적이라는 말이 된다.

더불어 알고리즘 풀이를 진행하면서 다양한 내장함수, 메소드 등을 사용하며 사용법을 익히게 된다.
개발하는 언어에 대해 친숙해지고 다양한 사용법과 규칙들을 배워가면서 보다 나은 코드 작성을 위한 초석이 될 것이라 기대한다.
함께 협업하는 사람들의 가독성을 고려한 코드작성, 성능을 개선하기 위한 효율적인 코드 작성은 이러한 노력을 바탕으로 가능할 것이기 때문이다.

알고리즘은 문제 풀이 자체로도 기쁨과 희열을 느낄 수 있도록 하기도 하지만
무엇보다 개발을 위한 본질적인 사고력을 기르는 것에 큰 도움이 된다고 생각한다.

profile
반갑습니다, 프론트엔드 개발자를 꿈꾸고 있습니다 ! https://pablaw.github.io/profileLink/

0개의 댓글