Nếu bạn đang nghĩ đến việc học Python — hoặc nếu bạn mới bắt đầu học nó — bạn có thể đang tự hỏi mình
“Chính xác thì tôi có thể sử dụng Python để làm gì?”
Chà, đó là một câu hỏi khó trả lời, bởi vì có rất nhiều ứng dụng dành cho Python
Nhưng theo thời gian, tôi quan sát thấy có 3 ứng dụng phổ biến chính cho Python
- Phát triển web
- Khoa học dữ liệu - bao gồm học máy, phân tích dữ liệu và trực quan hóa dữ liệu
- viết kịch bản
Hãy lần lượt nói về từng người trong số họ
Phát triển web
Các khung web dựa trên Python như Django và Flask gần đây đã trở nên rất phổ biến để phát triển web
Các khung web này giúp bạn tạo mã phía máy chủ [mã phụ trợ] bằng Python. Đó là mã chạy trên máy chủ của bạn chứ không phải trên thiết bị và trình duyệt của người dùng [mã giao diện người dùng]. Nếu bạn không quen thuộc với sự khác biệt giữa mã phụ trợ và mã đầu cuối, vui lòng xem chú thích của tôi bên dưới
Nhưng chờ đã, tại sao tôi lại cần một web framework?
Đó là bởi vì khung web giúp dễ dàng xây dựng logic phụ trợ chung hơn. Điều này bao gồm ánh xạ các URL khác nhau tới các đoạn mã Python, xử lý cơ sở dữ liệu và tạo các tệp HTML mà người dùng nhìn thấy trên trình duyệt của họ
Tôi nên sử dụng khung web Python nào?
Django và Flask là hai trong số các khung web Python phổ biến nhất. Tôi khuyên bạn nên sử dụng một trong số chúng nếu bạn mới bắt đầu
Sự khác biệt giữa Django và Flask là gì?
Có một bài báo xuất sắc về chủ đề này của Gareth Dwyer, vì vậy hãy để tôi trích dẫn nó ở đây
tương phản chính
- Flask cung cấp khả năng kiểm soát đơn giản, linh hoạt và chi tiết. Nó không có ý kiến [nó cho phép bạn quyết định cách bạn muốn triển khai mọi thứ]
- Django cung cấp trải nghiệm bao gồm tất cả. bạn nhận được bảng quản trị, giao diện cơ sở dữ liệu, ORM [ánh xạ quan hệ đối tượng] và cấu trúc thư mục cho các ứng dụng và dự án của bạn ngay lập tức
Có lẽ bạn nên chọn
- Flask, nếu bạn tập trung vào trải nghiệm và cơ hội học tập hoặc nếu bạn muốn kiểm soát nhiều hơn về việc sử dụng thành phần nào [chẳng hạn như cơ sở dữ liệu nào bạn muốn sử dụng và cách bạn muốn tương tác với chúng]
- Django, nếu bạn tập trung vào sản phẩm cuối cùng. Đặc biệt nếu bạn đang làm việc trên một ứng dụng đơn giản như trang tin tức, cửa hàng điện tử hoặc blog và bạn muốn ở đó luôn có một cách thức rõ ràng duy nhất để thực hiện mọi việc
Nói cách khác, nếu bạn là người mới bắt đầu, Flask có lẽ là lựa chọn tốt hơn vì nó có ít thành phần hơn để xử lý. Ngoài ra, Flask là lựa chọn tốt hơn nếu bạn muốn tùy chỉnh nhiều hơn
Mặt khác, nếu bạn đang muốn xây dựng thứ gì đó ngay lập tức, Django có thể sẽ giúp bạn đạt được điều đó nhanh hơn
Bây giờ, nếu bạn đang muốn học Django, tôi giới thiệu cuốn sách có tên Django cho người mới bắt đầu. bạn có thể tìm thấy nó ở đây
Bạn cũng có thể tìm thấy các chương mẫu miễn phí của cuốn sách đó tại đây
Được rồi, chúng ta hãy đi đến chủ đề tiếp theo
Khoa học dữ liệu - bao gồm học máy, phân tích dữ liệu và trực quan hóa dữ liệu
Trước hết, hãy xem lại học máy là gì
Tôi nghĩ cách tốt nhất để giải thích máy học là gì là đưa cho bạn một ví dụ đơn giản
Giả sử bạn muốn phát triển một chương trình tự động phát hiện nội dung trong ảnh
Vì vậy, đưa ra hình ảnh dưới đây [Hình 1], bạn muốn chương trình của mình nhận ra rằng đó là một con chó
Bức tranh 1Đưa ra cái khác bên dưới [Hình 2], bạn muốn chương trình của mình nhận ra rằng đó là một bảng
ảnh 2Bạn có thể nói, tốt, tôi chỉ có thể viết một số mã để làm điều đó. Ví dụ: có thể nếu có nhiều pixel màu nâu nhạt trong ảnh thì chúng ta có thể nói rằng đó là một con chó
Hoặc có thể, bạn có thể tìm ra cách phát hiện các cạnh trong ảnh. Sau đó, bạn có thể nói, nếu có nhiều cạnh thẳng thì đó là một cái bàn
Tuy nhiên, cách tiếp cận này trở nên phức tạp khá nhanh. Điều gì sẽ xảy ra nếu có một con chó trắng trong ảnh không có lông nâu?
Đây là nơi máy học xuất hiện
Học máy thường thực hiện một thuật toán tự động phát hiện một mẫu trong đầu vào đã cho
Chẳng hạn, bạn có thể đưa 1.000 bức ảnh về một chú chó và 1.000 bức ảnh về một cái bàn cho một thuật toán máy học. Sau đó, nó sẽ học được sự khác biệt giữa một con chó và một cái bàn. Khi bạn đưa cho nó một hình ảnh mới về một con chó hoặc một cái bàn, nó sẽ có thể nhận ra đó là cái gì
Tôi nghĩ điều này hơi giống với cách một em bé học những điều mới. Làm thế nào để một em bé biết rằng một thứ trông giống một con chó và một thứ khác giống cái bàn?
Bạn có thể không nói rõ ràng với một em bé rằng “Nếu thứ gì đó có lông và có lông màu nâu nhạt thì đó có thể là một con chó. ”
Có lẽ bạn sẽ chỉ nói, “Đó là một con chó. Đây cũng là một con chó. Và đây là một cái bàn. Cái đó cũng là cái bàn. ”
Các thuật toán học máy hoạt động theo cùng một cách
Bạn có thể áp dụng ý tưởng tương tự cho
- hệ thống đề xuất [nghĩ rằng YouTube, Amazon và Netflix]
- nhận dạng khuôn mặt
- nhận diện giọng nói
trong số các ứng dụng khác
Các thuật toán học máy phổ biến mà bạn có thể đã nghe nói bao gồm
- mạng lưới thần kinh
- Học kĩ càng
- Hỗ trợ máy vector
- rừng ngẫu nhiên
Bạn có thể sử dụng bất kỳ thuật toán nào ở trên để giải quyết vấn đề ghi nhãn hình ảnh mà tôi đã giải thích trước đó
Python cho máy học
Có các thư viện và khung máy học phổ biến cho Python
Hai trong số những cái phổ biến nhất là scikit-learning và TensorFlow
- scikit-learning đi kèm với một số thuật toán học máy phổ biến hơn được tích hợp sẵn. Tôi đã đề cập đến một số trong số họ ở trên
- TensorFlow giống một thư viện cấp thấp hơn cho phép bạn xây dựng các thuật toán học máy tùy chỉnh
Nếu bạn mới bắt đầu với một dự án máy học, tôi khuyên bạn nên bắt đầu với scikit-learning trước. Nếu bạn bắt đầu gặp phải các vấn đề về hiệu quả, thì tôi sẽ bắt đầu xem xét TensorFlow
Tôi nên học máy học như thế nào?
Để tìm hiểu các nguyên tắc cơ bản về học máy, tôi khuyên bạn nên tham gia khóa học học máy của Stanford hoặc Caltech
Xin lưu ý rằng bạn cần có kiến thức cơ bản về giải tích và đại số tuyến tính để hiểu một số tài liệu trong các khóa học đó
Sau đó, tôi sẽ thực hành những gì bạn đã học được từ một trong những khóa học đó với Kaggle. Đó là một trang web nơi mọi người cạnh tranh để xây dựng thuật toán học máy tốt nhất cho một vấn đề nhất định. Họ cũng có những hướng dẫn hay cho người mới bắt đầu
Còn phân tích dữ liệu và trực quan hóa dữ liệu thì sao?
Để giúp bạn hiểu những thứ này có thể trông như thế nào, hãy để tôi đưa cho bạn một ví dụ đơn giản ở đây
Giả sử bạn đang làm việc cho một công ty bán một số sản phẩm trực tuyến
Sau đó, với tư cách là nhà phân tích dữ liệu, bạn có thể vẽ biểu đồ thanh như thế này
Từ biểu đồ này, chúng ta có thể biết rằng nam giới đã mua hơn 400 đơn vị sản phẩm này và phụ nữ đã mua khoảng 350 đơn vị sản phẩm này vào Chủ nhật cụ thể này
Là một nhà phân tích dữ liệu, bạn có thể đưa ra một vài lời giải thích khả dĩ cho sự khác biệt này
Một lời giải thích rõ ràng có thể là sản phẩm này phổ biến với nam giới hơn nữ giới. Một lời giải thích khả dĩ khác có thể là cỡ mẫu quá nhỏ và sự khác biệt này chỉ là ngẫu nhiên. Và một lời giải thích khả dĩ khác có thể là nam giới có xu hướng chỉ mua sản phẩm này nhiều hơn vào Chủ nhật vì một số lý do
Để hiểu cách giải thích nào là đúng, bạn có thể vẽ một biểu đồ khác như thế này
Thay vì chỉ hiển thị dữ liệu cho Chủ nhật, chúng tôi đang xem xét dữ liệu cho cả tuần. Như bạn có thể thấy, từ biểu đồ này, chúng ta có thể thấy rằng sự khác biệt này khá nhất quán qua các ngày khác nhau
Từ phân tích nhỏ này, bạn có thể kết luận rằng lời giải thích thuyết phục nhất cho sự khác biệt này là sản phẩm này đơn giản là được nam giới ưa chuộng hơn nữ giới
Mặt khác, nếu bạn thấy một biểu đồ như thế này thì sao?
Sau đó, điều gì giải thích sự khác biệt vào Chủ nhật?
Bạn có thể nói, có lẽ đàn ông có xu hướng mua nhiều sản phẩm này chỉ vào Chủ nhật vì một số lý do. Hoặc, có lẽ đó chỉ là sự trùng hợp ngẫu nhiên khi đàn ông mua nhiều hơn vào Chủ nhật
Vì vậy, đây là một ví dụ đơn giản về phân tích dữ liệu có thể trông như thế nào trong thế giới thực
Công việc phân tích dữ liệu tôi đã làm khi còn làm việc tại Google và Microsoft rất giống với ví dụ này — chỉ phức tạp hơn. Tôi thực sự đã sử dụng Python tại Google cho loại phân tích này, trong khi tôi sử dụng JavaScript tại Microsoft
Tôi đã sử dụng SQL ở cả hai công ty đó để lấy dữ liệu từ cơ sở dữ liệu của chúng tôi. Sau đó, tôi sẽ sử dụng Python và Matplotlib [tại Google] hoặc JavaScript và D3. js [tại Microsoft] để trực quan hóa và phân tích dữ liệu này
Phân tích/trực quan hóa dữ liệu với Python
Một trong những thư viện phổ biến nhất để trực quan hóa dữ liệu là Matplotlib
Đó là một thư viện tốt để bắt đầu bởi vì
- Thật dễ dàng để bắt đầu với
- Một số thư viện khác như seaborn dựa trên nó. Vì vậy, học Matplotlib sẽ giúp bạn tìm hiểu các thư viện khác sau này
Tôi nên học phân tích/trực quan hóa dữ liệu với Python như thế nào?
Trước tiên, bạn nên tìm hiểu các nguyên tắc cơ bản về phân tích và trực quan hóa dữ liệu. Khi tôi tìm kiếm các tài nguyên tốt cho điều này trực tuyến, tôi không thể tìm thấy bất kỳ. Vì vậy, cuối cùng tôi đã tạo một video YouTube về chủ đề này
Tôi cũng đã hoàn thành một khóa học đầy đủ về chủ đề này trên Pluralsight, bạn có thể học miễn phí bằng cách đăng ký dùng thử miễn phí 10 ngày của họ
Tôi muốn giới thiệu cả hai
Sau khi học các nguyên tắc cơ bản về phân tích và trực quan hóa dữ liệu, việc học các nguyên tắc cơ bản về thống kê từ các trang web như Coursera và Khan Academy cũng sẽ hữu ích
viết kịch bản
viết kịch bản là gì?
Viết kịch bản thường đề cập đến việc viết các chương trình nhỏ được thiết kế để tự động hóa các tác vụ đơn giản
Vì vậy, hãy để tôi cho bạn một ví dụ từ kinh nghiệm cá nhân của tôi ở đây
Tôi đã từng làm việc tại một công ty khởi nghiệp nhỏ ở Nhật Bản, nơi chúng tôi có hệ thống hỗ trợ qua email. Đó là một hệ thống để chúng tôi trả lời các câu hỏi mà khách hàng đã gửi cho chúng tôi qua email
Khi tôi làm việc ở đó, tôi có nhiệm vụ đếm số lượng email chứa các từ khóa nhất định để chúng tôi có thể phân tích các email chúng tôi nhận được
Chúng tôi có thể thực hiện thủ công, nhưng thay vào đó, tôi đã viết một chương trình đơn giản/tập lệnh đơn giản để tự động hóa tác vụ này
Trên thực tế, chúng tôi đã sử dụng Ruby cho việc này trước đó, nhưng Python cũng là một ngôn ngữ tốt cho loại nhiệm vụ này. Python phù hợp với loại nhiệm vụ này chủ yếu vì nó có cú pháp tương đối đơn giản và dễ viết. Nó cũng nhanh chóng để viết một cái gì đó nhỏ với nó và kiểm tra nó
Còn các ứng dụng nhúng thì sao?
Tôi không phải là chuyên gia về các ứng dụng nhúng, nhưng tôi biết rằng Python hoạt động với Rasberry Pi. Nó có vẻ giống như một ứng dụng phổ biến trong số những người yêu thích phần cứng
Chơi game thì sao?
Bạn có thể sử dụng thư viện có tên PyGame để phát triển trò chơi, nhưng nó không phải là công cụ chơi trò chơi phổ biến nhất hiện có. Bạn có thể sử dụng nó để xây dựng một dự án theo sở thích, nhưng cá nhân tôi sẽ không chọn nó nếu bạn nghiêm túc với việc phát triển trò chơi
Thay vào đó, tôi khuyên bạn nên bắt đầu với Unity với C#, một trong những công cụ chơi game phổ biến nhất. Nó cho phép bạn xây dựng trò chơi cho nhiều nền tảng, bao gồm Mac, Windows, iOS và Android
Còn các ứng dụng máy tính để bàn thì sao?
Bạn có thể tạo một cái bằng Python bằng Tkinter, nhưng có vẻ như đó cũng không phải là lựa chọn phổ biến nhất
Thay vào đó, có vẻ như các ngôn ngữ như Java, C# và C++ phổ biến hơn cho việc này
Gần đây, một số công ty cũng đã bắt đầu sử dụng JavaScript để tạo các ứng dụng Máy tính để bàn
Ví dụ: ứng dụng dành cho máy tính để bàn của Slack được xây dựng với thứ gọi là Electron. Nó cho phép bạn xây dựng các ứng dụng máy tính để bàn bằng JavaScript
Cá nhân tôi, nếu tôi đang xây dựng một ứng dụng dành cho máy tính để bàn, tôi sẽ sử dụng tùy chọn JavaScript. Nó cho phép bạn sử dụng lại một số mã từ phiên bản web nếu bạn có nó
Tuy nhiên, tôi cũng không phải là chuyên gia về các ứng dụng dành cho máy tính để bàn, vì vậy vui lòng cho tôi biết trong phần nhận xét nếu bạn không đồng ý hoặc đồng ý với tôi về điều này
Python 3 hay Python 2?
Tôi muốn giới thiệu Python 3 vì nó hiện đại hơn và là một tùy chọn phổ biến hơn vào thời điểm này
chú thích cuối trang. Một lưu ý về mã back-end so với mã front-end [chỉ trong trường hợp bạn không quen thuộc với các điều khoản]
Giả sử bạn muốn tạo một thứ gì đó giống như Instagram
Sau đó, bạn cần tạo mã giao diện người dùng cho từng loại thiết bị mà bạn muốn hỗ trợ
Bạn có thể sử dụng, ví dụ
- Swift cho iOS
- Java cho Android
- JavaScript cho trình duyệt web
Mỗi bộ code sẽ chạy trên từng loại thiết bị/trình duyệt. Đây sẽ là bộ mã xác định bố cục của ứng dụng sẽ như thế nào, các nút sẽ trông như thế nào khi bạn nhấp vào chúng, v.v.
Tuy nhiên, bạn vẫn sẽ cần khả năng lưu trữ thông tin và ảnh của người dùng. Bạn sẽ muốn lưu trữ chúng trên máy chủ của mình chứ không chỉ trên thiết bị của người dùng để mỗi người theo dõi của người dùng có thể xem ảnh của họ
Đây là nơi mã phụ trợ / mã phía máy chủ xuất hiện. Bạn sẽ cần viết một số mã phụ trợ để làm những việc như
- Theo dõi xem ai đang theo dõi ai
- Nén ảnh để chúng không chiếm quá nhiều dung lượng lưu trữ
- Đề xuất ảnh và tài khoản mới cho từng người dùng trong tính năng khám phá
Vì vậy, đây là sự khác biệt giữa mã phụ trợ và mã mặt trước
Nhân tiện, Python không phải là lựa chọn tốt duy nhất để viết mã phụ trợ/mã phía máy chủ. Có nhiều lựa chọn phổ biến khác, bao gồm Node. js, dựa trên JavaScript
Thích bài viết này?
Tôi có một kênh YouTube về giáo dục lập trình tên là CS Dojo với hơn 440.000 người đăng ký, nơi tôi sản xuất nhiều nội dung hơn như bài viết này
Ví dụ: bạn có thể thích những video này
Dù sao cũng cảm ơn rất nhiều vì đã đọc bài viết của tôi
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
Nếu bài viết này hữu ích, hãy tweet nó
Học cách viết mã miễn phí. Chương trình giảng dạy mã nguồn mở của freeCodeCamp đã giúp hơn 40.000 người có được việc làm với tư cách là nhà phát triển. Bắt đầu