เป็นไปได้ (หากน่าเบื่อ) ในการเขียนรหัสเครื่องโดยตรง บางทีคุณอาจเขียนโปรแกรมลงในแอสเซมเบลอร์บนกระดาษแล้วแปลด้วยมือให้เป็นคำแนะนำเกี่ยวกับรหัสตัวเลขที่คุณป้อนลงในหน่วยความจำเครื่อง คุณสามารถข้ามขั้นตอนแอสเซมเบลอร์บนกระดาษได้หากคุณจดจำค่าตัวเลขของคำแนะนำรหัสเครื่องทั้งหมด - ไม่ใช่เรื่องแปลกในสมัยนั้นเชื่อหรือไม่!
คอมพิวเตอร์เครื่องแรกนั้นถูกตั้งโปรแกรมโดยตรงในระบบเลขฐานสองโดยการสลับสวิตช์ทางกายภาพ มันเป็นการปรับปรุงการผลิตที่ยอดเยี่ยมเมื่อฮาร์ดแวร์พัฒนาขึ้นเพื่อให้โปรแกรมเมอร์ (หรือผู้ช่วยการป้อนข้อมูล) ป้อนรหัสเป็นตัวเลขฐานสิบหกผ่านทางปุ่มกด!
แอสเซมเบลอร์ซอฟต์แวร์มีความเกี่ยวข้องก็ต่อเมื่อมีหน่วยความจำมากขึ้น (เนื่องจากแอสเซมเบลอร์โค้ดใช้พื้นที่มากกว่ารหัสเครื่องดิบ) และฮาร์ดแวร์ที่พัฒนาขึ้นเพื่อให้สามารถป้อนข้อมูลด้วยตัวอักษรและตัวเลข ดังนั้นแอสเซมบลีแรกถูกเขียนโดยตรงโดยคนคล่องแคล่วในรหัสเครื่อง
เมื่อคุณมีแอสเซมเบลอร์คุณสามารถเขียนคอมไพเลอร์สำหรับภาษาระดับที่สูงขึ้นในแอสเซมเบลอร์
เรื่องราวของ C มีหลายขั้นตอน คอมไพเลอร์ C ตัวแรกเขียนเป็น B (ตัวต่อไป C) ซึ่งจะเขียนเป็น BCPL BCPL เป็นภาษาที่ค่อนข้างเรียบง่าย (ตัวอย่างเช่นมันไม่มีประเภทเลย) แต่ก็ยังเพิ่มขึ้นจากแอสเซมเบลอร์ดิบ ดังนั้นคุณจะเห็นว่าภาษาที่ซับซ้อนมากขึ้นนั้นค่อย ๆ สร้างในภาษาที่เรียบง่ายขึ้นไปจนถึงแอสเซมเบลอร์ได้อย่างไร และตัว C เองก็เป็นภาษาที่เล็กและเรียบง่ายตามมาตรฐานในปัจจุบัน
วันนี้คอมไพเลอร์ตัวแรกสำหรับภาษาใหม่มักจะเขียนด้วยภาษา C แต่เมื่อภาษานั้นครบอายุที่กำหนดก็มักจะเขียนใหม่ "ในตัวเอง" คอมไพเลอร์ Java ตัวแรกเขียนด้วยภาษา C แต่เขียนใหม่ในภายหลังใน Java คอมไพเลอร์ C # ตัวแรกเขียนด้วยภาษา C ++ แต่ล่าสุดได้มีการเขียนใหม่ในภาษา C # คอมไพเลอร์ Python / ล่ามเขียนใน C แต่โครงการ PyPy เป็นความพยายามที่จะเขียนมันซ้ำใน Python
มันเป็นไปไม่ได้เสมอที่จะเขียนคอมไพเลอร์ / ล่ามสำหรับภาษาในภาษานั้น ๆ มีล่าม JavaScript ที่เขียนด้วย JavaScript อยู่ แต่คอมไพเลอร์ / ล่ามในเบราว์เซอร์ปัจจุบันยังคงเขียนใน C หรือ C ++ ด้วยเหตุผลด้านประสิทธิภาพ JavaScript ที่เขียนใน JavaScript ช้าเกินไป
แต่คุณไม่จำเป็นต้องใช้ C เป็น "ภาษาเริ่มต้น" สำหรับคอมไพเลอร์ คอมไพเลอร์ F # ตัวแรกเขียนด้วย OCaml ซึ่งเป็นภาษาอื่นที่เกี่ยวข้องกับ F # มากที่สุด เมื่อคอมไพเลอร์เสร็จสมบูรณ์มันจะถูกเขียนใหม่ใน F # คอมไพเลอร์ตัวแรกสำหรับ Perl 6 ถูกเขียนใน Haskell (ภาษาที่ใช้งานได้จริงแตกต่างจาก Perl มาก) แต่ตอนนี้มีคอมไพเลอร์ที่เขียนเป็น C
กรณีที่น่าสนใจคือ Rust ซึ่งคอมไพเลอร์ตัวแรกเขียนใน OCaml (ตอนนี้มันถูกเขียนใหม่ใน Rust) สิ่งนี้มีความโดดเด่นเนื่องจาก OCaml โดยทั่วไปถือว่าสูงกว่า Rust ซึ่งเป็นภาษาระบบที่ใกล้เคียงกับโลหะมากขึ้น ดังนั้นจึงไม่ใช่ภาษาระดับสูงกว่าที่นำมาใช้ในภาษาระดับต่ำกว่าเสมอ แต่อาจเป็นวิธีอื่น ๆ