golang bukan Cina. Golang ialah bahasa pengaturcaraan serentak yang ditaip kuat, disusun, dengan keupayaan pengumpulan sampah yang dibangunkan oleh Google. Golang ialah satu lagi percubaan dalam reka bentuk bahasa pengaturcaraan dan peningkatan besar berbanding bahasa seperti C. Ia bukan sahaja membolehkan anda mengakses sistem pengendalian asas, tetapi juga menyediakan pengaturcaraan rangkaian yang berkuasa dan sokongan pengaturcaraan serentak. Bahasa Go mempunyai banyak kegunaan dan boleh digunakan untuk pengaturcaraan rangkaian, pengaturcaraan sistem, pengaturcaraan serentak dan pengaturcaraan teragih.
Persekitaran pengendalian tutorial ini: sistem Windows 7, GO versi 1.18, komputer Dell G3.
golang bukan Cina.
Golang (juga dikenali sebagai bahasa Go atau Go) ialah bahasa pengaturcaraan serentak yang ditaip kuat, disusun dan serentak dengan keupayaan pengumpulan sampah yang dibangunkan oleh Robert Griesemer, Rob Pike dan Ken Thompson dari Google.
Bahasa Go (atau Golang) berasal pada tahun 2007 dan dikeluarkan secara rasmi pada tahun 2009. Go ialah bahasa yang sangat muda, dan matlamat utamanya ialah untuk "menggabungkan kelajuan pembangunan bahasa dinamik seperti Python dan prestasi serta keselamatan bahasa yang disusun seperti C/C++."
Bahasa Go ialah satu lagi percubaan dalam reka bentuk bahasa pengaturcaraan dan peningkatan besar berbanding bahasa seperti C. Ia bukan sahaja membenarkan anda mengakses sistem pengendalian asas, tetapi juga menyediakan pengaturcaraan rangkaian yang berkuasa dan sokongan pengaturcaraan serentak. Bahasa Go mempunyai banyak kegunaan dan boleh digunakan untuk pengaturcaraan rangkaian, pengaturcaraan sistem, pengaturcaraan serentak dan pengaturcaraan teragih.
Pelancaran bahasa Go bertujuan untuk mengurangkan kerumitan kod tanpa kehilangan prestasi aplikasi. Ia mempunyai kelebihan "penyerahan mudah, konkurensi yang baik, reka bentuk bahasa yang baik dan prestasi pelaksanaan yang baik pada masa ini Syarikat IT telah menggunakan bahasa Go untuk membangunkan projek.
Bahasa Go kadangkala digambarkan sebagai "bahasa seperti C", atau "bahasa C abad ke-21". Go mewarisi sintaks ungkapan yang serupa, struktur aliran kawalan, jenis data asas, pemindahan nilai parameter panggilan, penunjuk dan banyak idea lain daripada bahasa C Ia juga mempunyai kecekapan menjalankan kod mesin tersusun yang sentiasa dihargai oleh bahasa C dan konsisten dengan Seamless sedia ada penyesuaian kepada sistem pengendalian.
Oleh kerana bahasa Go tidak mempunyai konsep kelas dan warisan, ia tidak kelihatan sama seperti Java atau C++. Tetapi ia mencapai polimorfisme melalui konsep antara muka. Bahasa Go mempunyai sistem jenis ringan yang jelas dan mudah difahami, dan tiada hierarki antara jenis. Oleh itu, boleh dikatakan bahawa bahasa Go adalah bahasa hibrid.
Selain itu, banyak projek sumber terbuka yang penting dibangunkan menggunakan bahasa Go, termasuk Docker, Go-Ethereum, Thrraform dan Kubernetes.
Mengapa anda perlu belajar bahasa Go
Jika anda ingin mencipta program sistem atau program berasaskan rangkaian, bahasa Go ialah pilihan yang baik. Sebagai bahasa yang agak baharu, ia telah direka oleh saintis komputer yang berpengalaman dan dihormati untuk menangani cabaran mencipta program rangkaian serentak berskala besar.
Sebelum kemunculan bahasa Go, pembangun sentiasa berhadapan dengan pilihan yang sangat sukar: sama ada untuk menggunakan bahasa (seperti C++) yang mempunyai kelajuan pelaksanaan yang pantas tetapi kelajuan penyusunan yang tidak memuaskan, atau menggunakan bahasa yang mempunyai kelajuan kompilasi yang cepat tetapi kelajuan kompilasi yang lemah Bagaimana dengan bahasa dengan kecekapan pelaksanaan yang lemah (seperti .NET, Java), atau bahasa dinamik yang kurang sukar untuk dibangunkan tetapi mempunyai kelajuan pelaksanaan yang sederhana? Jelas sekali, bahasa Go mencapai keseimbangan terbaik antara tiga syarat ini: penyusunan pantas, pelaksanaan yang cekap dan pembangunan yang mudah.
Bahasa Go menyokong kompilasi silang Contohnya, anda boleh membangunkan aplikasi yang boleh dijalankan pada Windows pada komputer yang menjalankan sistem Linux. Ini adalah bahasa pengaturcaraan pertama yang menyokong sepenuhnya UTF-8 Ini bukan sahaja ditunjukkan dalam fakta bahawa ia boleh mengendalikan rentetan yang dikodkan UTF-8, tetapi juga format fail kod sumbernya menggunakan pengekodan UTF-8. Bahasa Go benar-benar antarabangsa!
Ciri bahasa Go
Sintaks mudah
Ketepikan gaya sintaks, hanya Dalam terma jenis dan peraturan, Go mempunyai banyak persamaan dengan C99 dan C11, yang juga merupakan sebab penting mengapa bahasa Go dinamakan "NextC".
Tatabahasa bahasa Go berada pada dua keterlaluan iaitu kesederhanaan dan kerumitan. Bahasa C sangat mudah sehingga setiap kali anda menulis baris kod, anda boleh membayangkan dalam fikiran anda bagaimana rupanya selepas penyusunan, bagaimana arahan dilaksanakan, bagaimana memori diperuntukkan, dsb. Kerumitan C ialah ia mempunyai terlalu banyak peraturan yang tidak jelas dan tidak relevan, yang benar-benar sakit kepala. Sebagai perbandingan, Go bermula dari awal dan tidak mempunyai bagasi bersejarah Selepas mempelajari banyak pengalaman dan pelajaran, ia boleh merancang dunia dengan peraturan yang ketat dan organisasi yang mudah dari awal.
Peraturan tatabahasa bahasa Go adalah ketat, tiada kekaburan dan tiada variasi ilmu hitam. Kod yang ditulis oleh sesiapa sahaja pada asasnya adalah sama, yang menjadikan bahasa Go mudah dipelajari. Saya fikir ia berbaloi untuk melepaskan sebahagian daripada "fleksibiliti" dan "kebebasan" sebagai pertukaran untuk kebolehselenggaraan yang lebih baik.
Turunkan taraf "++" dan "--" daripada operator kepada pernyataan, kekalkan penunjuk, tetapi halang operasi penunjuk secara lalai, dan faedahnya jelas. Selain itu, menggunakan hirisan dan kamus sebagai jenis terbina dalam dan mengoptimumkannya dari tahap masa jalan juga dianggap "mudah".
Model Concurrency
Hari ini, pengaturcaraan serentak telah menjadi kemahiran asas untuk pengaturcara, dan banyak topik perbincangan berkaitan boleh dilihat dalam pelbagai komuniti teknikal. Dalam kes ini, bahasa Go telah melakukan sesuatu yang sangat berani, tidak seperti biasa, dan pada asasnya menjadikan semuanya serentak Ia menggunakan Goroutine untuk menjalankan segala-galanya semasa masa jalan, termasuk fungsi masuk utama.
Boleh dikatakan bahawa Goroutine ialah ciri paling ketara bagi Go. Ia menggunakan pendekatan seperti coroutine untuk mengendalikan unit serentak, tetapi juga melakukan pengoptimuman yang lebih mendalam pada tahap masa jalan. Ini menjadikan pengaturcaraan serentak secara sintaksis amat mudah. Tidak perlu berurusan dengan panggilan balik, tidak perlu memberi perhatian kepada penukaran benang, hanya satu kata kunci, mudah dan semula jadi.
Gunakan saluran untuk melaksanakan model CSP. Menyahganding gandingan data antara unit serentak dan membenarkan setiap satu melaksanakan tugasnya sendiri merupakan kelegaan yang dialu-alukan untuk semua pembangun yang bergelut dengan perkongsian memori dan butiran kunci. Sekiranya terdapat sebarang kekurangan, ia adalah perlu ada rancangan yang lebih besar untuk mengembangkan komunikasi dari dalam proses ke luar proses untuk mencapai pengedaran yang benar.
Peruntukan ingatan
Menyelaraskan segala-galanya adalah baik, tetapi ia juga membawa banyak masalah. Bagaimana untuk mencapai peruntukan memori dan pengurusan di bawah konkurensi tinggi adalah masalah yang sukar. Nasib baik, Go memilih tcmalloc, iaitu komponen peruntukan memori berprestasi tinggi yang direka bentuk untuk bersamaan.
Boleh dikatakan bahawa pengalokasi memori adalah bahagian yang paling sedikit diubah daripada tiga komponen utama masa jalan. Tidak termasuk kandungan yang diubah suai untuk bekerjasama dengan pemungut sampah, pengalokasi memori mengekalkan sepenuhnya struktur asal tcmalloc. Gunakan cache untuk menyediakan peruntukan tanpa kunci untuk utas pelaksanaan semasa, dan berbilang pusat untuk mengimbangi penggunaan semula unit memori antara utas yang berbeza. Pada tahap yang lebih tinggi, timbunan menguruskan blok memori yang besar dan membahagikannya kepada tahap yang berbeza bagi blok memori yang digunakan semula. Peruntukan pantas dan mekanisme pengimbangan memori sekunder membolehkan pengagih memori menyelesaikan tugas pengurusan memori dengan cemerlang di bawah tekanan tinggi.
Pengoptimuman pengkompil telah sangat berkesan dalam versi terkini. Ia akan cuba sedaya upaya untuk memperuntukkan objek pada timbunan untuk mengurangkan tekanan kutipan sampah, mengurangkan penggunaan pengurusan dan meningkatkan prestasi pelaksanaan. Boleh dikatakan bahawa kecuali untuk masalah prestasi sekali-sekala yang memaksa penggunaan kumpulan objek dan pengurusan memori autonomi, kami pada dasarnya tidak perlu mengambil bahagian dalam operasi pengurusan memori.
Pengumpulan sampah
Pengumpulan sampah sentiasa menjadi masalah. Pada tahun-tahun awal, Java telah diejek untuk masa yang lama kerana pengumpulan sampah yang tidak cekap Kemudian, Sun berturut-turut menggabungkan ramai orang dan teknologi untuk berkembang sehingga hari ini. Namun begitu, dalam senario aplikasi memori besar seperti Hadoop, kutipan sampah masih terbentang dan sukar.
Go menghadapi lebih banyak kesukaran daripada Java. Disebabkan kewujudan penunjuk, ingatan yang ditebus semula tidak boleh dikecutkan. Nasib baik, aritmetik penunjuk disekat, jika tidak, sukar untuk mencapai kitar semula yang tepat.
Setiap kali anda menaik taraf, pemungut sampah mestilah bahagian yang paling diubah suai dalam komponen teras. Daripada pembersihan serentak, kepada mengurangkan masa STW, sehingga versi 1.5 Go melaksanakan penandaan serentak, dan secara beransur-ansur memperkenalkan penghalang penandaan dan tulis tiga warna, dsb., semuanya untuk menjadikan kutipan sampah berfungsi dengan lebih baik tanpa menjejaskan logik pengguna. Walaupun ada usaha, versi semasa algoritma kutipan sampah hanya boleh dikatakan boleh digunakan, dan masih jauh lagi untuk digunakan.
Pautan Statik
Apabila Go pertama kali dikeluarkan, pemautan statik telah dipromosikan sebagai kelebihan. Hanya fail boleh laku yang disusun boleh digunakan tanpa melampirkan apa-apa. Ini nampaknya idea yang bagus, tetapi kemudiannya trend berubah. Untuk beberapa versi berturut-turut, pengkompil telah menambah baik fungsi buildmode perpustakaan dinamik, dan keadaan menjadi agak memalukan untuk seketika.
Ketepikan mod binaan yang belum selesai buat masa ini, faedah penyusunan statik adalah jelas. Masa jalan dan perpustakaan bergantung dibungkus terus ke dalam fail boleh laku, yang memudahkan operasi penempatan dan pelepasan Tidak perlu memasang persekitaran operasi dan memuat turun banyak perpustakaan pihak ketiga terlebih dahulu. Pendekatan mudah ini memberi manfaat besar untuk perisian sistem penulisan, kerana kebergantungan perpustakaan sentiasa menjadi masalah.
Perpustakaan Standard
Perpustakaan standard dengan fungsi lengkap dan kualiti yang boleh dipercayai menyediakan kuasa yang mencukupi untuk bahasa pengaturcaraan. Kebanyakan pembangunan fungsi asas boleh diselesaikan tanpa bantuan sambungan pihak ketiga, yang sangat mengurangkan kos pembelajaran dan penggunaan. Perkara yang paling penting ialah perpustakaan standard dijamin untuk dinaik taraf dan dibaiki, dan ia juga boleh mendapatkan kemudahan pengoptimuman mendalam daripada masa jalan, yang tidak tersedia dalam perpustakaan pihak ketiga.
Walaupun perpustakaan standard Go tidak dilindungi sepenuhnya, ia masih sangat kaya. Salah satu yang terpuji ialah net/http, yang boleh melaksanakan Pelayan Web berprestasi tinggi dengan hanya beberapa kenyataan mudah Ini sentiasa menjadi sorotan publisiti. Lebih-lebih lagi, sejumlah besar rangka kerja pihak ketiga yang sangat baik berdasarkan ini telah mendorong Pergi ke kedudukan salah satu piawaian pembangunan Web/Perkhidmatan Mikro.
Sudah tentu, sumber pihak ketiga yang sangat baik juga merupakan bahagian penting dalam ekosistem bahasa. Di antara beberapa bahasa yang telah muncul dalam beberapa tahun kebelakangan ini, Go adalah unik, dengan sejumlah besar karya cemerlang muncul dengan kerap, yang juga memberikan kami rujukan yang baik untuk mempelajari Go.
Toolchain
Toolchain yang lengkap amat penting untuk pembangunan harian. Go telah melakukan kerja yang cukup baik di sini, dengan alatan yang sepadan untuk penyusunan, pemformatan, semakan ralat, dokumentasi bantuan dan muat turun dan kemas kini pakej pihak ketiga. Fungsinya mungkin tidak sempurna, tetapi sekurang-kurangnya ia mudah dan mudah digunakan.
Rangka kerja ujian lengkap terbina dalam, termasuk ujian unit, ujian prestasi, liputan kod, persaingan data dan pprof untuk penalaan Ini adalah alat penting untuk memastikan kod boleh berjalan dengan betul dan stabil.
Selain itu, maklumat pemantauan masa jalan juga boleh dikeluarkan melalui pembolehubah persekitaran, terutamanya kutipan sampah dan penjejakan penjadualan serentak, yang boleh membantu kami menambah baik algoritma dan memperoleh prestasi masa jalan yang lebih baik.
[Cadangan berkaitan: Pergi tutorial video, Pengajaran pengaturcaraan]
Atas ialah kandungan terperinci Adakah golang Cina?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!