HomeLập trìnhPythonTôi đã chuyển...

Tôi đã chuyển từ C++ sang Python như thế nào: một sự thay đổi về khái niệm


bởi asya f

Yj09MUqBA6jsSjn-No3PFfq9Rcu6z07rkqo4
Ảnh của Pop & Zebra trên Bapt

Giới thiệu

Mọi người nói rằng viết mã bằng Python dễ đến mức ngay cả một đứa trẻ 6 tuổi cũng có thể làm được. Đây là suy nghĩ mà tôi đã nghĩ đến khi bắt đầu viết mã bằng Python tại nơi làm việc. Vào thời điểm đó, tôi đã là nhà phát triển phần mềm toàn thời gian được 4 năm, chủ yếu viết bằng C++ trên Linux, sử dụng rất nhiều thư viện QT. Tuy nhiên, lúc đầu tôi đã viết mã Python không tốt.

Đã khoảng 3 năm kể từ khi tôi thực hiện chuyển đổi đó và tôi nghĩ rằng đây là thời điểm tốt để tổng kết những tiến bộ mà tôi đã đạt được trong thời gian này. Khi nhìn lại, tôi không chỉ thay đổi ngôn ngữ lập trình chính của mình mà còn thay đổi môi trường làm việc và cách tôi nghĩ về mã.

Tôi sẽ không đi vào chi tiết và sự khác biệt giữa C++ và Python, vì có rất nhiều tài nguyên trực tuyến, mà sẽ mô tả kinh nghiệm của riêng tôi. Tôi hy vọng rằng bài đăng này sẽ hữu ích cho những người đang trải qua quá trình chuyển đổi giống như tôi.

gJvyoRQiZQyfjylGkcHimNA5Kef78j0DsMxB
Chuyển từ C++ sang Python (Ảnh của Erik Dungan trên Bapt)

C++ đang lặn, Python đang lặn

C++ có cảm giác như đang lặn vào những bí ẩn kỳ diệu của biển cả – nó rất đẹp, nhưng đòi hỏi phải học hỏi và thực hành nhiều hơn, và nhìn chung, khoảng cách mà bạn vượt qua không quá lớn. Trăn giống như lặn với ống thở – bạn nhìn thấy vẻ đẹp ngay khi thò đầu xuống nước, nhưng bạn không lặn sâu hơn nữa. Bạn tiếp tục bơi trong vùng nước nông, và có thể đi được một quãng đường dài một cách dễ dàng. Từ mô tả này, rõ ràng là mỗi ngôn ngữ này nên được sử dụng đúng nơi và đúng lúc.

Đọc thêm  Các ví dụ về NamedTuple trong Python – Cách tạo và làm việc với NamedTuples

Đi sâu vào C++ và sống sót qua nó

C ++ nghiêm khắc hơn và trừng phạt bạn nặng nề hơn đối với những sai lầm của bạn. Đây không phải là một phiên viết mã hiệu quả nếu bạn không nhận được bất ngờ lỗi phân khúc ít nhất một lần. Do đó, nó đòi hỏi sự hiểu biết sâu hơn về máy tính, trình biên dịch và ngôn ngữ. Khi tìm hiểu sâu hơn, bạn thực sự có thể nhìn thấy và bị ấn tượng bởi những thứ đẹp đẽ, chẳng hạn như quá trình biên dịch và quản lý bộ nhớ.

Là một lập trình viên C++, tôi quan tâm nhiều hơn đến các chỉnh sửa cú pháp và các ví dụ lạ. Tôi luôn biết mình đã cấp phát bộ nhớ ở đâu và giải phóng nó như thế nào. Các chương trình tôi đã viết độc lập hơn vì tôi muốn biết điều gì đang xảy ra bên trong mã của mình. Ý tưởng chính là mã do người khác viết kém tin cậy hơn, dễ bị lỗi hơn và có thể làm tăng mức sử dụng bộ nhớ của bạn.

Công cụ hàng ngày chính của tôi là vim với nhiều plugin để viết mã, GDB để gỡ lỗi và Valgrind để phân tích việc sử dụng bộ nhớ và lỗi của tôi. tôi đã biên soạn với g++ và viết của riêng tôi Makefiles. Trước đó, tôi không cảm thấy rằng một IDE sẽ mang lại lợi ích cho tôi, mà sẽ làm mọi thứ chậm lại và khiến tôi mất liên lạc với mã của mình. Nhìn lại, tôi đã dựa rất nhiều vào trình biên dịch để tìm lỗi loại của mình.

qq2GvVEIPB16B3NDqru9LJb-vhitY-Ofkzpo
Ảnh của Jakob Boman trên Bapt

Bơi nông ở trăn

Một trong những điều đầu tiên bạn cần học khi chuyển sang Python là cách bỏ qua – bạn không biết điều gì đang xảy ra bên trong, nơi bộ nhớ được phân bổ và giải phóng, và điều đó không sao cả. Bạn cũng được khuyến khích sử dụng mã do người khác viết, đóng gói trong thư viện, vì nó giúp bạn tiết kiệm thời gian và giúp bạn viết mã nhanh hơn. Điều đó không có nghĩa là bạn cần viết mã chậm và dựa vào các thư viện không rõ ràng và không hoạt động, nhưng trọng tâm chắc chắn là khác.

Đọc thêm  Python enumerate() – Hàm liệt kê trong Python là gì?

Khi tôi bắt đầu viết mã bằng Python, lần đầu tiên tôi viết mã C++ bằng Python. Nó hoạt động, nhưng tôi không đạt được bất kỳ lợi ích nào từ ngôn ngữ này. Quá trình mã hóa của tôi được cải thiện khi tôi bắt đầu viết theo kiểu “Pythonic” hơn và bắt đầu sử dụng các thư viện cũng như các khái niệm nâng cao hơn như trình tạo, trình trang trí và ngữ cảnh.

Là một nhà phát triển Python, trước tiên tôi có xu hướng tìm kiếm thư viện giải quyết vấn đề hiện tại. Python có một hệ sinh thái thư viện phong phú và cộng đồng hỗ trợ nó. Có thư viện để làm bất cứ điều gì thực tế. Dưới đây là một số tiện ích mà tôi sử dụng hàng ngày: NumPy để tính toán số, OpenCV cho thị giác máy tính, json để đọc các tệp json, khoa học viễn tưởng tính toán khoa học, sqlite3 cho cơ sở dữ liệu.

Công cụ hàng ngày của tôi là PyCharm (vâng, một IDE) với IdeaVim cắm vào. Tôi bắt đầu sử dụng nó chủ yếu là do nó là một trình gỡ lỗi mạnh mẽ, thân thiện hơn nhiều so với trình gỡ lỗi mặc định của Python, pdb. Tôi cũng dùng píp để cài đặt các thư viện mà tôi cần. Tôi không theo dõi việc sử dụng bộ nhớ của mình nữa trừ khi tôi thực sự phải làm vậy.

Đọc thêm  Cách hợp nhất từ ​​điển trong Python
RZNJFo27RiO1Azs7Mc-slNCDxvsWrV0A64He
Ảnh của Channey trên Bapt

Một số lời khuyên thiết thực

Nếu bạn là nhà phát triển C++ và bạn cân nhắc bắt đầu viết mã bằng Python, đây là lời khuyên của tôi dành cho bạn:

  • Thoát khỏi những thói quen cũ — Ngừng sử dụng trình biên dịch C++ làm trình gỡ lỗi. Đừng tối ưu hóa quá mức việc sử dụng bộ nhớ. Tránh viết mã giống C++. Và bằng mọi cách, cố gắng không dựa vào các loại.
  • Có thói quen mới — Bắt đầu sử dụng thư viện. Viết mã Pythonic (nhưng đừng lạm dụng nó). Giữ mọi thứ có thể đọc được. Sử dụng các khái niệm phức tạp hơn như trình tạo/trang trí/bối cảnh. Hãy thử PyCharm.
  • Sử dụng các thư viện chung của C++ và Python — Một số thư viện C++, như OpenCV và QT, có giao diện Python. Thật dễ dàng để bắt đầu sử dụng cùng một thư viện trong Python hơn là học một thư viện mới từ đầu.
  • Đừng quên nguồn gốc của bạn — Đôi khi Python quá chậm hoặc không tối ưu cho tác vụ. Đây là lúc kiến ​​thức C++ của bạn phát huy tác dụng. Có nhiều cách (một hớp, ctypes v.v.) để sử dụng mã C++ bên trong Python.

dòng dưới cùng

Bất kể người khác nói gì, việc chuyển sang một ngôn ngữ lập trình khác, đặc biệt là một ngôn ngữ khác về cơ bản so với ngôn ngữ bạn đang sử dụng, không hề dễ dàng. Hãy dành thời gian để tìm hiểu, để đào sâu, để khám phá. Nhưng quan trọng nhất, hãy hiểu rằng không chỉ ngôn ngữ sẽ thay đổi mà còn cả phong cách viết mã và phương pháp làm việc của bạn.

Chúc may mắn!



Zik.vn – Biên dịch & Biên soạn Lại

spot_img

Create a website from scratch

Just drag and drop elements in a page to get started with Newspaper Theme.

Buy Now ⟶

Bài viết liên quang

DMCA.com Protection Status