Bắt đầu với lập trình hệ thống? [đóng cửa]


8

Kể từ khi tôi phát hiện ra lập trình năm năm trước, tôi đã làm rất nhiều thứ. Tôi đã học được nhiều ngôn ngữ lập trình và công nghệ và đã thử nhiều thứ thú vị. Tôi đã viết các trò chơi, cả bảng điều khiển và với các ứng dụng đồ họa, bàn điều khiển và cửa sổ chạy trong máy tính để bàn, các ứng dụng web CRUD, cơ sở dữ liệu tệp phẳng dựa trên PHP (crappy) của riêng tôi. Ngoài Web và máy tính để bàn, tôi đã thử phát triển di động với Android nhưng không thích nó, vì vậy tôi đã dừng việc đó. Gần đây tôi đã hoàn thành một dự án Web của mình và đang học lập trình chức năng ngay bây giờ (Haskell).

Nhưng tôi chưa bao giờ lao vào lập trình hệ thống trước đây. Ý tưởng xây dựng phần mềm (tôi thậm chí không chắc liệu đó có phải là thuật ngữ chính xác để sử dụng cho nó hay không) ở mức độ thấp tương tác với hệ điều hành có vẻ thú vị. Vấn đề là, tôi không chắc chính xác làm thế nào để bắt đầu, và cần thêm ví dụ về những gì tôi làm với điều này.

Tôi có nên bắt đầu bằng cách học API Win32 không? Tôi biết một số C ++ vì tôi đã sử dụng nó để tạo ra một vài ứng dụng và trò chơi trên console, nhưng đã không sử dụng nó trong một vài năm. đó là phải đường để đi không? Còn C thì sao? Tôi đang lên kế hoạch tìm hiểu thêm về C (sử dụng sách K & R) trước khi mùa hè kết thúc và đại học bắt đầu. Tôi muốn có một khởi đầu tốt khi là sinh viên năm nhất đại học với nền tảng lập trình vững chắc.


Tôi nghĩ bạn nên làm rõ câu hỏi của mình: bạn muốn làm gì? Viết HĐH? Thực hiện theo hướng dẫn SIGOPS, đọc cuốn sách Tanenbaum. Học Win32? Có cuốn sách Petzold (mặc dù tôi không chắc tại sao ai đó muốn làm điều đó mà không có động lực mạnh mẽ). Trình điều khiển thiết bị? Lập trình hệ thống là một khái niệm rộng.
Vitor Py

Tại sao bạn nói rằng một cái gì đó sẽ không muốn học Win32 mà không có động lực mạnh mẽ?
Ryan

2
Bởi vì API Win32 thô mang rất nhiều hành trình: nó đến từ API Win16, nên có rất nhiều thứ dường như không có ý nghĩa gì. Sử dụng bộ công cụ GUI hiện đại cho hầu hết các ứng dụng của bạn và chỉ cần gọi một vài phương thức của API Win32 nơi bạn thực sự cần nó thường là một cách tiếp cận tốt hơn và ít đau đớn hơn.
Vitor Py

Câu trả lời:


6

Ý tưởng xây dựng phần mềm (tôi thậm chí không chắc liệu đó có phải là thuật ngữ chính xác để sử dụng cho nó hay không) ở mức độ thấp tương tác với hệ điều hành có vẻ thú vị.

Tôi tin rằng bạn đang nhận được lập trình hệ thống nhầm lẫn với phát triển ứng dụng . Lập trình hệ thống sẽ phù hợp hơn với việc viết hệ điều hành, không tương tác với nó. Tôi có thể đề nghị bắt đầu với việc phát triển ứng dụng thông thường (trên Windows sẽ là WinAPI ), sau đó chuyển sang khám phá các hệ thống con mà bạn thấy thú vị theo chiều sâu.

K & R rõ ràng là hướng dẫn dứt khoát trên C và nếu bạn định nhắm mục tiêu các ứng dụng Windows, tôi rất khuyên bạn nên chọn một bản sao của Lập trình Windows .

Nếu bạn thực sự quan tâm đến các tương tác "cấp thấp", tôi cũng có thể đề xuất các hướng dẫn lắp ráp Win32 của Iczelicon ( MASM rất tuyệt và cũng miễn phí).

Nếu bạn có thể nắm bắt được ngay cả một phần thông tin đó trước năm thứ nhất đại học, bạn sẽ đi trước những năm khác có lẽ chỉ là về những người khác.


Thực sự rất khó để tôi giới thiệu API Win32 cho ai đó. Tại sao không nhắm mục tiêu một cái gì đó hiện đại hơn và có thể sử dụng như Qt, GTKmm, hoặc quái, thậm chí là MFC? Tôi thấy không có sử dụng cho lập trình API Win32, mặc dù đã học nó cho một vài công việc.
Vitor Py

@Victor Tôi đoán nó chỉ thực sự xuất phát từ vấn đề sở thích cá nhân. Tôi "cắt răng" trên Win32 C, vì vậy tôi đoán rằng tôi có một số kết nối hoài cổ cá nhân với nó. Mặc dù tôi không sử dụng nó rất thường xuyên trong công việc hiện tại của mình, tuy nhiên tôi vẫn sử dụng nó thường xuyên cho các dự án cá nhân / phát triển giải trí (chủ yếu thông qua các trình bao bọc Interop hoặc CLI / C ++, tuy nhiên). Tôi nghĩ rằng Win32 C trực tiếp "gần với kim loại" hơn vì OP mong muốn hơn các lớp trừu tượng được cung cấp bởi các khung (đặc biệt là MFC, chúa tể tốt ...).
Brandon Moretz

10

Cân nhắc viết một dự án nhúng nhỏ trên bộ điều khiển nhúng như Arduino. Đây là một cách tuyệt vời để bắt đầu quá trình học lập trình hệ thống, bởi vì nó bắt đầu cho bạn ở cấp độ cơ bản và cho phép bạn phát triển nó.


+1 cho câu trả lời "đến điểm". Bạn có thể giải thích thêm và thêm một số tài liệu tham khảo?
Md Mahbubur Rahman

Trang web Arduino đi sâu vào chi tiết quan trọng về nền tảng và cách sử dụng nó, cũng như nhiều tài nguyên khác đã có sẵn trên Internet.
Robert Harvey

4

Nếu bạn quan tâm đến lập trình hệ thống, không có gì thực sự hoạt động trên hệ điều hành (trên lõi của nhân hệ điều hành hoặc trên trình điều khiển thiết bị có liên quan)

Do đó, tôi khuyên bạn nên tham gia vào phát triển Linux - đó là một cộng đồng rất tốt để tìm hiểu về các hệ điều hành. Tôi đã học được một lượng lớn về các hệ điều hành chỉ bằng cách theo dõi danh sách thảo luận kernel-kernel ....

Đây cũng là cơ hội để thực hiện một dự án hữu hình và nâng cao kỹ năng của bạn. Là một nhà tuyển dụng của các nhà phát triển phần mềm, tôi chú ý thực sự khi ai đó đã đóng góp cho một dự án nguồn mở - nó hầu như luôn là một chỉ báo tích cực về kỹ năng và cam kết!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.