Oldukları gibi farklı olduğu için, tüm ciddi, modern programlama dillerinin paylaştığı bir avuç ortak kavram var. Bunlardan ikisi, yukarıdaki sorularınızın cevabının özüdür.
Enter düğmesine basmamla ve python kodumdan oluşturulan makine kodunu CPU'umda yürütmek arasında ne gibi adımlar oluyor?
Kod ayrıştırılır, analiz edilir ve bir tercümana beslenir. Bunların hepsi derleyici teorisi olarak bilinen çok önemli bir bilgisayar bilimi alanıyla ilgilidir . Bir derleyici, kodu bir dilden (kaynak kodunuz) başka bir dile (genellikle üst düzey bir dilden diğerine çeviren "transpiller" olmasına rağmen) makine koduna çeviren bir programdır. Bu yıllarca araştırma yaparak geçirebileceğiniz çok büyük bir konudur, ancak temel sürüm:
Derleyici , kaynak kodunuzu okuyan ve geçerli Python (sizin durumunuzda) kodu olarak anlam ifade edip etmediğini anlamak için dilin sözdizimi kurallarını uygulayan bir çözümleyici olan bir çözümleyici ile başlar . Olmazsa, ayrıştırıcı bir hata atar ve derleyici kurtarır, ancak yaparsa ayrıştırıcı Özet Sözdizimi Ağacı veya kısaca AST olarak bilinenleri çıkarır. AST, düğümlerinin her biri sözdiziminin bir öğesini içeren bir ağaç veri yapısıdır. Örneğin, dersem x = 5
, bir ile bitebileceğini BinaryExpression
bir ile düğümün operator
değeri =
, bir Left
değeri ReferenceExpression(x)
ve bir Right
değeri IntegerLiteralExpression(5)
. Bütün programınız böyle büyük bir ağaçla temsil edilebilir.
Ayrıştırıcı bir AST ürettiğinde, ikinci aşama semantik analizdir . Sade İngilizce'de bu "AST'nin ne anlama geldiğini bulmak" anlamına gelir. Geçerli bir ayrıştırma olsa bile yasadışı bir şey yapıp yapmadığınızı belirlemek için AST'yi kontrol eder (örneğin, 3 argümanlı bir 1 argüman işlevini çağırmaya çalışıyor) ve yaparsanız hataları yükseltir. Aksi takdirde, AST'yi analiz eder ve makinenin anlamasını kolaylaştırmak için düzenlemeler yapar.
Üçüncü aşama kod üretimidir. Tamamen analiz edilmiş, basitleştirilmiş, geçerli bir AST'ye sahip olduğunuzda, onu AST'ye giren ve çıktı dilinde kod üreten jeneratöre beslersiniz. Bu senin bitmiş ürünün.
Python ile derleyici yerine tercüman kullanır. Bir tercüman, derleyici ile aynı şekilde çalışır, tek bir farkla: kod oluşturma yerine, çıktıyı belleğe yükler ve doğrudan sisteminizde çalıştırır. (Bunun nasıl gerçekleştiğinin kesin ayrıntıları farklı diller ve farklı tercümanlar arasında çılgınca değişebilir.)
Bunun Python çalışma zamanı sistemi ve / veya kütüphanesi ile ilgisi nedir?
En basit dillerin dışında tümü, büyük bir yüzdelik kullanıcı için önemli olan ve kullanıcıların bir nedenden ötürü kendi başlarına uygulaması zor olacak olan önceden tanımlanmış bir dizi işlevle gelir. Kodları, bu üçüncü taraf kütüphanelere ihtiyaç duymadan bu fonksiyonları arayabilir. (Örneğin, Python'da print
çıktı gönderir stdout
. Kendi başınıza uygulamada iyi şanslar!) Bu işlevler genellikle, kodun çalışma zamanında çağırabileceği ortak bir kitaplıkta toplanır, bu yüzden bilinir. dil çalışma zamanı kitaplığı olarak veya kısaca "çalışma zamanı" nı seçin.