Javascript và php có phải là ngôn ngữ được gõ lỏng lẻo không?

Có sự bất đồng về ý nghĩa chính xác của "loose typing" hoặc "weak typing", tuy nhiên, theo cách hiểu thông thường, "loose typing" đề cập đến một ngôn ngữ có nhiều quy tắc gõ dễ hiểu hơn và thậm chí có thể chuyển đổi hoàn toàn các loại từ loại này sang loại khác

Từ

Liskov và Zilles đã định nghĩa một ngôn ngữ kiểu mạnh là ngôn ngữ trong đó "bất cứ khi nào một đối tượng được chuyển từ hàm gọi sang hàm được gọi, kiểu của nó phải tương thích với kiểu được khai báo trong hàm được gọi. "

Theo định nghĩa này, JavaScript được gõ lỏng lẻo (nghĩa là. ngược lại với kiểu gõ mạnh) vì hầu hết các toán tử JavaScript sẽ ép buộc các toán hạng của chúng nếu cần

Ví dụ

[2]-1      // 1 (equivalent to 2-1)
[2]+1      // 21 (equivalent to String([2]) + '1')
true && {} // No error, returns `{}`

Một ví dụ khác về ví dụ ngôn ngữ được gõ lỏng lẻo là C

Lưu ý rằng JavaScript cũng được gõ động. Điều này có nghĩa là loại giá trị được liên kết với giá trị và được kiểm tra trong thời gian chạy, thay vì được liên kết với biến và được kiểm tra tại thời điểm biên dịch. Trong hiệu ứng kiểm tra loại được thực hiện "động" (tức là trong thời gian chạy) trái ngược với "tĩnh" (tức là. tại thời điểm biên dịch)

Tôi đã dành hơn một nửa sự nghiệp lập trình của mình bằng các ngôn ngữ gõ mạnh như C, Pascal và Java, trong đó đối với mỗi biến chúng ta phải liên kết ngầm một loại dữ liệu. Và phần còn lại trong sự nghiệp lập trình của tôi bằng các ngôn ngữ được gõ yếu, còn được gọi là gõ lỏng lẻo, chẳng hạn như PHP, JavaScript và shell script

Lập trình bằng các ngôn ngữ gõ yếu

Tôi ủng hộ mạnh mẽ việc gõ mạnh vì cho phép trình biên dịch, JIT và trình thông dịch tối ưu hóa dữ liệu theo loại dữ liệu của chúng, cho phép thực thi nhanh hơn nhiều và chiếm ít bộ nhớ hơn

Tuy nhiên, tôi thấy lợi ích của việc có các ngôn ngữ được gõ yếu vì nó dễ dàng hơn cho người mới và nếu tốc độ không phải là vấn đề, đặc biệt là trong các tập lệnh hoặc chương trình nhỏ, thì việc nhập tên biến sẽ đơn giản hơn nhiều và để JIT hoặc trình thông dịch thực hiện

Tôi đến từ thời mà mọi chu kỳ đồng hồ đều được tính vì máy tính chạy chậm so với nhu cầu của nó. Vào thời điểm đó, web đã có những bước đầu tiên để cung cấp nội dung động

Perl nhỏ, sau đó là PHP, tập lệnh ở phía máy chủ và tập lệnh JavaScript ở phía trình duyệt cho phép người dùng tương tác với các trang web, nhưng vào thời điểm đó nó rất hạn chế

C/C++ và các ứng dụng máy tính để bàn là những gì người dùng dựa vào để cung cấp các hoạt động phức tạp

Sau đó, internet bùng nổ và máy tính ngày càng nhanh hơn với tốc độ Định luật Moore. Mô hình chuyển từ máy tính cá nhân sang web và sau đó là đám mây. Máy tính không còn chậm nữa và chúng ta không còn phụ thuộc vào máy tính cá nhân nữa; . Đám mây, dịch vụ vi mô và các phương pháp khác cho phép song song hóa quy mô lớn với chi phí được kiểm soát và cùng với đó, quy mô lớn trở nên khả thi mà không cần máy tính lớn

Bây giờ PHP và Javascript cho phép xây dựng các ứng dụng web phức tạp, nhưng cùng với nó, một vấn đề mới lại nảy sinh. những ngôn ngữ này không được thiết kế để phát triển rộng rãi. Sự dễ dàng của các ngôn ngữ được gõ yếu giờ đây trở nên khó bắt lỗi hơn ở giai đoạn đầu, trái ngược với các ngôn ngữ được gõ mạnh mà trình biên dịch có thể phát hiện các vấn đề về kiểu dữ liệu

PHP7. 4

PHP7. 4 đã giới thiệu các khai báo kiểu và ngôn ngữ TypeScript được tạo dưới dạng siêu bộ Javascript thêm kiểu gõ tĩnh. Cả hai ngôn ngữ, không ngừng là ngôn ngữ gõ yếu, nhưng với gợi ý kiểu, có thể thêm kiểm tra kiểu tùy chọn khi gọi và thoát khỏi các chức năng hoặc phương thức

Tại thời điểm này, tôi muốn nhấn mạnh loại gợi ý đó, mặc dù nó cung cấp cơ chế kiểm tra nhưng nó không tối ưu hóa mã cho một loại dữ liệu cụ thể và một biến vẫn có thể thay đổi loại khi giá trị của nó thay đổi

 

Javascript và php có phải là ngôn ngữ được gõ lỏng lẻo không?
Strongly vs Weakly typed languages

 

Python – Một ngôn ngữ gõ động

Python là một trường hợp nghiên cứu thú vị khi nói đến các loại dữ liệu. Đây là một ngôn ngữ kiểu động và nó được phát triển sớm hơn nhiều so với PHP hay JavaScript, mặc dù nó chỉ mới được xuất bản vào năm 1991, vẫn sớm hơn PHP và JavaScript 4 năm

Python được biết đến là một ngôn ngữ dễ sử dụng. Theo quan điểm của tôi, điểm mạnh của nó là mối quan hệ chặt chẽ với C. Thực tế là tích hợp rất tốt với C, được phép sử dụng trong một thời gian dài như một cách dễ dàng để cho phép người dùng mở rộng các ứng dụng máy tính để bàn C. Hầu như tất cả các ứng dụng tạo nội dung 3D đều cho phép người dùng viết các tập lệnh python của riêng mình. Trên các bản phân phối Linux cũng khá phổ biến để có các ứng dụng GUI được viết bằng python

Tuy nhiên, chính mối quan hệ đối xứng của nó với C đã cho phép nó bùng nổ khi Khoa học dữ liệu ngày càng trở nên phổ biến. Python dễ sử dụng nhưng không nhanh, như Guido van Rossum, người tạo ra nó, đã tuyên bố rõ ràng và Khoa học dữ liệu chủ yếu là về khối lượng xử lý số rất lớn có thể gây chậm chạp nếu chúng ta chỉ dựa vào Python, nhưng

Ngoài ra, Python đã nắm lấy sức mạnh của gợi ý kiểu kể từ phiên bản 3. 5, mặc dù, như các tác giả của nó đã nêu trên PEP 484, “Python sẽ vẫn là một ngôn ngữ được nhập động và các tác giả không muốn đưa ra các gợi ý về kiểu bắt buộc, ngay cả theo quy ước”

Phần kết luận

Tôi đã gặp rất nhiều nhà phát triển PHP và JavaScript, những người đã phản đối việc thêm các loại vào mã của họ, trong trường hợp của JavaScript, điều đó có nghĩa là chuyển sang TypeScript. Họ nghĩ rằng đó là một sự lãng phí thời gian và không gian viết mã, nhưng giống như bất kỳ công nghệ hoặc kỹ thuật nào khác, phải mất thời gian từ khi triển khai đến khi áp dụng và một số nhà phát triển sẽ luôn cảm thấy thoải mái hơn với việc viết mã không cần đánh máy

Tuy nhiên, trong trường hợp của Python, phiên bản 3. 5 đã xuất hiện từ năm 2015, gợi ý gõ vẫn là điều không phổ biến trong các cuộc tranh luận của các nhà phát triển về thói quen lập trình của họ

Nếu tôi có thể dự đoán tương lai, tôi sẽ thấy các nhà phát triển chuyển từ từ sang tuân thủ các hệ thống kiểm tra kiểu chặt chẽ hơn và chặt chẽ hơn, và trong tương lai xa, nếu có đủ nhà phát triển viết mã với các kiểu, tôi tin rằng JIT và trình thông dịch sẽ có thể

PHP có phải là ngôn ngữ được gõ lỏng lẻo không?

Khi làm việc với các tập lệnh lập trình này, bạn cần sử dụng ký hiệu cho từng loại biến (như chuỗi, số nguyên, dấu phẩy, v.v. ) để khai báo chúng. Bạn chỉ cần gán một giá trị chuỗi cho biến, để xác định rằng biến của chúng ta là một số nguyên. Đây là lý do tại sao PHP là ngôn ngữ được gõ lỏng lẻo .

JavaScript có phải là ngôn ngữ được gõ lỏng lẻo không?

JavaScript được coi là ngôn ngữ "được nhập yếu" hoặc "không được nhập" . Loại được đề cập ở đây là các loại dữ liệu—không liên quan gì đến việc nhập từ bàn phím của bạn.

JavaScript có phải là ngôn ngữ kết hợp lỏng lẻo không?

Ngôn ngữ lập trình được nhập lỏng lẻo bao gồm các ngôn ngữ sau. C. JavaScript. perl.

JavaScript và PHP có giống nhau không?

Giống như Javascript, PHP là ngôn ngữ kịch bản thông dịch và hướng đối tượng được phát hành vào năm 1995. Nó được tạo ra để phát triển web nhưng giờ đây có thể được sử dụng làm ngôn ngữ có mục đích chung. Sự khác biệt chính so với Javascript là PHP là ngôn ngữ phía máy chủ được sử dụng cho back-end và được thực thi trên máy chủ.