ย้อนกลับไปในสมัยนั้นนักพัฒนาทำงานใกล้ชิดกับโลหะมากขึ้น C คือการแทนที่ระดับที่สูงขึ้นสำหรับการประกอบซึ่งใกล้เคียงกับฮาร์ดแวร์มากที่สุดเท่าที่จะเป็นไปได้ดังนั้นจึงเป็นเรื่องปกติที่คุณต้องมีพอยน์เตอร์เพื่อให้มีประสิทธิภาพในการแก้ปัญหาการเข้ารหัส อย่างไรก็ตามพอยน์เตอร์เป็นเครื่องมือที่คมซึ่งสามารถสร้างความเสียหายได้อย่างมากหากใช้อย่างไม่ระมัดระวัง นอกจากนี้การใช้พอยน์เตอร์โดยตรงเปิดโอกาสให้เกิดปัญหาด้านความปลอดภัยมากมายซึ่งไม่ได้เป็นปัญหาในตอนนั้น (ในปี 1970 อินเทอร์เน็ตประกอบด้วยคอมพิวเตอร์ประมาณสองสามเครื่องในมหาวิทยาลัยสองแห่งและมันก็ไม่ได้เรียกเช่นนั้น ... ) แต่มีความสำคัญเพิ่มมากขึ้นเรื่อย ๆ ทุกวันนี้ภาษาระดับสูงได้รับการออกแบบอย่างมีสติเพื่อหลีกเลี่ยงพอยน์เตอร์ของหน่วยความจำแบบดิบ
การพูดว่า "สิ่งขั้นสูงที่ทำใน VB.Net หรือ Java เป็นไปไม่ได้ใน C" แสดงมุมมองที่ จำกัด มากเพื่อพูดอย่างน้อย :-)
ประการแรกภาษาทั้งหมดเหล่านี้ (แม้แต่ชุดประกอบ) กำลังทัวริงสมบูรณ์ดังนั้นในทางทฤษฎีสิ่งใดก็ตามที่เป็นไปได้ในภาษาเดียวเป็นไปได้ในทุกภาษา แค่คิดว่าจะเกิดอะไรขึ้นเมื่อชิ้นส่วนของรหัส VB.Net หรือ Java ถูกคอมไพล์และดำเนินการ: ในที่สุดมันจะถูกแปลเป็น (หรือแมปเป็น) รหัสเครื่องเพราะนั่นเป็นสิ่งเดียวที่เครื่องเข้าใจ ในภาษาที่คอมไพล์เช่น C และ C ++ คุณสามารถรับรหัสเต็มของเครื่องได้เทียบเท่ากับซอร์สโค้ดระดับสูงกว่าเดิมซึ่งเป็นไฟล์ / ไลบรารีที่สามารถเรียกทำงานได้หนึ่งรายการขึ้นไป ในภาษาที่ใช้ VM นั้นเป็นเรื่องยุ่งยากมากขึ้น (และอาจไม่สามารถทำได้) เพื่อให้ได้การแทนค่ารหัสเครื่องทั้งหมดของโปรแกรมของคุณ แต่ในที่สุดมันก็มีอยู่ที่ใดที่หนึ่งภายในส่วนลึกของระบบ runtime และ JIT
แน่นอนว่ามันเป็นคำถามที่แตกต่างอย่างสิ้นเชิงว่าการแก้ปัญหาบางอย่างนั้นทำได้ในภาษาใดภาษาหนึ่งหรือไม่ ไม่มีนักพัฒนาที่มีเหตุผลจะเริ่มเขียนแอปพลิเคชันเว็บในแอสเซมบลี :-) แต่มันมีประโยชน์ที่ต้องจำไว้ว่าภาษาระดับสูงส่วนใหญ่หรือทั้งหมดนั้นถูกสร้างขึ้นจากจำนวนรันไทม์และไลบรารี่ของห้องสมุดเป็นจำนวนมาก ซึ่งมีการใช้งานในภาษาระดับต่ำกว่าปกติใน C
เพื่อให้ได้คำถาม
คุณคิดว่าความรู้เกี่ยวกับตัวชี้ไปยังคนหนุ่มสาว [... ] เป็นสิ่งสำคัญหรือไม่?
แนวคิดที่อยู่เบื้องหลังตัวชี้เป็นร้าย นี่เป็นแนวคิดที่สำคัญมากและ IMHO โปรแกรมเมอร์ที่ดีทุกคนควรเข้าใจในระดับหนึ่ง แม้ว่าบางคนจะทำงานด้วยภาษาระดับสูงเพียงอย่างเดียว การไม่เข้าใจสิ่งนี้หมายความว่าไม่สามารถใช้เครื่องมือที่มีศักยภาพทั้งชั้นได้อย่าง จำกัด การ จำกัด ความสามารถในการแก้ปัญหาอย่างจริงจังในระยะยาว
ดังนั้นคำตอบของฉันคือใช่ถ้าคุณต้องการเป็นโปรแกรมเมอร์ที่ดีจริง ๆ คุณต้องเข้าใจพอยน์เตอร์ด้วยเช่นกัน (รวมถึงการเรียกซ้ำ - นี่คือบล็อกที่สะดุดอื่น ๆ สำหรับนักพัฒนามืออาชีพ) คุณอาจไม่จำเป็นต้องเริ่มต้นด้วย - ฉันไม่คิดว่าภาษา C เป็นภาษาที่เหมาะที่สุดในปัจจุบัน แต่ในบางจุดเราควรทำความคุ้นเคยกับการอ้อมค้อม หากไม่มีมันเราจะไม่สามารถเข้าใจได้ว่าเครื่องมือไลบรารีและกรอบงานที่เราใช้นั้นทำงานอย่างไร และช่างฝีมือที่ไม่เข้าใจว่าเครื่องมือของเขาทำงานได้อย่าง จำกัด มากเพียงใด ยุติธรรมพอเราอาจเข้าใจในภาษาการเขียนโปรแกรมระดับสูงเช่นกัน บททดสอบบทสนทนาที่ดีหนึ่งข้อนั้นมีการใช้รายการที่เชื่อมโยงซ้ำสองครั้งอย่างถูกต้องหากคุณสามารถทำได้ในภาษาที่คุณชื่นชอบคุณสามารถอ้างว่าคุณเข้าใจทางอ้อมได้ดีพอ
แต่ถ้าไม่ใช่เพื่อสิ่งอื่นเราควรทำเพื่อเรียนรู้การเคารพโปรแกรมเมอร์เก่าที่จัดการเพื่อสร้างสิ่งที่ไม่น่าเชื่อโดยใช้เครื่องมือง่ายๆที่พวกเขามี (เทียบกับสิ่งที่เรามีตอนนี้) เราทุกคนยืนอยู่บนไหล่ของยักษ์และเป็นการดีที่เราจะยอมรับสิ่งนี้แทนที่จะทำท่าเราเป็นยักษ์เอง