훌륭하지만 느린 C++를 대체하기 위해 Google 연구원은 Carbon이라는 새로운 "실험적" 오픈 소스 프로그래밍 언어를 도입했습니다.
Carbon은 메모리 안전 및 제네릭과 같은 현대 개발 개념을 다루는 새로운 언어로 개발자에게 간단한 출발점을 제공하는 C++의 후속 언어 역할을 할 수 있습니다.
이는 마이크로소프트가 자바의 약점을 강화하기 위해 자바스크립트와 코틀린을 업데이트하기 위해 Typescript를 구축한 것과 비슷할 것입니다.
Google은 수년 동안 수많은 프로그래밍 언어를 개발했으며 그 중 일부는 상당한 악명과 명성을 얻었습니다.
예를 들어 Golang(또는 Go)은 서버 및 분산 시스템 생성을 용이하게 하기 위해 개발되었으며 이후 일반 대중에게 채택되었습니다.
다트 프로그래밍 언어JavaScript를 대체하기 위해 만들어진 , Flutter가 출시될 때까지는 잘 알려지지 않았습니다.
Google 직원인 Chandler Carruth는 19년 2022월 XNUMX일 토론토에서 열린 Cpp North 대회에서 Carbon이라는 새로운 프로그래밍 언어에 대한 아이디어를 발표했습니다. 코너 훅스트라에 따르면, 누가 참석하고 슬라이드를 녹화했는지.
시나리오를 설정하기 위해 Carruth는 오늘날 가장 인기 있는 프로그래밍 언어 중 일부가 개발자가 신속하게 생산성을 발휘하고 현대 언어 디자인의 이점을 누릴 수 있도록 하는 자손을 어떻게 가지고 있는지 보여주었습니다.
Carbon 프로그래밍 언어의 기능, Google의 발명 목적 등을 포함하여 Carbon 프로그래밍 언어에 대한 일반적인 소개부터 시작하겠습니다.
탄소 프로그래밍 언어 소개
19년 2022월 XNUMX일, Google은 자사가 만든 최신 프로그래밍 언어로 Carbon을 공개했습니다. C++를 실험적으로 대체하기 위한 것이었습니다.
감사합니다 제네릭 시스템, 각 인스턴스화에 대한 코드를 다시 확인할 필요가 없으므로 Carbon은 현대적인 프로그래밍 개념을 기반으로 구성됩니다.
올해 말까지 기본 운용 버전(버전 0.1)을 제공할 계획이다.
메모리 무결성은 C++에 없는 중요한 요소입니다. 보안 결함의 주요 원인 중 하나는 메모리 액세스 문제입니다.
동적 경계 검사의 개발, 초기화되지 않은 상태의 더 큰 추적 및 철저한 기본 디버그 빌드 모드는 모두 Carbon 팀의 목표입니다. 제작자는 시간이 지남에 따라 안전한 Carbon 하위 집합을 만들려고 합니다.
그러나 다음은 새 프로그래밍 언어의 몇 가지 중요한 특성입니다.
- 유형의 이름을 지정하려면 표현식을 사용하십시오.
- 정의 검사가 포함된 강력한 제네릭
- 유형은 특히 인터페이스를 수행합니다.
- 소개 문구 및 기본 문법
- 포인터는 무제한 액세스 및 돌연변이를 허용합니다.
- 함수 입력 매개변수의 값은 읽기 전용입니다.
- 루트 네임스페이스는 패키지입니다.
- API는 패키지 이름을 사용하여 가져올 수 있습니다.
- 메서드는 명시적 개체 매개 변수를 통해 선언됩니다.
- 클래스는 기본적으로 final입니다. 단 하나의 유산이 있다
탄소의 특징
현대와 발전
- Carbon 버전 간의 업그레이드는 간단하고 도구 기반입니다.
- 강력한 언어 기반, 특히 C++를 사용한 적이 있고 배우기 쉬운 경우
- 메모리 안전 하위 집합에 대한 더 안전한 기반 및 단계별 접근 방식
오픈 소스 커뮤니티 환영
- 따뜻하고, 수용하고, 초대하기 위해 노력하는 커뮤니티
- 목표와 우선 순위가 뚜렷하고 강력한 거버넌스입니다.
- 컴파일러, 라이브러리, 문서, 도구, 패키지 관리 등이 포함된 올인원 전략
빠르고 C++와 호환 가능
- 함께 작업 C ++ 코드 상속 및 템플릿을 포함하여 이미 가지고 있습니다.
- LLVM을 사용하면 C++에 필적하는 성능과 비트 및 주소에 대한 저수준 액세스
- 빠르고 확장 가능하며 기존 C++ 빌드 시스템과 호환되는 빌드
Google이 Carbon 프로그래밍 언어를 만든 이유는 무엇입니까?
성능이 중요한 소프트웨어는 계속해서 대부분이 C++로 작성되며, 여기에는 막대한 규모의 확장 코드베이스와 투자가 있습니다.
그러나 수년간 축적된 기술 부채로 인해 앞서 언급한 개발자의 요구 사항을 충족하고 발전시키는 데 어려움을 겪고 있습니다.
C++에서 발생하는 기술적 부채와 진화 과정의 어려움으로 인해 C++를 점진적으로 개선하는 것은 매우 어렵습니다.
이러한 문제를 해결하기 위한 이상적인 접근 방식은 C 또는 C++의 전통을 직접 상속하는 것보다 현대적인 제네릭 시스템, 모듈식 코드 구조 및 일관되고 간단한 구문과 같은 강력한 언어 기반으로 시작하는 것입니다.
Go, Swift, Kotlin, Rust 및 기타 많은 현대 언어는 이미 뛰어난 개발 경험을 제공합니다. 이러한 현재 언어 중 하나를 사용할 수 있는 개발자는 그래야 합니다.
불행히도 C++에서 채택 및 마이그레이션은 이러한 언어의 설계로 인해 심각한 방해를 받습니다. 이러한 장애물에는 성능 오버헤드와 소프트웨어의 관용적 설계에 대한 수정이 포함됩니다.
Carbon은 C++를 점진적으로 개선하려는 시도가 아닙니다. 오히려 그것은 후속 언어 전략입니다. C++ 상호 운용성과 현재 C++를 사용하는 개발자 및 코드베이스에 대한 광범위한 수용 및 마이그레이션에 중점을 둡니다.
C++ 대체 언어에는 다음이 있어야 합니다.
- C++에 필적하는 성능은 개발자에게 중요한 특성입니다.
- C++ 프로그래머를 위한 관리 가능한 학습 곡선 및 친숙도
- 확장 가능하고 일부 소스-소스 관용적 C++ 코드 번역을 포함하는 마이그레이션입니다.
- 현재 소프트웨어의 아키텍처 및 디자인에 대한 유사한 표현 및 지원.
- 원활하고 양방향인 C++와의 상호 운용성으로 모든 라이브러리에서 나머지 스택을 이식할 필요 없이 Carbon을 채택할 수 있습니다.
이 전략을 통해 Google은 C++용으로 이미 존재하는 생태계에 추가하고 현재 투자, 코드베이스 및 개발 커뮤니티를 통합합니다.
몇몇 언어는 다양한 생태계에 대해 이 접근 방식을 채택했으며 Carbon은 다음 상황에서 C++와 유사한 기능을 수행하려고 합니다.
- 자바 – 코틀린
- 자바스크립트 – 타입스크립트
- C++ – 탄소
C++ 대 탄소 코드
이미 C++ 개발자라면 Carbon은 학습 곡선이 낮아야 합니다. 그것은 자연스럽게 들리고 읽고 이해하기 쉬워야 하는 고정된 문법 구조로 구성되어 있습니다.
C++ 코드의 예:
이 탄소 코드는 다음에 해당합니다.
탄소 대 녹
메모리 안전 성능 응용 프로그램의 요구 사항을 충족하도록 명시적으로 설계된 또 다른 현대 언어를 Rust라고 합니다.
그렇다면 단순히 Rust를 사용하지 않는 이유는 무엇입니까?
일부는 Mozilla 프로젝트로 시작하여 이후 상당한 대중을 확보하게 된 Rust가 C++의 후계자라고 주장하지만 Carruth는 그 병렬이 여전히 유효한지 의심합니다.
Rust는 의심할 여지 없이 새로운 프로젝트를 시작하기에 환상적인 언어이지만 Java 및 Kotlin과 같은 언어의 "양방향 상호 운용성"이 부족하기 때문에 점진적으로 전환하는 것이 어렵습니다.
Carruth는 CPP North에서 강의를 했으며 이미 Rust를 사용하고 있는 사람들에게 계속해서 사용하도록 격려했습니다. Rust로 변환하기 어려운 상당한 규모의 C++ 코드베이스를 이미 가지고 있는 개발자는 Carbon을 사용해야 합니다.
특히 Carbon은 Carruth가 언급한 "후계자 언어"로 기존 생태계(이 경우 C++) 위에 구축됩니다.
그 목적을 위해 Carbon은 프로그래머가 "성능에 중요한 응용 프로그램"을 만드는 것을 지원하는 것과 같이 Rust와 많은 목표를 가지고 있더라도 현재 C++ 코드와 완전히 호환됩니다.
또한 C++에서 Carbon으로의 이동을 최대한 간단하게 하기 위함입니다.
결론
마지막으로 Carbon 언어 창작자들은 창작 과정에 주의를 기울이기 위해 노력했습니다. 프로젝트의 코드는 요청에 사용할 수 있으며 공개적으로 저장됩니다. 깃허브, 그리고 그 문화는 민간 시민과 IT 부문 모두에게 포괄적이고 개방된 것으로 정의됩니다.
Carbon 팀은 Carbon이 미래에 발전하기 위해서는 Google이 추진하는 프로젝트뿐만 아니라 커뮤니티가 주도하는 자율적인 프로젝트가 되어야 한다고 생각했습니다.
Caruth는 많은 IT 비즈니스의 관심에도 불구하고 이 개념은 아직 실험 단계에 있다고 덧붙였습니다.
댓글을 남겨주세요.