Sự khác biệt giữa gõ tĩnh và động trong python

Chủ đề này được cung cấp chỉ để tôn trọng vì nó giải thích sự khác biệt giữa gõ động và gõ tĩnh. Hiểu sự khác biệt giữa gõ động và gõ tĩnh là chìa khóa để hiểu cách xử lý lỗi tập lệnh chuyển đổi và cách nó khác với cách Groovy xử lý lỗi. Điều này cũng sẽ giúp bạn giải thích các lỗi do tập lệnh chuyển đổi của bạn tạo ra

Ghi chú. Điều quan trọng cần biết là việc triển khai Groovy trong Big Data Discovery thực thi kiểu nhập tĩnh. Để biết thông tin về xử lý ngoại lệ trong Transform , sử dụng trình phân tích cú pháp tĩnh ghi đè hành vi nhập động của Groovy, hãy xem.

Có hai điểm khác biệt chính giữa gõ động và gõ tĩnh mà bạn cần lưu ý khi viết tập lệnh chuyển đổi

Đầu tiên, các ngôn ngữ được nhập động thực hiện kiểm tra kiểu khi chạy, trong khi các ngôn ngữ được nhập tĩnh thực hiện kiểm tra kiểu tại thời điểm biên dịch. Điều này có nghĩa là các tập lệnh được viết bằng các ngôn ngữ được nhập động [như Groovy] có thể biên dịch ngay cả khi chúng chứa các lỗi ngăn không cho tập lệnh chạy bình thường [nếu có]. Nếu một tập lệnh được viết bằng ngôn ngữ kiểu tĩnh [chẳng hạn như Java] có lỗi, thì tập lệnh đó sẽ không thể biên dịch cho đến khi lỗi được sửa

Thứ hai, các ngôn ngữ được nhập tĩnh yêu cầu bạn khai báo kiểu dữ liệu của các biến trước khi sử dụng chúng, trong khi các ngôn ngữ được nhập động thì không. Hãy xem xét hai ví dụ mã sau đây.

// Java example
int num;
num = 5;
// Groovy example
num = 5

Cả hai ví dụ đều làm điều tương tự. tạo một biến gọi là num và gán cho nó giá trị 5. Sự khác biệt nằm ở dòng đầu tiên của ví dụ Java, int num;, định nghĩa kiểu dữ liệu của num là int. Java được nhập tĩnh, do đó, nó mong muốn các biến của nó được khai báo trước khi chúng có thể được gán giá trị. Groovy được nhập động và xác định kiểu dữ liệu của biến dựa trên giá trị của chúng, vì vậy dòng này không bắt buộc

Các ngôn ngữ được nhập động linh hoạt hơn và có thể giúp bạn tiết kiệm thời gian và không gian khi viết tập lệnh. Tuy nhiên, điều này có thể dẫn đến các vấn đề trong thời gian chạy. Ví dụ.

// Groovy example
number = 5
numbr = [number + 15] / 2  // note the typo

Đoạn mã trên sẽ tạo biến số có giá trị là 5, sau đó thay đổi giá trị của nó thành 10 bằng cách thêm 15 vào biến đó và chia cho 2. Tuy nhiên, số bị viết sai chính tả ở đầu dòng thứ hai. Bởi vì Groovy không yêu cầu bạn khai báo các biến của mình, nên nó tạo một biến mới có tên là number và gán cho nó giá trị mà number nên có. Mã này sẽ biên dịch tốt, nhưng có thể tạo ra lỗi sau này khi tập lệnh cố gắng thực hiện điều gì đó với số giả sử giá trị của nó là 10

Chúng tôi cung cấp nhiều lựa chọn các khóa học từ các trường đại học và tổ chức văn hóa hàng đầu từ khắp nơi trên thế giới. Chúng được cung cấp từng bước một và có thể truy cập được trên thiết bị di động, máy tính bảng và máy tính để bàn, vì vậy bạn có thể phù hợp với việc học xung quanh cuộc sống của mình

Chúng tôi tin rằng việc học phải là một trải nghiệm xã hội, thú vị, vì vậy các khóa học của chúng tôi mang đến cơ hội thảo luận những gì bạn đang học với những người khác trong quá trình học, giúp bạn có những khám phá mới mẻ và hình thành những ý tưởng mới
Bạn có thể mở khóa những cơ hội mới với quyền truy cập không giới hạn vào hàng trăm khóa học ngắn hạn trực tuyến trong một năm bằng cách đăng ký gói Không giới hạn của chúng tôi. Xây dựng kiến ​​thức của bạn với các trường đại học và tổ chức hàng đầu

Tìm hiểu thêm về cách FutureLearn đang thay đổi cách tiếp cận giáo dục

Tôi đã lập trình được hơn bốn năm và tôi đã nghe nhiều lần về các ngôn ngữ được gõ tĩnh và gõ động. Nhưng, thành thật mà nói, tôi không biết sự khác biệt giữa các điều khoản đó. Hôm nay, tôi nghĩ rằng tôi sẽ làm một số nghiên cứu và tìm hiểu thông tin

Vì vậy, tôi đã thực hiện một nghiên cứu nhỏ và tìm ra một số thông tin quan trọng liên quan đến các chủ đề đó. Trong bài viết này, tôi muốn chia sẻ những gì tôi đã học được

Sự khác biệt giữa ngôn ngữ gõ tĩnh và gõ động khá đơn giản. Trước đó, hãy xem kiểm tra kiểu là gì và các kiểu kiểm tra kiểu

Kiểm tra kiểu là quá trình kiểm tra và xác minh kiểu của một cấu trúc [hằng, biến, mảng, danh sách, đối tượng] và ngữ cảnh sử dụng của nó. Nó giúp giảm thiểu khả năng lỗi loại trong chương trình

Việc kiểm tra loại có thể xảy ra tại thời điểm biên dịch [kiểm tra tĩnh] hoặc tại thời điểm chạy [kiểm tra động]

Một ngôn ngữ lập trình được nhập tĩnh nếu loại biến được biết tại thời điểm biên dịch. Một ngôn ngữ được nhập động nếu loại biến được chọn trong thời gian chạy.  

Vì vậy, chúng ta hãy xem xét chi tiết cả hai điều khoản này

Ngôn ngữ gõ tĩnh

Chúng tôi gọi một ngôn ngữ là "kiểu tĩnh" nếu ngôn ngữ đó tuân theo việc kiểm tra kiểu trong quá trình biên dịch. Vì vậy, mọi chi tiết về các biến và tất cả các loại dữ liệu phải được biết trước khi chúng tôi thực hiện quá trình biên dịch

Trong loại ngôn ngữ này, một khi biến đã được gán cho một loại, nó không thể được gán cho một số biến khác thuộc loại khác. Nếu chúng ta cố gắng làm như vậy, trình biên dịch sẽ phát sinh một số lỗi và chúng ta cần sửa chúng. Do đó, đối với một biến được khai báo, kiểu dữ liệu là cố định

Một số ví dụ về ngôn ngữ kiểu tĩnh là Java, C, C++, C#, Swift, Scala, Kotlin, Fortran, Pascal, Rust, Go, COBOL, v.v.

Nếu bạn có kinh nghiệm sử dụng các ngôn ngữ lập trình này, bạn có thể biết tôi đang nói gì. Thường gặp một số lỗi kiểu khi làm việc với các ngôn ngữ này

Trong hầu hết các ngôn ngữ kiểu tĩnh, lập trình viên phải chỉ định kiểu dữ liệu của từng biến là gì, giống như chúng ta làm trong Java, C và C++

Nhưng đối với một số ngôn ngữ khác như Hascall, Scala và Kotlin, hệ thống kiểu có khả năng tích hợp sẵn [được gọi là suy luận kiểu] để suy ra kiểu của một biến từ mã

Bây giờ, hãy xem một ví dụ để biết cách một biến được khai báo trong ngôn ngữ C

int mangoes = 10;

Trong ví dụ này, chúng tôi đã xác định một tên biến có tên là 'xoài' và chỉ định loại là int [giá trị số nguyên]. Và, chúng tôi đã cho nó một giá trị là 10

Đây là cách chúng ta khai báo một biến trong ngôn ngữ kiểu tĩnh như C. Trong trường hợp này, trình biên dịch có thể xác định trực tiếp rằng loại biến là int

Một điều tuyệt vời về các ngôn ngữ được gõ tĩnh là chúng ta có thể sửa rất nhiều lỗi ngay cả trước khi chạy chương trình. Khi chúng tôi biên dịch thành công chương trình, chúng tôi không cần phải lo lắng về bất kỳ loại lỗi cú pháp nào. Mã sẽ sẵn sàng để được thực thi

Bây giờ mã gần như đã hoàn thành và trình biên dịch biết từng loại dữ liệu là gì. Do đó, nó có thể tạo ra mã máy được tối ưu hóa, sử dụng ít bộ nhớ hơn. Vì vậy, việc thực thi mã sẽ nhanh hơn so với các ngôn ngữ gõ động. Đây là những ưu điểm chính của ngôn ngữ kiểu tĩnh

Bây giờ, hãy tiếp tục và xem xét kỹ hơn các ngôn ngữ được nhập động

Ngôn ngữ gõ động

Chúng tôi gọi một ngôn ngữ là “kiểu động” nếu việc kiểm tra kiểu diễn ra trong khi chương trình chạy [thời gian chạy]. Trong loại ngôn ngữ này, không cần chỉ định kiểu dữ liệu của từng biến trong khi viết mã

Điều đó có nghĩa là bạn có thể viết khá nhanh vì bạn không phải chỉ định loại mỗi lần. Một số ngôn ngữ cho phép bạn cung cấp thông tin loại nhưng không yêu cầu

Hầu hết các ngôn ngữ lập trình hiện đại đều được gõ động. Một số ví dụ về ngôn ngữ kiểu động là Python, Javascript, Ruby, Perl, PHP, R, Dart, Lua, Objective-C, v.v.

Ngôn ngữ được nhập động có khả năng xác định loại của từng biến trong thời gian chạy. Trong các ngôn ngữ này, các biến được liên kết với các đối tượng trong thời gian chạy bằng cách sử dụng các câu lệnh gán

Ta không cần khai báo kiểu dữ liệu của biến trước khi sử dụng. Hãy xem một ví dụ sử dụng Python

mangoes = 10

Ngôn ngữ kịch bản chủ yếu là động, vì không có trình biên dịch để thực hiện kiểm tra kiểu tĩnh. Tuy nhiên, có những trường hợp bạn có thể thấy mình đang tìm kiếm một lỗi do trình thông dịch hiểu sai loại biến. May mắn thay, các tập lệnh có xu hướng rất nhỏ và do đó, các lỗi không có quá nhiều chỗ để ẩn.

Một ưu điểm của các ngôn ngữ kiểu động là dễ dàng viết mã mà không cần lo lắng về kiểu của các biến. Việc thiếu một bước biên dịch riêng biệt ngụ ý rằng các lập trình viên không phải đợi trình biên dịch kết thúc trước khi họ có thể kiểm tra các thay đổi trong mã

Các đối tượng động đang có một số loại thông tin thời gian chạy [RTTI]. Có thể hữu ích khi triển khai một số tính năng khá thú vị như gửi động, truyền xuống, liên kết muộn, phản chiếu, v.v.

Các ngôn ngữ được nhập tĩnh có hiệu suất tốt hơn trong thời gian chạy và nhanh hơn trong thời gian chạy. Đó là bởi vì không cần kiểm tra kiểu trong thời gian chạy và mã đã được dịch

Nhưng các ngôn ngữ được nhập động tương đối nhanh hơn trong thời gian phát triển và linh hoạt hơn

Vì vậy, cả hai loại ngôn ngữ đều có một số ưu điểm cũng như nhược điểm riêng

Phần kết luận

Trong bài viết này, chúng tôi đã thảo luận về sự khác biệt giữa ngôn ngữ được nhập tĩnh và ngôn ngữ được nhập động. Dưới đây là tóm tắt của bài viết này trong hai câu

Các ngôn ngữ được nhập tĩnh thực hiện kiểm tra kiểu tại thời điểm biên dịch, trong khi các ngôn ngữ được nhập động thực hiện kiểm tra kiểu trong thời gian chạy.  

Các ngôn ngữ được nhập tĩnh yêu cầu bạn khai báo kiểu dữ liệu của các biến trước khi sử dụng chúng, trong khi các ngôn ngữ được nhập động thì không

Nếu bạn muốn tiếp tục thảo luận, vui lòng thêm suy nghĩ của bạn vào phần bình luận bên dưới. Ngoài ra, bạn cũng có thể viết ra những nghi ngờ hoặc thắc mắc của mình

Nếu bạn muốn trở thành một lập trình viên giỏi hơn, hãy xem 9 mẹo hữu ích này để trở thành một lập trình viên giỏi hơn. Tôi thực sự nghĩ rằng những lời khuyên này sẽ hữu ích cho bạn

Tôi sẽ đánh giá cao nếu bạn sẵn sàng chia sẻ bài viết này. Nó sẽ khuyến khích tôi tạo ra nhiều bài viết hữu ích như thế này

Sự khác biệt giữa gõ tĩnh và động là gì?

Đầu tiên, các ngôn ngữ được nhập động thực hiện kiểm tra kiểu khi chạy, trong khi các ngôn ngữ được nhập tĩnh thực hiện kiểm tra kiểu tại thời điểm biên dịch .

Python nào sử dụng kiểu gõ tĩnh hoặc động?

Python là một ngôn ngữ được nhập động . 00. 12 Trình thông dịch Python chỉ kiểm tra kiểu khi mã chạy. Khi bạn thực thi một dòng mã, như bạn sẽ thấy trong ví dụ tiếp theo, đó là lúc việc kiểm tra kiểu diễn ra. 00. 23 Ngoài ra, loại biến được phép thay đổi trong suốt thời gian tồn tại của nó.

Gõ tĩnh và động giải thích với ví dụ là gì?

Ngôn ngữ được nhập tĩnh thực hiện kiểm tra loại tại thời điểm biên dịch, trong khi ngôn ngữ được nhập động thực hiện kiểm tra loại tại thời gian chạy . Các ngôn ngữ được nhập tĩnh yêu cầu bạn khai báo kiểu dữ liệu của các biến trước khi sử dụng chúng, trong khi các ngôn ngữ được nhập động thì không.

Sự khác biệt giữa tĩnh và động là gì?

Nói chung, động có nghĩa là "tràn đầy năng lượng hoặc mạnh mẽ", trong khi tĩnh có nghĩa là "cố định. " Tuy nhiên, trong thuật ngữ máy tính, động thường có nghĩa là "có khả năng hành động hoặc thay đổi", trong khi tĩnh có nghĩa là "cố định. "

Chủ Đề