오라일리의 작가와 강사는 가까운 미래에 대중적이고 성장하는 프로그래밍 언어를 탐구합니다.
기술 세계에서 유일한 상수는 변화이며 프로그래밍 언어에서도 예외가 아닙니다. 언어 간의 경쟁으로 인해 전반으로 이사회가 개선되었습니다. 자바(Java)와 같은 기존 언어는 주요 기능을 추가했으며 고(Go) 및 러스트(Rust)와 같은 새로운 언어는 패키징 및 예외 처리를 개선하여 생태계에 "맞춤 과 마무리"를 추가합니다. 2019년으로 접어들면서, 오라일리 작가와 교육 과정 강사들 중에서 기존 언어들과 빠르게 성장하는 언어를 위해 준비된 것에 대한 생각을 물었습니다.
지난 10년간 파이썬의 둔화의 조짐 없이 놀라운 성장을 해왔습니다. 파이썬은 학생, 과학자 및 지식 근로자에게 가장 인기있는 입문 언어로 지위를 유지하는 것 외에도 웹 개발, DevOps, 데이터 분석 및 기계 학습 분야에서 널리 채택될 것입니다. 파이썬 및 데이터 과학 교육 및 컨설팅 회사인 MetaSnake (그리고 오라일리 온라인 학습 플랫폼에서 파이썬 과정을 강사로 자주 가르치는)를 운영하는 Matt Harrison은 다음과 같은 제안을 합니다 :
파이썬은 전통적으로 작은 데이터에 더 초점을 맞추었지만, 나는 빅데이터를 가능하게 하는 다른 도구들, 예를 들어 Dask와 Kubernetes위에있는 유연한 파이썬 솔루션과 같은 도구들이 계속해서 개선되고 있기 때문에 파이썬이 빅데이터에서도 선점 할 것이라고 생각한다. 나는 자바나 독점적인 언어를 사용하는 대기업이 파이썬으로 대체하는 모습을 계속 보고 있습니다.
2019년 파이썬2의 업데이트가 2020년 1월 1일에 끝나기 때문에 파이썬 커뮤니티는 파이썬3 주변으로 모일 것입니다. 언어의 창시자인 귀도 반 로섬이 2018년 7월에 "자비로운 종신독재자(BDFL Benevolent Dictator for Life)"의 자리에서 물러나면 새로운 거버넌스 모델 하에서 그렇게 할 것입니다. 몇 달 간의 논쟁 끝에 파이썬 커뮤니티는 최근 운영위원회 형태로 나아갈 것을 결정했습니다.
자바 11버전이 9 월에 출시됨에 따라 컴파일러에서 브리지 메소드를 삽입할 필요가 없는 중첩 기반 액세스 제어와 같은 주요 기능이 새롭게 도입되었습니다. 동적 클래스 파일 제약; 새로운 HttpClient는 웹 서비스와 통신하기 위해 애플리케이션을 작성할 때 필요한 외부 의존성을 제거합니다. 그리고 지역화를 위한 유니코드10 표준의 채택. Optimizing Java와 Java in a Nutshell의 공동 저자인 밴 에반스는 다음과 같이 설명합니다. "자바는 클라우드 및 마이크로 서비스와 같은 새로운 영역에 잘 적응했습니다. 자바8은 마이크로서비스를 처음 구동할 때에 문제가 있었지만 자바11은 이 문제를 해결했습니다. 새로운 마이크로서비스 애플리케이션을 개발하기에 훨씬 좋은 환경입니다."
에반스는 향후 자바 버전을 앞두고 자바에 값 형식(value types)을 도입하는 것이 현재의 주요 프로젝트라고 말합니다. 값 형식(value types)은 에반스가 향후 자바 가상머신(JVM)을 검증할 수 있는 한 가지 방법으로 보는 기존 데이터 형식 (예: 기존 기본 형식 및 객체 참조)을 보완하는 세 번째 형식의 데이터 유형입니다. “자바 개발의 성격을 근본적으로 바꿀 것입니다."
고 팀은 vgo라는 프로토타입 명령을 작업하고 있습니다. 현재 go get 도구로 타사 라이브러리를 설치하면 코드를 손상시킬 수 있는 비호환성을 포함하는 경우에도 최신 버전의 패키지가 검색됩니다. vgo 도구는 “충돌을 일으키지 않고 앱에 필요한 다양한 패키지 버전을 관리하는데 도움이 됩니다. ”이라고 제이 맥가브렌은 말합니다.
고 1.11의 2018년 후반에 출시된 버전은 웹 브라우저에서 실행할 수 있는 코드의 바이너리 형식인 Go to WebAssembly를 컴파일하는 실험적 지원을 제공했습니다. 맥가브렌은 “이것은 자바스크립트보다 빠르고 효율적입니다. “그리고 모든 주요 브라우저가 지원합니다. 브라우저 내부에서 실행할 수 있는 고를 사용하여 앱을 만들 수 있는 능력은 내가 경험하고 싶은 새로운 가능성을 제공합니다."
C# 8.0의 차기 출시에는 여러 가지 새로운 기능, 특히 nullable 참조 유형이 포함될 것입니다. 헤드 퍼스트 C#의 공동 저자인 앤드류 스텔만은 컴파일러가 참조 유형 변수에 잠재적으로 null 값을 할당 할 수 있는 경고를 제공하므로 “나머지는 코드 안전” 이라고 합니다. 따라서 "개발자들에게 더 안전한 코드를 작성하는 새로운 방법을 제공합니다."
스텔만은 C# 개발자가 말하는 곧 출시될 또 다른 기능은 비동기식 스트림이라고 말합니다. Foreach Await은 비동기 스트림을 사용하는 익숙한 foreach 키워드의 새 버전입니다. IAsyncEnumerable 인터페이스로 표현되며 다음 값을 사용할 수 있을 때까지 자동으로 루프를 일시 중지합니다. 다른 예상되는 새로운 기능으로는 비동기식 버전의 yield return 및 비동기식 disposables가 있습니다.
코틀린의 최신 릴리스 (코틀린 1.3, 2018 년 10 월 말에 출시)는 코드가 실험에서 안정된 상태로 효율적으로 확장될 수 있는 코루틴 - 경량 스레드가 나왔습니다. 코루틴을 사용하면 비동기적으로 실행할 수 있는 여러 코드 조각을 생성할 수 있습니다. 예를 들어 다른 작업을 수행하기 전에 작업이 완료할 때까지 기다리지 않고 나머지 코드없이 백그라운드 작업 (예: 외부 서버에서 데이터를 읽는 것)을 시작할 수 있습니다. “이렇게 하면 사용자들에게 더 유동적인 경험을 제공할 수 있고, 또한 응용프로그램을 더욱 확장할 수도 있습니다.”라고 데이비드 그리피스가 말합니다.
데이비드 그리피스는 (Dawn Griffiths와 함께) 곧 출시될 헤드 퍼스트 코틀린의 공동 저자입니다. 코루틴는 코틀린 언어를 사용하는 연계 시스템에서 비동기 서버와 클라이언트를 구축하기 위한 새로운 프레임워크인 Ktor의 중심에도 있습니다.
2019 년을 앞두고 코틀린은 "자바 세계를 넘어서는 사용 가능성을 보게 될 것” 이라고 그리피스는 말합니다. "도서관 개발자들에게 훌륭한 언어임을 입증되고 있습니다. 서버에서 복잡한 재무 계산을 수행하는 응용프로그램이 있으면 코틀린은 서버 코드를 서버와 클라이언트 모두에서 실행될 수 있는 코틀린 라이브러리로 변환할 수 있습니다." 그리피스에 따르면 코틀린은 공유 변경 가능한 상태를 동시 코드로 줄이거나 없앨 수 있는 언어와 기능에 대한 최상의 불변성 지원을 기대합니다.
12월에 발표된 러스트 2018은 2015년 러스트1.0 이후 처음으로 새로운 언어 버전이었습니다. 러스트 2018은 async(비동기식) 함수와 await 표현식을 도입하고 네트워크 서버 및 기타 I/O 집약적인 애플리케이션을 작성하는데 러스트가 보다 효과적입니다. "async 함수는 await 표현식을 사용하여 필요한 데이터가 사용 가능해질 때까지 실행을 일시 중지할 수 있습니다."라고 프로그래밍 러스트의 공동 저자 인 짐 브랜디 (Jim Blandy)는 말합니다. "러스트는 오랫동안 한 형태 또는 다른 형태로 비동기 프로그래밍을 지원했습니다." 그는 "하지만 async 함수는 러스트가 전에 가졌던 것보다 크게 개선된 이런 종류의 코드에 대한 문법을 제공한다”
러스트의 또 다른 작업 개선점은 러스트가 웹 페이지의 일부로 코드를 실행하기 위한 WebAssembly 표준에 대한 기존 지원을 개선한 것입니다. Blandy는 "러스트에 작성된 WebAssembly 패키지를 기존 자바스크립트 생태계와 통합하는 것이 더 쉬워질 것” 이라고 말합니다.
“다음은 무엇입니까? “라는 질문은 항상 모든 프로그래머 마음에 가지고 있습니다. 2019년 이후 언어 설계는 응용 프로그램과 데이터가 점점 커지면서 현대 기업에 더욱 중요해 짐에 따라 프로그래머들이 복잡성과 추상화를 관리하는 데 도움이 되는 새로운 방법을 계속해서 찾을 것입니다.
*****
원문 : What lies ahead for Python, Java, Go, C#, Kotlin, and Rust
번역 : 이석곤
이전 글 : 독자가 풀어보는 "자바로 배우는 핵심 자료구조와 알고리즘" 3회
다음 글 : 9가지 인공지능(AI) 트렌드
최신 콘텐츠