Trong việc lập trình, các ngôn ngữ lập trình thường được coi là kiểu yếu hoặc kiểu mạnh. Nói chung thì các khái niệm này không có định nghĩa chính xác cụ thể. Thực ra, người ta lại có xu hướng dùng chúng để ủng hộ hoặc phê bình một ngôn ngữ lập trình nào đó bằng việc giải thích tại sao ngôn ngữ này tốt hơn (kém hơn) ngôn ngữ khác qua tính mạnh yếu về kiểu.
Lịch sử
Vào năm 1974, Liskov và Zilles mô tả một ngôn ngữ lập trình "kiểu mạnh" là ở ngôn ngữ đó "mỗi khi một đối tượng được truyền từ hàm đang gọi sang hàm được gọi, kiểu của nó phải tương thích với kiểu khai báo trong nguyên mẫu của hàm được gọi."
Jackson viết, "Trong một ngôn ngữ kiểu mạnh, mỗi loại dữ liệu có một kiểu riêng biệt và mỗi tiến trình sẽ đề ra các yêu cầu để giao tiếp bằng các kiểu này."
Định nghĩa về "mạnh" và "yếu"
Người ta coi một số quyết định khi thiết kế ngôn ngữ lập trình là bằng chứng cho tính "mạnh" hay "yếu". Thật vậy, nhiều trong số chúng được hiểu một cách chính xác là sự tồn tại hay không tồn tại của tính an toàn kiểu, tính an toàn trong truy cập bộ nhớ, việc kiểm tra kiểu tĩnh (hoặc động), v.v.
Chuyển kiểu tự động và ép kiểu
Một số ngôn ngữ lập trình cho phép người lập trình sử dụng một giá trị ở kiểu này như thể nó ở một kiểu khác. Việc này đôi khi được coi là "kiểu yếu".
Ví dụ: Aahz Maruch viết rằng "việc ép kiểu xảy ra khi bạn có một ngôn ngữ kiểu tĩnh và bạn dùng các tính năng có từ cú pháp để buộc nó sử dụng đối tượng kiểu này như kiểu khác (như việc sử dụng con trỏ void* khá phổ biến trong C). Việc ép kiểu thường được coi là dấu hiệu của kiểu yếu. Trong khi đó, việc chuyển đổi kiểu tạo ra một đối tượng hoàn toàn mới ở kiểu thích hợp"
Một ví dụ khác: GCC miêu tả việc này là chơi kiểu (type-punning) và cảnh báo rằng nó sẽ bẻ vỡ tính chặt chẽ trong việc ánh xạ dữ liệu. Thiago Macieira nêu ra nhiều vấn đề có thể xảy ra khi việc chơi kiểu khiến trình biên dịch sai lầm trong việc tối ưu hoá chương trình xuất.
Tuy việc tập trung vào cú pháp dễ hơn, nhưng lý luận của Macieira thực sự là về ngữ nghĩa chương trình. Có nhiều ngôn ngữ cho phép việc chuyển kiểu ngầm, nhưng khác là theo một cách đảm bảo tính an toàn về kiểu. Ví dụ: cả C++ và C# cho phép chương trình định nghĩa các toán tử để chuyển đổi giá trị từ kiểu này sang kiểu khác theo một cách có ý nghĩa (như từ số thực sang số nguyên: ta tiến hành làm tròn, kiểm tra phạm vi giá trị, tạo ra biến nguyên mới và gán giá trị đã xử lý). Khi một trình dịch gặp thao tác chuyển như vậy, nó coi thao tác này như một phép gọi hàm thông thường. Trái lại, việc chuyển một giá trị sang kiểu void* của C là một thao tác không an toàn nhưng trình biên dịch lại không phát hiện được.
Con trỏ
Một số ngôn ngữ lập trình không quản lý con trỏ chặt chẽ mà lại cho phép người dùng thao tác trên chúng như các giá trị số thông thường. Các ngôn ngữ này nhiều khi được coi là "kiểu yếu", vì người dùng có thể dùng các thao tác con trỏ để tránh né hệ thống kiểu của ngôn ngữ (tạo con trỏ thuộc kiểu này và một giá trị kiểu khác, sau đó trỏ con trỏ về biến đó; như thế ta có thể thao tác với giá trị kiểu khác dưới dạng kiểu này).
Kiểu hợp nhất (union)
Một số ngôn ngữ lập trình cho phép sử dụng Kiểu và khai báo biến trong C# Kiểu hợp nhất kiểu hợp nhất. Kiểu này cho phép một giá trị thuộc một kiểu được dùng như giá trị thuộc kiểu khác. Trong bài viết có tựa đề A hacked Boolean, Bill McCarthy mô tả cách mà giá trị kiểu boolean trong .NET có thể bị "hỏng", khiến cho hai giá trị đều là "đúng" vẫn có thể bị coi là khác nhau.
Kiểm tra kiểu động
Kiểm tra kiểu động là thủ tục kiểm tra kiểu của giá trị trong quá trình chạy; kiểm tra kiểu tĩnh là thủ tục kiểm tra kiểu của giá trị trong lúc biên dịch.
Một số ngôn ngữ lập trình không kiểm tra kiểu tĩnh. Bằng những ngôn ngữ đó, ta có thể dễ dàng viết các chương trình "khác thường" mà thủ tục kiểm tra kiểu tĩnh thông thường sẽ ngăn chặn. Ví dụ: một biến có thể lưu giá trị số lẫn logic "sai". Một số lập trình viên coi các ngôn ngữ này là "kiểu yếu", vì chúng có vẻ như không thi hành các biện pháp để đảm bảo tính nghiêm ngặt về kiểu có trong các ngôn ngữ có thủ tục kiểm tra kiểu tĩnh.
Kiểm tra kiểu tĩnh
Trong bài viết Typeful Programming của Luca Cardelli , một "hệ thống kiểu mạnh" được mô tả là một hệ thống trong đó lỗi về kiểu trong quá trình chạy không thể xảy ra. Nói cách khác, sự tồn tại của lỗi chạy chưa được phát hiện được coi là tính an toàn hay an toàn về kiểu; những bài viết đầu tiên của Tony Hoare gọi đặc tính này là tính bảo mật.
Tính dự đoán được
Một số lập trình viên coi một ngôn ngữ là "yếu về kiểu" nếu các thao tác đơn giản không thực thi theo cách họ mong đợi. Xem chương trình ví dụ sau đây:
x = "5" + 6
Các ngôn ngữ lập trình khác nhau sẽ gán các giá trị khác nhau vào 'x':
- Một ngôn ngữ có thể chuyển số 6 thành chuỗi, rồi ghép nó với chuỗi "5" tạo thành chuỗi "56".
- Một ngôn ngữ khác có thể chuyển "5" thành số, rồi cộng nó với số 6 tạo thành số 11.
- Một ngôn ngữ nọ lại có thể chuyển chuỗi "5" thành một con trỏ chỉ địa chỉ lưu chuỗi trong bộ nhớ, và cộng số 6 với địa chỉ đó, tạo thành một địa chỉ linh tinh.
- Một ngôn ngữ kia có thể sẽ không biên dịch chương trình này và thông báo rằng hai toán hạng có kiểu không tương thích.
Các ngôn ngữ hoạt động giống ba ví dụ đầu nhiều khi đều được gọi là "kiểu yếu", cho dù chỉ một trong ba, cụ thể là cái thứ ba, vì gây mất an toàn.
Suy đoán kiểu
Các ngôn ngữ có hệ thống kiểu tĩnh (đối lập với kiểu động) yêu cầu người dùng tự khai báo tất cả các kiểu họ dùng trong chương trình. Một số ngôn ngữ như C yêu cầu ta khai báo kiểu cho từng biến. Một số ngôn ngữ khác như Haskell dùng phương pháp Hindley-Milner để suy đoán kiểu dựa trên một quá trình phân tích. Các ngôn ngữ như C# và C++ nằm khoảng giữa hai nhóm đó: một số kiểu có thể được suy đoán dựa trên thông tin liên quan, nhưng một số khác lại phải được khai báo rõ ràng. Một số lập trình viên gọi các ngôn ngữ suy đoán kiểu là "kiểu yếu", (thường) không biết rằng thông tin về kiểu có tồn tại, chỉ là ở dạng ngầm.
Sự khác nhau giữa các ngôn ngữ lập trình
Lưu ý rằng một số định nghĩa trên mâu thuẫn với nhau, một số lại trực giao, và một số khác lại chỉ là trường hợp đặc biệt của một số định nghĩa "mở" (ít rõ ràng) khác. Vì sự phân hóa trong các định nghĩa này, ta có thể bào chữa cho hầu hết luận điểm về tính mạnh yếu về kiểu của phần lớn ngôn ngữ lập trình.
Vì lý do này, tác giả khi muốn viết một cách chính xác về hệ thống kiểu thường tránh từ "kiểu mạnh" và dùng các từ như "tính an toàn kiểu" thay vào đó.
👁️
0 | 🔗 | 💖 | ✨ | 🌍 | ⌚
Trong việc lập trình, các ngôn ngữ lập trình thường được coi là **kiểu yếu** hoặc **kiểu mạnh**. Nói chung thì các khái niệm này không có định nghĩa chính xác cụ thể. Thực ra,
nhỏ|Có thể sử dụng công cụ sẵn có (Ví dụ: Pasword Generator) để tạo một mật khẩu đủ mạnh và đạt yêu cầu. **Độ mạnh của mật khẩu** là một thuật ngữ để chỉ mức
**_Người đẹp và quái vật_** (tựa gốc tiếng Anh: **_Beauty and the Beast_**; còn có tựa Việt khác là **_Người đẹp và quái thú_**) là phim điện ảnh hoạt hình mang yếu tố nhạc kịch
Trong ngôn ngữ lập trình, **hệ thống kiểu** (tiếng Anh: _type system_) là một tập các quy tắc gán một thuộc đặc tính gọi là kiểu cho các cấu trúc khác nhau của một chương
**Nausicaä** (; _Naushika_, ) là nhân vật hư cấu của manga khoa học viễn tưởng dài tập _Kaze no Tani no Nausicaä_ và bộ anime điện ảnh cùng tên do Miyazaki Hayao sáng tạo ra.
**Belle** là một nhân vật hư cấu xuất hiện trong bộ phim hoạt hình chiếu rạp thứ 30 của Walt Disney Pictures, _Người đẹp và quái thú_ (1991). Nàng sau đó cũng xuất hiện trong
**Alix của Hessen và Rhein** (tiếng Đức: _Alix von Hessen und bei Rhein_; tiếng Anh: _Alix of Hesse and by Rhine_; 6 tháng 6 năm 1872 – 17 tháng 7 năm 1918), còn được gọi
Manga và anime Tokyo Ghoul bao gồm rất nhiều nhân vật giả tưởng được tạo ra bởi mangaka Ishida Sui. Bối cảnh của TG đặt trong một thế giới giả tưởng nơi mà Ghoul -
thumb|Người phụ nữ [[Trung Quốc với kiểu tóc cầu kỳ, 1869]] thumb|right|Kiểu tóc truyền thống của cô dâu [[Nhật Bản]] thumb|Hình tượng người phụ nữ với kiểu tóc và kẹp tóc phức tạp, thế kỷ
Lĩnh vực tâm lý học đã nghiên cứu sâu rộng về đồng tính luyến ái như một xu hướng tính dục của con người. Hiệp hội Tâm thần Hoa Kỳ đã đưa đồng tính luyến
**_Desperate Housewives_** (hay được biết đến với tựa tiếng Việt là **_Những bà nội trợ kiểu Mỹ_**; tạm dịch: _Những bà nội trợ tuyệt vọng_) là một sê-ri truyền hình hài tâm lý huyền bí
**Kiều Minh Tuấn** (sinh ngày 26 tháng 2 năm 1988) là một nam diễn viên người Việt Nam. ## Sự nghiệp Kiều Minh Tuấn xuất hiện lần đầu tiên bằng một vai quần chúng trong
nhỏ|292x292px| _Romeo và Juliet_, được miêu tả khi họ ở trên ban công trong Hồi III, 1867 của Ford Madox Brown **Tình yêu**, **ái tình** hay gọi ngắn là **tình** (Tiếng Anh: _love_) là một
**Lớp tàu khu trục L và M** là một lớp bao gồm 16 tàu khu trục được Hải quân Hoàng gia Anh Quốc chế tạo vào cuối những năm 1930 và đã phục vụ trong
**_Tom và Jerry_** () là một series phim hoạt hình của Mỹ được chiếu trên truyền hình và rạp hát với nhiều thể loại từ phim ngắn cho tới phim dài. Được sản xuất bởi
là những trò chơi video nhập vai do Game Freak phát triển, The Pokémon Company và Nintendo phát hành cho Nintendo 3DS . Hai trò chơi này là những phần đầu tiên trong thế hệ
**Bosna và Hercegovina** (tiếng Bosnia, tiếng Croatia, tiếng Serbia chữ Latinh: _Bosna i Hercegovina_, viết tắt _BiH_; tiếng Serbia chữ Kirin: Босна и Херцеговина, viết tắt _БиХ_; ,) là một quốc gia tại Đông Nam
Trong khoa học máy tính, **chuyển đổi kiểu**, **ép kiểu**, **ép kiểu dữ liệu** (tiếng Anh: _type coercion_), là những cách khác nhau của việc thay đổi một biểu thức của một kiểu dữ liệu
**Nhà nước Hồi giáo Iraq và Levant** (, chuyển tự: **', viết tắt: **Da'ish** hoặc **Daesh**, viết tắt theo tiếng Anh: **ISIL**); còn được biết đến với tên gọi **Nhà nước Hồi giáo Iraq và
Đây là danh sách các thuật ngữ tìm thấy trong lập trình hướng đối tượng. Một số có liên quan đến lập trình hướng đối tượng và một số thì không. Lưu ý rằng, các
**Yếu tố môi trường** ảnh hưởng đến quá trình hình thành **xu hướng tính dục** đã được nghiên cứu. Tuy nhiên, không có nguyên nhân đơn lẻ nào trong quá trình hình thành xu hướng
nhỏ|phải|Quà tặng trong Lễ tình nhân (Valentine) **Thương mại hóa tình yêu** (_Commercialization of love_) đề cập đến quá trình biến các mối quan hệ lãng mạn, các cảm xúc thân mật và biểu hiện
thumb|Tình yêu của cha mẹ thường được xem là ví dụ tiêu biểu nhất về tình yêu vô điều kiện. **Tình yêu vô điều kiện** (tiếng Anh: unconditional love) là tình cảm không có bất
**_Chiến tranh và hòa bình_** (tiếng Nga: _Война и мир_) là một tiểu thuyết của Lev Nikolayevich Tolstoy, được xuất bản rải rác trong giai đoạn 1865–1869. Tác phẩm được xem là thành tựu văn
thumb|[[phân rã beta|Phân rã phóng xạ beta xảy ra là do tương tác yếu, biến đổi một neutron thành một proton, electron, và một phản neutrino electron.]] Trong vật lý hạt, **tương tác yếu** là
thumb|upright|Biểu ngữ kêu gọi người Việt Nam ở nước ngoài tham gia xây dựng đất nước **Hòa giải và hòa hợp dân tộc ở Việt Nam** là một khái niệm để chỉ sự hòa giải
THÔNG TIN CƠ BẢN Dùng cho: Mọi loại tóc. Xuất xứ: Indonesia. Ngày sản xuất: Xem trên bao bì sản phẩm. Hạn sử dụng: 3 năm kể từ ngày sản xuất. CHI TIẾT SẢN PHẨM
THÔNG TIN CƠ BẢN Dùng cho: Mọi loại tóc. Xuất xứ: Indonesia. Ngày sản xuất: Xem trên bao bì sản phẩm. Hạn sử dụng: 3 năm kể từ ngày sản xuất. CHI TIẾT SẢN PHẨM
Xịt dưỡng tạo kiểu tóc Oribe Dry Texturizing Spray• Dung tích: 37ml• Giá web 65ml $23~650k• Tách từ set Dermstore ở hình cuối✨ Xịt tạo kiểu tóc với kết cấu mỏng nhẹ, giúp dễ dàng
-Một sản phẩm thông minh kết hợp với nhiều chức năng, việc bạn có thể vừa chải cúp vừa sấy tạo kiểu vô cùng đơn giản, sẽ không còn cảnh bạn phải vất vả và
MÔ TẢ SẢN PHẨMCÓ THỂ BẠN MUA ĐẮT HƠN HAY RẺ HƠN , NHƯNG BẠN SẼ LUÔN ĐƯỢC AN TÂM KHI MUA HÀNG TẠI SHOP VÌ QUYỀN LỢI & SỰ HÀI LÒNG CỦA BẠN LUÔN
MÔ TẢ SẢN PHẨMCÓ THỂ BẠN MUA ĐẮT HƠN HAY RẺ HƠN , NHƯNG BẠN SẼ LUÔN ĐƯỢC AN TÂM KHI MUA HÀNG TẠI SHOP VÌ QUYỀN LỢI & SỰ HÀI LÒNG CỦA BẠN LUÔN
MÔ TẢ SẢN PHẨMCÓ THỂ BẠN MUA ĐẮT HƠN HAY RẺ HƠN , NHƯNG BẠN SẼ LUÔN ĐƯỢC AN TÂM KHI MUA HÀNG TẠI SHOP VÌ QUYỀN LỢI & SỰ HÀI LÒNG CỦA BẠN LUÔN
**Gilbert và Sullivan** (, viết tắt **G&S** trong ngữ cảnh) là bộ đôi sân khấu thời đại Victoria gồm nhà viết kịch W. S. Gilbert (1836–1911) và nhà soạn nhạc Arthur Sullivan (1842–1900). Trong giai
Phụ kiện tóc xinh - Sản phẩm giúp mái tóc nàng thêm xinh xắn- Mái tóc được xem là một điểm nhấn đặc biệt tạo nên sự dịu dàng của người phụ nữ. Có thể
Phụ kiện tóc xinh - Sản phẩm giúp mái tóc nàng thêm xinh xắn- Mái tóc được xem là một điểm nhấn đặc biệt tạo nên sự dịu dàng của người phụ nữ. Có thể
Phụ kiện tóc xinh - Sản phẩm giúp mái tóc nàng thêm xinh xắn- Mái tóc được xem là một điểm nhấn đặc biệt tạo nên sự dịu dàng của người phụ nữ. Có thể
Phụ kiện tóc xinh - Sản phẩm giúp mái tóc nàng thêm xinh xắn- Mái tóc được xem là một điểm nhấn đặc biệt tạo nên sự dịu dàng của người phụ nữ. Có thể
Phụ kiện tóc xinh - Sản phẩm giúp mái tóc nàng thêm xinh xắn- Mái tóc được xem là một điểm nhấn đặc biệt tạo nên sự dịu dàng của người phụ nữ. Có thể
Phụ kiện tóc xinh - Sản phẩm giúp mái tóc nàng thêm xinh xắn- Mái tóc được xem là một điểm nhấn đặc biệt tạo nên sự dịu dàng của người phụ nữ. Có thể
Phụ kiện tóc xinh - Sản phẩm giúp mái tóc nàng thêm xinh xắn- Mái tóc được xem là một điểm nhấn đặc biệt tạo nên sự dịu dàng của người phụ nữ. Có thể
Phụ kiện tóc xinh - Sản phẩm giúp mái tóc nàng thêm xinh xắn- Mái tóc được xem là một điểm nhấn đặc biệt tạo nên sự dịu dàng của người phụ nữ. Có thể
Phụ kiện tóc xinh - Sản phẩm giúp mái tóc nàng thêm xinh xắn- Mái tóc được xem là một điểm nhấn đặc biệt tạo nên sự dịu dàng của người phụ nữ. Có thể
Phụ kiện tóc xinh - Sản phẩm giúp mái tóc nàng thêm xinh xắn- Mái tóc được xem là một điểm nhấn đặc biệt tạo nên sự dịu dàng của người phụ nữ. Có thể
Phụ kiện tóc xinh - Sản phẩm giúp mái tóc nàng thêm xinh xắn- Mái tóc được xem là một điểm nhấn đặc biệt tạo nên sự dịu dàng của người phụ nữ. Có thể
Phụ kiện tóc xinh - Sản phẩm giúp mái tóc nàng thêm xinh xắn- Mái tóc được xem là một điểm nhấn đặc biệt tạo nên sự dịu dàng của người phụ nữ. Có thể
Phụ kiện tóc xinh - Sản phẩm giúp mái tóc nàng thêm xinh xắn- Mái tóc được xem là một điểm nhấn đặc biệt tạo nên sự dịu dàng của người phụ nữ. Có thể
Phụ kiện tóc xinh - Sản phẩm giúp mái tóc nàng thêm xinh xắn- Mái tóc được xem là một điểm nhấn đặc biệt tạo nên sự dịu dàng của người phụ nữ. Có thể
Phụ kiện tóc xinh - Sản phẩm giúp mái tóc nàng thêm xinh xắn- Mái tóc được xem là một điểm nhấn đặc biệt tạo nên sự dịu dàng của người phụ nữ. Có thể
Phụ kiện tóc xinh - Sản phẩm giúp mái tóc nàng thêm xinh xắn- Mái tóc được xem là một điểm nhấn đặc biệt tạo nên sự dịu dàng của người phụ nữ. Có thể