
개발자 가이드: Web2에서 Web3로 전환할 때 어떤 프로그래밍 언어를 배워야 할까?
프로그래머가 Web3.0으로 전환할 때, Solidity, Go, Haskell, Rust 중 어떤 언어에 집중해야 할까?
01 서론
메타버스, NFT 등의 용어는 이미 익숙하지만, 이 업계에 종사하는 사람들에게 Web3.0은 여전히 초기 단계이며, 새로운 솔루션, 비즈니스 모델, 개념이나 아이디어가 끊임없이 등장하고 있다. 동시에 이러한 거센 산업의 물결은 막대한 인재 수요를 창출하고 있으며, 블록체인 개발자는 그야말로 각광받는 직종 중 하나다.
2021년에는 과거 어느 때보다 더 많은 개발자들이 Web3.0에 합류했으며, 연간 34,000명 이상이 이 분야에 진입했다. 전통 금융 분야와 유사하게, 블록체인 분야의 고용 인력 수도 사상 최고치를 기록하고 있다.

【그림 참조】2017년 비트코인 가격 급등 후 채용 건수도 전년 대비 증가; 코로나19 기간 동안 비트코인 가격이 계속 상승하면서 채용 추세도 유지됨
기존 인터넷 개발자들은 Python, C++, Truffle, Javascript, Golang 등 다양한 언어를 이미 익히고 있기 때문에 Web2 기술을 갖춘 사람들이 Web3로 전환하는 것은 비교적 수월하다.
현재 개발자들 사이에서 가장 인기 있는 블록체인은 이더리움 외에도 Cardano, Solana, Avalanche, Tezos 등이 있다. 이러한 블록체인들은 다양한 프로그래밍 언어를 사용하고 있으며, 어떤 언어를 다룰 줄 아느냐에 따라 일자리 기회가 달라진다. 물론 큰 개발 커뮤니티에 참여하는 것이 더 유리한데, 보다 풍부한 튜토리얼, 호환성 라이브러리 및 dApp 이식을 위한 플러그 앤 플레이 도구들을 제공하기 때문이다. 또한 여러 언어를 조합해 활용할 수 있다면, 블록체인 개발자의 길은 더욱 넓어질 것이다.
이 글에서는 현재 주목받는 몇 가지 개발 언어들을 정리한다. 구체적으로는 이더리움에서 사용되는 Javascript와 Solidity, Cardano의 네이티브 Plutus 언어 기반인 Haskell, Cosmos에서 사용하는 Go, 그리고 Solana, NEAR 프로토콜, Polkadot에서 사용하는 Rust를 중심으로 살펴본다.
02 Javascript & Solidity: 이더리움
이더리움은 Serpent(파이썬 영향), Solidity(자바스크립트 영향), Mutan(Go 영향), LLL(Lisp 영향) 등 네 가지 전용 언어를 갖고 있으며, 모두 계약 기반 프로그래밍을 위해 하위 수준부터 설계된 언어들이다.
이 중 Solidity는 이더리움의 주력 언어로, Serpent의 모든 기능을 내장하고 있으며 문법이 자바스크립트와 유사해 익히고 사용하기 쉽다. JavaScript는 이미 웹 개발자들 사이에서 흔히 사용되는 언어이므로, 수백만 명의 개발자가 사실상 이더리움 스마트 계약 개발의 기초를 갖추고 있다고 볼 수 있다.
객체지향 언어로서 자바스크립트와 Solidity는 많은 공통점이 있지만 기능은 다르다. 자바스크립트는 오랜 기간 웹 개발에 사용되어 왔으며, 코드를 통해 웹의 상호작용성을 높이고 역동적인 사용자 경험과 기능을 제공함으로써 웹에 새로운 활력을 불어넣었다.
웹페이지 및 모바일 앱과 마찬가지로, 자바스크립트는 Web3 개발 과정에서 dApp을 제작하는 데 사용될 수 있으나, 블록체인 애플리케이션에서는 web3.js 및 ethereum.js 같은 자바스크립트 라이브러리를 사용해야 한다는 점에 주의해야 한다. 이러한 라이브러리는 사용자가 로컬 또는 원격에서 HTTP, IPC, WebSocket을 통해 이더리움 노드와 상호작용할 수 있게 해주며, 개발자가 플러그 앤 플레이 도구를 활용하여 dApp을 이더리움과 호환되도록 만들 수 있도록 지원한다.

【그림 참조】데이터에 따르면 Rust, Kotlin, Haskell, Go를 익히는 것이 개발자에게 이상적인 기술 조합이다. 출처: HackerEarth 2021 개발자 설문조사
Solidity는 복잡한 언어는 아니며, 작게 축소된 자바스크립트처럼 느껴져 많은 개발자들에게 접근하기 쉬운 언어다.
비록 Solidity는 비교적 최근에 등장한 언어이며 사용자층도 어리고 규모가 작고, 재사용 가능한 표준 라이브러리도 적지만, 2020년 이후 커뮤니티와 코드베이스가 급속도로 성장하여 2021년 말 기준으로 2,000명 이상의 활발한 개발자가 존재한다. 게다가 이더리움은 여전히 가장 방대한 생태계를 구축하고 있으므로, Solidity는 블록체인 산업에서 가장 널리 사용되는 '골든 스탠다드'급 프로그래밍 언어 중 하나로 자리매김하고 있다.
이더리움 2.0의 등장과 함께 Solidity를 다른 언어들과 결합하여 이더리움 위에서 dApp을 개발하는 것은 큰 장점을 지닌다. 이는 Web3 진입을 희망하는 많은 개발자들에게도 좋은 지름길이 될 수 있다.
03 Haskell: 순수 함수형 Web3 프로그래밍 언어
Haskell은 범용 함수형 프로그래밍 언어로, 블록체인 분야에서는 주로 Cardano의 스마트 계약 언어인 Plutus의 하위 맞춤형 언어로 사용된다.
본질적으로 Haskell은 함수를 설명하고 평가하기 위한 이론적 틀을 제공하며, 여기서 모든 함수는 수학적 의미의 함수로서 높은 수준의 보안성을 제공한다. Haskell에서는 함수가 하위 수준 작업을 수행하며 프로그램이 수행해야 할 작업을 명시한다. 또한 정적 타입 언어이기 때문에 컴파일 과정에서 코드를 쉽게 평가할 수 있고, 타입 체크를 통해 코드의 간결성, 명확성, 정확성을 확보할 수 있다.
게으른 평가(lazy evaluation)를 사용하므로 불필요한 코드는 피하게 되어 프로그램 실행 속도가 빨라진다. 또한 개발자 입장에서도 매우 편리한데, 자동 메모리 관리(AMM)를 활용하기 때문에 dApp 개발 시 메모리 관리 작업을 코드에 직접 작성할 필요가 없다.
2021년 기준으로 Haskell을 사용하는 Web3 개발자는 극소수에 불과하며, 아직 대부분의 개발자들에게 받아들여지지 않았다. Haskell은 학습 장벽이 높고, 라이브러리도 부족하며, 개발자 수가 적고 성장 속도도 느리다. 그러나 고품질 소프트웨어 생산에는 중요한 역할을 하며, 추가로 Haskell을 익히면 개발자로서 두각을 나타내기 쉬워진다.
04 Go: Cosmos 및 Polygon SDK
Go는 2009년 구글 소프트웨어 개발자들이 출시한 오픈소스 범용 프로그래밍 언어이다. 명시적인 정적 타입 언어로서, Go는 Python의 개발 용이성과 C++ 같은 컴파일 언어의 효율성을 결합하려는 목표를 가지고 있다.
Cosmos와 Polygon SDK는 일반적으로 Go를 사용한다. 풍부한 기본 라이브러리를 보유하고 있으며, 크로스 플랫폼 지원과 모바일 기기와의 호환성이 뛰어나다. 또한 "고루틴(Goroutines)"을 활용하여 dApp의 시작 속도를 높이고, 많은 메모리를 소비하지 않으면서도 작업을 수행할 수 있다. Go는 동시에 여러 스레드를 실행할 수 있어, 과도한 사용 상황에서도 효율적으로 처리할 수 있다.
Go 기반의 Web3 사례로는 Polygon Edge SDK가 있는데, 이는 dApp 및 블록체인을 위한 모듈화된 프레임워크로, 이더리움과 호환되는 네트워크를 구축하는 데 사용된다. 이를 통해 타사 네트워크를 이더리움 블록체인에 연결하고, 자체 솔루션을 통해 ERC-20 토큰과 ERC-721 NFT를 전송할 수 있다. 이더리움의 다른 실행 환경은 Go Ethereum 클라이언트를 통해 Go에 내장할 수 있다.
Go는 초보자 학습이 어렵지 않은 편인데, JS나 C 개발자들의 논리와 일치하며 풍부한 학습 자료도 제공된다. C/C++/Java 경험이 있는 개발자라면 더욱 빠르게 익힐 수 있다.
2020년 Stack Overflow 개발자 설문조사에 따르면, Go는 상당히 인기가 많아 응답자의 62% 이상이 이 언어를 좋아한다고 답했으며 향후 계속 사용하겠다고 밝혔다.
05 Rust: 간단성, 동시성, 고효율성
2015년 한 전직 Mozilla 직원이 처음으로 공개한 Rust는 안전성과 성능에 중점을 둔 멀티패러다임 프로그래밍 언어로, 속도와 효율을 고려해 설계되었으며, 제로 비용 추상화, 상속, 기능 특성 등을 제공한다.
Rust는 뛰어난 속도와 메모리 효율성을 지닌다. 풍부한 타입 시스템과 소유권 모델을 통해 메모리 및 스레드 안전성을 보장하며, 컴파일 시간에 많은 일반적인 오류를 제거할 수 있다. 또한 동시성(병렬) 코드를 작성할 수 있어 거래를 신속하게 처리할 수 있다. 이는 Rust 프로그램에 확장성을 제공하며, 높은 처리량 덕분에 초당 거래량(TPS)이 다른 언어보다 더 많다.
제로 비용 추상화는 사용하는 추상화가 거의 런타임 오버헤드를 발생시키지 않는다는 것을 의미하며, 저수준 코드와 추상화를 사용해 작성한 코드 사이에 속도 차이가 없음을 보장한다. 이 제로 비용 개념은 Rust 개발의 핵심 원칙이기도 하다.
또한 Rust는 우수한 문서화와 간편한 컴파일러를 제공하여 문제 진단이 쉬우며 업무 효율을 높인다. 즉, 개발자가 코드 최적화에 많은 시간을 들이지 않아도 되는데, 컴파일러가 추상화를 자동으로 처리해주기 때문이다. 다른 언어와 비교하면 Rust로 작성한 애플리케이션이 더 빠르게 실행되며, 심지어 최적화된 다른 언어 코드라도 Rust의 실행 속도를 따라오지 못한다.
게다가 Rust는 다른 언어와의 상호 운용성도 뛰어나, 다른 언어를 쉽게 호출하거나 반대로 호출받을 수 있다. 이러한 특성은 만물인터넷 시대에 더욱 가치 있게 작용한다.
이러한 장점들로 인해 2020년 Stack Overflow가 실시한 개발자 설문조사에서 Rust는 '가장 사랑받는 프로그래밍 언어'로 선정되었으며, 응답자의 약 86%가 향후 계속 Rust로 코딩하고 싶다고 답했다.
Polkadot의 출시와 Rust 사용은 곧바로 Rust 개발자 채용 공고로 이어졌다. 또한 2021년 말 기준으로 Solana의 활발한 개발자 수는 약 180명에서 거의 1,000명으로 늘어나 약 500% 성장했다. 이는 Rust의 강력한 응용 가능성을 보여주는 증거다.

Rust는 고처리량과 동시성 작업에 가장 적합하다.
06 결론: Rust는 잠재력 있는 언어
Web3 프로토콜은 수천만 개의 신뢰할 수 없는 입력을 처리할 때 빠르고 강력한 성능이 필요하므로 Rust는 명백한 장점을 지닌다. 복잡한 기능을 번개처럼 빠르게 처리하면서 메모리 관련 오류, 경계 오류, 널 변수, 변수 초기화, 정수 오버플로 등과 관련된 오류를 크게 줄일 수 있다.
Rust는 학습 난이도가 다소 있지만, 그럼에도 불구하고 많은 개발자들이 이를 배우고 있다. Rust를 사용하면 더 강력한 dApp을 만들 수 있으며, 흔히 발생하는 오류를 줄여 애플리케이션이 출시 후 예상대로 작동하도록 할 수 있다. 특히 동시성 처리 능력은 초당 수만 건에서 수십만 건의 거래를 처리하는 데 필수적이며, Web3 애플리케이션과 가상 세계 내 거래에 이상적인 선택이 된다.
반면, Solidity는 방대한 커뮤니티와 이더리움 라이브러리를 제공한다. 이러한 네트워크 효과는 협업을 촉진하며 특정 dApp이 더 많은 용도로 활용될 가능성을 높인다.
각 언어에 대한 일자리 수요는 모두 증가 추세에 있으며, 여러 언어를 익힌 개발자는 더 많은 선택 기회를 가질 수 있다. 현재 Solidity 개발자에 대한 수요는 매우 크지만, Go, Haskell 또는 Rust를 익히면 더 유리하다. 해당 언어를 사용하는 개발자가 적고, 고용주들도 이러한 기술을 더 선호하기 때문이다.
TechFlow 공식 커뮤니티에 오신 것을 환영합니다
Telegram 구독 그룹:https://t.me/TechFlowDaily
트위터 공식 계정:https://x.com/TechFlowPost
트위터 영어 계정:https://x.com/BlockFlow_News














