Untuk siapa saya menulis? Bagi mereka yang menulis dalam php (mungkin juga python, ruby) dan telah mendengar tentang Go, tetapi belum memutuskan untuk mempelajarinya secara lebih rinci. Saya akan memberikan alasan mengapa perlu belajar bahasa pemrograman ini dan mengapa masa depan ada di dalamnya dalam pengembangan web.
Saya telah menulis php selama sekitar 12 tahun dan ini adalah bahasa pemrograman yang sangat baik, 90% dari seluruh situs internet ditulis di dalamnya. Hampir setiap CMS populer ditulis dalam PHP.
Mengapa saya beralih (atau lebih tepatnya beralih) ke Go?
Multithreading
Pada prinsipnya, semuanya jelas di sini. Multithreading memberikan manfaat luar biasa bagi bahasa pemrograman. Di Go, multithreading diimplementasikan dengan sangat sederhana dan ekspresif. Pada paragraf berikutnya saya akan mengungkapkan manfaat yang mempengaruhi pengembangan situs.
Lingkungan
Apa yang saya perlukan untuk meningkatkan situs reguler di php?
Server di Linux, instal Nginx, terkadang Apache, instal PHP, ekstensi, database, Memcache, konfigurasikan Cron. Agar tidak menyakitkan menyakitkan untuk mempertahankan server, saya meletakkan semuanya di Docker. Seperti inilah proyek PHP Docker biasa saya.

Apakah itu familier?
Apa yang Anda butuhkan untuk meningkatkan situs web reguler di Go?
Server di Linux dan instal Go. Itu saja. Keren Ini karena Go multi-utas dan fungsionalitas apa pun dapat dipindahkan ke aliran terpisah, misalnya, server web, layanan mikro, antrian, mahkota, dll. Banyak hal sudah diterapkan dalam paket dasar.
Bagaimana proyek Docker saya untuk Go terlihat? Padahal, itu tidak ada sama sekali. Saya meletakkan file Docker langsung di folder dengan kode situs atau layanan. Jika situs memiliki layanan mikro tambahan (misalnya, untuk bekerja dengan antrian), maka Dockerfile-nya ditempatkan di folder dengan layanan ini.

Ambang entri
Belajar bahasa Go itu mudah. Anda dapat menelusuri semua dokumentasi dalam beberapa jam dan memahami prinsip bahasa tanpa memperdalam. Saya pikir Go memiliki dokumentasi terpendek bahasa kompilasi populer.
Di situs web resmi, Anda dapat mengikuti
tur studi yang akan mengungkapkan semua aspek bahasa.
Untuk memperdalam pengetahuan teoritis Anda kepada para profesional dalam waktu yang sangat singkat. Saya merekomendasikan
kursus dari Mail.ru di YouTube .
Keterbacaan kode
Apakah Anda memiliki sedemikian rupa sehingga Anda membuka kode, modul, plugin orang lain, dll. dan Anda mengerti bahwa Anda tidak mengerti apa-apa. Dan untuk memahami seluk-beluknya, Anda harus setidaknya melalui kode utama dengan debug.
Di Go, dalam kebanyakan kasus, membuka beberapa kode ganas untuk 200 file dan setiap file kode handuk, Anda terkejut bahwa Anda dapat memahaminya.
IDE
Menulis di JetBrains IDE di bawah PHP dan di bawah Go adalah hal yang sangat berbeda. Penyelesaian otomatis berfungsi di mana saja dan kapan saja (99% kasus). Anda bisa gagal dalam metode apa pun, dalam cara apa pun!
Tidak ada rem sama sekali. Dengan kata-kata secara umum, sulit untuk dijelaskan, Anda perlu mencoba. Ketika Anda mulai menulis sepenuhnya di Goland, Anda memahami bahwa Anda tidak lagi ingin kembali ke PhpStorm.
Tahun sebelumnya untuk hylood, saya bertanya kepada Dmitry Stogov tentang rencana untuk memperkenalkan multithreading "asli" dalam PHP dan sepertinya kami tidak akan melihatnya, tetapi sangat disayangkan.
Debugging dan pengujian
Banyak pengembang PHP tidak menggunakan debugging sama sekali karena perlu diinstal secara terpisah sebagai ekstensi, itu juga perlu dikonfigurasi dengan benar dan banyak hanya tidak mengganggu dan menggunakan output ke halaman. Di Go, debug itu bawaan, pada kenyataannya, Anda tidak perlu mencari tahu cara kerjanya di dalam, jika Anda menggunakan IDE, cukup buat breakpoint dan mulai program.
Dengan pengujian hal-hal yang kira-kira sama, Anda tidak perlu menghubungkan seluruh kerangka kerja ke proyek, itu sudah dibangun ke dalam paket dasar dan IDE.
Performa
Go jauh lebih cepat daripada PHP dalam hal kecepatan eksekusi dan konsumsi memori. Tentu saja, membandingkannya tidak benar, karena Go adalah bahasa yang dikompilasi. Ada artikel yang bagus dalam perbandingan produktivitas
di HabrΓ© . Sebagai contoh, saya memiliki Mirkoservice di lingkungan Docker penuh, yang digunakan untuk menempati 100-200 mb RAM, beralih ke Go membutuhkan 1-2 mb. Peningkatan kecepatan adalah 2-5 kali.
Ringkasan
Saya suka PHP dan akan terus menulis sesuai kebutuhan, tetapi Go adalah kelanjutan pengembangan bagi saya dan jika saya menulis ulang PHP dari awal, itu akan menjadi bahasa Go.