Rumah > Artikel > pembangunan bahagian belakang > Bahasa manakah yang dipinjam oleh bahasa go?
Bahasa go menggunakan C, Pascal dan CSP. Banyak ciri bahasa Go dipinjam daripada tiga nenek moyangnya: C, Pascal dan CSP. Sintaks Go, jenis data, aliran kawalan, dll. diwarisi daripada pakej Go, berorientasikan objek dan idea lain diperoleh daripada cawangan Pascal dan ciri bahasa terbesar Go, model konkurensi coroutine berdasarkan komunikasi saluran paip, dipinjam daripada cawangan CSP.
Persekitaran pengendalian tutorial ini: sistem Windows 7, GO versi 1.18, komputer Dell G3.
1. Bahasa Go direka untuk menyelesaikan masalah yang dihadapi oleh pembangunan Google pada masa itu:
2 Pain point dalam pembangunan Google:
3. Bagaimana untuk menyelesaikan masalah semasa dan titik kesakitan?
Go berharap untuk menjadi bahasa C era Internet. Falsafah pengaturcaraan asas kebanyakan bahasa peringkat sistem (termasuk Java dan C#) berasal daripada C++, seterusnya membangunkan sifat berorientasikan objek C++. Tetapi pereka bahasa Go mempunyai pandangan yang berbeza. Mereka percaya bahawa bahasa C patut dipelajari. Akar populariti bahasa C yang kekal ialah ia cukup mudah. Oleh itu, bahasa Go cukup mudah.
Jadi, matlamat mereka dalam mereka bentuk Go pada masa itu adalah untuk menghapuskan semua jenis kelambatan dan kerumitan, dan untuk menambah baik pelbagai ketidakcekapan dan skalabiliti. Go direka oleh dan untuk mereka yang membangunkan sistem besar ia adalah untuk menyelesaikan masalah kejuruteraan, bukan untuk mengkaji reka bentuk bahasa itu untuk menjadikan pengaturcaraan kami lebih selesa dan mudah;
Walau bagaimanapun, memandangkan beberapa realiti dalaman Google pada masa itu, seperti ramai jurutera yang datang dari jabatan C, bahasa yang direka bentuk baharu mestilah mudah dipelajari, sebaik-baiknya bahasa yang serupa dengan bahasa C; dikeluarkan dalam 20 tahun , jadi bahasa yang baru direka bentuk mestilah moden (seperti GC terbina dalam) dan situasi lain. Akhirnya, berdasarkan pengalaman praktikal, mereka mereka bentuk bahasa Go ke arah matlamat mereka.
4. Ciri bahasa Go:
1. Keluk pembelajaran mudah
Bahasa Go mempunyai sintaks yang mudah, termasuk sintaks seperti C. Oleh kerana bahasa Go mudah dipelajari, pelajar kolej biasa boleh menulis aplikasi berprestasi tinggi yang boleh digunakan dalam beberapa minggu. Semua orang di China mengejar kelajuan, yang merupakan salah satu sebab mengapa Go begitu popular di China.
Ciri tatabahasa bahasa Go adalah terlalu mudah, sangat mudah sehingga anda tidak boleh melakukan apa-apa helah Ia adalah mudah, keluk pembelajaran adalah sangat rendah, dan memang begitu sangat cepat untuk bermula.
2. Kecekapan: masa penyusunan pantas, kecekapan pembangunan yang tinggi dan kecekapan operasi
Berbanding dengan kelajuan kompilasi Java dan C++ yang lembap semasa proses pembangunan, masa penyusunan cepat Go merupakan faktor utama Kecekapan kelebihan. Go mempunyai kecekapan operasi hampir dengan C dan kecekapan pembangunan hampir dengan PHP.
Falsafah bahasa C adalah mempercayai pengaturcara, mengekalkan bahasa yang kecil, tidak melindungi lapisan bawah dan mesra bawah, dan memberi perhatian kepada kecekapan dan prestasi pelaksanaan daripada bahasa tersebut. Sikap Python adalah untuk mencapai sebanyak mungkin dengan kod sesedikit mungkin. Jadi saya dapat merasakan bahawa bahasa Go mahu menyatukan C dan Python, yang merupakan perkara yang hebat.
3. Berasal dari keluarga ternama dan mempunyai keturunan tulen
Sebab Go dikatakan dari keluarga ternama boleh dilihat dari pencipta bahasa Go. Bahasa Go benar-benar tulen dalam keturunan. Kedua, bahasa Go berasal daripada Google Sudah semestinya populariti dan kekuatan Google dalam industri adalah semula jadi. Google telah mengumpulkan sekumpulan orang yang berbakat untuk melancarkan bahasa pengaturcaraan baharu dalam situasi di mana pelbagai bahasa pengaturcaraan bersaing untuk hegemoni, ia mempunyai pertimbangan strategiknya. Dan berdasarkan aliran pembangunan bahasa Go, Google masih mementingkan kegemaran baharunya, Go secara semula jadi mempunyai masa depan pembangunan yang baik.
4. Percuma dan cekap: gabungan idea, antara muka yang tidak mengganggu
Bahasa Go boleh dikatakan sebagai gabungan sempurna antara kecekapan pembangunan dan operasi kecekapan, sokongan asli untuk pengaturcaraan serentak. Bahasa Go menyokong semua paradigma pengaturcaraan semasa, termasuk pengaturcaraan prosedur, pengaturcaraan berorientasikan objek, pengaturcaraan berorientasikan antara muka dan pengaturcaraan berfungsi. Pengaturcara boleh memilih apa yang mereka perlukan, menggabungkannya secara bebas, dan bermain apa sahaja yang mereka mahu.
5. Pustaka standard yang berkuasa
Ini termasuk aplikasi Internet, pengaturcaraan sistem dan pengaturcaraan rangkaian. Perpustakaan standard dalam Go pada asasnya sangat stabil, terutamanya tiga perpustakaan yang saya nyatakan di sini, lapisan rangkaian dan perpustakaan lapisan sistem sangat praktikal. **Pustaka lib bahasa Go adalah kecil tetapi lengkap. **Perpustakaan lib bahasa Go pada asasnya mengandungi kebanyakan perpustakaan yang biasa digunakan Walaupun sesetengah perpustakaan tidak begitu baik, saya rasa ia tidak menjadi masalah, kerana saya percaya masalah ini akan diselesaikan dalam pembangunan masa depan.
6. Penggunaan yang mudah: fail binari, Salin penggunaan
Ini adalah sebab terbesar mengapa ramai orang memilih Go Kerana penggunaan sangat mudah, ramai orang kini menggunakan Go untuk membangunkan program operasi dan penyelenggaraan .
7. Konkurensi mudah
** Pengaturcaraan selari dan tak segerak hampir tidak menyakitkan. **Dua artifak bahasa Go, Goroutine dan Channel, hanyalah berkat besar untuk pengaturcaraan serentak dan tak segerak. Kaedah konkurensi dan tak segerak bahasa seperti C, C++, Java, Python dan JavaScript terlalu kompleks untuk dikawal dan terdedah kepada ralat, dan Go menyelesaikan masalah ini dengan sangat elegan dan lancar. Bagi pengaturcara yang telah mengalami konkurensi dan pengaturcaraan tak segerak selama bertahun-tahun, ini adalah perasaan yang menarik perhatian. Go ialah bahasa yang sangat cekap dengan sokongan tinggi untuk concurrency. Go ialah bahasa pengaturcaraan yang dibangunkan untuk data besar, perkhidmatan mikro dan konkurensi.
Pergi sebagai bahasa yang berusaha untuk menjadikan perkara mudah. Ia tidak memperkenalkan banyak konsep baharu, tetapi memberi tumpuan kepada mencipta bahasa mudah yang sangat pantas dan mudah digunakan. Satu-satunya inovasi adalah goroutine dan saluran. Goroutines ialah pendekatan berorientasikan benang ringan Go dan saluran ialah kaedah komunikasi pilihan antara goroutine.
Kos untuk mencipta Goroutines adalah sangat rendah, hanya memerlukan beberapa ribu bait memori tambahan, yang memungkinkan untuk menjalankan ratusan atau bahkan ribuan goroutine secara serentak. Komunikasi antara goroutine boleh dicapai dengan bantuan saluran. Goroutine dan kaedah konkurensi berasaskan saluran menjadikannya sangat mudah untuk menggunakan semua teras CPU yang tersedia dan mengendalikan IO serentak. Berbanding dengan Python/Java, menjalankan fungsi pada goroutine memerlukan kod minimum.
8. Kestabilan
Go mempunyai semakan kompilasi yang kuat, piawaian pengekodan yang ketat dan alatan kitaran hayat perisian yang lengkap, serta mempunyai kestabilan yang kukuh, kestabilan adalah yang terpenting. Jadi mengapa Go lebih stabil daripada program lain? Ini kerana Go menyediakan alatan untuk setiap aspek kitaran hayat perisian (pembangunan, ujian, penggunaan, penyelenggaraan, dll.), seperti alat go, gofmt, go test.
Banyak ciri bahasa Go dipinjam daripada tiga nenek moyangnya: C, Pascal dan CSP. Sintaks Go, jenis data, aliran kawalan, dsb. diwarisi daripada pakej C. Go dan idea berorientasikan objek diperoleh daripada cawangan Pascal ciri bahasa terbesar Go, model konkurensi coroutine berdasarkan komunikasi saluran paip, dipinjam daripada cawangan CSP. .
Java
bahasa tersusun dengan kelajuan sederhana (2.67s) Pada masa ini, tapak web besar ditulis dalam Java, seperti Taobao, JD.com, dsb . Ciri-ciri utamanya ialah kestabilan, sumber terbuka yang baik, set spesifikasi penulisannya sendiri, kecekapan pembangunan sederhana, dan pada masa ini ia merupakan bahasa paling arus perdana. Sebagai nama besar dalam bahasa pengaturcaraan. Mempunyai keterlihatan dan pangkalan pengguna terbesar. Sekuat mana pun angin, saya tetap teguh dan tidak berganjak. Biarlah dia menjadi kuat, biarlah dia menjadi kuat, dan angin bertiup ke atas bukit-bukit;
c#
Kelajuan pelaksanaan adalah pantas (4.28), kesukaran pembelajaran adalah sederhana, dan kelajuan pembangunan adalah sederhana. Walau bagaimanapun, disebabkan oleh banyak kekurangan C#, tapak web terdahulu yang besar seperti JD.com dan Ctrip semuanya dibangunkan dalam C#, tetapi kini mereka telah dipindahkan ke Java.
C/C++
Nenek moyang bahasa pengaturcaraan sedia ada, dari mana semua bahasa lain dilahirkan. Kelajuan pelaksanaan terpantas tidak dapat ditandingi. Tetapi ia adalah yang paling rumit untuk ditulis dan sukar untuk dikembangkan.
Javascript
Kecantikan yang unik dan sombong dalam bahasa pengaturcaraan. Keupayaan pemprosesan bahagian hadapan tidak dapat ditandingi oleh bahasa lain. Keupayaan pemprosesan bahagian belakang js yang sedang dibangunkan juga luar biasa. Kedua-dua hujung depan dan belakang dijaga, siapa lagi?
Python
Bahasa skrip, paling perlahan (258s), kodnya ringkas, kemajuan pembelajaran pendek, dan kelajuan pembangunan pantas. Douban ditulis dalam python. Rangka kerja pelayan terkenal untuk Python termasuk django dan flask. Walau bagaimanapun, python tidak stabil untuk projek besar, jadi beberapa syarikat yang menggunakan python kemudiannya berhijrah ke java.
Scala
Bahasa tersusun yang sepuluh kali lebih pantas daripada Python dan serupa dengan Java, tetapi kemajuan pembelajaran adalah perlahan, dan dalam pengaturcaraan sebenar, jika anda tidak mahir dalam bahasa itu, ia mudah menyebabkan kemerosotan prestasi yang serius. Kemudian, sebagai contoh, Yammer berhijrah dari scala ke java. Rangka kerja perkhidmatan mikro termasuk lagom, dsb.
Pergilah
Bintang kecil dalam dunia pengaturcaraan. Keupayaan konkurensi yang tinggi tidak dapat ditandingi. Ia mempunyai kod ringkas dan kelajuan pembangunan yang sama seperti Python, tetapi juga mempunyai kecekapan pelaksanaan yang sama seperti bahasa C, dengan kelebihan yang luar biasa.
Sesiapa yang telah berkecimpung dalam industri perisian untuk sementara waktu tahu bahawa tiada bahasa pengaturcaraan universal, tiada rangka kerja pembangunan universal, dan tiada penyelesaian universal. Kemunculan mana-mana teknologi baru harus dikaitkan dengan ketidakpuasan hati yang kuat sesetengah orang dengan teknologi lama. Bahasa Go tidak terkecuali. Sebagai contoh, pengurusan pergantungan bahasa C, pengumpulan sampah C++, sistem jenis kikuk Java dan spesifikasi Java EE yang berat, dan prestasi bahasa skrip (seperti PHP, Python dan Ruby) sering diperdebatkan dan dikeluhkan. oleh banyak komuniti pemaju.
Kelebihan bahasa Go
Bahasa Go ialah mahir dalam pelbagai paradigma pengaturcaraan dan merangkumi idea Kejuruteraan perisian yang sangat baik dan prinsip, ciri-cirinya membolehkan pembangun membangun, menguji dan menggunakan program dengan cepat, meningkatkan kecekapan pengeluaran dengan pesat. Mari kita lihat kelebihan bahasa Go berbanding bahasa arus perdana yang lain.
1) Berbanding dengan C/C++, bahasa Go mempunyai pengurusan pergantungan yang jelas dan mekanisme pengumpulan sampah automatik sepenuhnya, jadi volum kodnya dikurangkan dengan banyaknya dan kecekapan pembangunan dipertingkatkan dengan sangat baik.
2) Berbanding dengan Java, bahasa Go mempunyai sistem jenis ringkas, paradigma pengaturcaraan berfungsi dan model pengaturcaraan serentak lanjutan. Akibatnya, blok kodnya lebih kecil, lebih ringkas, lebih boleh digunakan semula dan berjalan lebih pantas dalam persekitaran pengkomputeran berbilang teras.
3) Untuk PHP, bahasa Go adalah lebih serba boleh dan standard. Ini menjadikannya lebih sesuai untuk membina perisian yang besar dan lebih baik mengatur pelbagai modul bersama-sama. Dari segi prestasi, PHP tidak boleh bersaing dengan Go.
4) Untuk Python/Ruby, kelebihan Go terletak pada sintaksnya yang ringkas, sistem jenis tidak mengganggu dan rata serta model pengaturcaraan berbilang paradigma semula jadi. Seperti PHP, Python dan Ruby adalah bahasa tafsiran yang ditaip secara dinamik, yang bermaksud ia berjalan lebih perlahan daripada bahasa yang disusun secara statik.
Ringkasnya, kelebihan terbesar bahasa Go berbanding kebanyakan bahasa arus perdana semasa ialah kecekapan pengeluarannya yang tinggi, pengurusan pergantungan lanjutan dan sistem jenis, dan sokongan pengkomputeran serentak asli. Oleh itu, bahasa Go telah mendapat perhatian dan nikmat daripada pembangun dalam pelbagai bidang sejak dikeluarkan.
Kelemahan bahasa Go
Seterusnya, mari kita lihat secara objektif kawasan di mana bahasa Go semasa perlu diperkukuh atau diperbaiki (walaupun sesetengah Gophers tidak tidak fikir begitu).
1) Dari perspektif pengkomputeran teragih, bahasa Go tidak sematangan Erlang (beberapa pakej kod bahasa Go telah muncul dalam hal ini, dan kita sudah boleh melihat masa depan yang cerah).
2) Dari perspektif kelajuan berjalan program, walaupun bahasa Go adalah setanding dengan Java, ia tidak sebaik C (jurang sentiasa mengecil).
3) Dari perspektif pustaka pihak ketiga, bilangan pustaka bahasa Go jauh lebih sedikit berbanding beberapa bahasa arus perdana lain (seperti Java, Python, Ruby, dll.). Walau bagaimanapun, berbanding dengan usia bahasa Go, sudah terdapat beberapa perpustakaan pihak ketiga yang dilaksanakan menggunakannya, dan bilangannya terus berkembang dengan pesat.
Selain itu, pada tahap yang lebih mendalam, terdapat juga beberapa aspek yang tidak memuaskan dalam pustaka standard bahasa Go, seperti yang diperincikan di bawah.
1) Dari perspektif sintaks bahasa, tidak banyak gula sintaksis dalam sintaks bahasa Go, yang membuatkan ramai peminat Python dan Ruby menolaknya. Di samping itu, terdapat begitu banyak cara untuk menetapkan nilai kepada pembolehubah sehingga ia agak menyusahkan. Perkara yang paling dikesali dan yang paling saya sayangi ialah bahasa Go tidak menyokong jenis generik tersuai.
2) Dari perspektif pengaturcaraan serentak, model konkurensi yang disediakan oleh bahasa Go sangat berkuasa, tetapi terdapat juga beberapa peraturan penulisan yang perlu difahami. Jika tidak, mudah untuk melangkah ke "lubang". Malah, tidak disyorkan untuk memanggil ini "lubang". Kerana kebanyakan yang dipanggil "lubang" ini digali oleh kita sendiri kerana kita tidak biasa dengan prinsipnya.
3) Dari perspektif kutipan sampah, kutipan sampah bahasa Go menggunakan algoritma tanda dan sapu serentak (Concurrent Mark and Sweep, CMS). Walaupun ia adalah operasi serentak dan mengambil masa yang lebih sedikit daripada operasi bersiri, ia masih akan menghentikan operasi semua program pengguna semasa pengumpulan sampah. Ini sedikit sebanyak akan menjejaskan aplikasi yang mempunyai keperluan masa nyata yang tinggi. Walau bagaimanapun, dalam versi selepas bahasa Go 1.3, masalah ini telah bertambah baik.
Walaupun bahasa Go masih mempunyai beberapa kelemahan, secara keseluruhannya, ia sudah menjadi bahasa pengaturcaraan tujuan am yang sangat baik. Selain itu, bahasa Go akan menumpukan pada prestasi, kebolehpercayaan, kemudahalihan dan beberapa peningkatan ciri dalam pembangunan masa depannya, jadi kelemahan di atas akan beransur-ansur lemah dan hilang apabila versi berjalan.
[Cadangan berkaitan: Pergi tutorial video, Pengajaran pengaturcaraan]
Atas ialah kandungan terperinci Bahasa manakah yang dipinjam oleh bahasa go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!