알아야 할 5가지 새로운 프로그래밍 언어

어떤 사람들에게는 새로운 프로그래밍 언어를 배우는 것이 과잉을 피하는 것이 가장 좋습니다. 그들은 왜 또 다른 언어가 필요하다고 주장합니다.

우리는 이미 충분하지 않습니까?

기존 도구가 작업을 수행하고 있지 않습니까?

그리고 새로운 것을 시도하고 보석을 발견할 기회에 뛰어드는 지칠 줄 모르는 구도자들도 있습니다. 학습은 그 자체로 목적이며, 그 모호하고 새로운 언어로 콘솔 기반 카드 게임을 구축하는 데 주말을 허비하는 데 그다지 설득력이 필요하지 않습니다.

당신이 어느 캠프에 속해 있든, 논쟁의 여지가 없는 것이 있습니다. 우리 모두는 밝은 미래를 가질 무언가에 시간을 보내고 싶어합니다.

레거시 캠프에 있는 사람들이 가장 좋아하는 기존 언어는 이미 엄청난 추진력을 갖고 있으며 앞으로도 계속 밝은 미래를 가질 것입니다. 그들에게 이제 성숙해진 개발 도구 체인이 한때 많은 사람들이 마시기를 거부했던 “쿨 에이드”였음을 상기시켜야 합니다. 오늘날도 마찬가지입니다. 새로운 문제를 해결하거나 개발의 고통을 완화하기 위해 새로운 기술이 추가됩니다.

무언가가 이것을 근본적으로 충분히 수행한다면, 계속해서 마음을 공유하고 정상에 도달할 가능성이 있습니다. 그럴 때, 당신은 뒤처지고 싶지 않습니다. 🙂

그리고 반짝이는 것들을 가지고 달리는 것을 좋아하는 사람들에게 경고: 재미는 프로그래머로서 필수적이지만 우리는 목적 없이 에너지를 낭비하지 않도록 주의해야 합니다.

확신하는, 두뇌싸움 믿을 수 없을 정도로 뒤틀리고 퍼즐처럼 재미있고 작은 언어이지만 진지하게 추구하면 이익을 얻지 못할 것입니다. 당신은 새롭고 합리적이며 견고한 기반을 갖춘 것을 원합니다.

이 언어가 선택된 방법

언어 선택은 특히 고용과 만족도에 있어 미래의 이익을 위해 새로운 언어가 고려될 때 두려운 일입니다. 모든 언어 작성자는 자신이 가능한 완벽한 언어를 구축했으며 대답해야 할 모든 문제를 해결했다고 굳게 확신합니다. 그럼 어떻게 자르나요?

이 게시물에서는 검색을 합리적인 범위 내에서 유지하기 위해 몇 가지 매개변수에 중점을 두었습니다.

출시일

나는 특히 아주 아주 새로운 언어를 피했습니다.

새로운 것은 작성 시점에서 5-6년 미만의 언어, 특히 안정성에 도달하지 못한 언어(즉, 1.0 릴리스)를 의미합니다. 불행히도 이것은 다음과 같은 실제 보석을 배제합니다. 결정, 그러나 나는 이것으로 돌아와서 언젠가 그것의 성공에 대해 글을 쓰기를 희망합니다. 🙂

Crystal의 코드 조각(“Fast as C, Slick as Ruby”)

저에게 5~12년은 언어가 안정되고 더 다듬어지고 있는 스윗스팟입니다. 물론 이 규칙에는 예외가 있으며 해당되는 경우 이러한 예외가 고려됩니다.

이것은 당연한 일이지만 우리가 새로운 것에 흥분할 때 종종 무시됩니다. 이제 많은 사람들에게 대기업의 지원은 성공의 선례로 충분하지만 항상 그런 것은 아닙니다.

예, Apple의 Objective-C와 이제 Swift는 고도로 통제된 생태계에서 유일한 옵션이었기 때문에 번창했지만 Facebook의 그리고 마구 자르기 (내 생각에 이미 추한 언어에 대한 추악한 해석)은 실험에 불과합니다.

이상적인 조합은 크고 안정적인 회사가 지원하고 인기가 폭발적으로 증가하는 언어(예: React)입니다.

그러나 문제의 핵심은 여전히 ​​커뮤니티입니다. 언어가 버즈를 만들지 않고 교육하고 대중화할 개발자가 충분하지 않다면 GitHub 무덤에서 나오지 않을 것입니다.

나에게 이것은 다음과 같은 성숙하고 매혹적인 언어를 배제합니다. 라켓 그리고 얼랑성장 곡선에서 평평하게 유지되었기 때문입니다.

집중적이고 잘 정의된 USP

내가 찾고 있는 세 번째 것은 언어에 대한 명확한 목표입니다. 예를 들어, 명명 문제를 수정하고 기본 PHP로 컴파일하는 더 나은 버전의 PHP는 저에게 적합하지 않습니다.

모든 사람이 그 문제로 옮기려고 하면 그 혜택이 너무 작아서 균열을 정당화할 수 없습니다. 이 잣대로 보면 다음과 같은 시도를 무시할 수 없습니다. 커피스크립트및 기타 많은 유사한 JavaScript로 컴파일되는 언어.

솔직히, 나는 구문 전용 개선 사항을 즉시 무시할 수밖에 없습니다. 역사는 언어와 관련하여 유용성이 친절보다 우선한다는 것을 보여 주었기 때문에 모든 새로운 언어가 더 즐거운 경험에 초점을 맞춘다면 이 목록에 들지 못할 것입니다.

명확하고 일관된 구문

네, 알겠습니다. 나는 단지 문법이 중요하지 않다고 말했다. 음, 정확히 말하면 “구문 전용 개선”은 중요하지 않다고 말했습니다. 그러나 구문은 프로그래머 생산성과 유지 관리 가능성의 중요한 요소 중 하나로 남아 있으므로 여기에서 내 계산에 포함되어야 하는 것입니다.

  최고의 무료 NZB 검색 엔진

구문과 함께 일관성에 대한 아이디어가 나옵니다. 함수 이름 지정, 모듈 구조화 등은 언어가 잘못되어서는 안 되는 핵심 사항입니다. 지금은 2018년이고 PHP와 같은 또 다른 언어 디자인은 우리 모두에게 부끄러운 일입니다. 따라서 더 이상 고민하지 않고 상위 5개 권장 사항을 시작하겠습니다.

1. 줄리아

MIT의 사람들에게 데이터 과학에 사용할 수 있는 언어는 기껏해야 절충안이었습니다. Python은 모든 명확성과 인기에도 불구하고 데이터 개체를 처리하기 위한 기본 구성이 부족했습니다. 또한 해석된 언어이기 때문에 Python은 그들에게 느렸습니다(라이브러리가 아니라 대부분 C로 작성되었으므로 주의하십시오).

그러나 아마도 가장 큰 문제는 투박한 동시성 모델과 병렬 컴퓨팅 모델의 부족이었습니다. 병렬 컴퓨팅 모델 중 후자는 슈퍼 컴퓨팅의 필수 요소입니다.

결과적으로, 줄리아 태어났다.

Julia는 이 기사가 작성되기 불과 ​​며칠 전인 2018년 9월 29일에 안정적인 릴리스에 도달했습니다(타이밍에 대해 이야기하세요!). 다음은 공식 웹사이트에서 그 기능에 대해 말한 내용입니다.

Julia는 수치 계산에 탁월합니다. 그 구문은 수학에 적합하고 많은 숫자 데이터 유형이 지원되며 병렬 처리를 즉시 사용할 수 있습니다. Julia의 다중 디스패치는 숫자 및 배열과 같은 데이터 유형을 정의하는 데 자연스럽게 적합합니다.

구문 측면에서 Julia는 Python과 C의 조합으로 볼 수 있습니다. 예, 언어가 이 두 가지 특성을 모두 목표로 하고 성공한 것은 아마도 처음일 것입니다.

문제를 간단하게 유지하기 위해 Julia는 빠른 속도로 타자를 치고 엄격한 타이핑을 시행하지 않습니다. 다음은 몇 가지 벤치마크입니다.

공식 Julia 벤치마크

보시다시피 Julia는 C보다 약간 떨어지지만 Java와 Python을 물 밖으로 날려 버립니다. 그리고 Julia는 어떤 종류의 눈 사탕을 제공합니까?

자, 다음은 직각 삼각형의 빗변을 계산하는 함수의 구현입니다.

마지막으로 대부분의 Julia는 생태계 수학적 작업에 크게 치우쳐 있으며 범용적인 미래가 밝다고 생각합니다.

내가 아는 한, 병렬 컴퓨팅에 대한 최고 수준의 지원을 제공하는 첫 번째 언어이므로 웹 및 IoT 도메인에서 더 많은 인기를 얻고 있는 것은 놀라운 일이 아닙니다.

2. 녹

새로운 Firefox 브라우저 릴리스를 사용해 본 적이 있다면 수년간의 작업 끝에 마침내 Chrome에서 일부 시장 점유율을 빼앗을 수 있는 것처럼 보입니다.

브라우저가 가볍고 빠르며 빠르게 렌더링되는 것은 모두 Mozilla가 특별히 개발한 언어 덕분입니다. .

Rust의 미래가 밝다는 것은 거짓말입니다. 이 언어는 이미 엄청난 성공을 거두었습니다. 아직 들어보지 못했다면 적용 영역이 전문화되어 있고 목표가 무섭기 때문입니다. C++를 대체하는 것입니다! 네, 마침내 우리는 이것을 할 수 있을 뿐만 아니라 이미 하고 있는 언어를 갖게 되었습니다.

C++의 과중한 디자인 및 메모리 관리 문제에 좌절한 사람들에게 Rust는 신선한 공기를 제공합니다.

Rust 프로그램은 다음과 같습니다.

내 생각에는 간결하고 우아합니다. Rust는 코드를 보다 구성 가능하게 만드는 기능적 프로그래밍 접근 방식을 따르며 씨름해야 할 객체 지향 계층 구조가 없습니다.

그렇다면 무엇이 Rust에게 C++를 추구할 용기를 줍니까? 새로운 메모리 모델입니다. 오래된 new()/delete() 댄스에 의존하는 대신 Rust는 Ownership이라는 개념을 도입합니다.

메모리를 직접 할당하고 접근하는 대신, Rust 변수는 컴파일러에 의해 엄격한 제한을 두고 서로 “빌립니다”. 전체적인 개념이 너무 복잡해서 몇 마디로 설명하기 어려우니 부담 없이 공식 문서 더 많은 것을 배우기 위해.

요점은 이렇게 하면 가비지 수집기가 필요 없이 100% 메모리 안전이 달성된다는 것입니다. 이는 큰 문제입니다.

Rust는 시스템 프로그래밍 세계를 폭풍으로 몰아넣었습니다. 일부 플랫폼에서 이미 지원되고 있으며, 브라우저와 렌더링 엔진이 프로덕션 시스템에서 C/C++ 코드를 빠르게 대체하고 있으며 운영 체제를 작성하는 데 사용되고 있습니다.

물론 다른 브라우저나 장치 드라이버를 만드는 것이 모든 사람의 몫은 아니지만 Rust는 이미 다른 도메인으로 확산되고 있습니다. 우리는 이미 Rust에 완벽하게 기능하고 엄청나게 빠른 웹 프레임워크를 가지고 있으며 점점 더 많은 애플리케이션 라이브러리가 개발되고 있습니다.

솔직히 말해서 흥미진진한 미래에 관심이 있다면 Rust가 완벽한 언어이고 지금이 완벽한 시기입니다. Rust는 이륙한 비행기지만 별을 향해 향하기 때문에 아직 탑승할 시간이 있습니다!

배우다 Dmitri Nesteruk의 녹.

3. 비약

개발자의 행복에 중점을 둔 언어 중 1위는 영구적으로 Ruby에 할당되었습니다. 그것은 시처럼 읽고 정신적 마찰을 크기 순서로 줄일 수 있는 충분한 지름길을 가지고 있는 언어입니다.

  Google Blogger를 사용하여 블로그를 시작하는 방법

따라서 Rails 프레임워크가 진지한 개발자와 신생 기업을 위한 전체 스택 개발을 계속 지배하고 있다는 것은 놀라운 일이 아닙니다. 그러나 모든 사람, 특히 핵심 개발자 중 한 명이 Rails에 만족한 것은 아닙니다. 호세 발림. 나는 제작자 자신이 이 언어의 기원을 가장 잘 설명한다고 생각합니다. 회견:

긴 이야기지만 짧고 달콤하게 쓰도록 노력하겠습니다. 2010년으로 돌아가서 저는 멀티 코어 시스템으로 작업할 때 Rails의 성능을 개선하는 작업을 하고 있었습니다. 우리 기계와 생산 시스템이 점점 더 많은 코어와 함께 배송되기 때문입니다. 그러나 Ruby가 동시성 문제를 해결하기 위한 적절한 도구를 제공하지 않기 때문에 전체 경험은 상당히 실망스러웠습니다. 그 때 다른 기술을 살펴보기 시작했고 결국 Erlang Virtual Machine과 사랑에 빠졌습니다.

나는 Erlang을 점점 더 많이 사용하기 시작했고 경험을 통해 기능적 언어를 포함하여 다른 많은 언어에서 사용할 수 있는 일부 구문이 누락되었다는 것을 알게 되었습니다. 그 때 Erlang VM 위에 다양한 구성과 우수한 도구를 제공하려는 시도로 Elixir를 만들기로 결정했습니다.

그리고 보라, 비약 태어났다!

Scala가 Java 언어를 개선하지만 동일한 가상 머신(JVM)을 대상으로 하는 것처럼 Elixir는 수십 년 동안 전투로 입증된 Erlang 가상 머신을 활용합니다.

이제 Erlang에 대한 논의는 이 기사의 범위를 벗어나지만 최소한 알아야 할 사항은 이것이 통신 업계의 가장 잘 지켜지는 비밀이라는 것입니다. 전화 네트워크가 웹 기반 시스템보다 훨씬 더 안정적이라면 이 모든 것이 얼랑.

더 쉽게 말하면 이것이 의미하는 바입니다. 채팅과 같은 실시간 시스템을 구축하는 경우 Elixir는 Ruby(또는 PHP, Python 및 Java)보다 RAM 소모가 적고 안정적입니다.

Ruby를 실행하고 최대 10,000개의 동시 연결을 지원하는 시스템은 Elixir를 사용할 때 200,000개를 쉽게 처리할 수 있으며 여전히 2D 게임을 실행하기에 충분한 RAM이 있습니다!

Elixir 코드 스니펫

구문 면에서 Elixir는 뻔뻔하게 Ruby를 복사하고, 지배적인 웹 프레임워크인 Phoenix는 뻔뻔하게 Rails를 복사합니다. Laravel, Grails, Masonite 등과 함께 우리는 모든 언어가 전환을 쉽게 할 수 있는 Rails와 유사한 프레임워크를 갖는 지점에 도달하고 있기 때문에 그것도 좋은 일이라고 말하고 싶습니다. 어떤 사람들은 “독창성 부족”을 비웃을지 모르지만 적어도 나는 불평하지 않습니다.

드디어, 비약 상쾌하고 쾌적하며 실용적인 기술 중 하나입니다. 여러 Ruby(및 Ruby가 아닌) 상점이 Elixir로 이동하고 있으며 Pinterest와 같은 대기업에서 매우 만족스러운 결과를 얻으며 프로덕션에 사용하고 있습니다.

많은 사람들은 Node.js가 동시성을 위한 임시 시도였으며 곧 Elixir로 대체될 것이라고 생각합니다. 나는 그들에게 동의한다고 말해야합니다. 🙂

4. 코틀린

2017년 I/O에서 Google은 순진한 군중에게 폭탄을 터뜨렸습니다. 회사가 공식적으로 발표한 코틀린 Android 개발의 기본 언어로 업계에 충격파를 보내고 있습니다.

이제 Google이 Java를 대체하기 위해 적극적으로 모색하고 있다는 사실은 Oracle 소송에 휘말린 후 놀라운 일이 아닙니다. 그러나 Kotlin의 채택은 다소 예상치 못한 일이었고 Google이 곧 가상 머신을 내놓을 가능성이 여전히 높습니다. 그러나 당분간 Kotlin은 급증하고 있습니다.

Kotlin은 엄청나게 좋은 코드 편집기 제품군으로 더 잘 알려진 JetBrains에서 개발했습니다. 그 중 하나인 IntelliJ IDEA는 Android Studio의 기반을 형성합니다. Kotlin의 설계 목표는 안전성, 간결성, Java와의 100% 상호 운용성입니다.

무엇보다 Kotlin 컴파일러는 Java 세계에서 흔히 볼 수 있는 null 포인터 예외를 제거하기 위해 더 열심히 일합니다. 그것은 또한 많은 사람들에게 안도감이 될 속담인 Java의 장황함을 상당히 줄여줍니다.

다음은 Java와 Kotlin 간의 멋진 코드 비교입니다.

이미지 크레디트: hype.codes

Kotlin 코드는 훨씬 더 짧고 처리해야 할 인지 과부하가 훨씬 적습니다.

하지만 한 가지만 분명히 해두겠습니다. Kotlin이 Java를 대체할 가능성은 극히 낮지만 빠르게 선호되고 있습니다. 앞으로 10년이 지나면 중소 규모 팀은 Kotlin보다 더 멀리 보지 않을 것이며 대규모 그룹은 순전히 레거시 이유 때문에 Java를 계속 사용할 것이라고 믿습니다.

즉, Kotlin은 Java가 하는 모든 작업을 수행하고, 아무도 눈치채지 못하게 Java 코드와 병합할 수 있고, 훨씬 더 즐겁기 때문에 매우 밝은 미래를 가지고 있습니다!

5. 타입스크립트

신은 내가 이 자리를 위해 자제해야 한다는 것을 알고 있다! 내 안의 모든 것이 “느릅나무! Elm!” 그러나 그 아이디어가 얼마나 혁명적이거나 구문이 얼마나 신성한지 상관없이 Elm은 아직 프론트 엔드 작업에 대한 주류 대안으로 간주되지 않습니다. 🙁 어쨌든 주류인 TypeScript로 넘어갑시다.

  Quibi에서 볼 수 있는 것: 10 최고의 쇼

JavaScript는 야생 열매와 같습니다. 추하고 불쾌하지만 프론트 엔드 개발의 정글에서 살아남고 싶다면 그것을 견뎌야 합니다. 이를 대체하려는 많은 시도가 있었지만(그리고 아마도 새로운 WebAssembly 표준이 성공할 것입니다), 진정으로 모든 사람의 관심을 끈 것은 Microsoft에서 개발한 상위 집합이었습니다.

들어본 적이 있는 절호의 기회가 있습니다. 타입스크립트: Angular는 버전 2부터 이를 수용한 최초의 프레임워크였으며 사람들은 빠르게 주목했습니다. TypeScript가 세계에서 가장 유명한 프로그래밍 언어에 매우 필요하고 환상적인 초능력을 추가하기 때문입니다.

네, 마침내 자신의 탄생을 저주하지 않고 네이티브 JavaScript 코드를 작성할 수 있게 되었습니다!

TypeScript가 테이블에 제공하는 개선 사항은 다음과 같습니다.

✓ 강력한 타이핑: 마지막으로 문자열은 숫자가 아니며 숫자는 객체가 아니므로 빈 배열이 아닙니다!

✓ 컴파일 시간 유형 검사: 코드가 올바르게 컴파일되면 JavaScript 런타임의 문제가 거의 없음이 보장됩니다.

✓ 클래스 및 모듈: 예, 클래스는 ES6의 표준이지만 깔끔한 모듈 시스템 외에도 TypeScript에도 포함되어 있습니다.

✓ 유형 추론: 복잡한 유형의 경우 컴파일러에서 유형을 쉽게 알아낼 수 있으므로 골치 아픈 일을 줄일 수 있습니다.

✓ Async/await: async/await 키워드와 패턴은 기본이므로 더 이상 약속과 콜백을 어지럽힐 필요가 없습니다!

네임스페이스, 제네릭, 튜플 . . . 계속해서 말할 수는 있지만 TypeScript가 최악의 개발 경험 중 하나를 최고의 개발 경험 중 하나로 전환한다고 말하는 것으로 충분해야 합니다.

TypeScript 코드 스니펫

TypeScript의 영향은 부인할 수 없습니다. Google의 Dart와 같은 유사한 시도를 현장에서 몰아냈고(모바일 개발 프레임워크인 Flutter를 통해 복귀를 시도하고 있지만) 더 강력한 유형의 이점에 대해 JS 개발자의 눈을 열었습니다.

결과적으로 React, D3, Vue(심지어 jQuery!)와 같은 중요한 라이브러리에는 이제 TypeScript 버전이 있으며 전 세계 최고의 소프트웨어 상점에서는 모든 JavaScript 코드가 TypeScript 코드로 작성되고 있습니다. TypeScript 헤더는 이제 Node.js에서도 사용할 수 있습니다(솔직히 노드가 동시성 스토리를 개선하고 형편없는 메모리 관리를 패치할 수 있다면 영원히 지속될 것입니다).

Node.js의 작성자가 공개적으로 후회 그의 창조물은 새로운 런타임 (현재 공식 웹사이트는 없고 GitHub 리포지토리만 있음) TypeScript를 기본 언어로 사용합니다.

최고의 소식은? TypeScript는 작은 배울 언어 앞으로 상당한 혜택을 누릴 수 있습니다. 중급 JavaScript 개발자라면 2일 이내에 모든 기존 코드를 포팅할 수 있는 충분한 TypeScript를 선택하게 될 것입니다!

결론 및 부인

특정 언어는 이 기사의 언어만큼 인기를 얻고 있지만 여러 가지 이유로 목록에 포함되지 않았습니다. 다음은 간략한 보기입니다.

  • Golang: 인기가 많지는 않지만 이미 주류 언어로 자리 잡았습니다. 이 시점에서 Golang에는 시장 점유율을 낮게 유지할 여러 경쟁자가 있습니다.
  • R: R은 이미 데이터 과학자들 사이에서 인기가 높으며 애플리케이션 개발자를 많이 끌어들일 것 같지 않습니다. 게다가, 우리는 기계 학습 라이브러리가 모든 주요 언어로 서서히 나아가고 있다는 사실을 잊어서는 안 됩니다. (맙소사, PHP에도 지금은 있습니다!), 여러분이 해야 할 일은 잠시 기다리기만 하면 됩니다. 🙂
  • Swift: Apple은 생태계에서 확고한 영향력을 가지고 있으며 Swift는 그곳에서 사용할 수 있는 유일한 언어입니다. 이전에는 Objective C가 대세였습니다. 지금은 Swift가 그렇습니다. 나는 그것이 속임수라고 생각하고 여기에 포함시키기를 거부합니다. 😀

미래는 항상 불확실하며, 경력을 쌓는 한 가지 방법은 이미 효과가 있는 것에 충실하고 “주의가 산만”해지는 것을 거부하는 것입니다. 그렇게 하면 Java, PHP, Python, Ruby 등 모두 계속 사용할 수 있는 우수한 언어입니다. 그러나 우리 중 일부에게는 표준이 충분하지 않습니다. 그들은 나가서 탐험하고 미래에 크게 걸고 싶어합니다. 후자 진영에 속한다면 이 5개 언어 중 하나가 해야 할 일 목록의 맨 위에 있어야 합니다.

마지막으로, 언어를 평가하려고 할 때 그렇게 많은 노력이 당신을 압도하지 않도록 하십시오. 몇 가지 프로그래밍 언어를 이미 알고 있다면 최대 2개월 이내에 이러한 언어를 배울 수 있으며 일주일에 5-6시간을 투자할 수 있습니다. 반면에 앞으로 얻을 수 있는 행복과 금전적 수익은 몇 배는 더 많을 것입니다.

여기서 중요한 언어를 놓쳤습니까? 아니면 여기에 나열된 언어에 대해 뭔가 잘못된 것이 있습니까? 그렇다면 의견을 남기고 개선할 수 있도록 도와주세요. 🙂