요즘은 모든 사람이 소프트웨어 코딩 방법을 배운다. 학교와 MOOC, 온라인 교육 사이트는 미래의 프로그래밍 고수에게 처음으로 가르칠 언어를 정해야 한다.
전통의 하버드 대학과 같이 여전히 70년대의 C를 고수하는 기관도 있지만 많은 학교가 자바스크립트(JavaScript)와 파이썬(Python), 자바(Java) 사이를 오가고 있다. 하나는 모든 브라우저에 내장돼 있고, 다른 하나는 사화과학을 위한 최선의 선택이며, 나머지 하나는 수학적 사고를 즐기는 사람들이 선호하는 풍부한 형식의 언어다.
어느 언어가 최선의 선택일까? 다른 두 언어보다 확실히 우위인 언어가 있을까? 아니면 수많은 학생들을 고통 속으로 몰아넣는다는 면에서는 다 똑같은 언어일까? 자바, 파이썬 또는 자바스크립트를 배워야 할 가장 뚜렷한 이유들을 살펴보자.
고전의 대명사, 자바
어스벤스드 플레이스먼트(Advanced Placement) 테스트에서는 오래 전, 자바가 아직 초기이고 폭발적으로 성장하던 시절에 테스트 과목으로 자바를 선택했다. 자바는 초창기 모두가 생각했던 것처럼 프로그래밍을 완전히 지배하는 수준의 위치까지는 이르지 못했지만 여전히 많은 웹사이트와 스마트폰의 중추로 남아 있다. 지지 기반이 확고한 언어를 선택하면 이미 우수한 개발 툴이 풍부하게 준비된 만큼 학생이 올라타기도 비교적 수월하다. 또한 공부하고 수정하고 확장할 수 있는 오픈소스 코드도 방대하다. 대세에 동참하면 적응하기 쉽다.
새로운 언어, 파이썬
파이썬 프로젝트는 거의 30년 전에 시작되었으니 사실 새로운 언어는 아니지만 새롭게 느껴지는 이유는 최근에서야 성공했기 때문이다. 파이썬이 틈새를 벗어나 일반 프로그래머들 사이에서 광범위하게 채택되기 시작한 것은 불과 얼마 전부터다.
새로운 언어는 곧 파이썬을 도입하는 학교에서 새로운 강좌 계획을 수립하고 새로운 시험을 만들고 새로운 교육 자료를 개발해야 함을 의미한다. 펫츠닷컴(Pets.com)과 마이스페이스(MySpace)가 등장하는 1990년대의 오래된 자료는 쓸 수 없다. 새롭다는 것은 한 꺼풀 차이다. 어차피 어셈블리 코드의 if-then-else 의사 결정 구조를 숨기는 그럴듯한 구문이라는 면에서는 모든 언어가 마찬가지다.
모든 곳에 존재하는 자바스크립트
자바스크립트는 브라우저에 있고, 브라우저는 데스크톱과 스마트폰, 그리고 온갖 곳에 있는 모든 키오스크의 근간이다. 지난 10년 동안 Node.js 웹 앱이 클라이언트와 서버 팜에서 모두 실행 가능한 “동질형 코드”를 작성하는 가장 인기 있는 수단이 되면서 자바스크립트가 웹 서버의 최전선을 점령했다. 자바스크립트의 나이는 사실상 자바와 동일함에도 서버 진영에서 자바스크립트의 강력함을 인지하기까지는 오랜 시간이 걸렸다. 자바스크립트는 오래된 언어인 동시에 새로운 언어이기도 하다.
자바는 형식 지정 언어다
시간을 들여 각 변수의 형식을 지정해야 한다는 점이 거슬릴지도 모르겠지만 사실 키 3개를 클릭해 코드에 “int”를 추가하는 데는 그리 오랜 시간이 걸리지 않는다. 그 보답으로 코드를 배포하기 전에 컴파일러가 즉시 코드를 이중 확인해서 실수를 찾아주는 편리한 기능을 이용할 수 있다.
형식 지정(Type-checked) 언어는 개발자가 코드의 논리에 대해 더욱 엄격히 생각하도록 강요하는데, 이는 신참 프로그래머에게 중요한 교훈이 된다. 자바의 형식 구조는 버그를 줄이고 더 나은 코드를 구축하도록 이끈다.
파이썬은 형식 비지정 언어
형식 언어를 지지하는 사람은 좋은 코드를 쓰는 현명한 사람이다. 그러나 자신의 코드가 각 변수의 데이터 형식에 대한 부가적인 정보 없이도 충분히 매끄럽게 실행된다고 생각한다면 파이썬을 사용하면 된다. 데이터를 변수에 저장할 때 컴퓨터가 데이터의 형식을 알아낼 수 있는데, 개발자가 굳이 부가적인 작업을 해야 할 이유가 무엇인가?
자바스크립트는 둘 다 해당
자바스크립트 자체는 형식 비지정이지만 최근 자바스크립트 분야의 유력한 일부 구성원들이 타입스크립트(TypeScript)로 전환하고 있다. 타입스크립트는 자바스크립트의 확대집합으로, 원할 때 형식을 지정할 수 있는 기능을 제공한다. 물론 원하지 않을 때는 일반 자바스크립트도 문제없이 사용할 수 있다. 형식 확인의 느슨한 버전이다.
자바, 디바이스의 강자
세계에서 가장 인기 있는 스마트폰 플랫폼은 안드로이드이며, 안드로이드는 자바를 기반으로 구축된 거대한 코드 스택이다. 그러나 스마트폰만큼 눈에 잘 띄지 않더라도 셋톱박스, 새로운 크롬북, 일부 데스크톱 역시 안드로이드 앱을 실행한다. 사촌지간인 자바와 C#이 윈도우 세계를 지배한다. 특정 하드웨어를 위한 애플리케이션을 만들려고 한다면 십중팔구는 자바가 최선의 선택이다.
파이썬, 데이터 과학의 강자
데이터를 다루는 소프트웨어를 만드는 경우 대부분 파이썬이 유리하다. 많은 과학자들이 파이썬의 간소한 구문에 매료되면서 전세계 연구소가 파이썬을 지지하는 기반이 됐다. 데이터 과학이 비즈니스 세계의 모든 계층을 장악하면서 파이썬도 그 뒤를 따르고 있다.
인터랙티브 문서를 만들고 공유하기 위한 최고의 발명품 중 하나인 주피터 노트북(Jupyter Notebook)은 다른 언어를 포용하기 전에 파이썬 커뮤니티부터 시작했으며 소프트웨어와 데이터, 그리고 설명 텍스트를 하나로 결합하기 위한 최선의 방법 중 하나다. 읽는 사람은 버튼만 누르면 데이터를 대상으로 소프트웨어를 실행할 수 있다.
자바스크립트, 웹의 강자
다른 플랫폼도 좋겠지만, 거의 모든 사람들이 세계와 연결하는 데 사용하는 절대적 포털은 여전히 웹 브라우저다. 웹 브라우저는 일반적으로 데스크톱과 스마트폰, 태블릿에서 가장 많이 사용되는 소프트웨어다. 자바스크립트는 로컬 클라이언트부터 시작했지만 그 영향력이 확대되고 Node.js 덕분에 개발자들이 클라이언트와 서버에서 동일한 코드를 더 쉽게 실행할 수 있게 되면서 독보적인 존재로 부상했다.
자바스크립트는 다른 언어가 주도하는 분야의 스택에도 진출했다. 많은 스마트폰 개발자들은 자바와 스위프트를 건너뛰고 자바스크립트를 사용해 크로스 플랫폼 앱을 만든다. 결국 네모난 브라우저 안에서 일어나는 일을 결정하는 것은 자바스크립트인 만큼 향후 대부분의 클릭과 키보드 입력에 대해 일어나는 일을 결정하는 것도 자바스크립트가 될 것이 거의 확실하다.
자바는 모든 것을 실행한다
파이썬 코드를 쓰는 경우 최종적으로는 자이썬(Jython)으로 실행될 가능성이 높다. 자이썬은 자바 가상 머신의 보편성을 활용하기 위해 자바로 작성된 파이썬 구현이다. 자바스크립트를 실행해야 하는 경우, 코드를 자바 바이트코드로 바꿔주는 리노(Rhino)를 사용하면 된다. 리노는 V8 엔진이 호환되지 않을 때 자바 가상 머신에서 자바스크립트를 실행하기 위해 여전히 많이 사용되는 방법이다.
이 두 언어만 JVM의 견고한 성능에 의존하는 것은 아니다. 스칼라(Scala), 클로저(Clojure), 코틀린(Kotlin)과 같은 많은 함수형 프로그래밍 언어 역시 마찬가지다. 덕분에 동일한 프로젝트에서 이들 JVM 기반 언어를 사용하고자 하는 경우 보다 간편하게 연결할 수 있다.
파이썬은 모든 곳에서 실행
파이썬은 다른 언어를 위한 에뮬레이터를 만들 때 가장 인기있는 언어는 아니지만 그렇다고 가장 기피하는 언어도 아니다. 여전히 많은 컴퓨터에서 손쉽게 파이썬을 찾을 수 있다. 파이썬을 만든 사람들은 항상 코드를 오픈소스로 배포했다. 또한 패키지도 여기저기에 많다.
자바스크립트는 브라우저에서 실행
원래 브라우저의 알림 상자를 만들기 위해 만들어진 소박한 언어가 지금 많은 언어의 기반이라는 사실은 쉽게 믿어지지 않는다. 개발자는 사용자에게 도달하고자 한다. 사용자가 브라우저 안에 산다면 거기 도달하는 가장 빠른 방법은 자바스크립트로 코드를 실행할 방법을 찾는 것이다.
자바스크립트로 트랜스파일하는 커피스크립트(CoffeeScript), 라이브스크립트(LiveScript)와 같은 자바스크립트의 사촌만이 아니다. 리스프(Lisp), OCaml, 파스칼(Pascal)과 같은 언어도 자바스크립트로 변환해서 브라우저에서 실행할 수 있다. 파이썬은 주피터(Jupyter) 노트북과 같은 프로젝트의 브라우저에서 인기가 있으며, 구글 웹 툴킷과 같은 툴을 사용하면 자바도 자바스크립트로 변환할 수 있다.
자바의 강력한 IDE
이클립스(Eclipse), 넷빈스(NetBeans), 인텔리J(IntelliJ)는 최고의 통합 개발 환경으로 꼽힌다. 자바 커뮤니티에서 만들어져 오랜 시간동안 숙성을 거쳐 가장 충실히 지원되는 코드 작성 환경으로 자라났다. 코드 완성 및 코드 생성 알고리즘으로 소프트웨어를 온전히 다 쓸 수는 없지만 상당한 양의 코드를 대신 완성해준다. 이러한 다양한 보조 기능은 신규 개발자가 구문을 올바르게 작성하는 데 큰 도움이 된다.
워낙 인기가 있어서 다른 언어의 개발자들이 이 세 가지 IDE 내에서 코드를 실행할 방법을 고안했을 정도다.
파이썬의 클라우드
파이썬 언어가 처음 자리를 잡은 곳이 유닉스였음을 감안하면 리눅스 박스로 가득 찬 클라우드에 파이썬 코드가 풍부하게 사용되고 있다는 사실은 별로 놀랍지 않다. 주피터와 같은 최신 툴은 코드와 데이터, 설명을 하나로 묶어 연구 논문이 나오는 대로 사람들이 자신의 생각을 다른 사람들과 공유할 수 있게 해준다. 주피터 노트북은 정적 문서가 아니라 연구를 위한 인터랙티브 툴이다.
연구를 강화하기 위한 정밀한 파이썬용 툴도 개발되고 있다. 예를 들어 파이토치(PyTorch)는 코드와 데이터, 분석 알고리즘으로 구성되는 딥 러닝 툴킷이다. 데이터 과학의 미래는 이러한 환경이 지배하게 될 것이다.
자바스크립트의 JS피들
각각의 브라우저는 IDE 역할을 하기에 충분할 만큼 강력하다. 자바스크립트 코드를 다른 개발자와 공유할 수 있는 웹 사이트는 많은데, 이 가운데서도 JS피들(JSFiddle)이 가장 돋보인다. 웹페이지는 정적이지 않다. 코드를 조작하면서 웹페이지에서 이 코드가 실행되는 모습을 볼 수 있다. 덕분에 자바스크립트의 온갖 재미있는 구문을 간편하게 테스트할 수 있다.
하나를 배워도 좋고 모두 다 배워도 좋다
프로그래밍 세계는 타가수분(cross-pollinate)을 좋아한다. 여러 언어 사이를 왔다갔다하면서 구문을 제대로 유지하려면 혼란스러울 수 있지만 세 가지 언어 모두 큰 어려움 없이 프로젝트에 사용할 수 있다.
데이터를 분석하는 자바 또는 자바스크립트 프로젝트는 파이썬으로 작성된 데이터 과학 라이브러리에 연결할 수 있다. 또는 파이썬 프로젝트에서 자바 또는 자바스크립트 코드를 호출할 수도 있다. 세 가지 언어를 서로 격리된 섬으로 생각할 필요가 없다.
'프로그래밍 > JAVA' 카테고리의 다른 글
[JAVA] 스프링 부트 하루만에 배우기 (0) | 2024.04.05 |
---|---|
[JAVA] 점프 투 스프링부트 - https://wikidocs.net/book/7601 (1) | 2024.04.04 |
Java Default Heap/Perm Size 알아내는 방법 (0) | 2020.12.11 |
자바 명명 규칙 - 클래스 / 메서드 / 변수 (0) | 2020.06.18 |
JAVA excel - [POI] POI 엑셀 - Using newlines in cells ( 셀에서 줄바꿈 ) (0) | 2020.01.09 |