본문 바로가기

DevOps.

'자바, 파이썬, 자바스크립트' 최선의 선택은?

728x90

 

컴퓨터를 다루는 좋은 방법은 컴퓨터가 이해할 수 있도록 컴퓨터 언어를 사용하는 방법을 배우는 것이다. 판타지 소설을 좋아하는 사람들은 때론 마법의 주문과 주술을 배우는 상상을 한다. 그렇지만 프로그래머들은 숫자와 데이터의 논리적 구조를 표현하되 기반이 더욱 튼튼한 언어를 사용한다. 어느 경우이든, 컴퓨터가 은유의 고리를 뛰어넘고, 가상의 춤을 추게 만들 키스트로크와 마우스 클릭의 순서를 이해하는 것이 중요하다.

 

모든 학교, MOOC, 트레이닝 기관들, 젊은 학생들은 배울 첫 번째 언어를 선택해야 한다. 케케묵은 하버드 같은 곳은 여전히 70년대 C언어를 고수하지만, 많은 학교와 교육 기관들은  자바스크립트, 파이썬, 자바를 선택하고 있다. 하나는 모든 브라우저에 사용되는 언어, 또 다른 하나는 사회 과학 분야에서 가장 많이 선택되는 언어, 마지막 하나는 수학에 능통한 사람들이 선호하는 ‘타입-리치(Type-rich)’ 언어이다.

 

‘클래식’한 자바

AP(Advanced Placement) 테스트는 자바가 미숙했던 오래 전에 이 언어를 선택했다. 초기에는 모두 자바가 아주 지배적인 언어가 될 것으로 예상했었다. 그런데 이런 일은 일어나지 않았다. 하지만 많은 웹사이트와 스마트폰, TV, 소형 장치의 ‘중추적’ 언어로서 입지를 유지하고 있다.

 

많이 사용되고 있는 언어를 선택해야 한다. 그래야 학생들이 발전된 개발 도구들을 십분 활용할 수 있다. 또한 공부하고, 수정하고, 자신의 결과물을 위해 확장시킬 수 있는 오픈소스 코드들이 풍부하다. 여기에 들어가 어울리기란 어렵지 않다.

새로운 파이썬

사실 파이썬이 아주 새로운 언어는 아니다. 30년 전에 시작된 프로젝트였다. 그러나 새로운 언어같이 느껴지는 이유는 성공하기까지 시간이 걸렸기 때문이다. 일반 프로그래머들 사이에 널리 도입되기 시작한 것이 비교적 최근의 일이다.

 

이에 따라 파이썬을 수용하는 학교와 교육기관은 새로운 학습 계획을 수립하고, 새로 시험을 만들고, 새로운 슬라이드들을 개발해야 한다.

 

‘신선함’ 때문에 파이썬을 선택하는 사람들이 많다. 단 신선함이 그저 피상적일 수 있음을 감안해야 한다. 모든 언어는 어셈블리 코드의 ‘if-then-else’ 결정 구조가 숨겨진 영리한 문장일 뿐이다.

도처에 사용되는 자바스크립트

브라우저에 사용된다. 그런데 브라우저는 데스크톱, 스마트폰, 거리 곳곳에 소재한 키오스크의 기반이다. 지난 10년 간 자바스크립트는 웹 서버를 점령했다. Node.js 웹 앱을 개발자들이 클라이언트와 서버 팜 모두에서 실행시키게 된 동안, 자바스크립트는 Node.js 웹 앱이 개발자들이 클라이언트와 서버 팜에서 실행할 수 있는 ‘isomorphic’ 코드를 쓰는 가장 인기있는 방법이 됐기 때문이다.

 

자바스크립트는 자바와 비슷한 시기에 개발되었지만, 서버 측면 전문가들이 그 강력함을 발견하는 데 몇 년이 걸렸다. 새롭지만, 동시에 오래된 언어이다.

‘타입(Type)’을 지정해야 하는 자바

각 변수의 타입을 지정하는 데 시간을 소비하는 것을 좋아하지 않을지 모르겠다. 그러나 사실 코드에 ‘int’를 추가하기 위해 3개 키를 누르는 데 많은 시간이 걸리지 않는다. 이렇게 하면 강력한 ‘힘’을 얻을 수 있다. 컴파일러가 코드가 배포되기 전에, 즉시 코드를 다시 확인해 어리석은 실수들을 찾아준다. 타입을 지정해야 하는 언어들은 코드의 논리에 대해 철저히 생각을 하도록 강요한다. 이는 신입 프로그래머들에게 아주 중요한 교훈을 알려준다. 자바의 타입 구조는 버그를 줄여주고, 더 나은 코드를 개발할 수 있도록 해준다.

‘타입’을 지정하지 않는 파이썬

‘타입’ 지정 언어를 좋아하는 사람들은 ‘스마트’하고 좋은 코드를 쓴다. 그러나 각 변수에서 데이터 타입에 대한 추가 정보 없이도 코드가 매끄럽게 실행될 것이라고 생각하는 사람들에게는 파이썬이 있다. 컴퓨터는 변수로 저장을 할 때 데이터의 타입을 파악할 수 있다. 그렇다면 추가로 수고를 들일 필요가 있을까?

둘 모두인 자바스크립트

자바스크립트 자체는 타입을 지정하지 않지만, 자바스크립트 생태계의 저명한 구성원들은 최근 원할 때 타입을 지정할 수 있는 원래 자바스크립트의 슈퍼 세트인 타입스크립트(TypeScript)로 옮겨갔다. 그렇지만 이를 원치 않을 경우, 일반 자바스크립트도 문제가 없을 것이다. 타입 확인에 있어 ‘완화된’ 버전이다.

장치 분야를 지배하는 자바

현재 전세계에서 가장 인기있는 스마트폰 플랫폼은 안드로이드이다. 자바에 기반을 둔 아주 거대한 코드 스택이다. 그렇지만 이는 가장 눈에 잘 띄는 플랫폼에 불과하다. 셋톱박스, 새로운 크롬북, 심지어 일부 데스크톱에서도 스마트폰처럼 안드로이드 앱이 실행되고 있다. 자바의 가까운 친척인 C#이 윈도우 세계를 지배하고 있다. C#이 자바와 똑같지는 않지만, 아주 비슷하다. 고정된 하드웨어에 사용되는 애플리케이션에 대한 프로그래밍을 할 계획이면, 자바가 최선의 선택인 경우가 많다.

데이터 사이언스를 지배하는 파이썬

데이터와 함께 작동하는 소프트웨어를 작성하는 경우, 파이썬이 가장 좋을 확률이 높다. 단순한 문장이 많은 데이터 사이언티스트들의 관심을 유발했다. 이 언어는 전국의 랩에서 강력한 입지를 구축했다. 이제 데이터 사이언스가 비즈니스 세계의 모든 계층에 입지를 굳히고 있다. 이를 뒤따르는 것이 파이썬이다.

 

인터랙티브 문서를 만들고 공유하기 위한 최고의 발명품 중 하나인 쥬피터 노트북은 다른 언어를 수용하기 전 파이썬 커뮤니티와 함께 시작이 됐다. 소프트웨어, 데이터, 현재 상황을 설명하는 텍스트를 혼합하는 좋은 방법 중 하나이다. 정보를 읽는 사람들은 단어를 흡수한 다음, 버튼을 눌러 데이터에 소프트웨어를 실행시킬 수 있다.

웹을 지배하는 자바스크립트

다른 플랫폼도 좋지만, 거의 대부분 사람들이 세상을 연결하기 위해 지속적으로 사용하는 포털 중 하나는 웹 브라우저이다. 데스크톱과 스마트폰, 태블릿에서 가장 많이 사용되는 소프트웨어이다. 자바스크립트는 로컬 클라이언트의 ‘보스’로 시작한 후, 그 영향력을 확대해 나가고 있다. Node.js가 성장하면서, 개발자들이 클라이언트와 서버에서 같은 코드를 실행하기 쉬워졌기 때문이다.

 

또한 웹 앱을 구축할 수 있는 기반을 제공하는 수십 가지 좋은 자바스크립트 프레임워크(Angular, React, Vue 등)가 있으며, 필요에 따라 클라이언트와 서버 사이에서 코드를 이동할 수 있을 정도로 ‘스마트’ 하다.

 

다른 언어가 지배하는 세계조차, 자바스크립트가 그 스택으로 침입하고 있다. 많은 스마트폰 개발자들이 자바와 스위프트 대신, 자바스크립트로 크로스 플랫폼 앱을 만들고 있다. 자바스크립트는 브라우저의 직사각형 공간에서 일어나는 일들을 결정한다. 또한, 거의 모든 곳에서 대부분의 클릭과 키 입력에 대한 것들을 결정할 것이라고 판단한다.

모든 것을 실행하는 자바

파이썬 코드를 작성하면 결국 Jython에서 실행될 확률이 높을 것이다. 도처에 위치한 자바 가상 머신을 이용하기 위해 자바로 쓴 언어의 구현체이다. 자바스크립트를 실행해야 하는 경우, 자바스크립트를 자바 바이트코드로 바꿔주는 2가지 도구인 Rhino와 Nashron을 이용할 수 있다.

 

JVM의 우수한 성능에 의존하는 것은 이 두 언어에 국한되지 않는다. Scala, Clojure, Kotlin과 같은 많은 함수형 프로그래밍 언어들이 이를 활용하고 있다. 이는 동일한 프로젝트에서 JVM 기반 언어들을 사용하기 원하는 경우, 이런 언어들을 쉽게 연결해 모두를 돕는다.

도처에서 실행되는 파이썬

파이썬은 다른 언어를 위한 에뮬레이터를 쓰는 사람들에게 첫 번째 선택도, 마지막 선택도 아니다. 하지만 많은 컴퓨터에서 파이썬을 쉽게 찾을 수 있다. 이 언어의 제작자들은 항상 코드를 오픈소스로 배포한다. 그래서 도처에 패키지가 있다. 맥OS와 대부분의 리눅스 배포판에 파이썬이 포함되어 있다. 윈도우에 포함되어 있지 않지만, 쉽게 설치할 수 있다. 스마트하게 설치하면 된다.

브라우저에서 실행되는 자바스크립트

믿기 어렵겠지만, 브라우저의 경고 상자를 만들기 위해 빌드한 장난감 같은 언어가 많은 언어의 토대가 되었다. 개발자는 사용자에게 다가가기 원한다. 사용자가 브라우저를 사용한다면, 코드를 자바스크립트로 실행시키는 방법을 찾는 것이 모두에게 다가가는 가장 빠른 방법이다.

 

자바스크립트로 옮겨지는 언어는 CoffeeScript 및 LiveScript 같은 자바스크립트 사촌들에 국한되지 않는다. Lisp, OCaml, Pascal 같은 언어들도 자바스크립트로 변환, 브라우저에서 실행이 될 수 있다. 파이썬은 쥬피터 노트북 같은 프로젝트의 브라우저에서 인기가 있다. 심지어 자바도 Google Web Toolkit 같은 도구를 사용해 자바스크립트로 번역할 수 있다.

강력한 IDE를 갖고 있는 자바

Eclipse, NetBeans, IntelliJ는 특히 잘 통합된 개발 환경들이다. 자바 커뮤니티가 만들었고, 오랜 기간에 걸쳐 코드 작성에 있어 가장 많은 도움을 받을 수 있는 환경으로 성장시켰다. 코드 완성 및 코드 생성 알고리즘이 소프트웨어를 완성시켜주지는 않겠지만, 상당한 도움을 받을 수 있다. 경험이 많지 않은 개발자들이 문장을 올바르게 구현하도록 도움을 준다.

 

이런 IDE는 다른 언어의 개발자가 자신의 코드를 그 안에서 실행시킬 방법을 찾을 정도로 큰 인기를 끌었다. 전문 자바 프로그래머가 된다면, 이 가운데 하나를 사용하게 될 것이 분명하다.

클라우드를 확보한 파이썬

파이썬 언어는 유닉스 세계에 처음 둥지를 틀었다. 이런 점을 감안하면, 리눅스가 가득한 클라우드에 파이썬 코드가 많은 것은 놀랄 일이 아니다. 쥬피터 같은 최신 도구들은 코드와 데이터, 설명을 통합하는 한편, 사람들이 다른 사람들과 인사이트를 공유할 수 있도록 도와준다. 쥬피터 노트북은 정적인 자료가 아니다. 인터랙티브한 도구이다.

 

연구를 강화하기 위해 언어를 중심으로 정교한 도구를 만들고 있는 사람들도 있다. 예를 들어, 파이토치(PyTorch)는 코드와 데이터, 분석 알고리즘으로 구성된 딥 러닝 툴킷이다. 이런 환경이 미래에 데이터 사이언스를 지배할 것이다.

 

또한 데이터를 공유하고, 크고 집약적인 컴퓨팅 데이터 분석 작업을 처리하기 위한 기능을 추가한 노트북용 호스트들이 몇 개 있다. 예를 들어, 구글은 데이터를 저장하고, 빠른 연산을 위해 GPU를 무료로 이용할 수 있는 Colaboratory를 운영하고 있다. 데스크톱보다 100배 빠른 성능을 자랑하는 Satun Cloud도 있다.

JSFiddle을 가진 자바스크립트

각 브라우저는 IDE 역할을 하기에 충분한 것들을 갖추고 있다. JSFiddle 는 다른 개발자와 자바스크립트 코드를 공유할 수 있는 수십여 가지 웹사이트 가운데 가장 두각을 나타낸다. 그러나 웹페이지는 정적이지 않다. 코드를 적용, 동일한 웹페이지에서 실행되는 것을 지켜볼 수 있기 때문이다. 이와 같은 도구를 사용하면 자바스크립트의 문장을 재미있게 실험할 수 있다.

3개 중 하나, 또는 전부를 학습

프로그래밍 세계는 ‘타가 수분(Cross-pollinate)’을 좋아한다. 여러 언어를 오가면서 문장을 정확히 유지하는 것이 혼란스러울 수 있지만, 프로젝트에서 큰 방해 없이 3개 언어를 모두 사용할 수도 있다. 데이터를 분석하는 자바나 자바스크립트 프로젝트는 파이썬으로 작성된 데이터 사이언스 라이브러리에서 연결할 수 있다. 또 파이썬 프로젝트는 자바나 자바스크립트 코드를 호출할 수 있다.

 

‘스마트’한 개발자들은 서로 다른 언어를 자동으로 번역하고, 연결하고, 통합하는 도구들을 개발했다. 브라우저에서 파이썬 코드를 실행하고 싶은가? 지금 당장도 몇 가지 다른 선택지들이 있고, 이는 앞으로 더 많이 늘어날 것이다. 자바에는 자바스크립트를 평가하는 ScriptEngine 클래스가 있다. 번역 또는 에뮬레이션을 통해 자바스크립트로 실행되는 수백 가지 언어들이 있다.

 

간단히 말해, 세 언어는 서로 독립적이지 않다. 장기적인 관점에서 하나만 고를 이유는 없다. 그러나 처음에는 하나부터 시작한다.

 

출처

'자바, 파이썬, 자바스크립트'··· 초보자가 시작하기에 좋은 언어 3종 따라잡기
Python vs JavaScript Comparison: Should I Learn Python or JavaScript?

 

728x90
반응형
LIST