0

Tuần này chúng tôi chào đón Mark Haase là PyDev của Tuần. Mark là tác giả của PEP 505 - Toán tử không biết . Bạn có thể kiểm tra những dự án mà Mark quan tâm trên GitHub . Ông cũng có một blog lập trình bao gồm nhiều chủ đề lập trình khác nhau. Hãy dành chút thời gian để hiểu Mark hơn!

Bạn có thể cho chúng tôi biết một chút về bản thân bạn (sở thích, giáo dục, v.v.):

Khi còn nhỏ, tôi luôn thích xây dựng mọi thứ, như Legos. Tôi đã phác thảo các thiết kế cho các dự án khác mà tôi mơ ước về việc xây dựng - một tàu lượn! - nhưng, khi còn bé, tôi rõ ràng bị hạn chế về kỹ năng, công cụ và tài nguyên. Rốt cuộc, không ai sẽ trao cho tôi một thợ hàn hồ quang.

Tôi bắt đầu lập trình khi tôi khoảng 12 hoặc 13. Tôi đã học BASIC trước, sau đó là Java vài năm sau đó. Lập trình không có những hạn chế giống như những thứ vật lý. Tôi không cần cả một xưởng với các công cụ và tài liệu, chỉ cần một máy tính và một trình biên dịch. Tôi đã học ở Comp Sci ở trường đại học (một sai lầm, khi nhìn lại, đáng lẽ tôi phải học chuyên ngành đó!) Và tìm được công việc lập trình viên khi tôi tốt nghiệp. Đó là sự nghiệp của tôi trong 10 năm nay.

Tại sao bạn bắt đầu sử dụng Python?

Tôi bắt đầu làm việc với một người bạn cùng phòng trong một dự án thú cưng và anh ấy khuyến khích tôi dùng thử Python. Sau vài năm làm việc với một số ngôn ngữ phát triển web không tên khác, Python là một sự giải thoát. Nó cảm thấy hợp lý. Nó cảm thấy như nó đã được thiết kế cẩn thận. Nó cảm thấy hiệu quả - ý tưởng có thể được chuyển thành mã dễ dàng. Python làm cho lập trình vui vẻ trở lại!

Tôi đã chuyển việc ngay sau đó và có một số đồng nghiệp mới thích Python và Python là một phần chính trong công việc của tôi kể từ đó. Khi tôi học được nhiều hơn về Python, tôi trở nên hoàn toàn say mê với thiết kế và tính năng của ngôn ngữ và - không kém phần quan trọng - văn hóa và suy nghĩ bao quanh nó.

Những ngôn ngữ lập trình nào khác mà bạn biết và ngôn ngữ yêu thích của bạn là gì?

Ngôn ngữ mà tôi biết đủ để làm việc thực sự? Perl, PHP, JavaScript, Phi tiêu và Python. Python là sở thích rõ ràng của tôi, nhưng sử dụng Dart như một sự thay thế JavaScript cũng rất thú vị và mới mẻ.

Những dự án bạn đang làm việc trên bây giờ?

Tôi làm việc với một công ty tên là Hyperion Grey trên một hợp đồng nghiên cứu & phát triển DARPA (một tổ tiên của internet). Chúng tôi có nhiều nghiên cứu, nhưng trọng tâm cá nhân của tôi là kết hợp thu thập dữ liệu web và học máy: xây dựng các trình thu thập thông minh hơn về các liên kết để theo dõi, kiên cường hơn khi đối mặt với các lỗi (vòng lặp thu thập dữ liệu, 404 mềm, v.v.), và trích xuất nội dung quan trọng trên mỗi trang. Chúng tôi thích làm việc với DARPA và chúng tôi có thể mở nguồn phần lớn công việc của mình.

Những thư viện Python nào bạn yêu thích (lõi hoặc bên thứ 3)?

Flask là gói lớn đầu tiên tôi bắt đầu sử dụng. Tôi đã đi mua sắm một chút và ổn định trên Flask vì nó không nguyên khối và tài liệu rất tuyệt vời. Tôi chưa bao giờ hối hận về sự lựa chọn: tôi càng tìm hiểu về Flask, tôi càng thích nó. Tôi đã tiếp tục sử dụng nó cho các dự án mới trong 5 năm qua và nó vẫn cảm thấy giống như một công cụ trực tiếp đúng đắn.

Yêu cầu là một thư viện hiện tượng khác, bởi vì nó bao bọc một API lõi hỗn loạn và khó khăn với một trong những API tuyệt vời nhất tôi từng thấy: đủ đơn giản để ghi nhớ những điều cơ bản nhưng đủ mạnh để không giới hạn những gì bạn có thể làm với nó.

Ngoài ra còn có một nhóm các gói tính toán khoa học và số (NumPy, SciPy, v.v.) đang biến Python thành một ngôn ngữ quan trọng cần biết cho một loạt các ứng dụng khoa học dữ liệu. Tôi có thể kết hợp năng suất làm việc trong một ngôn ngữ cấp cao như Python với các đặc tính hiệu suất của mã cấp thấp, được điều chỉnh cao.

Bạn thấy Python đi như một ngôn ngữ lập trình ở đâu?

Tôi đã luôn nghĩ về Python như một ngôn ngữ keo. Trong thế giới phát triển web, mã quan trọng về hiệu suất được xử lý bởi cơ sở dữ liệu, máy chủ web, hàng đợi tin nhắn, v.v. Bạn có thể viết logic nghiệp vụ của mình bằng Python và truyền dữ liệu qua lại giữa các thành phần được điều chỉnh cao, được tối ưu hóa này. Tôi sẽ không viết một máy chủ cơ sở dữ liệu bằng Python và tôi sẽ không viết logic kinh doanh của mình bằng C ++. Đó là những công cụ khác nhau bổ sung, không cạnh tranh.

Cách tiếp cận tương tự là đưa Python vào các lĩnh vực mới. Học máy hiệu suất cao và học sâu sẽ cực kỳ quan trọng trong tương lai của điện toán, và Python - một ngôn ngữ chậm nổi tiếng của Hồi giáo - là ngôn ngữ hợp lý để xây dựng các hệ thống học sâu. Tại sao? Bởi vì mã quan trọng về hiệu suất được tối ưu hóa, được vector hóa và điều chỉnh trong các thư viện cấp thấp như NumPy và Theano. Một lượng nhỏ mã Python có thể tạo ra các hệ thống máy học đơn giản và tuyệt vời. Đây là một ví dụ tuyệt vời: http://neuralnetworksanddeeplearning.com/

Cá nhân tôi không cảm thấy cần phải học các ngôn ngữ lập trình chuyên biệt, theo miền cụ thể, như Octave cho đại số tuyến tính hoặc R để thống kê. Python có thể làm tất cả những điều này. Tại nơi làm việc, chúng tôi thậm chí còn tạo các bài thuyết trình trong sổ ghi chép IPython!

Bạn đang làm gì trên thị trường hiện tại cho các lập trình viên Python?

Tôi không biết! Lần cuối cùng tôi xin việc là khoảng 5 năm trước, đó cũng là khoảng thời gian tôi bắt đầu học Python. Thông thường, có vẻ như danh sách công việc luôn bị chi phối bởi bất kỳ công nghệ hương vị nào trong tháng đang nóng. Nếu tôi đang tìm kiếm một công việc, tôi sẽ cảm thấy tự tin hơn khi áp dụng vào bất kỳ công việc nào với 5 năm kinh nghiệm Python của tôi so với 6 tháng ____. Python rất linh hoạt (xem câu trả lời trước của tôi) đến nỗi tôi cho rằng Python sẽ tiếp tục có liên quan cao trong những năm tới.

Cảm ơn rất nhiều vì đã thực hiện cuộc phỏng vấn!

|