Câu hỏi hay!
Nó trở thành phần cứng mỗi khi ai đó đưa cho nó đi để cuộc gọi đến bộ vi xử lý (CPU). Nếu bạn phải đọc hướng dẫn sử dụng từ nhà sản xuất chip để hiểu cách thực hiện những gì bạn muốn làm, bạn đang ở cấp độ bạn mô tả.
chipset http://www.micro-examples.com/pics/087-PIC16-SECRET-OPCODE-instructionset.JPG
Dưới đây là một tổng quan về các đường đi từ vật lý đến phần cứng mã cho người sử dụng: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-002-circuits-and-electronics-spring-2007/video-lectures/lecture-1/ mặc dù tôi không nghĩ rằng đó là để làm với phép tính lambda. (Nhưng bạn chỉ đang nói đó là điều đã truyền cảm hứng cho câu hỏi - đó không phải là câu hỏi, phải không?)
Có một bước mà người viết ngôn ngữ phải giao tiếp với hướng dẫn của bộ vi xử lý, ví dụ: https://en.wikipedia.org/wiki/X86_instruction_listings || https://en.wikipedia.org/wiki/X86_calling_conventions.
Peek tại kernel programming hoặc suy nghĩ về các hệ thống nhúng (trong lò vi sóng, trên cánh máy bay), ARMs hoặc thiết bị di động — đây là những thứ mọi người có chương trình có chipset không phải máy tính xách tay.
Những người viết BLAS (thư viện giải mã đại số tuyến tính) đôi khi xuống cấp chi tiết này. Ví dụ: https://en.wikipedia.org/wiki/Math_Kernel_Library hoặc https://en.wikipedia.org/wiki/Automatically_Tuned_Linear_Algebra_Software. Khi họ nói BLAS được "điều chỉnh" nghĩa là gì? Họ đang nói về việc tìm hiểu sự thật về bộ vi xử lý của bạn và thay đổi cách vòng bên trong bên trong đưa ra quyết định của họ để lãng phí ít thời gian hơn với cách vật lý được cấu hình.
Nếu tôi nhớ chính xác, ngôn ngữ cấp cao lập trình (như C
;)) làm cho không có giả định về những gì hệ thống chúng sẽ chạy trên để họ thực hiện cuộc gọi bất khả tri mà chạy như mười lần † chậm hơn so với họ nếu họ biết trước thời gian đó là loại gọi. Mỗi. Thời gian. Đây là loại điều có thể khiến bạn phát điên, nhưng đó là sự cân bằng kỹ thuật cổ điển của thời gian của người kĩ thuật so với hiệu suất của người dùng cuối. Tôi đoán nếu bạn trở thành một lập trình viên hạt nhân hoặc lập trình viên hệ thống nhúng, bạn có thể giúp chấm dứt tất cả các chu kỳ đồng hồ bị lãng phí trên máy tính trên toàn cầu - bộ vi xử lý trở nên nóng khi chúng lãng phí rất nhiều việc quay trở lại. (Mặc dù có những điều tồi tệ hơn rõ ràng xảy ra trên thế giới.)
†: Tôi chỉ nhanh chóng tìm kiếm bao nhiêu tăng tốc BLAS và vâng, nó có thể là một yếu tố như 15 hoặc 20. Vì vậy, tôi không nghĩ Tôi đang phóng đại/hiểu sai những gì tôi nghe về chuyển động lãng phí. BTW, có một cái gì đó tương tự đi vào trong sản xuất điện: bước cuối cùng (tuabin) trong sản xuất điện chỉ là 20% hiệu quả. Không phải tất cả những thứ đó đều khiến bạn phát điên à ?! Thời gian để trở thành một kỹ sư. ;)
Một dự án tuyệt vời mà bạn có thể xem là MenuetOS; ai đó đã viết một hệ điều hành trong assembler.
Tuy nhiên, các nội dung thú vị khác để xem xét có thể là this guy, người thực sự dễ dàng và thú vị khi học ngôn ngữ lắp ráp x86
. (!)
punch card programmer http://blog.iqsdirectory.com/wp-content/uploads/files/punch-card%20operator.jpg
Bạn cũng có thể đọc lại những ngày xưa khi có ít khoảng cách giữa phần mềm và phần cứng (ví dụ lập trình với một punchcard). Rất may mọi người đã viết các ngôn ngữ "cấp cao" giống như cách mọi người nói và suy nghĩ và ít giống như di chuyển một số băng xung quanh. Cấu trúc dữ liệu có thể không phải là điều rõ ràng nhất từ cuộc trò chuyện hàng ngày nhưng chúng trừu tượng hơn [lists a sequence of GOTO and STORE instructions...]
.
HTH
Tôi biết điểm trừu tượng là không phải quan tâm đến việc triển khai, nhưng người ta không thể không tò mò. – RednBlack
thực sự, các hoạt động của 'eq?'dễ hiểu hơn với con trỏ bình đẳng trong tâm trí. Và 'cons' thực sự là một hàm tạo của dữ liệu' struct {void *; void * link} 'nút, hoặc một cái gì đó. Rất có thể. –