본문 바로가기

Develop/JavaScript

[JavaScript] 자바스크립트 입문하기(1) - 자바스크립트에 대하여

최근 웹퍼블리싱 스터디를 하면서, 자연스럽게 자바스크립트에 대해 접하게 되었다.

솔직히, 대학교 공부를 하면서 전공을 버리다시피해서 코틀린 이외 언어를 제대로 공부해본 적이 없어서

자바스크립트를 접했을 때, 어떻게 시작해야할지에 대한 막막함과 내가 과연 이해를 잘 할 수 있을까에 대한

두려움이 있었는데, 아주 친절한 친구 덕분에 자바스크립트를 공부하는데 첫걸음을 떼었다.

 

해당 포스팅은 친구가 알려준 내용을 토대로, 혼자 복습하면서 구글링하면서 보게 된 자료들을

정리하고자 쓴 포스팅이다 :)

 

 

 

 

 자바스크립트(JavaScript)란 무엇인가?

자바스크립트를 떠올랐을 때 많은 분들이 웹에서 사용하는 언어라고들 생각한다.

그도 그럴게 자바스크립트는 웹 구현과 함께 발전되었기 때문이다.

나 역시 처음에 자바스크립트는 웹의 인터렉션을 좀 더 풍부하게 만들어주는 언어, 이정도로만 인식하고 있었다.

하지만 지금은 웹 뿐만 아니라 서버, 모바일 앱, 머신러닝 등 여러 분야에서 사용되고 있다.

 

자바스크립트는 미국의 Netscape Commuications)가 개발한 스크립트 언어이다. 정적인 언어인 HTML과 CSS의 한계를 극복하여 웹문서를 동적으로 꾸밀 때 가장 널리 쓰이는 언어이기도 하다.

한때는 자바스크립트는 비웃음의 대상이었다고 한다. 자바스크립트가 이렇게 뜨기 전에는 개발자들 사이에서는 자바스크립트 뒤에 ‘따위’라며 비웃었다고 한다. 그 이유는 ‘쉽다’라는 이유였다.(근데, 왜 쉽다고 생각하는지 모르겠다 하하하)

자바스크립트는 자유도가 높은 언어이기 때문에 그런 것인가..싶기도 하고.

 

하지만 구글이 지도 서비스를 내놓으면서 판도가 바뀌기 시작했다. 구글에서 자바스크립트와 HTML/CSS만으로도 동적인 효과를 구현할 수 있다는걸 증명하였고, 거기에 스티브 잡스의 플래쉬 혐오, HTML5의 등장, ajax의 열풍이 가세하면서 Javascript가 엄청 떠올랐다.

 

또한 위에서 말했다시피 지금은 웹 뿐만 아니라 서버, 모바일 앱, 머신러닝 등에서 사용되면서 

github만 봐도 Javascript로 되어있는 프로젝트를 굉장히 많이 발견할 수 있다.

 

많은 사람들이 Java와 Javascript는 굉장히 밀접한 관련이 있을거라고 생각하거나 파생된 언어라고 생각하는데,

전혀 그런 관련성은 없다. 

 

 

 자바스크립트(JavaScript) 특징

  1. 프로토 타입 기반의 객체 지향 언어이다. 하지만 상속과 클래스라는 개념은 없다.
  2. 스크립트 언어로, 컴파일 과정을 거치지 않고 실시간으로 텍스트를 분석하여 실행한다.
  3. 자바스크립트의 함수는 일급 객체이다.
  4. 동적 형변환이다. 값에 따라 변수의 형변환이 자동으로 이루어진다.

 

자바스크립트(JavaScript) 장점

  1. 스크립트 언어로, 컴파일 과정이 없이 빠르게 실행할 있다.
  2. 스크립트 엔진이 있는 모든 운영체제에서 실행이 가능하다.
  3. 일급 객체 언어로, 개발자가 능력이 있다면 함수를 통하여 무한대에 가까운 가능성의 언어를 개발할 수있다.

 

자바스크립트(JavaScript) 단점

  1. 컴파일되지 않은 언어가 그대로 사용자에게 주어지므로, 소스 노출의 위험이 크다.
  2. 브라우저 상에서 소스를 변경하여 사용자가 임의로 기능을 실행할 있다는 위험이 있다.

 

 

자바스크립트(JavaScript)로 할 수 있는 것들

 

 

(1) 웹개발

역시 자바스크립트에서 빼놓을 수 없는 건 바로 웹개발이다.

실제로 HTML과 CSS의 정적인 부분을 좀 더 풍부하게 만들어주는 보조 역할으 넘어서, 이제는 SPA(Single Page Application) 라이브러리와 프레임워크들이 나타나면서 웹 개발을 하는 사람들에게는 빼놓을 수 없는 언어가 되었다.

 

자바스크립트 프레임워크

 

 

(2) 서버 개발

 

아마 개발자 분들이라면 정말 익숙하게 접했을 node.js 

특히 node를 한다 하면, 아 서버 개발을 하는 사람이구나 라고 인식한다.

나 역시 node.js가 자바스크립트를 기반으로 한 일종의 언어라고 착각하고 있었는데

node.js는 Chrome V8 Javascript 엔진으로 빌드된 Javascript 런타임이다. 여기서 런타임이란 프로그래밍 언어가 구동되는 환경을 말한다. node.js의 백엔드 프레임워크는 Express이며,  서버 설치부터 화면 띄우는 것 까지 금방 처리할 수 있어서 많은 서버 개발자들이 node.js를 이용하여 자바스크립트를 사용하게 되면서 

node.js = 서버개발이라는 인식이 생겼다.

엄밀히 말하면 프론트개발을 때도 node 이용할 있다.

 

 

(3) 앱 어플리케이션 개발

 

javascript로 앱 애플리케이션을 만든다고? 약간은 생소할 수 있겠다.

대부분 android를 개발한다 하면 Kotlin이나 Java를, iOS를 개발한다 하면 Swift나 Object C를 떠오르게 되니까.

하지만 React native가 나타나면서 javascript의 영역이 더욱 넓어졌다.

React natives는 리액트의 접근 방법을 모바일로 확장한 facebook의 오픈소스 프로젝트이다.

자바스크립트로 코딩한 React 컴포넌트는 React native 플랫폼을 거쳐 iOS와 Android native 코드로 각각 변환이 된다.

그래서 android, iOS 따로따로 개발하는 것이 아닌, 한번만 개발해도 영역의 어플리케이션을 구축할 있어서 사랑을 받고 있다.

 

 

(4) 머신러닝

TensorFlow란 구글에서 만든, 딥러닝 프로그램을 쉽게 구현할 수 있도록 다양한 기능을 제공해주는 라이브러리이다.

기본적으로는 C++로 구현되어 있지만, python, java, go 등 다양한 언어도 지원이 되며

JavaScript 통해서도 개발이 가능하여  JavaScript 활용할 있는 영역이 넓어졌다.