Có đáng học Python không? Giải thích về mã backend và frontend. Cách học máy học

Đôi khi tôi nhận được nhiều ý tưởng khác nhau để phát triển bản thân. Đây là những suy nghĩ hoàn toàn khác nhau về những gì tôi nên nắm vững, những gì tôi nên học, những gì tôi nên hiểu. Và tại một trong những khoảnh khắc đó, tôi đã nghĩ đến việc học lập trình. tôi bắt đầu với ngôn ngữ Pascal, phù hợp vào thời điểm đó, và bây giờ, sau khi đã học khoảng 3 ngôn ngữ, tôi bắt đầu nghĩ, liệu có đáng học Python không?

Từ bài viết này bạn sẽ học được:

Tôi, Gridin Semyon, chào mừng tất cả độc giả đến blog kip-world của tôi. Bạn đã có ý định bắt đầu học lập trình từ lâu chưa? Có lẽ bạn đang suy nghĩ về cách chọn ngôn ngữ lập trình để bắt đầu?

Hoặc có lẽ bạn chỉ sợ bắt đầu? Hay bạn chỉ là người vô tình đọc được bài viết của tôi? Trong mọi trường hợp, ở đây bạn sẽ tìm thấy câu trả lời cho một số câu hỏi của mình!

Trong bất kỳ trường hợp nào ở trên, tôi muốn hỏi bạn nhiều nhất Câu hỏi quan trọng: Bạn sẽ giải quyết vấn đề gì khi sử dụng ngôn ngữ này hay ngôn ngữ kia?

Tôi đã biên soạn một “bài viết vi mô” nhỏ để bạn suy ngẫm.

Có đáng học Python không?

Tôi nghĩ không có gì bí mật với bất kỳ ai rằng cách đây 5-6 năm, ngôn ngữ đầu tiên được học lập trình ở bất kỳ trường nào là Pascal. Pascal là một ngôn ngữ tuyệt vời trong thời đại của nó, nhưng thật không may hoặc may mắn thay, nó đã không còn hữu ích nữa và hiện là ngôn ngữ lập trình đầu tiên sự lựa chọn thông minh dành cho mọi lập trình viên mới bắt đầu!

Bây giờ bạn có thể tự hỏi: “Tại sao việc học Python là ngôn ngữ lập trình đầu tiên của bạn lại đáng giá?” Không có gì bí ẩn trong việc này, cũng như không có câu đố nào cả.

Lợi ích của ngôn ngữ lập trình Python

Trước hết, điều quan trọng là phải biết rằng ngôn ngữ nhất định lập trình hiện đang có nhu cầu ở nhiều doanh nghiệp, đặc biệt là ở Moscow và St. Petersburg. Vì vậy, nếu bạn đủ may mắn để sống ở những thành phố này, thì với ngôn ngữ này, bạn có thể tìm được một công việc rất thú vị và được trả lương cao.

Thứ hai, Cái này phát triển ngôn ngữ lập trình, nhiều thay đổi khác nhau xảy ra hai đến ba năm một lần và đây là một dấu hiệu rất tốt cho ngôn ngữ lập trình.

Thứ tư, hỗ trợ nhiều ngôn ngữ kịch bản lập trình. Bạn có thể trò chuyện với thế giới bên ngoài thông qua các đầu vào và đầu ra bên ngoài.

Các lập trình viên yêu thích ngôn ngữ này vì tính ngắn gọn và đơn giản của mã. Trong JavaScript hoặc C++, bạn cần phải viết hai hoặc ba trang, thì bằng Python, bạn có thể làm điều đó chỉ trong một trang!

Và cũng rất tính năng quan trọng Ngôn ngữ Python là nó được sử dụng để phát triển Web. Hơn nữa, nó không được sử dụng như một ngôn ngữ thông thường mà thực hiện một trong những tính năng thú vị. Python để phát triển web được sử dụng trong trường hợp các ngôn ngữ khác không thành công! Đây là một sự thật rất thú vị và tò mò. Trong lĩnh vực này, ngôn ngữ có vị trí riêng của nó!

Hãy tóm tắt ngắn gọn:

  • Python là ngôn ngữ lập trình hoàn chỉnh và giàu tính năng
  • Ngôn ngữ này được sử dụng ở hầu hết nhiều lĩnh vực khác nhau, bao gồm cả lập trình web
  • Đây là một ngôn ngữ lý tưởng để bạn bắt đầu phát triển với tư cách là một lập trình viên vì nó rõ ràng và dễ sử dụng.
  • Nó là ngôn ngữ yêu thích của nhiều lập trình viên chuyên nghiệp.

Và nếu ai còn thắc mắc: “Học Python có đáng không?”, “Ngôn ngữ này có phù hợp cho người mới bắt đầu không?”, “Học ngôn ngữ này xong có xin được việc làm không?” Làm tốt lắm? Câu trả lời của tôi: “Chắc chắn là có! Hãy học ngôn ngữ này, bất kể bạn là lập trình viên mới bắt đầu hay đã có kinh nghiệm. Nó chắc chắn sẽ hữu ích cho bạn và sẽ giúp ích cho bạn trong các hoạt động của mình!

Nhân đây tôi phải nói lời tạm biệt với bạn. Đăng ký blog của tôi, kể cho bạn bè của bạn về nó - sẽ có rất nhiều thông tin thú vị và quan trọng ở đây!

tái bút Bạn nghĩ ngôn ngữ nào là tốt nhất để bắt đầu với? Có lẽ ai đó đã cho bạn lời khuyên khác? Tôi sẽ rất vui khi có ý kiến ​​​​bên ngoài trong phần bình luận!

  • Python,
  • Phát triển trang web
  • Nếu bạn đang tìm câu trả lời cho câu hỏi: “Nên chọn ngôn ngữ lập trình nào trước tiên”, thì trong khoảng 90% trường hợp, bạn sẽ được cung cấp Python - là ngôn ngữ dễ học nhất. Và hiển nhiên sẽ có một số lượng nhất định những người chưa từng học lập trình sẽ chọn Python vì những gợi ý này. Và ở đây chúng ta có một vấn đề sẽ được thảo luận dưới đây. Tất nhiên, kèm theo mô tả về cách tôi đến với cuộc sống này.

    Về tôi

    Ngay trong những năm sinh viên, tôi đã nhận ra rằng chuyên ngành của mình không hề màu hồng như năm 18 tuổi. Vì vậy, tôi bắt đầu nghĩ cách kiếm đủ tiền. Và sau khi nghe câu chuyện hồi đó ở 1C anh họ tôi nhận được số tiền điên cuồng như thế nào, tôi cũng quyết định gắn cuộc đời mình với IT.

    Ban đầu, đây là những trang web mẫu sử dụng công cụ xây dựng trang web và WordPress, sau đó tôi tham gia vào lĩnh vực SEO và có lúc tình cờ gặp Habr, sau đó tôi quyết định trở thành một lập trình viên chính thức. Tôi không có trình độ toán cao hơn nên tôi quyết định chọn một lĩnh vực không bắt buộc - phát triển web.

    Tôi có một câu hỏi rõ ràng: nên chọn ngôn ngữ nào - php/python/Ruby. Sau khi xem đủ bài viết về Habré, tôi thấy một số người ghét php sau khi xem một vài video tạo động lực từ Yandex. Tôi đã chọn Python. Tôi hy vọng bạn biết lợi ích của ngôn ngữ nên tôi sẽ không nói về nó.

    Đào tạo ngôn ngữ tiểu học

    Tôi kết hợp việc học ngôn ngữ với công việc chính của mình nên tôi đọc sách, xem các bài hướng dẫn và thực hiện các dự án nhỏ vào buổi tối. Nói chung, trong một năm tôi

    1) Sách đã học:

    • Mark Lutz - Học Python
    • Mark Lutz - Lập trình Python
    • Chad Fowler – Người cuồng lập trình
    • Bill Lubanovich - Python đơn giản
    2) Đã nghiên cứu rất nhiều video của các tác giả Ukraina/Tư sản trên Django
    3) Đã hoàn thành khóa học từ codeacademy
    4) Làm chủ PyCharm

    Dự án đầu tiên của bạn

    Sau đó, tôi nảy ra ý tưởng về một dịch vụ nhỏ về một chủ đề rất cụ thể mà tôi quyết định tạo ra để củng cố kiến ​​thức của mình về Python + Django.

    Khi tạo trang web, tôi

    1) Sách đã học:

    • John Duckett - HTML và CSS. Phát triển và thiết kế trang web
    • David Flanagan - JavaScript. Hướng dẫn chi tiết
    • Ben Forta - Tự học SQL.
    2) Tôi đã nghiên cứu tài liệu Django cho nhiệm vụ của mình
    3) Tôi đã nghiên cứu triển khai các dự án trên Django Gunicorn + nginx + centOS

    Dự án bình thường đầu tiên của tôi

    Sau khi trang web đầy đủ đầu tiên thất bại, tôi quyết định tạo ra thứ gì đó đáng giá, chọn ý tưởng, chọn phương án triển khai và hoàn thành nó vào buổi tối trong 3 tháng.

    Dự án đã cho thấy khả năng tồn tại của nó (cho đến ngày nay nó mang lại cho tôi một số tiền, điều mà tôi vô cùng hạnh phúc). Và tôi quyết định bơm nó lên tốt hơn.

    Sau khi đọc cuốn sách “Percival H. - Phát triển dựa trên thử nghiệm với Python”, tôi quyết định viết bài kiểm tra trước tiên dựa trên các thành phần Django, sau đó tra cứu tài liệu Selenium và thực hiện các bài kiểm tra bên ngoài.

    Tôi muốn được ngầu

    Sau khi mở các vị trí tuyển dụng cho các nhà phát triển Python-Django, tôi đã xem xét những gì khác thường được yêu cầu ở những vị trí tuyển dụng như vậy:
    • Khung phần còn lại của Django
    • Rau cần tây
    • Lốc xoáy/xoắn/asyncio (Chọn một)
    • Chế độ xem dựa trên lớp Django
    • Góc/Phản ứng (Chọn một)
    Đã dành 3 tháng để tìm hiểu/thử những điều này. Tôi cũng đã chọn thư viện chuẩn Python + thư viện phân tích cú pháp bên ngoài beautifulSoup.

    Bạn không thể làm việc nếu không có C/C++

    Có ý kiến ​​cho rằng nếu không có kiến ​​thức về C/C++ thì một lập trình viên không thể tự gọi mình là lập trình viên. Vì thế khi tôi có thời gian rảnh, Tôi làm quen với các cuốn sách:
    • Brian Kernighan - Ngôn ngữ lập trình C
    • Stanley B Lippman – Ngôn ngữ lập trình C++. Khóa học cơ bản
    Tôi đọc sách, mày mò mã, xem phần biên dịch, xem các ví dụ về mã. Nói chung bây giờ tôi không đôi mắt to khi đề cập đến các liên kết, con trỏ, sắp xếp, OOP và một loạt các mảng khác nhau với ở tốc độ khác nhau xử lý một phần tử tùy thuộc vào vị trí của nó.

    Tôi đã sẵn sàng chiến đấu!

    Và ở đây chúng ta đến với chính tâm điểm. Đã dành tổng cộng 2 năm để học tất cả các yếu tố của lập trình web mà tôi đã đề cập ở trên. Tôi cho rằng mình đã đủ sẵn sàng để ứng tuyển vào vị trí nhà phát triển web Python. Tất nhiên, tôi không biết rõ một số thứ, một số thứ thì hời hợt, và một số thứ tôi hoàn toàn không biết (ví dụ như Flask), nhưng Sự hiểu biết chung và kỹ năng khá tốt.

    Và ở đây các vấn đề với Python bắt đầu mà mọi người thường không tập trung vào. Cụ thể là theo nhu cầu kinh doanh đối với các nhà phát triển Python cấp cơ sở/tiền trung cấp.

    Tôi bước vào thị trường với câu hỏi này.

    Mặc dù thoạt nhìn có vẻ như có khá nhiều vị trí tuyển dụng trong Python nhưng khi bắt đầu đi vào chi tiết cụ thể, mọi thứ sẽ thay đổi đáng kể.

    1. Ngay lập tức có một cuộc sàng lọc lớn các vị trí tuyển dụng trong đó Python chỉ là ngôn ngữ phụ trợ. Thông thường đây là các vị trí của nhà phát triển Java, Quản trị viên hệ thống,QA-Tự động hóa. Ngoài ra, hiện có một lượng lớn học sinh bỏ học trong môn Học dữ liệu, vốn yêu cầu trình độ toán + ngôn ngữ R. Chỉ với Python bạn sẽ không thể tìm được vị trí tuyển dụng này.

    2. Hóa ra là ở thành phố của tôi không có chỗ trống nào cho Python, theo nghĩa đen là không có chỗ nào cả. Mở rộng tìm kiếm ra toàn khu vực, tôi cũng nhận được kết quả không như ý. Một số vị trí tuyển dụng về PHP, trong đó Python là một điểm cộng. Khi tôi mở bộ lọc trong 3 năm qua, tôi cũng phát hiện ra rằng không có vị trí tuyển dụng nào cho Python cả. Những thứ kia. các doanh nghiệp ở tỉnh thường lựa chọn những công nghệ đơn giản và phổ biến hơn Python.

    3. Sau khi mở các vị trí tuyển dụng Python trên một công cụ tìm kiếm tổng hợp, tôi phát hiện ra các xu hướng sau:

    • Hơn 90% vị trí tuyển dụng được đặt tại Moscow hoặc St. Petersburg
    • Hơn 90% vị trí tuyển dụng yêu cầu trình độ trung cấp trở lên / cấp cao
    • ~100% vị trí tuyển dụng cho các vị trí cấp dưới ở Moscow hoặc St. Petersburg (thường là từ những người khổng lồ)
    Nói cách khác, tình hình hóa ra là nếu bạn không sống ở Moscow, St. Petersburg và không đi “chinh phục” họ, thì thực tế bạn không có nơi nào để có được công việc đầu tiên.

    Tất nhiên, có một số nơi Python vẫn được sử dụng, chẳng hạn như ở Kazan. Nhưng thông thường đây là một công ty, nơi các vị trí tuyển dụng cũng rất trung cấp + / cao cấp.

    4. Lựa chọn tìm kiếm công việc từ xa ở cấp độ hiện tại cũng cho thấy người sử dụng lao động chưa sẵn sàng chấp nhận rủi ro như vậy. Ít kinh nghiệm + làm việc từ xa = đây là một kiểu tưởng tượng.
    Tuy nhiên, tôi vẫn có thể tìm ra một số lựa chọn, nhưng trong cuộc phỏng vấn đầu tiên, tôi thấy rõ rằng điều này thật vô nghĩa như: “Bạn làm việc cho chúng tôi trong ba tháng và nếu khách hàng trả tiền cho công việc của bạn, chúng tôi sẽ trả tiền cho bạn. cũng vậy." Không phải là lựa chọn tốt nhất

    5. Đã nói chuyện với một vài nhân sự từ các công ty lớn, họ bày tỏ xu hướng này. “Chúng tôi thường thuê những người có ít nhất một năm kinh nghiệm về Python, cộng với kinh nghiệm về ngôn ngữ khác (hơn 3 năm). Thường xuyên nhất là php/Java." Nói cách khác, họ không hề cân nhắc việc thuê một người chỉ có Python.

    6. Sau khi nói chuyện với những người trên các diễn đàn chuyên ngành, rõ ràng thế là đủ tình huống điển hình. Từ câu chuyện của họ, rõ ràng là mọi người, sau khi tìm kiếm vô ích, đã bắt đầu làm việc trên PHP/1c hoặc bằng cách nào đó đã vượt qua quá trình tự động hóa công việc/dự án/thử nghiệm của riêng mình.
    Nhưng một lần nữa, tùy từng trường hợp.

    Nói chung, hóa ra Python là ngôn ngữ xuất sắc, cho phép bạn tạo các dự án mạnh mẽ. Và điều ngẫu nhiên là sự tập trung của họ lại tập trung ở các thủ đô. Và vì đây là những dự án phức tạp nên cần có nhân viên ở cấp trung cấp trở lên. Một người mới học Python có sẵn sàng nhận một vị trí tuyển dụng như vậy không? Khó!

    Nhưng có một cách khác!

    TRONG Hiện nay riêng ở thành phố của tôi đã có 24 vị trí tuyển dụng cho php nhiều cấp độ khác nhau(từ các công ty nhỏ cần duy trì trang web hiện tại cho đến các công ty thương mại điện tử khổng lồ cung cấp mở rộng nối tiếp chức năng). Và có cùng số lượng vị trí tuyển dụng cho 1C. Và trong khoảng một nửa số vị trí tuyển dụng này, họ sẵn sàng thuê một người ít nhất biết điều gì đó về lập trình. Rất có thể, đây không phải là nhiều nhất địa điểm tốt nhất, nhưng đây đã là công việc đầu tiên mà sau đó bạn sẽ chính thức trở thành một lập trình viên nhân sự có kinh nghiệm.

    Cuối cùng

    Hóa ra là bạn có thể học ngôn ngữ lập trình tuyệt vời Python và đi lại trên đường phố. Hoặc bạn có thể học php/1c “bị ghét” và kiếm việc làm. Tất nhiên, chất lượng của công việc này để lại nhiều câu hỏi - nhưng đây đã là kinh nghiệm.

    Đối với tôi, trong điều kiện của tôi (không đến Moscow/St. Petersburg), tôi thực sự đã dành thời gian học một ngôn ngữ hiện đang được yêu cầu riêng trong các dự án của riêng tôi. Tôi không thể tìm được việc làm tại địa phương hoặc từ xa. Bây giờ tôi đang chuyển sang php, vì đơn giản là nó hoạt động được.

    Vì vậy, nếu bạn không sống ở Moscow, St. Petersburg hoặc không phải là sinh viên của một trường đại học kỹ thuật, thì tôi không khuyên bạn nên dạy Python đầu tiên lưỡi. Hãy chú ý đến PHP - luôn có chỗ cho nó, có công việc, có kinh nghiệm. Và con đường phát triển xa hơn đã là của bạn.

    tái bút Như bạn tôi đã nói với tôi, tình hình gần như tương tự ở Ruby. Nhưng ở đây tôi không còn có thể nói chuyện một cách tự tin nữa.

    Có nhiều khu vực Ứng dụng Python, nhưng ở một số mặt, anh ấy đặc biệt giỏi. Hãy tìm hiểu những gì có thể được thực hiện bằng ngôn ngữ này.

    Sự khác biệt chính:

    • Flask cung cấp sự đơn giản, linh hoạt và toàn quyền kiểm soát trên dự án. Nó cho phép người dùng quyết định độc lập cách thực hiện một số điều nhất định.
    • Django là một dịch vụ trọn gói. Ngay từ đầu, 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 dự án của bạn.

    Chọn cái gì?

    • Hãy chọn Flask nếu bạn muốn có thêm kinh nghiệm và cơ hội học hỏi. Hoặc nếu bạn cần kiểm soát tối đa trên tất cả các thành phần được sử dụng, chẳng hạn như cơ sở dữ liệu.
    • Chọn Django nếu bạn quan tâm đến sản phẩm cuối cùng. Đặc biệt nếu bạn đang làm việc với ứng dụng đơn giản, chẳng hạn như một trang tin tức, một cửa hàng, một blog và bạn muốn mỗi nhiệm vụ được giải quyết theo một cách cực kỳ rõ ràng.

    Nói cách khác, Flask có lẽ sự lựa chọn tốt nhất dành cho nhà phát triển mới làm quen vì nó chứa ít thành phần hơn. Ngoài ra, rất đáng để lựa chọn nếu bạn cần tinh chỉnh dự án.

    Flask, do tính linh hoạt của nó, phù hợp hơn để tạo API REST.

    Mặt khác, nếu mục tiêu của bạn là làm điều gì đó nhanh chóng và dễ dàng, có lẽ bạn nên chọn Django.

    Khoa học dữ liệu: Học máy, phân tích dữ liệu và trực quan hóa

    Trước hết, bạn cần phải tìm ra nó là gì.

    Giả sử bạn muốn phát triển một chương trình tự động phát hiện những gì được hiển thị trong ảnh.

    Ví dụ: bằng cách hiển thị hình ảnh này, bạn muốn chương trình nhận dạng con chó.

    Và ở đây cô ấy sẽ thấy một cái bàn.

    Bạn có thể nghĩ rằng bạn có thể chỉ cần viết mã phân tích hình ảnh để giải quyết vấn đề này. Ví dụ: nếu có nhiều pixel màu nâu nhạt trong ảnh, chúng ta kết luận rằng đó là một con chó.

    Hoặc bạn có thể học cách xác định các cạnh và ranh giới trong một hình ảnh. Sau đó, hình ảnh với một lượng lớn ranh giới thẳng có thể sẽ trở thành một cái bàn.

    Tuy nhiên, đây là một cách tiếp cận khá phức tạp và không sáng suốt. Bạn nên làm gì nếu bức ảnh chụp một con chó màu trắng không có đốm nâu? Hoặc nếu hình ảnh cho thấy một bàn tròn?

    Đây là nơi nó phát huy tác dụng học máy. Thông thường, nó triển khai some , cho phép tự động phát hiện mẫu quen thuộc trong dữ liệu đầu vào.

    Bạn có thể cung cấp cho thuật toán học máy, chẳng hạn như 1000 bức ảnh về một con chó và 1000 bức ảnh về những cái bàn. Nó sẽ tìm hiểu sự khác biệt giữa các đối tượng này. Rồi khi bạn đưa nó cho anh ấy bức tranh mới với một cái bàn hoặc một con chó, anh ta sẽ có thể xác định chính xác những gì được mô tả trên đó.

    • scikit-learn có một số thuật toán học tập phổ biến được tích hợp sẵn;
    • TensorFlow là thư viện cấp thấp hơn. Nó cho phép bạn tạo các thuật toán tùy chỉnh.

    Đối với những người mới làm quen với học máy, scikit-learn là một nơi tốt để bắt đầu. Những nhà phát triển có kinh nghiệm hơn đang gặp phải vấn đề về hiệu quả có thể muốn xem xét kỹ hơn về TensorFlow.

    Làm thế nào để học máy học?

    Các nhà phân tích thực thụ, chẳng hạn như những người ở Google hay Microsoft, cũng làm điều tương tự, chỉ có điều công việc của họ phức tạp và phức tạp hơn.

    Họ sử dụng ngôn ngữ truy vấn SQLđể lấy dữ liệu từ cơ sở dữ liệu. Sau đó, các công cụ đặc biệt như Mathplotlib (dành cho Python) hoặc D3.js (dành cho JavaScript) được sử dụng để phân tích và trực quan hóa.

    Các cách sử dụng Python để phân tích và trực quan hóa dữ liệu

    Một trong những thư viện phổ biến nhất để trực quan hóa là Mathplotlib.

    Người mới bắt đầu nên bắt đầu học với nó vì hai lý do:

    • ngưỡng đầu vào thấp;
    • Việc thành thạo Mathplotlib sẽ cho phép bạn nhanh chóng hiểu các thư viện phức tạp hơn dựa trên nó trong tương lai, chẳng hạn như seaborn.

    Làm thế nào để học phân tích dữ liệu bằng Python?

    Gần đây, một số công ty đã bắt đầu sử dụng ứng dụng máy tính để bàn JavaScript. Ví dụ: ứng dụng máy tính để bàn Slack được xây dựng bằng khung JavaScript Electron.

    Ưu điểm của việc viết ứng dụng máy tính để bàn bằng JavaScript là bạn có thể sử dụng lại mã từ phiên bản web.

    Python 3 hoặc Python 2

    Python 3 là sự lựa chọn hiện đại và phổ biến hơn.

    Giải thích về mã backend và frontend

    Giả sử bạn muốn làm điều gì đó gợi nhớ đến Instagram.

    Nếu bạn đang tìm câu trả lời cho câu hỏi: “Nên chọn ngôn ngữ lập trình nào trước tiên”, thì trong khoảng 90% trường hợp, bạn sẽ được cung cấp Python - là ngôn ngữ dễ học nhất. Và hiển nhiên sẽ có một số lượng nhất định những người chưa từng học lập trình sẽ chọn Python vì những gợi ý này. Và ở đây chúng ta có một vấn đề sẽ được thảo luận dưới đây. Tất nhiên, kèm theo mô tả về cách tôi đến với cuộc sống này.

    Về tôi

    Ngay trong những năm sinh viên, tôi đã nhận ra rằng chuyên ngành của mình không hề màu hồng như năm 18 tuổi. Vì vậy, tôi bắt đầu nghĩ cách kiếm đủ tiền. Và sau khi nghe câu chuyện hồi đó ở 1C anh họ tôi nhận được số tiền điên cuồng như thế nào, tôi cũng quyết định gắn cuộc đời mình với IT.

    Ban đầu, đây là những trang web mẫu sử dụng công cụ xây dựng trang web và WordPress, sau đó tôi tham gia vào lĩnh vực SEO và có lúc tình cờ gặp Habr, sau đó tôi quyết định trở thành một lập trình viên chính thức. Tôi không có trình độ toán cao hơn nên tôi quyết định chọn một lĩnh vực không bắt buộc - phát triển web.

    Tôi có một câu hỏi rõ ràng: nên chọn ngôn ngữ nào - php/python/Ruby. Sau khi xem đủ bài viết về Habré, tôi thấy một số người ghét php sau khi xem một vài video tạo động lực từ Yandex. Tôi đã chọn Python. Tôi hy vọng bạn biết lợi ích của ngôn ngữ nên tôi sẽ không nói về nó.

    Đào tạo ngôn ngữ tiểu học

    Tôi kết hợp việc học ngôn ngữ với công việc chính của mình nên tôi đọc sách, xem các bài hướng dẫn và thực hiện các dự án nhỏ vào buổi tối. Nói chung, trong một năm tôi

    1) Sách đã học:

    • Mark Lutz - Học Python
    • Mark Lutz - Lập trình Python
    • Chad Fowler – Người cuồng lập trình
    • Bill Lubanovich - Python đơn giản
    2) Đã nghiên cứu rất nhiều video của các tác giả Ukraina/Tư sản trên Django
    3) Đã hoàn thành khóa học từ codeacademy
    4) Làm chủ PyCharm

    Dự án đầu tiên của bạn

    Sau đó, tôi nảy ra ý tưởng về một dịch vụ nhỏ về một chủ đề rất cụ thể mà tôi quyết định tạo ra để củng cố kiến ​​thức của mình về Python + Django.

    Khi tạo trang web, tôi

    1) Sách đã học:

    • John Duckett - HTML và CSS. Phát triển và thiết kế trang web
    • David Flanagan - JavaScript. Hướng dẫn chi tiết
    • Ben Forta - Tự học SQL.
    2) Tôi đã nghiên cứu tài liệu Django cho nhiệm vụ của mình
    3) Tôi đã nghiên cứu triển khai các dự án trên Django Gunicorn + nginx + centOS

    Dự án bình thường đầu tiên của tôi

    Sau khi trang web đầy đủ đầu tiên thất bại, tôi quyết định tạo ra thứ gì đó đáng giá, chọn ý tưởng, chọn phương án triển khai và hoàn thành nó vào buổi tối trong 3 tháng.

    Dự án đã cho thấy khả năng tồn tại của nó (cho đến ngày nay nó mang lại cho tôi một số tiền, điều mà tôi vô cùng hạnh phúc). Và tôi quyết định bơm nó lên tốt hơn.

    Sau khi đọc cuốn sách “Percival H. - Phát triển dựa trên thử nghiệm với Python”, tôi quyết định viết bài kiểm tra trước tiên dựa trên các thành phần Django, sau đó tra cứu tài liệu Selenium và thực hiện các bài kiểm tra bên ngoài.

    Tôi muốn được ngầu

    Sau khi mở các vị trí tuyển dụng cho các nhà phát triển Python-Django, tôi đã xem xét những gì khác thường được yêu cầu ở những vị trí tuyển dụng như vậy:
    • Khung phần còn lại của Django
    • Rau cần tây
    • Lốc xoáy/xoắn/asyncio (Chọn một)
    • Chế độ xem dựa trên lớp Django
    • Góc/Phản ứng (Chọn một)
    Đã dành 3 tháng để tìm hiểu/thử những điều này. Tôi cũng đã chọn thư viện chuẩn Python + thư viện phân tích cú pháp bên ngoài beautifulSoup.

    Bạn không thể làm việc nếu không có C/C++

    Có ý kiến ​​cho rằng nếu không có kiến ​​thức về C/C++ thì một lập trình viên không thể tự gọi mình là lập trình viên. Vì vậy, khi có thời gian rảnh tôi đã làm quen với các cuốn sách:
    • Brian Kernighan - Ngôn ngữ lập trình C
    • Stanley B Lippman – Ngôn ngữ lập trình C++. Khóa học cơ bản
    Tôi đọc sách, mày mò mã, xem phần biên dịch, xem các ví dụ về mã. Nói chung, bây giờ tôi không còn tinh mắt khi đề cập đến các tham chiếu, con trỏ, sắp xếp, OOP và một loạt các mảng khác nhau với tốc độ xử lý khác nhau cho một phần tử, tùy thuộc vào vị trí của nó.

    Tôi đã sẵn sàng chiến đấu!

    Và ở đây chúng ta đến điểm quan trọng nhất. Đã dành tổng cộng 2 năm để học tất cả các yếu tố của lập trình web mà tôi đã đề cập ở trên. Tôi cho rằng mình đã đủ sẵn sàng để ứng tuyển vào vị trí nhà phát triển web Python. Tất nhiên, tôi không biết rõ một số thứ, một số thứ thì hời hợt và một số thứ tôi không biết chút nào (ví dụ như Flask), nhưng hiểu biết chung và kỹ năng khá tốt.

    Và ở đây các vấn đề với Python bắt đầu mà mọi người thường không tập trung vào. Cụ thể là theo nhu cầu kinh doanh đối với các nhà phát triển Python cấp cơ sở/tiền trung cấp.

    Tôi bước vào thị trường với câu hỏi này.

    Mặc dù thoạt nhìn có vẻ như có khá nhiều vị trí tuyển dụng trong Python nhưng khi bắt đầu đi vào chi tiết cụ thể, mọi thứ sẽ thay đổi đáng kể.

    1. Ngay lập tức có một cuộc sàng lọc lớn các vị trí tuyển dụng trong đó Python chỉ là ngôn ngữ phụ trợ. Thông thường đây là các vị trí của nhà phát triển Java, Quản trị viên hệ thống, Tự động hóa QA. Ngoài ra, hiện có một lượng lớn học sinh bỏ học trong môn Học dữ liệu, vốn yêu cầu trình độ toán + ngôn ngữ R. Chỉ với Python bạn sẽ không thể tìm được vị trí tuyển dụng này.

    2. Hóa ra là ở thành phố của tôi không có chỗ trống nào cho Python, theo nghĩa đen là không có chỗ nào cả. Mở rộng tìm kiếm ra toàn khu vực, tôi cũng nhận được kết quả không như ý. Một số vị trí tuyển dụng về PHP, trong đó Python là một điểm cộng. Khi tôi mở bộ lọc trong 3 năm qua, tôi cũng phát hiện ra rằng không có vị trí tuyển dụng nào cho Python cả. Những thứ kia. các doanh nghiệp ở tỉnh thường lựa chọn những công nghệ đơn giản và phổ biến hơn Python.

    3. Sau khi mở các vị trí tuyển dụng Python trên một công cụ tìm kiếm tổng hợp, tôi phát hiện ra các xu hướng sau:

    • Hơn 90% vị trí tuyển dụng được đặt tại Moscow hoặc St. Petersburg
    • Hơn 90% vị trí tuyển dụng yêu cầu trình độ trung cấp trở lên / cấp cao
    • ~100% vị trí tuyển dụng cho các vị trí cấp dưới ở Moscow hoặc St. Petersburg (thường là từ những người khổng lồ)
    Nói cách khác, tình hình hóa ra là nếu bạn không sống ở Moscow, St. Petersburg và không đi “chinh phục” họ, thì thực tế bạn không có nơi nào để có được công việc đầu tiên.

    Tất nhiên, có một số nơi Python vẫn được sử dụng, chẳng hạn như ở Kazan. Nhưng thông thường đây là một công ty, nơi các vị trí tuyển dụng cũng rất trung cấp + / cao cấp.

    4. Lựa chọn tìm kiếm công việc từ xa ở cấp độ hiện tại cũng cho thấy người sử dụng lao động chưa sẵn sàng chấp nhận rủi ro như vậy. Ít kinh nghiệm + làm việc từ xa = đây là một kiểu tưởng tượng.
    Tuy nhiên, tôi vẫn có thể tìm ra một số lựa chọn, nhưng trong cuộc phỏng vấn đầu tiên, tôi thấy rõ rằng điều này thật vô nghĩa như: “Bạn làm việc cho chúng tôi trong ba tháng và nếu khách hàng trả tiền cho công việc của bạn, chúng tôi sẽ trả tiền cho bạn. cũng vậy." Không phải là lựa chọn tốt nhất

    5. Tôi đã nói chuyện với một số nhân sự của các công ty lớn, họ bày tỏ xu hướng này. “Chúng tôi thường thuê những người có ít nhất một năm kinh nghiệm về Python, cộng với kinh nghiệm về ngôn ngữ khác (hơn 3 năm). Thường xuyên nhất là php/Java." Nói cách khác, họ không hề cân nhắc việc thuê một người chỉ có Python.

    6. Sau khi trao đổi với các anh trên diễn đàn chuyên ngành thì thấy rõ đây là một tình huống khá điển hình. Từ câu chuyện của họ, rõ ràng là mọi người, sau khi tìm kiếm vô ích, đã bắt đầu làm việc trên PHP/1c hoặc bằng cách nào đó đã vượt qua quá trình tự động hóa công việc/dự án/thử nghiệm của riêng mình.
    Nhưng một lần nữa, tùy từng trường hợp.

    Nhìn chung, hóa ra Python là một ngôn ngữ tuyệt vời cho phép bạn tạo các dự án mạnh mẽ. Và điều ngẫu nhiên là sự tập trung của họ lại tập trung ở các thủ đô. Và vì đây là những dự án phức tạp nên cần có nhân viên ở cấp trung cấp trở lên. Một người mới học Python có sẵn sàng nhận một vị trí tuyển dụng như vậy không? Khó!

    Nhưng có một cách khác!

    Hiện tại, chỉ riêng trong thành phố của tôi đã có 24 vị trí tuyển dụng cho PHP ở nhiều cấp độ khác nhau (từ các công ty nhỏ cần hỗ trợ trang web hiện tại cho đến những gã khổng lồ thương mại điện tử cung cấp chức năng mở rộng nhất quán). Và có cùng số lượng vị trí tuyển dụng cho 1C. Và trong khoảng một nửa số vị trí tuyển dụng này, họ sẵn sàng thuê một người ít nhất biết điều gì đó về lập trình. Rất có thể, đây không phải là những nơi tốt nhất nhưng đây là công việc đầu tiên sau đó bạn sẽ chính thức trở thành một lập trình viên nhân sự giàu kinh nghiệm.

    Cuối cùng

    Hóa ra là bạn có thể học ngôn ngữ lập trình tuyệt vời Python và đi lại trên đường phố. Hoặc bạn có thể học php/1c “bị ghét” và kiếm việc làm. Tất nhiên, chất lượng của công việc này để lại nhiều câu hỏi - nhưng đây đã là kinh nghiệm.

    Đối với tôi, trong điều kiện của tôi (không đến Moscow/St. Petersburg), tôi thực sự đã dành thời gian học một ngôn ngữ hiện đang được yêu cầu riêng trong các dự án của riêng tôi. Tôi không thể tìm được việc làm tại địa phương hoặc từ xa. Bây giờ tôi đang chuyển sang php, vì đơn giản là nó hoạt động được.

    Do đó, nếu bạn không sống ở Moscow, St. Petersburg hoặc không phải là sinh viên của một trường đại học kỹ thuật, thì tôi sẽ không khuyên bạn học Python như ngôn ngữ đầu tiên của mình. Hãy chú ý đến PHP - luôn có chỗ cho nó, có công việc, có kinh nghiệm. Và con đường phát triển xa hơn đã là của bạn.

    tái bút Như bạn tôi đã nói với tôi, tình hình gần như tương tự ở Ruby. Nhưng ở đây tôi không còn có thể nói chuyện một cách tự tin nữa.

    Ăn tiếng anh. Mọi người giao tiếp trên đó. Và còn bằng tiếng Đức, tiếng Philipin, tiếng Tây Ban Nha, tiếng Hy Lạp và nhiều tiếng khác.

    Và còn có Python (giọng nói nhàm chán về tên chính xác). Đây là ngôn ngữ mà một người giao tiếp với máy tính. Bạn có thể giao tiếp với máy tính bằng nhiều ngôn ngữ: C, Pascal, Haskell, Go, Swift, Ruby, PHP, BASIC, Erlang, Er và nhiều ngôn ngữ khác.

    Chúng ta sẽ học Python ở đây. Hãy bắt đầu với một cái nhìn tổng quan ngắn gọn về sự khác biệt của nó so với các ngôn ngữ khác. Bạn không cần phải làm gì cả: bạn đọc, ghi nhớ một vài điểm và thế là xong, bạn có thể khoe khoang về mọi thứ mà bạn có trong chủ đề này (đừng làm vậy).

    sự chính xác

    Python có một cộng đồng đến mức không chấp nhận sự nhầm lẫn trong việc sử dụng ngôn ngữ. Tiêu chuẩn mã hóa là một phần của ngôn ngữ. Triết lý viết mã cũng là một phần của ngôn ngữ. Vì thế hai lập trình viên giỏi sẽ viết mã rất giống nhau: không cần lãng phí thời gian vào "chết tiệt, ý anh ấy ở đây là gì vậy?...".

    Python có cú pháp giúp viết mã rất ngắn gọn. Không có dấu ngoặc đơn bổ sung, dài từ khóa, những thủ thuật khó và tất cả những thứ đó. Mô tả logic, dịch nó sang tiếng Anh, thêm thụt lề và cú pháp - thế là xong, chương trình đã sẵn sàng.

    Python có cái này thư viện chuẩn rằng nó giúp thực hiện một loạt các hoạt động thông thường. Nó sẽ giúp bạn gửi email, mã hóa một chuỗi, thiết lập máy chủ web, tìm hiểu thời gian, xóa tệp, tính toán phương sai, lưu trữ tệp, lấy dữ liệu từ cơ sở dữ liệu và làm nhiều việc khác chỉ trong vài dòng.

    Python có số tiền này mô-đun của bên thứ ba, có thể tiết kiệm hàng ngàn giờ làm việc. Cần viết một trang web? Dạy bảo mạng lưới thần kinh giải quyết Mã xác nhận? Tải xuống âm thanh từ VKontakte? Nhận ra người trong ảnh? Mô phỏng chuyến bay của tên lửa? Viết bot? Có những mô-đun làm sẵn cho tất cả những điều này, bạn chỉ cần cài đặt và sử dụng chúng.

    Tất cả điều này làm cho quá trình viết mã rất nhanh.

    Tài liệu hay

    Hãy thử google, hoặc, ví dụ. Kết quả đầu tiên sẽ chứa liên kết tới https://docs.python.org - trang tài liệu chính thức.

    Điều này là do tài liệu rất chi tiết: nó chứa tài liệu dành cho người mới bắt đầu, tài liệu cho từng mô-đun, khuyến nghị sử dụng, đá dưới nước và đọc thêm. Và đây là tất cả cho mỗi phiên bản của ngôn ngữ. Không ai có tài liệu thuận tiện và chi tiết như vậy.

    Ngoài ra còn có http://stackoverflow.com/ - một trang web nơi một số lập trình viên trả lời các câu hỏi về lập trình cho các lập trình viên khác. Trong suốt thời gian tồn tại của nó, tất cả các câu hỏi có thể đã được đặt ra ở đó. Nghiêm túc mà nói: bất kỳ câu hỏi nào như “cách thực hiện điều này trong Python” hoặc “tại sao mã này không hoạt động” đều đã được hỏi, xem và trả lời.

    Tất cả điều này làm cho quá trình học và viết code trở nên nhanh chóng: tất cả thông tin cần thiết chỉ cần một lần tìm kiếm thành công.

    Câu hỏi nào trong số này không có trong Câu hỏi thường gặp chính thức của tài liệu chính thức?

    • Tại sao tôi nhận được kết quả lạ với các phép tính số học đơn giản?
    • Tại sao Python được cài đặt trên máy của tôi?
    • Làm cách nào tôi có thể triển khai lớp nhà máy trừu tượng cơ bản trong Python?
    • Viết C rất khó; có lựa chọn thay thế nào không?

    Gõ năng động mạnh mẽ

    Gõ động- có nghĩa là, trong cùng một biến trong thời điểm khác nhau giá trị có thể được lưu trữ các loại khác nhau. Bây giờ là một số, sau đó là một chuỗi và mọi thứ đều ở một biến.

    Trong nhiều ngôn ngữ, điều này là không thể: bạn đã tạo một biến số nguyên, vì vậy hãy lưu trữ số nguyên trong đó. Điều này thuận tiện cho máy tính nhưng không phải lúc nào cũng thuận tiện cho người lập trình.

    Gõ mạnh- điều này có nghĩa là bạn không thể chỉ thực hiện các hành động với các đối tượng thuộc các loại khác nhau. Ví dụ: bạn không thể thêm một chuỗi có số: trước tiên bạn cần biến chuỗi đó thành một số và chỉ sau đó mới thêm nó vào. Bản thân Python sẽ không thực hiện chuyển đổi như vậy.

    Điều này có vẻ bất tiện nhưng trên thực tế nó bảo vệ khỏi sai sót. Để hiểu những gì chúng ta đang nói đến, chỉ cần nhìn vào JavaScript, một ngôn ngữ có kiểu gõ yếu:

    Quản lý bộ nhớ tự động

    Quản lý bộ nhớ là khi đối với mỗi đống dữ liệu trong một chương trình, bạn cần phân bổ dung lượng trong RAM theo cách thủ công. Đảm bảo rằng dữ liệu không vượt quá vị trí này. Đừng quên giải phóng không gian này khi dữ liệu không còn cần thiết nữa. Nói chung là bệnh trĩ kinh khủng.

    Trong Python bạn không cần phải suy nghĩ về điều này: ngôn ngữ lập trình sẽ làm mọi việc cho người lập trình. Đúng, nó sẽ không hoạt động hoàn hảo: bạn cần biết Python hoạt động như thế nào với bộ nhớ.

    Và còn nhiều nữa

    Ngoài những điều trên, Python còn nổi tiếng với nhiều thứ khác: thụt lề, xem xét nội tâm, zen, tính di động, GIL, tên.