Nó có nghĩa gì khi dữ liệu là vô hướng?


78

Tôi không biết chính xác nghĩa vô hướng là gì, nhưng tôi đang cố gắng xem liệu tôi có nghĩ đúng không. Liệu vô hướng có liên quan đến sự độc đoán trong đó loại dữ liệu có thể là bất kỳ loại nào, hoặc một hệ thống không thể biết trước dữ liệu là gì.


Sự thật thú vị: Nền tảng XML mà tôi dành nhiều ngày gần đây (sử dụng XQuery) thích gọi các giá trị Nguyên tử này. Tôi nghĩ rằng điều này có liên quan chặt chẽ, thêm bình luận cho các cụm từ tham khảo / tìm kiếm.
charles ross

Câu trả lời:


112

Thuật ngữ "vô hướng" xuất phát từ đại số tuyến tính , trong đó nó được sử dụng để phân biệt một số duy nhất với một vectơ hoặc ma trận. Ý nghĩa trong điện toán là tương tự. Nó phân biệt một giá trị đơn lẻ như một số nguyên hoặc float từ cấu trúc dữ liệu như một mảng. Sự khác biệt này rất nổi bật ở Perl, trong đó $sigil (giống với 's') được sử dụng để biểu thị một biến vô hướng và một @sigil (giống như 'a') biểu thị một mảng. Nó không liên quan gì đến loại phần tử. Nó có thể là một số, ký tự, chuỗi hoặc đối tượng. Điều quan trọng để được gọi là vô hướng là có một trong số chúng.


6
Đây là một ví dụ tốt về cách cùng một thuật ngữ có thể có nghĩa là những điều khác nhau trong các bối cảnh khác nhau. Trong các ngôn ngữ như C hoặc Pascal, vô hướng đề cập đến các loại "khối xây dựng" đơn giản như inthoặc char, không phải là loại có cấu trúc như các đối tượng (ngay cả khi chỉ có một).
Caleb

2
Tôi cũng sẽ thêm rằng ngoài các mảng, một vô hướng không phải là một cấu trúc dữ liệu hỗn hợp như một cấu trúc hoặc lớp. Sự khác biệt là một mảng là nhiều phần tử cùng loại, trong khi cấu trúc là nhiều phần tử của các loại tùy ý.

1
Ngoài ra, một chuỗi có thể là một giá trị không vô hướng. Các ngôn ngữ như Perl coi nó như một vô hướng, nhưng trong bất kỳ ngôn ngữ dựa trên C nào, tôi sẽ cho rằng đó là một mảng hoặc đối tượng.

1
@Karl Tôi không biết Perl nhưng bạn có thể vui lòng làm rõ sigil là gì không?
Geek

2
@Geek, đó là một biểu tượng bạn đặt trước một biến, như $variable. Xem trang wikipedia .
Karl Bielefeldt

27

Một vô hướng đơn giản là một biến chứa một giá trị riêng . Đối với mục đích của cuộc thảo luận này, hãy giả sử rằng vô hướng là một số duy nhất, thay vì tập hợp các số.

Ví dụ: kết quả của một truy vấn SQL trả về một số thay vì một tuple, như phương thức ExecuteScalar () trong lớp SQLCommand , trả về giá trị của cột đầu tiên của hàng đầu tiên trong tập kết quả được trả về bởi truy vấn. Nó thường được sử dụng để truy xuất một giá trị tổng hợp, chẳng hạn như COUNT hoặc AVERAGE, ID của bản ghi mới hoặc số lượng bản ghi được xử lý bởi một truy vấn.


19

Một bản ghi nhớ bổ sung, cho câu trả lời tuyệt vời của Karl Bielefeldt:

Một cách nghĩ đơn giản về nó, là "điều này có thể ở trên thang điểm không?"

Một số nguyên có thể trên thang điểm.

Một số nguyên có kích thước cố định có thể nằm trên thang đo, ví dụ từ -2147483648 đến 2147483647.

Một số thực có thể được trên một quy mô.

Một ký tự, boolean hoặc thập phân có độ chính xác cố định đều có thể nằm trên thang đo. Ngay cả một chuỗi có thể nằm trên một thang đo (chúng tôi sử dụng như vậy trong việc sắp xếp).

Do đó "vô hướng".

Một hàng cơ sở dữ liệu không thể ở trên một tỷ lệ. Một số phức không thể trên thang điểm. Một đối tượng đại diện cho một thông điệp email không thể ở trên thang điểm. Một mảng, vectơ hoặc ma trận không thể nằm trên thang đo.


10
Nếu một chuỗi có thể nằm trên một thang đo, tại sao không phải là một mảng? "cái này có thể ở trên một cái cân không?" không cho kết quả trực quan, đối với tôi ít nhất.
VBCPP

2
@VBCPP ở đâu trên thang đo chứa {1, 2} thì {2, 1} ngồi ở đâu? Trước hay sau? Bây giờ, được cho phép chúng tôi có thể thực thi một đơn đặt hàng, nhưng không có một đơn đặt hàng rõ ràng. Cũng lưu ý rằng tôi đang cố gắng đưa ra một cách dễ dàng để suy nghĩ về nó (câu trả lời của Karl Bielefeldt thực hiện tốt việc đưa ra một câu trả lời chính xác hơn IMO, và tôi sẽ không cố gắng cải thiện nó, chỉ cần thực hiện). Điều đó nói rằng, có một yếu tố của bối cảnh ở đây. Một chuỗi có thể hoặc không thể được coi là vô hướng tùy theo ngữ cảnh; trong SQL, nó là vô hướng vì một lý do chính đáng, trong C thì không, cũng vì một lý do tốt.
Jon Hanna

7
Điều này chỉ sai .
Andrew Medico

2
Tôi không đồng ý rằng đó là "chỉ sai", rõ ràng, mặc dù tôi nghĩ Karl Bielefeldt nên đánh dấu. Đây là một mnemotic quá dài để nhận xét, đó là câu trả lời tốt hơn.
Jon Hanna

2
Tôi nghĩ rằng nhận xét "nó chỉ sai" xuất phát từ ý tưởng rằng câu trả lời không có ý nghĩa gì và câu trả lời của bạn cho câu hỏi của @VBCPP không trả lời câu hỏi của anh ấy. Tôi chắc chắn thích ý tưởng của việc ghi nhớ, nhưng bạn vẫn cần giải thích tầm quan trọng của, ví dụ, một số nguyên nằm trên thang đo. Cũng có thể nói về việc đưa một con mèo vào TV.
turboladen

10

Như trường hợp với nhiều thuật ngữ trong điện toán; nguồn gốc của từ liên quan đến nhiều tính chất vật lý hơn. Thuật ngữ vô hướng tương đối cũ trong điện toán. Định nghĩa của nó là ít nghiêm ngặt hơn những ngày này. Khi bạn lưu trữ dữ liệu trong bộ nhớ máy tính, dữ liệu này có thể vừa với một địa chỉ (1 byte *) hoặc không. Khi đó, nó được gọi là vô hướng, khi nó không được gọi là hỗn hợp. Chủ yếu là do CPU chỉ có thể xử lý một địa chỉ / phần dữ liệu (= 1 byte) tại một thời điểm. Như tuyên bố của @Karl Bielefeldt; thuật ngữ này thực sự được lấy từ đại số.

Chúng tôi gọi một chuỗi là một chuỗi vì nó là một chuỗi ký tự. Một char là / là một vô hướng, trong khi một chuỗi là / là một hỗn hợp. Lưu trữ 1 phần dữ liệu (mốc) trong nhiều địa chỉ làm mờ đi phần nào dòng. Hãy nghĩ về nó như thế này: Khi CPU có thể xử lý mốc thời gian trong một lệnh, nó là vô hướng.

Ngày nay, vô hướng là bất kỳ giá trị số ít nào và giá trị số ít có thể được định nghĩa khác nhau giữa các ngôn ngữ khác nhau. số nguyên, số float, ký tự, chuỗi, booleans và enum là - cho các phần tử được coi là phần lớn nhất hiện nay. Mảng, danh sách, cây, đối tượng, vv không.

(* Tôi nói 1 byte để giữ mọi thứ rõ ràng, nhưng về mặt kỹ thuật tôi đang nói về những ngày mà 6 bit được sử dụng phổ biến hơn trên thẻ đục lỗ và sau đó là các dải từ

Tuyên bố miễn trừ trách nhiệm: Tôi không thể tìm thấy bất kỳ tài liệu tham khảo nào về điều này trên internet, tôi đã nhận được thông tin ở trường và từ những cuốn sách cũ, trong số đó (tôi nghĩ): Các bảng toán học và các phương tiện khác để tính toán từ năm 1944. Điều đó có nghĩa là, trí nhớ của tôi là không phải là những gì nó được sử dụng, vì vậy nếu bất cứ ai có thể sửa đổi / xác nhận hoặc từ chối câu trả lời của tôi, nó sẽ tốt đẹp.


9

Một vô hướng là một giá trị số đơn giản (như trong 1, 2/3, 3.14, v.v.), thường là số nguyên, điểm cố định hoặc float (đơn hoặc kép), trái ngược với một mảng, cấu trúc, đối tượng, vectơ phức ( thực cộng với các thành phần ảo hoặc cường độ cộng với góc), kiểu dữ liệu vectơ hoặc ma trận chiều cao hơn (v.v.) có chứa nhiều hơn một giá trị số.

Tuy nhiên, lưu ý rằng một loại dữ liệu rất phức tạp thuộc loại cũng có thể được làm phẳng và được biểu thị bằng byte 8 bit của bộ nhớ máy tính cũng có thể được biểu diễn dưới dạng một số vô hướng nhị phân rất dài / lớn. Turing đã sử dụng kỹ thuật này để biểu diễn toàn bộ chương trình máy tính chỉ là một số vô hướng.


Điều này cho phép các khái niệm như số bất hợp phápsố nguyên tố bất hợp pháp - đại diện bằng số của các chương trình "bất hợp pháp".
Andrew

Một vô hướng không phải là số. Một chuỗi, boolean hoặc ngày / thời gian cũng là một vô hướng.
david.pfx

Vậy điều gì sẽ xảy ra nếu tôi tạo một lớp phức tạp ngày dựa trên các trường của một số vô hướng (ví dụ: một int cho tháng, một năm và một cho ngày)?
Pierre Arlaud

1
@ david.pfx: Một chuỗi khi được xem dưới dạng một mảng các ký tự không phải là vô hướng.
MSalters

1
@MSalters: Tất nhiên, và một số nguyên được xem là một mảng bit cũng không. Bất kỳ thứ gì có thể được lưu trữ và truy xuất dưới dạng một giá trị ẩn danh bất biến duy nhất là vô hướng và hầu hết các ngôn ngữ cho phép bạn làm điều đó với chuỗi, ngày, phức tạp, điểm, v.v., ngay cả khi chúng cũng có thể được xem theo các cách khác.
david.pfx

1

Từ vô hướng có nguồn gốc từ chữ Latin scalaris, một dạng tính từ của scala (tiếng Latin nghĩa là "bậc thang"). Từ "scale" trong tiếng Anh cũng xuất phát từ scala. Nguồn

Một vô hướng là một biến chứa một giá trị riêng.

Ví dụ:

Biến vô hướng : Giả sử rằng bạn đang cố gắng biểu diễn tên của các sinh viên khác nhau dưới dạng một tập hợp các biến. Mỗi biến riêng lẻ là một biến vô hướng như sau

NAME01="Zara"
NAME02="Qadir"
NAME03="Mahnaz"
NAME04="Ayan"
NAME05="Daisy"

Hàm vô hướng : Hàm vô hướng SQL trả về một giá trị duy nhất, dựa trên giá trị đầu vào.

UCASE() - Converts a field to upper case
LCASE() - Converts a field to lower case
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.