go ialah bahasa. Go (juga dikenali sebagai Golang) ialah bahasa pengaturcaraan yang ditaip, disusun, serentak dan pengumpulan sampah secara statik yang dibangunkan oleh Google. Go ialah bahasa tersusun yang menggunakan pengkompil untuk menyusun kod. Pengkompil menyusun kod sumber ke dalam format binari (atau kod bait) semasa ia menyusun kod, pengkompil menyemak ralat, mengoptimumkan prestasi dan mengeluarkan binari yang boleh dijalankan pada platform yang berbeza.
Persekitaran pengendalian tutorial ini: sistem Windows 7, GO versi 1.18, komputer Dell G3.
go ialah bahasa.
Go (juga dikenali sebagai Golang) ialah bahasa yang ditaip kuat secara statik yang dibangunkan oleh Robert Griesemer, Rob Pike dan Ken Thompson dari Google. Sintaks bahasa Go adalah serupa dengan C, tetapi fungsinya termasuk: keselamatan memori, GC (pengumpulan sampah), bentuk struktur dan pengkomputeran serentak gaya CSP.
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.
Go ialah bahasa yang disusun
Go menggunakan pengkompil untuk menyusun kod. Pengkompil menyusun kod sumber ke dalam format binari (atau kod bait) semasa ia menyusun kod, pengkompil menyemak ralat, mengoptimumkan prestasi dan mengeluarkan binari yang boleh dijalankan pada platform yang berbeza. Untuk mencipta dan menjalankan program Go, pengaturcara mesti melakukan langkah berikut.
Buat program Go menggunakan editor teks; program;
Jalankan fail boleh laku yang disusun.
Ini berbeza daripada bahasa seperti Python, Ruby dan JavaScript, yang tidak termasuk langkah penyusunan. Go datang dengan pengkompil, jadi tidak perlu memasang pengkompil yang berasingan.
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-ciri bahasa GoSintaksis mudah
Mengetepikan gaya tatabahasa, Dari segi jenis dan peraturan, Go mempunyai banyak persamaan dengan C99 dan C11, yang juga merupakan sebab penting mengapa bahasa Go dinamakan "NextC".
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.
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.
Rantai Alat
Rantai alat 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.
Untuk lebih banyak pengetahuan berkaitan pengaturcaraan, sila lawati: Video Pengaturcaraan! !
Atas ialah kandungan terperinci Adakah pergi bahasa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!