Tại sao C được ưa chuộng hơn Python trong các hệ thống nhúng?

Vài năm trước, vào tháng 12 năm 2013, Damien George đã tài trợ thành công cho một dự án Kickstarter đã khởi chạy Micro Python. Micro Python là một “triển khai Python 3 gọn gàng và nhanh chóng” được thiết kế để chạy trên các bộ vi điều khiển. Trong một bài báo trên EDN. com có ​​tựa đề “Phần mềm thời gian thực sử dụng Micro Python”, tôi đã thảo luận về nền tảng của ngôn ngữ và phần cứng ARM Cortex-M mà nó được thiết kế để chạy trên đó. Trong bài viết này, hãy xem xét năm lợi thế của việc sử dụng Micro Python cho phần mềm nhúng mà C gây khó khăn hoặc gần như không thể

Lợi thế #1 – Ngôn ngữ con người có thể đọc được

Bất kỳ nhà phát triển nào đã viết một dòng mã C đều biết rằng ngôn ngữ lập trình C có thể tạo ra một số phần mềm bí ẩn nhất từng được loài người phát triển. Toàn bộ các cuộc thi được dành để viết các chương trình khó hiểu và không thể hiểu được. Trăn thì khác. Python được phát triển với tính dễ đọc. Python dễ đọc, dễ viết và có đường cong học tập thấp so với các ngôn ngữ khác. Một phiên bản Python được chia tỷ lệ ở dạng Micro Python dành cho bộ vi điều khiển mở ra khả năng tạo nguyên mẫu nhanh và cơ hội cải thiện khả năng bảo trì và tính di động của mã

Ưu điểm #2 – Tích hợp xử lý lỗi và ngoại lệ

Ngôn ngữ lập trình C không có ngoại lệ và xử lý lỗi. Do đó, các nhà phát triển hệ thống nhúng gặp khó khăn khi phải phát triển các giải pháp xử lý lỗi và ngoại lệ của riêng họ. Mặt khác, Micro Python bao gồm và mở rộng ngoại lệ và xử lý lỗi của Python. Hành vi mặc định của Micro Python là dừng thực thi chương trình khi gặp lỗi, in ra tệp và số dòng để nhà phát triển có thể dễ dàng phát hiện ra sự cố

Xử lý lỗi và ngoại lệ mặc định của Micro Python dễ dàng bị ghi đè bằng cách sử dụng các khối try/ngoại trừ và thử/ngoại trừ/cuối cùng. Giống như trong một ngôn ngữ cấp cao hơn, hãy bao quanh một khối bằng khối thử/ngoại trừ và nếu một ngoại lệ xảy ra, nó có thể bị bắt và xử lý tương ứng. Tập lệnh sẽ tiếp tục chạy, xử lý ngoại lệ với hy vọng người dùng không nhận thấy điều gì

Lợi thế #3 – Mã nguồn mở và miễn phí

Micro Python là nguồn mở và sử dụng giấy phép phần mềm MIT, nghĩa là nó có thể được sử dụng và lạm dụng theo bất kỳ cách nào mà nhà phát triển cho là phù hợp. Các nhóm phát triển có thể lấy bản phát hành mới nhất và chạy với nó. Muốn có bộ xử lý lớn hơn hoặc nhỏ hơn, chỉ cần chuyển Micro Python sang bộ vi điều khiển đó. Cây sơ cấp cung cấp các ví dụ cho một số bộ xử lý và cấu hình khác nhau. Các cải tiến có thể được chia sẻ với cộng đồng và được hợp nhất trở lại vào thân chính, tất nhiên nếu nhóm phát triển cảm thấy muốn chia sẻ. Ưu điểm là việc lấy và chuyển Micro Python là miễn phí và yêu cầu đầu tư rất ít thời gian

Lợi thế #4 – Ngôn ngữ hướng đối tượng

Sử dụng Micro Python sẽ lấp đầy một số khoảng trống mà ngôn ngữ lập trình C còn thiếu bao gồm khả năng tạo lớp và sử dụng các kỹ thuật lập trình hướng đối tượng. Các nhà phát triển phần mềm nhúng sử dụng Micro Python có thể tận dụng các cấu trúc lập trình hiện đại như kế thừa và đa hình. Đóng gói và che giấu thông tin có thể dễ dàng thực hiện mà không tốn nhiều công sức. Một số người cho rằng những cấu trúc tương tự này có thể được tạo ra bằng ngôn ngữ C, có từ năm 1972, nhưng thực tế là lượng thời gian và công sức cần thiết khiến cho lập luận này trở nên buồn cười và việc triển khai rất dễ xảy ra lỗi.

Ưu điểm #5 – Tóm tắt lớp phần cứng

Micro Python tóm tắt các chi tiết cho phần cứng vi điều khiển cơ bản. Thay vì lo lắng về các bit và byte, nhà phát triển chỉ cần truy cập các phương thức của một đối tượng ngoại vi để điều khiển phần cứng. Kiểm soát phần cứng được thực hiện thông qua thư viện pyb chuyên dụng. Để điều khiển đèn LED, nhà phát triển chỉ cần tạo một đối tượng được khởi tạo với thông tin về chân đèn LED và sau đó bật hoặc tắt đèn LED trở thành một bài tập đơn giản để truy cập các phương thức bật và tắt của đối tượng. Tính trừu tượng của lớp phần cứng cho phép một kỹ sư tập trung vào các chi tiết cụ thể của ứng dụng hơn là cách phần cứng nằm ở vị trí thấp hoạt động

Suy nghĩ cuối cùng

Micro Python là một ngôn ngữ thú vị để sử dụng trong phần mềm nhúng và có thể cung cấp cho các nhà phát triển một công cụ mới để tạo nguyên mẫu nhanh cho một hệ thống nhúng. Micro Python thậm chí có thể cung cấp lộ trình phát triển ngắn hơn cho IoT hoặc các sản phẩm điện tử tiêu dùng. Cổng ngôn ngữ chỉ mới bước lên sân khấu và chỉ có thời gian mới biết liệu nó sẽ được chấp nhận rộng rãi hay được sùng bái trong các nhóm biệt lập

Python có thể mạnh nhất khi được sử dụng làm trung gian giao tiếp giữa người dùng và hệ thống nhúng mà họ đang làm việc cùng

Tại sao C được ưa chuộng hơn Python trong các hệ thống nhúng?
qua

Tom Radcliffe

·

Tháng 9. 05, 16 · Ý kiến

Thích (23)

Bình luận

Tiết kiệm

tiếng riu ríu

22. 79K Lượt xem

Tham gia cộng đồng DZone và có được trải nghiệm thành viên đầy đủ

Tham gia miễn phí

Các ngôn ngữ lập trình C/C++ chiếm ưu thế trong lập trình hệ thống nhúng, mặc dù chúng có một số nhược điểm. Mặt khác, Python có nhiều điểm mạnh khiến nó trở thành ngôn ngữ tuyệt vời cho các hệ thống nhúng. Hãy xem xét ưu và nhược điểm của từng loại và lý do tại sao bạn nên xem xét Python cho lập trình nhúng

C/C++ là ngôn ngữ biên dịch, trong khi Python là ngôn ngữ thông dịch. C/C++ đã có từ rất lâu rồi; . Python trẻ hơn vì nó được tạo ra vào năm 1989 bởi Guido van Rossum. Kể từ đó, nó trở thành một trong những ngôn ngữ lập trình mã nguồn mở phổ biến nhất. Tất cả các bản phát hành Python đều là nguồn mở và có thể sử dụng và phân phối miễn phí, ngay cả đối với các dự án thương mại. (Nếu bạn đang tìm kiếm hỗ trợ và bồi thường ở cấp độ thương mại, các bản phân phối như ActivePython có sẵn. )

Trường hợp cho Python

Python là ngôn ngữ lập trình nhập môn phổ biến nhất tại các khoa khoa học máy tính (CS) hàng đầu ở Hoa Kỳ. Theo một nghiên cứu của Tập đoàn Barr, tám trong số mười khoa CS hàng đầu hiện đang sử dụng Python để dạy viết mã. Tranh luận về giá trị của nó nếu bạn muốn, nhưng thực tế đơn giản là ngôn ngữ được hiểu rộng rãi nhất trong nhóm tuyển dụng sinh viên mới tốt nghiệp là Python. Rất có khả năng một sinh viên mới tốt nghiệp sẽ hiểu cách viết mã bằng Python hơn là bằng C/C++

Các nhà phát triển theo sở thích có thể có một số kinh nghiệm với Python và có nhiều khả năng họ sẽ thành thạo Python hơn là C/C++. Vì chỉ có khoảng 40% kỹ sư phần mềm máy tính và nhà phân tích hệ thống có bằng khoa học máy tính nên rất nhiều người được tuyển dụng trong ngành đến từ những người có sở thích. Nhưng khi nói đến các hệ thống nhúng, các con số thay đổi khá nghiêm trọng. Nghiên cứu của Barr Group cho thấy hơn 95% mã cho các hệ thống nhúng được viết bằng C/C++. Di sản này trên các hệ thống nhúng có thể khó để Python vượt qua, nhưng các thuộc tính và số lượng tuyệt đối người viết mã bằng Python có thể giúp nó vượt qua C/C++ trong tương lai

Python không chỉ là ngôn ngữ phổ biến nhất cho các chương trình CS cơ bản mà còn là ngôn ngữ phát triển nhanh nhất cho điện toán nhúng. Có thể điều đó nghe có vẻ ngớ ngẩn khi bạn quét lại các con số và nhận ra đó là ngôn ngữ phát triển nhanh nhất trong số 5% mã hệ thống nhúng còn lại không phải là C/C+ +, nhưng Python sẽ bắt đầu ăn sâu vào thế độc quyền của C/C++ hơn nữa . Những người có sở thích di chuyển vào ngành với kinh nghiệm lập trình máy bay không người lái, rô-bốt hoặc các dự án khác thường có nền tảng về Arduino hoặc Raspberry Pi. Họ có thể đã xử lý Python ở một mức độ nào đó trong thời gian đó và cũng có khả năng là họ sẽ gặp phải một số chương trình hệ thống nhúng.

Trong khi C/C++ viết chậm, dễ bị lỗi và thường không đọc được thì Python được biết đến với khả năng ghi, giảm lỗi và dễ đọc. Tầm quan trọng của khả năng đọc không thể được nhấn mạnh quá mức. khi bạn đang làm việc trong một nhóm, khả năng đọc là tối quan trọng để duy trì mã. Nó phải dễ giải mã trừ khi bạn sẵn sàng bỏ ra nhiều thời gian và tiền bạc hơn để gỡ lỗi và đảm bảo chất lượng. Khả năng sử dụng lại thiết kế của Python vượt xa C/C++ và trong môi trường Agile ngày nay, việc sử dụng lại thiết kế có thể là sự khác biệt giữa việc dẫn đầu hay tụt lại phía sau đối thủ

Các thuật toán nhúng ngày càng phức tạp. Các vòng điều khiển đơn giản đang được thay thế bằng mạng thần kinh và các quy trình liên quan nhiều đến khác đã giúp Python có được chỗ đứng của mình. Có các thư viện Python như Theano sẽ tối ưu hóa mã Python cho các quy trình này. Trong khi Theano chủ yếu được viết bằng C/C++, Python được sử dụng để giao tiếp với các thư viện hiệu suất cao theo cách thân thiện với con người. Các thư viện Python đang phát triển mạnh—PyPI, chỉ mục gói Python, có hơn 80.000 mô-đun và các bản tóm tắt khổng lồ này giúp tăng đáng kể năng suất của các lập trình viên bằng cách cung cấp cho họ tùy chọn bỏ qua một vài bước và sử dụng các chức năng đã được thiết lập sẵn trong mã của riêng họ

Trường hợp cho C/C++

Trường hợp của C/C++ là khá rõ ràng. nó tạo mã thời gian chạy nhanh hơn và nhỏ gọn hơn, đồng thời nó đã là ngôn ngữ được lựa chọn cho 95% mã hệ thống nhúng, do đó, nó có toàn bộ di sản mà Python sẽ phải vượt qua. Tuy nhiên, khi nói đến tốc độ, tốc độ thời gian chạy không phải là khía cạnh phát triển duy nhất cần xem xét—bạn cũng phải xem xét tốc độ phát triển. Mặc dù Python có thể kém hiệu quả hơn C/C++ khi chạy, nhưng trong quá trình phát triển, nó hiệu quả hơn nhiều. Trình thông dịch đọc từng dòng mã, phân tích cú pháp, kiểm tra thời gian chạy và gọi các thủ tục để thực hiện các thao tác trong mã. Đây là hoạt động nhiều hơn những gì bạn nhận được từ việc chạy mã C/C++, trong đó cùng một dòng mã có thể được biên dịch thành chỉ một vài hướng dẫn. Điều này có thể dẫn đến tốc độ thời gian chạy chậm hơn và mức tiêu thụ năng lượng cao hơn với Python

Cải thiện tốc độ của Python

Vì vậy, trường hợp chính chống lại Python so với C/C++ là tốc độ thời gian chạy của nó, nhưng có một số cách để tối ưu hóa mã để nó chạy hiệu quả hơn. Ngoài các thư viện như Theano, còn có các tiện ích mở rộng tối ưu hóa cho Python như Cython, về cơ bản là Python với kiểu gõ tĩnh và từ khóa để chạy toán nhanh hơn. Vì Cython được gõ tĩnh nên bạn có thể dễ dàng biên dịch sang C/C++ và chạy ở tốc độ C/C++

Trình biên dịch Just-In-Time (JIT) là một cách tốt khác để cải thiện tốc độ thời gian chạy của Python. Các trình biên dịch này hoạt động song song với trình thông dịch của Python để tạo các lệnh máy đã biên dịch cho mã bên trong các vòng lặp. Điều này cho phép các lượt tiếp theo của trình thông dịch thực thi nhanh hơn. Trình biên dịch JIT của PyPy có thể tăng tốc độ thực thi của Python lên gần gấp đôi. Tuy nhiên, trình biên dịch JIT chỉ nên được sử dụng nếu có đủ dung lượng và các hệ thống nhúng thường không có nhiều dung lượng dự phòng. Tối ưu hóa tốt nhất là sử dụng các cấu trúc dữ liệu và thuật toán tốt hơn, nhưng đây là nhiệm vụ khó khăn nhất trong thiết kế và triển khai phần mềm, vì vậy tốt nhất bạn nên sử dụng một trong các công cụ ở trên, tùy thuộc vào trình độ kỹ năng của bạn

Sử dụng Python để giao tiếp với các hệ thống nhúng

Python có thể mạnh nhất khi được sử dụng làm trung gian giao tiếp giữa người dùng và hệ thống nhúng mà họ đang làm việc cùng. Gửi tin nhắn qua Python đến hoặc từ một hệ thống nhúng cho phép người dùng tự động kiểm tra. Các tập lệnh Python có thể đưa hệ thống vào các trạng thái khác nhau, đặt cấu hình và kiểm tra tất cả các loại trường hợp sử dụng trong thế giới thực. Python cũng có thể được sử dụng để nhận dữ liệu hệ thống nhúng có thể được lưu trữ để phân tích. Sau đó, các lập trình viên có thể sử dụng Python để phát triển các tham số và các phương pháp phân tích dữ liệu đó

Hiện tại, cuộc tranh luận chính về giá trị của Python và C/C++ bắt nguồn từ việc điều gì quan trọng hơn đối với nhóm của bạn. tốc độ phát triển hoặc tốc độ thời gian chạy. Tuy nhiên, trong tương lai, các lập trình viên Python có thể không đưa ra trường hợp của họ để sử dụng nó trong các hệ thống nhúng, mà là các nhà thiết kế hệ thống nhúng phải tìm ra cách thích ứng với sự phổ biến ngày càng tăng không ngừng của Python

Tại sao C là ngôn ngữ ưa thích nhất cho các hệ thống nhúng?

C cung cấp hướng dẫn máy được tối ưu hóa cho đầu vào nhất định, giúp tăng hiệu suất của hệ thống nhúng . Hầu hết các ngôn ngữ cấp cao đều dựa vào các thư viện, do đó chúng cần nhiều bộ nhớ hơn, đây là một thách thức lớn trong các hệ thống nhúng.

Tại sao C được ưa chuộng hơn Python?

C là ngôn ngữ nhanh hơn so với Python vì nó được biên dịch . Các chương trình Python thường chậm hơn các chương trình C khi chúng được diễn giải. Trong C, loại của các biến khác nhau phải được khai báo khi chúng được tạo và chỉ các giá trị của các loại cụ thể đó phải được gán cho chúng.

Tại sao Python không được sử dụng trong các hệ thống nhúng?

Các công cụ dựa trên Python để phát triển ứng dụng nhúng . Trong những trường hợp như vậy, các công cụ Python khác nhau có thể được sử dụng để tạo nguyên mẫu, với ứng dụng hoặc mã hệ thống cuối cùng được tạo và triển khai trên thiết bị. Sometimes the embedded environment is just too restrictive to support a Python virtual machine. In such cases, various Python tools can be employed for prototyping, with the eventual application or system code being generated and deployed on the device.

Tại sao ngôn ngữ C được ưa thích để lập trình hầu hết các bộ vi điều khiển?

1) Kích thước bộ nhớ thấp . Bộ nhớ sẵn có thay đổi dựa trên bộ điều khiển đến bộ điều khiển. Vì vậy, ngôn ngữ lập trình phải sao cho tạo ra mã được tối ưu hóa và chiếm ít dung lượng bộ nhớ hơn