30/09/2018, 23:34
So sánh python 2 và 3 cũng như các ngôn ngữ khác c, js, php
Đầu tiên mình rất xin lỗi vì đã lập một topic có phần ngớ ngẩn thế này, đây là những vấn đề mình đã cố thử tìm kiếm nhưng ko có được kết quả rõ ràng như mong đợi.
Mình hy vọng mọi người có thể giải đáp cho mình vài thắc mắc về Python.
Python mạnh, yếu ở điểm nào khi đem so sánh với C, C++, JS và PHP.
- C mạnh ở hiệu suất, yếu ở việc phải code nhiều, cách thao tác với các biến phức tạp hơn.
- JS thì là sự đa năng do được cung cấp một loạt các function liên quan đến DOM BOM gì đấy, có rất rất rất nhiều thư viện cũng như sự hỗ trợ từ cộng đồng nhưng câu cú khá dài dòng và OOP ko rõ ràng.
- PHP thì khá dễ dùng, OOP rõ ràng nhưng syntax hơi xấu (cảm quan cá nhân), cũng được cung cấp một số lượng kha khá các hàm để dùng, cài đặt PHP và các framework thì hơi phức tạp.
- C++ đối với mình mà nói thì khá tốt, hiệu suất, syntax rõ ràng, cài đặt dễ, tuy nhiên khá khó để đạt được 1 sản phẩm hoàn thiện ở mức dùng được (do được cung cấp khá ít hàm và không nhiều thư viện).
- Còn Python thì sao các bạn, cài đặt dễ không, số lượng các hàm được cung cấp có nhiều không khi so sánh với PHP, số lượng thư viện thế nào khi so với JS, và để ra được sản phẩm thì có lâu không khi so với C++.
Ngoài ra là vấn đề về việc chọn Python 2 và Python 3. Mình tìm hiểu thì 2 cái này không khác nhau nhiều lắm nhưng sao nó gây ra nhiều tranh cãi trên mạng như vậy. Và mình nên chọn cái nào, khi mình muốn dùng Python để viết ra vài tool nhỏ nhỏ kiểu auto game trước, sau đó là kiếm việc làm, sau đó nữa là dùng để hỗ trợ cho C++ trong dự án siêu cấp trò chơi mình vẫn đang ấp ủ.
Cảm ơn những người đã click vào đây, những người đã đọc bài viết này, cảm ơn.
Bài liên quan
Em đang học Python thấy khá ok, dễ cài đặt, ngôn ngữ, cú pháp dễ hiểu, ngắn gọn , viết gần giống như là mình nói :v
python ngôn ngữ cho người mới học. 2 tháng em đã thành tục trong việc code python và sử dụng framework django. Nếu anh học c/c++ rồi thì rất đơn giản. Cần 1 tuần là anh ok rồi.Nên chon python 3 vì nó có tiềm năng pt trong tương lai
Theo trình độ và cảm nhận của bản thân, mình thấy:
Python:
Mạnh: số dòng code ít, cú pháp đẹp, dễ hiểu (do ban đầu, Python phát triển từ mã giả), thư viện hỗ trợ nhiều (cài đặt dễ dàng thông qua
pip
), là ngôn ngữ đa chức năng, linh hoạt, đa nền tảng, chế độ interative gíup cho việc test code dễ dàng, là ngôn ngữ thông dịch nên rất thuận tiện. Nếu bạn làm gamebot/autogame, làm game,… thì Python rất hợp, bạn cũng dễ dàng tìm thấy vài con gamebot trên Google. Các hacker cũng rất yêu thích Python vì khả năng hoàn thiện sản phẩm nhanh. Google, Youtube,… cũng dùng Python cho web applications của họ. Python giúp tự động hóa công việc. Python cũng dễ mở rộng thư viện bằng C. Mình thấy ở C và Python có nhiều hàm tương đương về tên và hằng số (như ở trong module socket), giúp bạn học C cũng khá hơn.Yếu: Chạy khá chậm (không chậm bằng PHP đâu) nhưng vẫn chấp nhận được, nếu bạn sử dụng phiên bản Pypy của Python thì tốc độ sẽ cải thiện hoặc sử dụng thư viện như Numpy cũng giúp việc tính toán được nhanh hơn (tuy Python chậm nhưng bạn không nên so sánh tốc độ với C/C++ được). Giữa Python2 và Python3 có sự khác biệt dẫn đến làm hoang mang người mới học. Hình như ở VN, Python chưa phát triển lắm. Do mục đích là mã nguồn mở nên khi bạn muốn làm 1 sản phẩm thương mại code bằng Python thì bạn khó lòng bảo vệ được mã nguồn lắm.
Cảm nhận của mình là như vậy thôi. Nói chung là học cũng không thừa đâu bạn, bạn có thể học nó như 1 mã giả để giúp bản hiểu và rèn luyện được thuật toán. Chúc bạn thành công.
Mình không làm python nhưng cá nhân thấy nó tương đối chậm, hôm nọ có cùng anh bạn cài đặt thuật toán EM với 10000 vòng lặp, ông dùng python chạy hơn 4 tiếng chưa xong trong khi mình dùng java chỉ tầm 30p
Python dùng trình thông dịch còn C++/Java là biên dịch nên Python sẽ chạy chậm hơn. Tuy nhiên đây là vấn đề của các trình thông dịch/biên dịch, chứ Python rất dễ cài đặt, dễ học và dễ code…
Nói chung, nếu mình muốn học một ngôn ngữ nào đó cho biết thì mình sẽ ưu tiên các yếu tố phía trên, chứ còn runtime là gì mình không quan tâm =))
nhớ không lầm thì 2020 là python 2 hết support rồi, bạn học python 3 đi, chắc support tới 2030
cám ơn bạn, mình ưng câu trả lời của bạn quá, mình là người mới học python nên còn định hỏi thêm nhiều điều như kiểu: cách cài thư viện, điểm mạnh python,… nhưng câu trả lời này có rồi
sáng giờ mình lỡ học python 2 mất rồi, tại thấy trong máy có sẵn python 2 nên… Mà việc chuyển từ python2 lên 3 chắc cũng ko khó chứ bạn
nếu ko khó thì Python 2 chết lâu rồi…
vậy tức là khó à bạn ?
“”"
Tiện đây, mình muốn hỏi 1 chút về thuật toán.
Đề: dòng đầu nhập vào 1 số N < 100. Dòng 2 nhập vào N số, cách nhau 1 dấu cách. Sau đó…
Để nhập được đống ở dòng 2 kia thì:
C++: mình hay tạo một mảng có N phần tử (với N nhập từ bàn phím). Rồi chạy vòng for và std::cin >> mảng[i]
Cách trên mình thấy phải khai báo mảng bằng 1 biến nên thấy chưa tối ưu lắm, mà ko nghĩ ra cách gì khác, nhân hôm nay có topic nên muốn tham khảo ý kiến mọi người
Python: mình định sẽ input_raw() cả dòng rồi dùng 1 hàm nào đó chia chuỗi thành các tuple, list hay dic gì đó là được.
Nhưng mình vẫn muốn tham khảo thêm, tại vấn đề này mình ko biết phải google với từ khóa nào cả.
đem code Python 2 cho Python 3 chạy ko được tức là ko dễ rồi. Còn khó thì tùy code bạn thế nào nữa.
Google “Python 2 to 3” rồi xem nó gợi ý những gì, đọc sẽ thấy nó dông dài đủ thứ ~.~
câu này nghĩa là sao Thế list, tuple, dict gì ko phải là 1 biến à?
nếu ko cần duyệt mảng nữa thì khỏi cần tạo mảng. Ví dụ code tính tổng n số nguyên, thay vì tạo 1 mảng số nguyên thì cộng thẳng luôn:
nếu cần mảng thì xài
vector
:Theo như mình được học, nhiều tài liệu khi nói đến mảng thường chú thích thêm là: khi khai báo mảng, có thể dùng hàm số nhưng ko nên dùng biến, kiểu như này: int array[MAX] với MAX là 1 const chứ ko nên int array[x] với x là biến.
Còn tuple list dict tất nhiên là biến, mình ko hiểu ý câu hỏi sau lắm :
Cám ơn bạn, mình đang nói đến trường hợp 2 đấy nhưng dùng mảng thường thay vì vector.
trong C++ đừng xài mảng kiểu C. Xài
vector
hết điok, mình sẽ làm thế lần sau.
Vector rõ ràng tiện hơn nhưng do mình quen với array và thấy nó vẫn dùng được nên chưa bỏ được thói quen này. Sẽ thay đổi sau khi được lời khuyên của bạn.
nếu bạn muốn viết code C++ như Python thì học C++11/C++14 ấy. Mất công hơn viết dài 1 tí nhưng chạy lẹ hơn Python 10-30 lần. Xử lý số nguyên lớn thì C++ phải xài thư viện riêng (GMP).
Cám ơn bạn, mình sẽ tìm hiểu sớm. Mà viết code C++ như Python là ý làm sao bạn? Syntax đẹp hay là gì nhỉ ?
Còn việc nhập cái đống kia bằng python thì có cách nào hay hơn không bạn. Tại cách mình dùng nó phải nhận vào kiểu string trước, rồi chia ra thành nhiều string, rồi chuyển nhiều string thành nhiều integer nên thấy hơi cồng kềnh.
vì nhập có 1 lần nên bạn ko cần quan tâm nhanh chậm đâu.
p = [int(s) for s in raw_input().split()]
Java không phải biên dịch hoàn toàn nha bạn.
Tại sao vậy bạn?
Đơn giản nhất mình thấy nó đa năng hơn array, dễ dàng thêm bớt, ngoài mặt hiệu suất ra thì mình thấy vector hơn ở mọi thứ mà.
Mình có 1 chút thắc mắc nhỏ về cách hoạt động của cái vector này. Liệu có phải khi mình push_back hay xóa đi một phần tử thì nó sẽ: tạo cho mình một mảng mới, chuyển dữ liệu sang rồi xóa mảng cũ đi; hay nó khai báo thêm một biến bên ngoài rồi chỉ index từ mảng ra đấy; hay một cách hoạt động nào khác?
vì nó là C++… Nếu bạn muốn xài mảng kiểu C thì sao ko viết code C luôn đi, C++ làm gì?
vector<vector<>>
chỉ cần 1 tham số…