การอ้อมบางชนิดเป็นสิ่งจำเป็นสำหรับโปรแกรมที่ซับซ้อน (เช่นโครงสร้างข้อมูลแบบเรียกซ้ำหรือขนาดตัวแปร) อย่างไรก็ตามไม่จำเป็นที่จะต้องดำเนินการทางอ้อมนี้ผ่านพอยน์เตอร์
ภาษาโปรแกรมระดับสูงส่วนใหญ่ (เช่นไม่ใช่แอสเซมบลี) ค่อนข้างปลอดภัยต่อหน่วยความจำและไม่อนุญาตให้เข้าถึงตัวชี้ที่ไม่ จำกัด ตระกูล C เป็นตระกูลคี่ที่นี่
C วิวัฒนาการมาจาก B ซึ่งเป็นนามธรรมที่บางกว่าการประกอบแบบดิบ B มีประเภทเดียว: คำ คำสามารถใช้เป็นจำนวนเต็มหรือเป็นตัวชี้ ทั้งสองนั้นจะเทียบเท่ากันเมื่อหน่วยความจำทั้งหมดถูกมองว่าเป็นอาร์เรย์ที่ต่อเนื่องกันเพียงเส้นเดียว C เก็บวิธีนี้ค่อนข้างยืดหยุ่นและยังคงสนับสนุนการคำนวณทางคณิตศาสตร์ที่ไม่ปลอดภัยโดยเนื้อแท้ ระบบพิมพ์ทั้งหมดของ C เป็นสิ่งที่ตามมามากกว่า ความยืดหยุ่นในการเข้าถึงหน่วยความจำทำให้ C เหมาะมากสำหรับวัตถุประสงค์หลัก: สร้างต้นแบบระบบปฏิบัติการ Unix แน่นอนว่า Unix และ C นั้นได้รับความนิยมอย่างมากดังนั้น C จึงถูกนำไปใช้ในแอพพลิเคชั่นที่ไม่จำเป็นต้องใช้วิธีการระดับต่ำในการจำ
ถ้าเราดูภาษาการเขียนโปรแกรมที่มาก่อนภาษา C (เช่น Fortran, Algol สำเนียงภาษารวม. Pascal, Cobol, Lisp, …) บางคนสนับสนุนพอยน์เตอร์ C-like โดยเฉพาะอย่างยิ่งแนวคิดตัวชี้โมฆะถูกคิดค้นสำหรับ Algol W ในปี 1965 แต่ไม่มีภาษาใดที่พยายามที่จะเป็นภาษา C-like และมีประสิทธิภาพต่ำ - ภาษาระบบ: Fortran มีความหมายสำหรับการคำนวณทางวิทยาศาสตร์ Algol พัฒนาแนวคิดที่ค่อนข้างทันสมัย มีโครงการวิจัยมากกว่าภาษาระดับอุตสาหกรรมและ Cobol ให้ความสำคัญกับการใช้งานทางธุรกิจ
มีการรวบรวมขยะตั้งแต่ปลายยุค 50 คือก่อนที่ C (ต้นยุค 70) GC ต้องการความปลอดภัยของหน่วยความจำในการทำงานอย่างถูกต้อง ภาษาก่อนและหลัง C ใช้ GC เป็นคุณสมบัติปกติ แน่นอนว่าทำให้ภาษามีความซับซ้อนมากขึ้นและอาจช้าลงซึ่งเห็นได้ชัดโดยเฉพาะในช่วงเวลาของเมนเฟรม ภาษา GC มีแนวโน้มที่จะมุ่งเน้นการวิจัย (เช่น Lisp, Simula, ML) และ / หรือต้องการเวิร์คสเตชั่นที่มีประสิทธิภาพ (เช่น Smalltalk)
คอมพิวเตอร์ขนาดเล็กที่ทรงพลังกว่าทั่วไปและภาษา GC กลายเป็นที่นิยมมากขึ้นโดยเฉพาะ สำหรับแอปพลิเคชั่นที่ไม่ใช่เรียลไทม์ (และบางครั้งถึงตอนนั้น) GC เป็นแนวทางที่ต้องการ แต่อัลกอริทึม GC ก็เป็นหัวข้อของการวิจัยที่เข้มข้น เป็นทางเลือกความปลอดภัยหน่วยความจำที่ดีกว่าโดยไม่ต้อง GC ได้รับการพัฒนาต่อไปโดยเฉพาะอย่างยิ่งในช่วงสามทศวรรษที่ผ่านมา: นวัตกรรมที่โดดเด่นคือ RAII และตัวชี้สมาร์ทใน C ++ และโปรแกรมตรวจสอบระบบ
Java ไม่ได้สร้างสรรค์สิ่งใหม่ ๆ โดยการใช้ภาษาการเขียนโปรแกรมที่ปลอดภัยสำหรับหน่วยความจำ: โดยทั่วไปแล้วจะใช้ความหมายของ GCed, ภาษา Smalltalk ที่ปลอดภัยของหน่วยความจำและรวมเข้ากับไวยากรณ์และการพิมพ์แบบคงที่ของ C ++ มันถูกวางตลาดแล้วว่าดีกว่าง่ายกว่า C / C ++ แต่มันเป็นเพียงเชื้อสาย C ++ เพียงผิวเผิน การขาดพอยน์เตอร์ของ Java เป็นหนี้ต่อโมเดลวัตถุของ Smalltalk มากกว่าการปฏิเสธโมเดลข้อมูล C ++
ดังนั้นภาษา "สมัยใหม่" เช่น Java, Ruby, และ C # ไม่ควรตีความว่าเป็นการเอาชนะปัญหาของตัวชี้แบบดิบเช่นใน C แต่ควรถูกมองว่าเป็นภาพวาดจากประเพณีมากมาย - รวมถึง C แต่จากภาษาที่ปลอดภัยกว่าเช่น Smalltalk, Simula หรือเสียงกระเพื่อม