Bir programlama dilinin içindekileri anlamam gerekir mi?


11

Python'a yeni başlıyorum ve şimdiye kadar çok hoşuma gitti. Çok sık aklıma gelen bir soru, bir programlama dilinin İçsellerini (benim durumum Python'da olduğu gibi) anlamam ve öğrenmem gerekip gerekmediğidir. Bildiğiniz gibi Python'un kendisi C ile yazılmıştır.

Benim sorum şu: Bu dilde yetkin veya akıcı olmak için bir programlama diline ne kadar derin dalmak zorundasınız. Bu soruyu "doğal" dillerle karşılaştırıyorum. Anadilimde dilbilgisi ile ilgili her ayrıntıyı bilmiyorum ama kendimi o dilde hiç sorun yaşamadan ifade edebiliyorum. Ben bir dilde akıcı konuştuğum zamandır. Bu programlama dilleri için de geçerli mi?


4
Performans konusunda endişelenmeniz gerektiğinde dahili olanlar önem kazanır.
Robotu Gort

7
CPython ve PyPy içleri hakkında oldukça az şey biliyorum, ancak% 80'inin Python programlamam için hiçbir faydası yok (hatta dikkat dağıtıcı olduğu kadar zararlı). Diğer% 20'lik şeyleri bildiğime sevindim ve sadece performans için değil, aynı zamanda aptal hata mesajlarını anlamak ve taşınabilir olmayan davranışlardan uzak durmak için de.


2
Hayır ve hayır. Kesinlikle bunların ikisinin bir kopyası değil.

1
"İçsel" ile ne demek istediğinize bağlıdır, ancak profesyonel C # ve Java programcılarının CLI veya JVM'yi en azından biraz anlamaları nadir değildir.
user16764

Yanıtlar:


8

O dilde programlar yazmak için bir programlama dilinin içi hakkında hiçbir şey bilmenize gerek yoktur . Ancak dili ne kadar iyi anlarsanız, programlarınız o kadar iyi olur.

  1. Veri yapıları ve algoritmalar bilgisi, görevinize en uygun veri yapılarını seçmenize yardımcı olacaktır. Bazı diller dahili olarak bu veri yapılarına sahiptir.

  2. Dilin "kültürünü" anlamak, "en iyi uygulamaları" izleyen programları yazmanıza yardımcı olur, böylece anlaşılmasını kolaylaştırır, daha sürdürülebilir ve daha iyi performans gösterir.

  3. Bu dil için bir derleyici (veya o dildeki başka bir dil için bir derleyici) yazmak, dili derinlemesine anlamanıza ve programlarınızı yalnızca ortalama olmanın ötesinde geliştirmenize yardımcı olabilir.

  4. Diğer dillerde (özellikle farklı bir paradigmanın dilleri) yetkin olmak, sizi ana dilinizde daha iyi bir programcı yapar, çünkü bu becerileri ve araçları ana dilinizde taşıyabilirsiniz.

Sonuç olarak, üzerinde program yazmak için bilgisayarınız hakkında hiçbir şey bilmenize gerek yoktur. Ancak bilgisayarınızın nasıl çalıştığını bilmek, bunun için program yazmanızı daha iyi hale getirir.


7

Anadilimde dilbilgisi ile ilgili her ayrıntıyı bilmiyorum ama kendimi o dilde hiç sorun yaşamadan ifade edebiliyorum. Ben bir dilde akıcı konuştuğum zamandır. Bu programlama dilleri için de geçerli mi?

Basitçe söylemek gerekirse, evet. Kendinizi iyi ifade edebildiğiniz (ve başkalarını anlayabildiğiniz) sürece, o dilde akıcı olarak kabul edilirsiniz.

Bununla birlikte, sadece akıcı olmak bazı işler için yeterli değildir. Belirli türdeki yazarlar, örnek topluluk önünde konuşma becerileri gerektiren işler ve dile odaklanan bazı akademisyenlerin bu dili "akıcıdan daha iyi" bilmesi gerekir. Benzer şekilde, bazı programcı spesiyaliteleri dil dillerinin bilgisini gerektirir, ancak çoğu insan için programlama dilini bilen numarayı nasıl soracağına veya bir çizburger siparişine eşittir.


0

Ben bir dil ile "yetkin" olarak tanımlamak istiyorum:

  • Sözdiziminin çoğunu ve başkalarının kodunda bulduğunuz yeni özellikleri araştırmak için yeterli bilgiyi anlayın.
  • Herhangi bir standart kütüphanenin ve / veya çerçevenin çalışma bilgisi ve kullanmanız gereken yeni bir şeyle ilgili resmi belgeleri bulma, okuma ve anlama yeteneği.
  • Dil için ortak deyimleri ve adlandırma kurallarını anlama ve kullanabilme.

Dilin nasıl çalıştığının bu listede olmadığını , ancak çok sayıda "öğrenme yeteneği" olduğuna dikkat edin. En azından içselleri iyi bir anlayışa sahip olmak yardımcı olabilir, ancak yetkin olmak gerekli değildir. Bununla birlikte, okuduğunuz belgelerdeki referansları anlayabileceğiniz hakkında yeterince bilmek çok iyi bir fikirdir.

Örneğin: Hem VB.NET hem de C # 'ın .NET'in IL (Orta Dil) için derlendiğini biliyorum, bu da daha sonra hedef çerçeve için derlendi. IL hakkında fazla bir şey bilmiyorum, ama onu gördüğümde tanımak için yeterli biliyorum ve genel anlamda belli şeyleri nasıl ele aldığını anlıyorum. Kendimi C # konusunda yetkin görüyorum, ancak VB.NET'te değil, "içler" aynı olsa da ve benim anlayışım derin değil.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.