Carbon Google Nyoba Dadi C++ sing Luwih Apik

Mesthi, sawetara bakal ujar manawa iki ora angel amarga meh kabeh bakal luwih apik! Apa C ++ mbutuhake panggantos? Ya iku – nanging masalah iku ana akeh babagan.

Kaya sing wis dakkandhakake sadurunge, C ++ minangka ide sing apik sing mung tuwuh ngluwihi cukup. Saiki, ana akeh cara kanggo nindakake apa wae lan akeh cara kanggo nggawe C ++ katon kaya basa sampeyan dhewe.

CC Robert M. Lavinsky

Saiki klompok insinyur Google wis kumpul kanggo ndeleng apa proyek paling anyar, Carbon, bisa nindakake masalah kasebut.

Google duwe reputasi kanggo nyipta, utawa mung nggunakake, basa sing dadi ekstensi kanggo basa sing wis ana. Dart kanggo JavaScript, Go kanggo C lan Kotlin kanggo Java. Mesthi, kita duwe Rust minangka alternatif ngajokaken kanggo C lan C ++, nanging iki dudu basa extension – iku luwih lengkap, ayo miwiti maneh, basa. Carbon nyoba dadi kaya Rust nalika tetep kompatibel karo donya C ++. Kaca Github kasebut nyatakake;

  • Kinerja sing cocog karo C ++ nggunakake LLVM, kanthi akses tingkat rendah menyang bit lan alamat
  • Interoperate karo kode C ++ sing wis ana, saka warisan nganti cithakan
  • Dibangun kanthi cepet lan bisa diukur sing bisa digunakake karo sistem mbangun C ++ sing ana

Diklaim yen Karbon dibutuhake amarga nambah C ++ kanthi nambahake ora bisa ditindakake maneh amarga bagasi historis sing ora bisa diilangi. Aku dhewe bakal luwih maju lan nyaranake “perbaikan” tambahan kanggo C ++ minangka bagean saka alesan kasebut, ing praktik, basa sing akeh banget.

Siji bab sing menarik babagan proyek Carbon yaiku pernyataan:

Basa modern sing wis ana wis menehi pengalaman pangembang sing apik banget: Go, Swift, Kotlin, Rust, lan liya-liyane. Pangembang sing bisa nggunakake salah siji saka basa sing wis ana iki kudu.

Apa iki nuduhake manawa tim mikir yen tugas tetep kompatibel karo C ++ minangka kendala sing ora bisa ditindakake Carbon luwih apik ing basa sing wis ana – utawa mung sopan santun?

Punika conto karbon:

// Carbon:
package Geometry api;
import Math;
class Circle {
  var r: f32;
}
fn PrintTotalArea(circles: Slice(Circle)) {
  var area: f32 = 0;
  for (c: Circle in circles) {
    area += Math.Pi * c.r * c.r;
  }
  Print("Total area: {0}", area);
}
fn Main() -> i32 {
  // A dynamically sized array, like `std::vector`.
  var circles: Array(Circle) = ({.r = 1.0}, {.r = 2.0});
  // Implicitly constructs `Slice` from `Array`.
  PrintTotalArea(circles);
  return 0;
}

Aku wis ora cukup wektu kanggo njaluk menyang grip karo basa kanggo manteb ing ati kanggo menehi conto dhewe, nanging iki menehi roso soko sing katon C ++ -kaya, nanging karo unsur modern. Wigati sing kanggo gelung yaiku a kanggo ing daur ulang lan dudu gaya barok C / C ++ kanggo daur ulang – “semi-semi”, dijenengi amarga rong titik koma ing sintaks. Iku bakal menarik kanggo ndeleng yen ninggalake metu semi-semi bisa maintained senadyan panjalukan ketok sing bakal teka kanggo iku kanggo dibalèkaké.

Ana uga conto nggarap program campuran C ++ lan Carbon lan iki katon gampang.

Rong wilayah sing saya kuwatir yaiku generik lan keamanan memori. Aku padha sumelang ing bab generik amarga nganti saiki aku durung weruh implementasine saka generik sing menehi bali luwih saka iku njupuk. Pendekatan Karbon katon resik, nanging kabeh gumantung saka rincian sing luwih apik sing mbutuhake wektu kanggo ngerti.

Keprigelanku babagan keamanan memori yaiku kinerja. Kaca GitHub nyatakake:

  • Nelusuri negara sing ora diinisialisasi luwih apik, nambah penegakan inisialisasi, lan kanthi sistematis nyedhiyakake hardening marang bug initialization yen dikarepake.
  • Ngrancang API lan idiom dhasar kanggo ndhukung pamriksa wates dinamis ing debug lan mbangun hardened.
  • Nduwe mode mbangun debug standar sing luwih murah lan luwih lengkap tinimbang mode mbangun C ++ sanajan digabungake karo Address Sanitizer.

Iki banget samar kanggo komentar, nanging atine ana ing panggonan sing bener.

Apa Carbon bakal ignite?

Sapa sing ngerti amarga iki dudu upaya pertama kanggo ngganti utawa ngluwihi C ++.

Aku uga kudu takon kenapa Google menehi jeneng basa supaya sampeyan ora bisa nemokake kanthi nggunakake mesin telusuran – Go lan Carbon ngasilake akeh topik sing ora ana gandhengane karo program. Apa kita kudu nyebut Carbonlang ing laku?

Kita kudu ndeleng manawa sawetara wektu lan tekanan pangembangan bisa ngowahi Karbon dadi berlian sing digoleki.

karboniocn

Informasi liyane

https://github.com/carbon-language/carbon-lang

Artikel sing gegandhengan

Google Rilis Basa Pemrograman Logika

Google ngasilake basa liyane – Dart

Kenapa Go Good?

A Decade of Go – Basa Sistem Google

Kanggo diwenehi informasi babagan artikel anyar ing I Programmer, ndhaptar buletin mingguan, langganan feed RSS lan tindakake kita ing Twitter, Facebook utawa Linkin.

Spanduk

.

Leave a Comment

Your email address will not be published. Required fields are marked *