O günlerde, geliştiriciler metale çok daha yakın çalışıyorlardı. C aslında montaj için neredeyse mümkün olan en yakın donanıma sahip olan daha üst seviye bir değiştirmeydi, bu yüzden kodlama problemlerini çözmede etkin olması için işaretçilere ihtiyacınız vardı. Ancak, işaretçiler dikkatsizce kullanılırsa büyük hasara neden olabilecek keskin araçlardır. Ayrıca, doğrudan işaretçilerin kullanılması, o zamanlar sorun olmayan pek çok güvenlik sorununun ortaya çıkmasına neden oluyor (1970'de, internet birkaç üniversitede birkaç düzine makineden oluşuyordu ve bu şekilde çağrılmadı bile). ...), ancak o zamandan beri daha önemli hale geldi. Bu nedenle günümüzde yüksek seviye diller, ham bellek işaretçilerinden kaçınmak için bilinçli olarak tasarlanmıştır.
"VB.Net veya Java’da C: C’de yapılması mümkün değildir" demek, çok az bir şey söylemek için çok sınırlı bir bakış açısı gösterir.
Her şeyden önce, tüm bu diller (hatta meclis) tamamlanmıştır, böylece teoride mümkün olan her dilde mümkün olan her şey mümkündür. Sadece bir parça VB.Net veya Java kodu derlendiğinde ve çalıştırıldığında ne olacağını düşünün: sonunda, makine koduna çevrilir (veya haritalanır), çünkü makinenin anladığı tek şey budur. C ve C ++ gibi derlenmiş dillerde, bir veya daha fazla çalıştırılabilir dosya / kitaplık olarak, orijinal üst seviye kaynak koduna eşdeğer makine kodunun tamamını alabilirsiniz. VM tabanlı dillerde, programınızın tüm eşdeğer makine kod gösterimini elde etmek daha zordur (ve mümkün olmayabilir), ancak çalışma zamanı sisteminin ve JIT'in derin girintileri içinde yine de bir yerdedir.
Şimdi, elbette, bazı çözümlerin belirli bir dilde uygulanabilir olup olmadığı tamamen farklı bir sorudur. Hiçbir mantıklı geliştirici montajda bir web uygulaması yazmaya başlamaz :-) Ancak, bu üst düzey dillerin çoğunun veya tamamının çok miktarda çalışma zamanı ve sınıf kitaplığı kodunun, büyük bir yığınının üzerine kurulu olduğunu akılda tutmak yararlıdır. daha düşük bir dilde, tipik olarak C dilinde uygulanır.
Yani soruya ulaşmak için,
Gençlere yönelik işaretçiler hakkındaki bilgilerin […] önemli olduğunu düşünüyor musunuz?
İşaretçilerin arkasındaki kavram dolaylıdır . Bu çok önemli bir kavram ve IMHO her iyi programcının belli bir seviyede kavramasını sağlamalı. Birisi yalnızca daha yüksek seviyeli dillerle çalışsa bile, aktarma ve referanslar hala önemlidir. Bunun anlaşılmaması, uzun vadede bir kişinin problem çözme yeteneğini ciddi şekilde sınırlayan, çok güçlü bir araç sınıfının tamamını kullanamamak anlamına gelir.
Bu yüzden cevabım evet, gerçekten iyi bir programcı olmak istiyorsanız, işaretçileri de anlamalısınız (özyinelemenin yanı sıra - bu, tomurcuklanan geliştiriciler için diğer tökezleyen bloktur). Başlamanız gerekmeyebilir - C'nin bugünlerde ilk dil olarak uygun olduğunu düşünmüyorum. Ancak bir noktada, bir dolaylı anlatıma aşina olunmalıdır. Onsuz, kullandığımız araçların, kütüphanelerin ve çerçevelerin gerçekte nasıl çalıştığını asla anlayamayız. Ve aletlerinin nasıl çalıştığını anlamayan bir zanaatkar çok kısıtlıdır. Yeterince adil, bir de bunu daha üst seviye programlama dillerinde kavrayabilir. İyi bir turnusol testi, iki kat bağlantılı bir listeyi doğru şekilde uygulamaktır - eğer en sevdiğiniz dilde yapabilirseniz, dolaylı olarak yeterince iyi anladığınızı iddia edebilirsiniz.
Ancak, başka hiçbir şey için değilse, sahip oldukları gülünç basit araçları kullanarak inanılmaz şeyler inşa etmeyi başarmış yaşlı programcılara saygı duymayı öğrenmeliyiz. Hepimiz devlerin omuzlarında duruyoruz ve devleri kendimizmiş gibi davranmak yerine, bunu kabul etmemiz bize iyi geliyor.