لماذا يتم تجميع Go بهذه السرعة؟ أسرار سرعة البناء
مرحباً بالجميع! لقد بدأت مؤخراً في تعلم Go ولاحظت شيئاً أذهلني — سرعة التجميع. في مشروعي بلغة Python اعتدت الانتظار بضع ثوانٍ حتى يبدأ الاختبار، ولكن هنا حتى المشروع الكبير يتم تجميعه في أجزاء من الثانية. كتبت برنامجاً بسيطاً للمقارنة:
```go
package main
import "fmt"
func main() {
fmt.Println("Hello, Go!")
}
```
التجميع عبر `go build` يستغرق حرفياً 0.2 ثانية. حاولت إضافة عدة imports و functions لكن السرعة لم تتغير تقريباً. للمقارنة، في C++ مع CMake حتى hello world البسيط يستغرق وقتاً أطول.
أنا مهتم بمعرفة كيف يتم تحقيق هذه السرعة؟ هل هي ميزة اللغة، المترجم (compiler) أم البنية (architecture)؟ سمعت أن Go لا تستخدم preprocessor مثل C/C++، وأن لديها نموذج import بسيط. ولكن إلى أي مدى يؤثر هذا؟ ربما هناك بعض العوائق، وفي المشاريع الكبيرة تنخفض السرعة؟
أود فهم التفاصيل التقنية: كيف يعمل مترجم Go، ولماذا هو سريع؟