Tại sao phản ánh được gọi là phản ánh thay vì nội tâm?


79

Nguồn gốc của thuật ngữ phản ánh là gì? Nó có vẻ giống với nội tâm hơn. Tại sao nó không được gọi như vậy?

Introspection : Hướng nội; cụ thể là hành động hoặc quá trình tự kiểm tra.

Suy ngẫm :

  1. hành động phản ánh hoặc trạng thái được phản ánh.
  2. một tấm ảnh; sự đại diện; đối tác
  3. sửa chữa những suy nghĩ về một cái gì đó; cân nhắc cẩn thận
  4. một suy nghĩ xuất hiện trong sự cân nhắc hoặc thiền định.

thực sự đây là một câu hỏi thú vị. Tôi không chắc nữa, tôi thấy có sự khác biệt nào không: p
Johannes Schaub - litb

Đã thêm định nghĩa, nếu bạn không thích bạn có thể xóa nó.
mmcdole

1
Ít nhất trong TCL dường như không có bất kỳ sự khác biệt nào
jk.

@ JohannesSchaub-litb: đây là một câu hỏi phải hỏi / xuất sắc. Tôi vừa chuẩn bị đăng nó nếu không tìm thấy nó đã được hỏi trước đó. Nó chỉ cho thấy chúng ta làm nhiều việc như thế nào trong cuộc sống mà không để ý đến những chi tiết nhỏ nhất xung quanh.
Veverke

Câu trả lời:


63

Có một câu trả lời thú vị trên bài báo wikipedia tiếng Pháp cho Suy ngẫm ( tại đây )

Sự phản chiếu có thể được chia thành hai phần:

  • nội quan: một chương trình có thể tự kiểm tra.
  • intercession: một chương trình có thể sửa đổi trạng thái / ý nghĩa của nó.

Vì vậy, phản ánh là một thuộc tính 'mạnh mẽ' hơn so với nội tâm. Đó là lý do tại sao bạn nói nhập nội quan cho khả năng biết các loại trong thời gian chạy (và thay đổi chúng là một hành động khác: chuyển đổi / truyền).

CHỈNH SỬA: thực sự tôi chỉ nhận ra câu trả lời đầu tiên đã nói chính xác điều đó ^^. Đã đến lúc tự rút phích cắm ...


2
Đọc bài viết trên Wikipedia tiếng Pháp, tôi nhận ra rằng trong tiếng Pháp, thuật ngữ "phản chiếu" có thể được kết hợp chặt chẽ hơn trong tiếng Anh với ý tưởng "phản xạ" - về một thứ tự vận hành. Đây có vẻ là cách hiểu đúng về thuật ngữ này vì nó áp dụng cho các ngôn ngữ lập trình.
Jan Hettich

Tôi vẫn không thể hiểu làm thế nào để trả lời câu hỏi này: thực sự, wikipedia giúp phân biệt loại nội quan ở chỗ nó tự "thỏa mãn" với việc chỉ nhận thông tin, mà không thay đổi nó (mặc dù một lần nữa, điều này có liên quan chính xác như thế nào ... làm thế nào nhiều lần chúng tôi sử dụng phản xạ để khởi tạo các loại khi đang di chuyển - và do đó, thay đổi đã xảy ra ở đâu ở đây? sự thay đổi là không thuộc đối tượng thanh tra riêng của mình (sẽ không có ý nghĩa nhiều trong hai).
Veverke

Vì vậy, phản ánh là một "quá trình" bao gồm nhiều bước hơn "xem xét nội tâm". Lập luận thuyết phục ủng hộ sự phản ánh nằm ở đâu ?! Xem xét nội tâm như một từ đi đôi với những gì thuật ngữ đại diện trong ngữ cảnh lập trình - trong khi "phản ánh" - hành động phản ánh một lệnh / kiểu gần với "sửa đổi" hơn "xem xét" theo cách nào?
Veverke

27

Phản ánh xuất phát từ ý tưởng "tự kiểm tra, tự sửa đổi và nhân rộng", phản ánh bản thân của mình với mục đích thay đổi. Trong lập trình, bạn sử dụng sự phản chiếu để kiểm tra cấu trúc của chính chương trình trong ngữ cảnh sử dụng nó thay vì chỉ kiểm tra nó. Những gì bạn nhận lại là bản trình bày của chương trình mà bạn có thể sử dụng để sửa đổi nó, chứ không phải là dữ liệu mà nó hoạt động.

Thông tin thêm có thể được tìm thấy tại bài viết wikipedia. .


Bạn đã không trả lời câu hỏi của anh ta ở tất cả. Introspection: Hướng nội; cụ thể là hành động hoặc quá trình tự kiểm tra.
mmcdole

@Simucal, xin lỗi tôi không rõ ràng hơn. Tôi đã chỉnh sửa câu trả lời để chỉ rõ rằng đó là kiểm tra với mục đích hành động.
tvanfosson

Anh ta đã làm. Anh ấy nói rằng thuật ngữ phản ánh được sử dụng tùy theo khả năng của chương trình để phản ánh những thay đổi bằng cách sửa đổi chính nó.
Filip Dupanović

1
@kRON, câu trả lời ban đầu của tôi không cụ thể.
tvanfosson

Tôi vẫn không thể hiểu làm thế nào để trả lời câu hỏi này: thực sự, wikipedia giúp phân biệt loại nội quan ở chỗ nó tự "thỏa mãn" với việc chỉ nhận thông tin, mà không thay đổi nó (mặc dù một lần nữa, điều này có liên quan chính xác như thế nào ... làm thế nào nhiều lần chúng tôi sử dụng phản xạ để khởi tạo các loại khi đang di chuyển - và vì vậy, thay đổi đã xảy ra ở đâu ở đây? chúng tôi đã không có đối tượng mới được tạo ngay từ đầu, không có thay đổi nào khác xảy ra trừ khi bạn coi việc "xuất hiện" là một thay đổi, mặc dù sự thay đổi là không thuộc đối tượng thanh tra riêng của mình (sẽ không có ý nghĩa nhiều trong hai).
Veverke

4

Có một khái niệm khác được gọi là xem xét kiểu đề cập đến khả năng xác định kiểu của một đối tượng trong thời gian chạy.

chỉnh sửa: Tôi nhận ra rằng câu hỏi của bạn nhằm mục đích là ngôn ngữ bất khả tri, nhưng trong Java, phản xạ được sử dụng để xác định những thành viên nào mà một đối tượng có, trong khi phần nội quan cho phép bạn xác định những thuộc tính JavaBeans nào mà một đối tượng có, đó là lý do tại sao lớp nội quan lại có trong gói java.beans. Tuy nhiên, tôi không chắc sự khác biệt chính xác giữa các thuật ngữ trong các ngôn ngữ khác là gì,


4

Thuật ngữ phản ánh xuất phát từ luận văn PHD năm 1982 của Brian Cantwell Smith có thể tìm thấy tại http://publications.csail.mit.edu/lcs/pubs/pdf/MIT-LCS-TR-272.pdf

Những gì được gọi là phản ánh thường chỉ đơn thuần là xem xét nội tâm, tức là, truy cập vào siêu dữ liệu. Các yêu cầu của Smith đối với sự phản ánh bao gồm kết nối nhân quả từ siêu dữ liệu trở lại và đây thường là thành phần bị thiếu. Một cách để hình dung sự phản chiếu là quyền truy cập vào việc triển khai, và không chỉ là việc triển khai một số phiên bản mới của một phép tính, mà là quyền truy cập của máy tính vào việc triển khai của chính nó . Chắc chắn api phản chiếu ban đầu của Java đã bị đặt tên sai vì nó không phản chiếu theo nghĩa này.


1

Trong .Net, tôi nghĩ rằng thuật ngữ Reflection rất thích hợp vì bản thân nó không phải là kiểu được kiểm tra, nó là biểu hiện của mã, chỉ là mô tả.


1

Phản ánh, theo nghĩa của định nghĩa 3 và 4, có thể là nội tâm. Đó là, nội tâm là sự phản ánh về bản thân của mỗi người. Tôi nghĩ rằng nội tâm là từ tốt hơn để sử dụng cho hành động phân tích mã vì từ này cụ thể hơn, nhưng tôi không nghĩ rằng phản ánh là hoàn toàn không phù hợp.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.