Trở thành một lập trình viên

Từ VLOS
Bước tới: chuyển hướng, tìm kiếm
Chia sẻ lên facebook Chia sẻ lên twitter In trang này

Trở thành lập trình viên là một quá trình tích lũy xây dựng các kỹ năng của bạn qua thời gian, và đó có thể trở thành một công việc thích thú và được đền đáp xứng đáng (về cả trí tuệ, tinh thần và tài chính). Hướng dẫn này không hứa hẹn đem đến cho bạn một phương pháp thần kỳ để trở thành một lập trình viên một cách dễ dàng, và trình tự các bước cũng không quá quan trọng, nhưng bạn sẽ nắm được những nét chính về cách để trở thành một lập trình viên ở một trong những lĩnh vực lập trình hiện đại.

Ảnh minh họa

Các bước[sửa]

  1. Tham gia một khóa học giới thiệu về một (hoặc toàn bộ) trong các môn học sau:
    • Lôgic học
    • Toán rời rạc
    • Ngôn ngữ lập trình (người mới bắt đầu tốt nhất là nên học C++/ Java/ Python)
  2. Học về các khái niệm cơ sở dữ liệu như các bảng, các khung nhìn/truy vấn và các thủ tục. Bạn có thể sử dụng bất kỳ gói cơ sở dữ liệu đơn giản nào để làm việc này, ví dụ như:
    • MS Access
    • DB V
    • Fox Pro
    • Paradox
    • MySQL là một cơ sở dữ liệu tốt để học tập vì nó miễn phí, thường được sử dụng, và các cơ sở dữ liệu thường được truy cập với các truy vấn SQL
  3. Quyết định xem bạn muốn trở thành kiểu lập trình viên nào. Các lập trình viên nói chung thường được xếp vào một trong các loại sau:
    • Lập trình viên Web
    • Lập trình viên ứng dụng máy bàn
      • Lập trình viên hướng Hệ điều hành (gắn với một hệ điều hành đơn lẻ hoặc một tập hợp các hệ điều hành)
      • Lập trình viên độc lập với nền tảng
    • Lập trình viên ứng dụng phân tán
    • Lập trình viên thư viện/nền tảng/khung công việc/lõi
    • Lập trình viên hệ thống
      • Lập trình viên nhân Kernel
      • Lập trình viên trình điều khiển
      • Lập trình viên trình biên dịch
    • Nhà khoa học lập trình
  4. Hãy nghiên cứu các công nghệ và ngôn ngữ lập trình liên quan tới mảng lập trình bạn chọn. Các phần tiếp theo sẽ phân chia nhiệm vụ của các kiểu lập trình khác nhau.

Lập trình Web[sửa]

  1. Hiểu được lập trình Web cần gì. Các ứng dụng Web là các thành phần phần mềm được thiết kế để hoạt động bên trên kiến trúc internet. Điều này có nghĩa là các ứng dụng được truy cập thông qua một phần mềm trình duyệt như Firefox hoặc Internet Explorer. Các ứng dụng này được đặt bên trên kiến trúc Internet tức là nó không đòi hỏi phải có một kết nối thực sự tới Internet. Có nghĩa là các ứng dụng Web được xây dựng trên nền tảng các công nghệ web tiêu chuẩn như:
    • HTTP
    • FTP
    • POP3
    • SMTP
    • TCP
    • Các giao thức IP
    • HTML
    • XML
    • Coldfusion
    • ASP
    • JSP
    • PHP
    • ASP.NET
  2. Hãy xem nhiều trang khác nhau để biết chúng thường trông như thế nào. (Bằng cách nhấn chuột phải, rồi chọn View Source (xem mã nguồn) hoặc nhấn F12). Bạn nên tìm kiếm sự đa dạng trong kiểu/nội dung của trang web, chứ không phải là số lượng các trang web bạn xem. Nhìn chung, bạn sẽ cần ghé thăm ít nhất một trang cho mỗi loại trang web sau:
    • Các trang giới thiệu công ty (các công ty thương mại, các công ty/tổ chức phi lợi nhuận, các tổ chức chính phủ)
    • Các công cụ lập chỉ mục Web (các công cụ tìm kiếm, các trang siêu tìm kiếm, các công cụ tìm kiếm chuyên dụng, các thư mục)
    • Các trang khai thác dữ liệu
    • Các trang cá nhân
    • Các trang có tính tư liệu/bách khoa toàn thư (Wiki, các bảng dữ liệu, các tiêu chí kỹ thuật, và các thư mục liệt kê hướng dẫn người dùng, các blog và tạp chí, các trang tin tức và thông tấn, các trang vàng …)
    • Các trang xã hội (các cổng xã hội, các trang đánh dấu và các trang ghi chép trực tuyến)
    • Các trang cộng tác (bao gồm toàn bộ các loại ở trên, như các trang wiki và blog)
  3. Học ít nhất một kỹ thuật/phương pháp động não (brainstorming) và một phần mềm dùng để thực hiện phương pháp đó. Ví dụ: các biểu đồ động não và phần mềm MS Visio.
  4. Làm quen với cấu trúc trang web. Đây là việc tạo nên các biểu đồ web có tính khái niệm, sơ đồ trang và các cấu trúc điều hướng.
  5. Học một khóa đào tạo cấp tốc về thiết kế đồ họa. Hãy cố học ít nhất một gói phần mềm biên tập/thao tác đồ họa (Không bắt buộc nhưng rất khuyến khích).
  6. Học các khái niệm cơ bản về hạ tầng internet. Nó bao gồm việc nắm bắt ý tưởng cơ bản về:
    • Các giao thức dịch vụ Web thông dụng (HTTP, FTP, SMTP, và POP3 hay IMAP4)
    • Phần mềm máy chủ Web (tốt nhất là phần mềm cho nền tảng mà bạn sẽ làm việc chủ yếu với nó nhiều nhất)
    • Phần mềm duyệt Web.
    • Phần mềm máy chủ và máy khách cho email
  7. Học các ngôn ngữ HTML và CSS. Bạn có thể cũng cần có gói phần mềm “What You See Is What You Get (WYSIWYG) (Những gì bạn thấy là những gì bạn có)” để biên tập HTML.
  8. Học XML và các công nghệ liên quan tới XML như XSL và XPath (không bắt buộc nhưng nên học).
  9. Tạo các trang web tĩnh đơn giản cho tới khi bạn quen thuộc và nắm vững với HTML.
  10. Học một ngôn ngữ lập trình kịch bản máy khách. Hầu hết người dùng học JavaScript. Một số khác học VBScript, nhưng nó lại không tương thích với phần lớn các trình duyệt.
  11. Tự làm quen với ngôn ngữ lập trình kịch bản máy khách mà bạn đã học. Cố phát huy hết khả năng của bạn chỉ với ngôn ngữ đó. Chỉ đi tiếp khi bạn ít nhất cũng đã quen thuộc với ngôn ngữ lập trình kịch bản máy khách.
  12. Học ít nhất một ngôn ngữ lập trình máy chủ. Nếu bạn chọn giới hạn mình vào một phần mềm máy chủ, thì hãy học các ngôn ngữ lập trình được phần mềm đó hỗ trợ. Nếu không, hãy học ít nhất một ngôn ngữ lập trình cho mỗi phần mềm máy chủ.
  13. Lập một dự án thí điểm cho bản thân sau khi bạn hoàn tất việc nghiên cứu ngôn ngữ lập trình máy chủ.
  14. Lập một trang web riêng và bắt đầu thử nghiệm trực tuyến với trang riêng của bạn.

Lập trình Ứng bụng máy tính bàn[sửa]

  1. Hiểu được mình phải làm gì với lập trình ứng dụng máy bàn. Hầu hết các lập trình viên máy bàn soạn mã là dành cho các giải pháp kinh doanh, cho nên việc nắm bắt được về các doanh nghiệp, cơ cấu tổ chức và cơ cấu tài chính của họ sẽ tiết kiệm rất nhiều thời gian.
  2. Nghiên cứu về các kiến trúc phần cứng máy tính khác nhau. Một khóa học cơ bản về thiết kế mạch kỹ thuật số và một khóa khác về kiến trúc máy tính sẽ có ích cho bạn. Tuy nhiên một vài người cho rằng mới bắt đầu mà học nó là khá khó, vì vậy đọc hai hay ba bài hướng dẫn (như cái này cái này) là đủ rồi. Sau đó bạn có thể quay lại bước này sau khi bạn học ngôn ngữ lập trình đầu tiên của mình.
  3. Học một ngôn ngữ lập trình sơ đẳng (cho trẻ con). Đừng ngượng khi học một ngôn ngữ như vậy chỉ bởi bạn đã quá lớn để gọi là “trẻ con”. Một ví dụ về các ngôn ngữ lập trình kiểu này là Scratch. Các ngôn ngữ lập trình này có thể giảm được nhiều khó khăn cho bạn trong việc học ngôn ngữ lập trình đầu tiên. Tuy nhiên, bước này chỉ là tùy chọn, bạn cũng có thể thực hiện nó trước bước trước đó.
  4. Tìm hiểu sơ bộ về các mô hình lập trình thủ tục, lập trình hướng đối tượng, và lập trình hàm.
  5. Tham gia một khóa học cơ bản về một trong các ngôn ngữ lập trình thủ tục. Cho dù ngôn ngữ bạn chọn sau này là gì, bạn sẽ vẫn cần tới lập trình thủ tục ở một mức nào đó. Ngoài ra, các lập trình viên cho rằng lập trình thủ tục là khởi đầu dễ nhất cho việc nắm bắt ý tưởng về lập trình nói chung.
  6. Học ít nhất một phương pháp mô hình hóa nâng cao như UML hay ORM.
  7. Bắt tay viết vài ứng dụng nhỏ kiểu ứng dụng giao tiếp (console application) hay tương tự như vậy. Bạn có thể sử dụng các bài thực hành nho nhỏ trong các cuốn sách về ngôn ngữ lập trình. Để làm điều này, hãy chọn một công cụ để viết các chương trình theo ngôn ngữ lập trình mà bạn định viết.
  8. Học một khóa nâng cao hơn về ngôn ngữ lập trình bạn chọn. Đảm bảo rằng bạn hiểu rõ các khái niệm sau và có thể áp dụng chúng tương đối dễ dàng trước khi đi tiếp:
    • Nhập vào và xuất ra thông tin cho người dùng của một chương trình.
    • Luồng lô gic và luồng thực thi của các chương trình trong các ngôn ngữ thủ tục.
    • Khai báo, gán và so sánh các biến.
    • Các câu lệnh rẽ nhánh trong lập trình như if..then..else và select/switch..case.
    • Các lệnh lặp như while..do, do..while/until, for..next.
    • Cú pháp ngôn ngữ lập trình của bạn để tạo và gọi các thủ tục và hàm.
    • Các kiểu dữ liệu và thao tác chúng.
    • Các kiểu dữ liệu được người dùng định nghĩa (các bản ghi/cấu trúc/đơn vị) và cách dùng chúng.
    • Nếu ngôn ngữ của bạn hỗ trợ nạp chồng hàm, hãy hiểu rõ nó.
    • Các phương pháp truy cập bộ nhớ của ngôn ngữ bạn chọn (các con trỏ, cách thức đọc nội dung một ô nhớ bất kỳ…)
    • Nếu ngôn ngữ của bạn hỗ trợ nạp chồng toán tử, hãy hiểu rõ nó.
    • Nếu ngôn ngữ của bạn hỗ trợ con trỏ hàm, hãy hiểu rõ nó.
  9. Áp dụng các kỹ thuật nâng cao mà bạn đã học được.
    • Mô hình hướng đối tượng.
  10. Tham gia một khóa học cơ bản về ít nhất là một ngôn ngữ lập trình khác trong mô hình lập trình khác. Bạn nên học một ngôn ngữ lập trình cho mỗi mô hình, phần lớn các lập trình viên cao cấp đều làm thế. Tuy nhiên bạn nên thường khởi đầu với một ngôn ngữ, làm việc với nó một thời gian, áp dụng những kiến thức của mình và thực hành nó. Sau khi đã có kinh nghiệm thực tế về lập trình rồi mới học tiếp ngôn ngữ mới. Hãy thử một trong các mảng ngôn ngữ sau:
    • Mô hình lập trình lô gic.
    • Mô hình lập trình hàm.
  11. Hãy thử so sánh hai ngôn ngữ lập trình mà bạn đã học được cho tới giờ. Đánh giá các điểm mạnh và điểm yếu của mỗi ngôn ngữ. Việc này thường được thực hiện bằng cách:
    • Dùng một mẫu công việc đơn giản trước đây với ngôn ngữ lập trình đầu tiên và viết lại nó bằng ngôn ngữ lập trình thứ hai.
    • Tạo một dự án mới và thử thực hiện nó bằng cả hai ngôn ngữ. Đôi khi tùy thuộc vào việc bạn chọn dự án và ngôn ngữ, chưa chắc bạn đã có thể thực hiện được dự án đó chỉ với một trong hai ngôn ngữ đó!
    • Viết so sánh theo kiểu một bảng tra cứu nhanh hoặc bảng tóm tắt giữa hai câu lệnh tương tự trong hai ngôn ngữ và những đặc điểm độc nhất của mỗi ngôn ngữ.
    • Thử tìm cách bắt chước đặc điểm độc nhất của một trong hai ngôn ngữ bằng ngôn ngữ còn lại.
  12. Học các khái niệm lập trình trực quan sử dụng một trong các ngôn ngữ bạn đã học. Hầu hết các ngôn ngữ lập trình đều có các phiên bản/thư viện hỗ trợ lập trình trực quan và các kiểu lập trình hỗ trợ giao tiếp hoặc tương tự khác. Bạn có thể thực hiện điều này bằng cách:
    • Tìm hiểu sơ bộ về lập trình sự kiện. Hầu hết lập trình trực quan ở một mức nào đó đều dựa vào các sự kiện và việc xử lý các sự kiện (sử dụng ngôn ngữ lập trình bạn chọn).
    • Thử các phần mềm máy bàn nhiều nhất có thể và tìm hiểu chúng làm gì. Đa phần các công ty phát triển phần mềm đều cung cấp các phiên bản thử nghiệm (beta) của sản phẩm cho người dùng để kiểm tra phần mềm. Do vậy, hãy luôn cập nhật những tiến bộ về giao diện người dùng.
    • Đọc vài bài viết hoặc hướng dẫn về các giao diện đồ họa người dùng.
  13. Bắt đầu áp dụng kiến thức của bạn cho các dự án phần mềm nhỏ bạn thiết kế. Thử áp dụng kỹ năng lập trình của bạn cho các vấn đề mà bạn đối mặt hàng ngày. Ví dụ viết một chương trình đổi tên tập tin hàng loạt, so sánh các tập tin văn bản một cách trực quan, sao chép tên các tập tin trong một thư mục vào một tập tin nhớ/văn bản, và những thứ tương tự. Nhớ là trước tiên chỉ cần đơn giản thôi.
  14. Tạo một “dự án tốt nghiệp” ảo. Hoàn thành dự án cho tới lúc kết thúc, áp dụng các kỹ thuật về lập trình trực quan mà bạn đã học được cho tới giờ.
  15. Mở rộng hiểu biết của bạn về khung công việc/thư viện/gói trực quan mà bạn học được trước đây bằng cách tham gia các khóa nâng cao, chú ý hơn vào chi tiết và học thêm các lời khuyên cũng như mẹo hay cho khung công việc của bạn từ các tài nguyên trực tuyến.
  16. Tìm kiếm các gói/thư viện về yếu tố trực quan khác cho ngôn ngữ lập trình của bạn và nghiên cứu chúng.
  17. Tham gia một khóa học về đồ họa (không phải thiết kế đồ họa). Nó sẽ rất hữu ích cho các lập trình viên muốn viết nên những yếu tố giao diện người dùng cuốn hút.
  18. Trở thành một lập trình viên trò chơi (tùy chọn). Lập trình trò chơi phần lớn vẫn được xem là lập trình máy bàn. Nếu bạn dự định trở thành một lập trình viên trò chơi, bạn sẽ cần học thêm về lập trình trò chơi sau khi hoàn tất các bước này. Một khóa học đồ họa là bắt buộc đối với các nhà lập trình trò chơi ,và ngôn ngữ lựa chọn thứ hai trong các bước trước đây nên là ngôn ngữ lập trình lô gic/hàm (nên chọn Prolog hay Lisp).

Lập trình Ứng dụng phân tán[sửa]

  1. Tìm hiểu về lập trình ứng dụng phân tán. Lập trình ứng dụng phân tán được nhiều người xem là một trong những thứ khó học nhất và đòi hỏi kiến thức phong phú về máy tính cũng như các công nghệ truyền thông.
  2. Tìm hiểu cấp tốc về các hệ thống thoại và phần cứng của chúng. Bước này là tùy chọn. Tuy nhiên việc có hiểu biết về các cấu trúc liên kết mạng là rất hữu ích.
  3. Tự làm quen với kiến trúc phần cứng và các thiết bị làm việc mạng như các bộ tập trung trung tâm (hub), thiết bị chuyển mạch (switch) và định tuyến (router).
  4. Học một khóa học về các giao thức và những thứ cơ bản liên quan. Bạn cần có hiểu biết tốt về mô hình Kết nối các hệ thống mở (OSI), Ethernet, IP, TCP, UDP và HTTP trước khi bắt đầu với lập trình các ứng dụng phân tán.
  5. Học ngôn ngữ XML và tự làm quen với nó.
  6. Bắt đầu bằng việc học một ngôn ngữ lập trình kịch bản cho chương trình thông dịch lệnh. Đối với lập trình trên nền Windows, đó có thể là bất kỳ kịch bản nào làm việc với Windows Scripting Host. Đối với lập trình trên nền Linux, các kịch bản Bash và Perl sẽ là đủ dùng. JavaScript rất được khuyến khích cho việc này ở cả hai nền tảng vì các lý do sau:
    • Nó được hỗ trợ bởi hầu hết các công cụ cung cấp kịch bản trong bất kỳ hệ điều hành nào (Windows Scripting Host mặc định hỗ trợ JavaScript, đa phần các bản phân phối Linux đều có một gói hỗ trợ giao tiếp kịch bản JavaScript).
    • Nó được nhiều lập trình viên cho là dễ học hơn .
    • Nó có một cú pháp bắt nguồn từ ALGOL cho phép bạn quen với nhiều ngôn ngữ lập trình khác khi bạn cần chọn một ngôn ngữ lập trình thứ hai C, C++, C#, Java và J# đều có cú pháp bắt nguồn từ ALGOL.
    • Bằng việc học JavaScript, bạn sẽ tự quen dần với việc lập kịch bản trên máy khách cho các trang web, rõ ràng là một tác dụng phụ có lợi!
  7. Đầu tiên, chỉ áp dụng lập trình thủ tục bằng ngôn ngữ kịch bản mà bạn chọn. Sau đó, bạn có thể sử dụng thêm các kỹ thuật và mô hình lập trình nâng cao theo ngôn ngữ lập trình kịch bản của bạn và những gì nó hỗ trợ. Tất cả các ngôn ngữ lập trình kịch bản đều có liên quan tới lập trình thủ tục ở mức độ nào đó.
  8. Sử dụng ngôn ngữ lập trình kịch bản bạn đã học để viết các kịch bản thực hiện việc thông tin giữa các máy. Tìm hiểu những gì cần thiết để làm được việc đó. Chỉ cần thông tin liên lạc đơn giản là đủ.
  9. Chuyển đổi sang một ngôn ngữ lập trình/kịch bản máy bàn. Tốt nhất là một ngôn ngữ đa mô hình như Python. Tìm hiểu sơ bộ về ngôn ngữ thứ hai này. Java là ngôn ngữ được hầu hết các lập trình viên lựa chọn vì nhiều lý do. Tuy nhiên, C# lại giúp tạo đà nhanh hơn ở mảng này. Java và C# được ưa chuộng vì các lý do sau:
    • Chúng là các ngôn ngữ lập trình hướng đối tượng giúp cho các lập trình viên trong các nhóm lớn tránh được việc thực hiện các chi tiết vì chúng đều có khả năng hỗ trợ các thành phần (có nghĩa là các đơn vị mã, tiền biên dịch thực hiện cho một tác vụ cụ thể có thể được sử dụng trong các chương trình khác)
    • Chúng hỗ trợ lập trình theo sự kiện cũng như OO (hướng đối tượng) và lập trình thủ tục ở một mức độ nào đó.
    • Khung công việc mà ngôn ngữ được xây dựng trên đó có đặc điểm bản chất là phân tán (trong trường hợp Java).
    • Có nhiều gói lập trình được tạo sẵn để xử lý việc kết nối mạng, ở cả dạng mã nguồn mở hay tích hợp sẵn trong khung công việc; điều này tạo thuận lợi cho lập trình viên khi làm việc trên sản phẩm của những người khác.
  10. Tập trung hơn vào các tính năng cốt lõi của ngôn ngữ, đặc biệt là những tính năng hỗ trợ kết nối mạng. Chú ý ít hơn vào các yếu tố giao diện người dùng như xuất thông tin ra, thiết kế và các kỹ thuật cho cửa sổ làm việc, và các yếu tố giao diện người dùng.
  11. Tham gia một khóa đào tạo về thiết kế và kiến trúc ứng dụng phân tán. Bạn có thể học qua sách vở, các bài hướng dẫn trên mạng hoặc các khóa học học thuật. Tuy nhiên, dù làm bằng cách nào bạn cần nắm bắt được kiến trúc của các ứng dụng phân tán và các khái niệm của nó.
  12. Học cách xây dựng các thành phần dịch vụ cũng như sử dụng ngôn ngữ lập trình bạn chọn.
  13. Học một hoặc nhiều hơn các công nghệ sau. Ít nhất bạn nên tìm hiểu qua toàn bộ chúng. Đa phần các lập trình viên ứng dụng phân tán không chỉ học một hay hai ngôn ngữ lập trình, mà ít nhất là một ngôn ngữ lập trình trên mỗi hệ điều hành. Đó là vì nếu bạn muốn ứng dụng của bạn được “phân tán”, ít nhất bạn phải cung cấp một phiên bản của nó cho mỗi hệ điều hành phổ biến.
    • Common Object Request Broker Architecture (CORBA) (Kiến trúc môi giới các đối tượng chung)
    • Simple Object Access Protocol (SOAP) (Giao thức truy cập đối tượng đơn giản)
    • Asynchronous JavaScript and XML (AJAX) (JavaScript và XML không đồng bộ)
    • Distributed Component Object Model (DCOM) (Mô hình đối tượng thành phần phân tán)
    • .NET Remoting (Giải pháp xử lý tính toán từ xa)
    • XML Web Services (Các dịch vụ Web XML)

Lập trình Thư viện/Nền tảng/Khung công việc/Lõi[sửa]

  1. Hiểu được lập trình lõi là gì. Các lập trình viên lõi đơn thuần là những lập trình viên cao cấp có nhiệm vụ chuyển các ứng dụng lập trình sang các đơn vị mã lập trình để các lập trình viên khác sử dụng.
  2. Nếu bạn chưa học, thì hãy học một ngôn ngữ lập trình hỗ trợ cho việc xây dựng các thành phần/gói tái sử dụng được.
  3. Học một khóa nâng cao về UML và ORM. Hầu hết các nhà phát triển thư viện sử dụng một hoặc cả hai thứ này.
  4. Tham gia một khóa về kỹ thuật phần mềm.
  5. Ít nhất phải tìm hiểu các kỹ thuật và khái niệm lập trình dạng mô đun, dựa trên thành phần, hướng đối tượng và theo sự kiện. Bạn càng am hiểu nhiều mô hình và ngôn ngữ lập trình, bạn càng thành công hơn trong việc trở thành một lập trình viên thư viện/gói.
  6. Học thêm về các hệ điều hành khác nhau và các khung công việc lập trình được hỗ trợ bởi các hệ điều hành này.
  7. Tập trung nỗ lực học tập của bạn vào các khung công việc, các ngôn ngữ lập trình và các công nghệ độc lập với nền tảng.
  8. Nếu các ngôn ngữ bạn học cho đến giờ có các phiên bản theo tiêu chuẩn ANSI/ISO/IEEE/W3C, thì hãy nắm vững các tiêu chuẩn. Hãy cố sử dụng mã tiêu chuẩn bất cứ khi nào bạn có thể.
  9. Hãy thử bắt chước các thư viện đơn giản đã được lập sẵn, đặc biệt là các thư viện mã nguồn mở. Điều này rất hữu dụng trong giai đoạn đầu để trở thành một lập trình viên thư viện/gói. Bắt đầu với những gói đơn giản như các gói chuyển đổi đơn vị và tính toán khoa học trung cấp. Nếu bạn là sinh viên, hãy tận dụng các môn phi lập trình bằng cách thử thực hiện các phương trình và nhân khoa học của chúng như các thư viện.
  10. Tìm kiếm và thử các gói nguồn mở trong lĩnh vực lập trình của bạn. Trước tiên hãy tải về các phần nhị phân/thực thi được của gói. Thử sử dụng nó và tìm các điểm mạnh và điểm yếu. Sau khi xong, hãy tải mã nguồn về và thử tìm hiểu xem nó được thực hiện như thế nào. Hãy thử tái tạo lại các thư viên đó hoặc các phần của chúng. Trước hết, hãy làm điều đó sau khi bạn đã thấy mã nguồn và sau đó thì làm trước khi bạn thấy mã nguồn. Ở các giai đoạn sau, hãy thử cải tiến các thư viện đó.
  11. Hãy nghiên cứu các phương pháp tiếp cận khác nhau để phân phối và triển khai các thành phần tới các lập trình viên.
    • Thông thường, các lập trình viên thư viện/gói có khuynh hướng suy nghĩ một cách đệ quy và/hoặc lặp lại về tất cả các vấn đề được đưa ra cho họ. Hãy thử nghĩ về mỗi vấn đề như một tập hợp của các vấn đề nhỏ hơn (một chuỗi các tác vụ đơn giản hơn) hoặc như một quy trình lặp lại của việc để giảm phạm vi vấn đề xuống các phạm vi nhỏ hơn và rồi xếp chồng các phạm vi đó lên nhau.
    • Các lập trình viên thư viện/gói có xu hướng khái quát hóa. Đó là khi được trình bày một vấn đề cụ thể đơn giản, họ thường nghĩ tới một vấn đề tổng quát hơn và cố giải quyết vấn đề tổng quát đó để rồi nó sẽ tự động giải quyết các vấn đề nhỏ hơn.

Lập trình Hệ thống[sửa]

  1. Hiểu xem lập trình hệ thống đòi hỏi những gì. Các lập trình viên hệ thống làm việc với “khoa học” của lập trình chứ không phải những công việc thực hiện cụ thể của nó. Đừng bó buộc mình với một nền tảng cụ thể nào.
  2. Thực hiện theo ba bước đầu tiên để trở thành các Lập Trình Viên Ứng Dụng Máy Bàn.
  3. Tham gia một khóa mở đầu về Đại số Tuyến tính.
  4. Học một khóa về Tính toán.
  5. Tham gia một khóa học về Lô gic học và/hoặc Toán rời rạc.
  6. Tự làm quen với các hệ điều hành cơ bản khác nhau. Điều này có thể được thực hiện bằng cách:
    • Hiểu được cách cài đặt các hệ điều hành.
    • Học cách cài đặt các hệ điều hành khác nhau trên một PC (tùy chọn, nhưng nên làm).
    • Cài đặt nhiều hơn một hệ điều hành. Đừng cài đặt bất kỳ gói phụ trợ nào khác lên hệ thống; thay vào đó chỉ sử dụng các chức năng cơ bản được hệ điều hành cung cấp.
  7. Tham gia một khóa học (hoặc có thể đọc sách) về kiến trúc phần cứng máy tính[[.
  8. Phát huy hiểu biết về các nền tảng phần cứng máy tính khác nhau.
  9. Làm quen bước đầu với hợp ngữ của hệ điều hành/nền tảng phần cứng mà bạn chọn. Sau này bạn sẽ học thêm hợp ngữ của các hệ điều hành/nền tảng khác.
  10. Học các ngôn ngữ ANSI C và C++, cùng với các khái niệm về lập trình thủ tục.
  11. Hiểu rõ và thực hành các thư viện C/C++ tiêu chuẩn trên nền tảng bạn chọn. Đặc biệt lưu ý tới Thư viện mẫu tiêu chuẩn (STL) và có thể cả Thư viện mẫu hoạt động (ATL).
  12. Tìm kiếm các tài nguyên trực tuyến, sách vở và các khóa học để hiểu được đặc tính của C trên nền tảng bạn chọn.
  13. Thực hành tạo mã nâng cao với C và C++.
  14. Học thêm Hợp ngữ cao cấp.
  15. Học một khóa về thiết kế hệ điều hành.
  16. Tìm và đọc các tư liệu về nền tảng cụ thể mà bạn chọn. Điều này sẽ dễ dàng hơn nếu bạn chọn một hệ điều hành dựa trên Unix. Hãy nắm vững hệ thống mà bạn sẽ làm việc về sau.
  17. Thực hành những kiến thức bạn có được. Trước tiên hãy tạo một số tiện ích hệ thống nhỏ. Sẽ thường hữu ích nếu bạn:
    • Thử tái tạo các công cụ nhỏ có sẵn trên hệ thống của bạn.
    • Thử chuyển các tiện ích có sẵn trên các hệ điều hành khác sang hệ điều hành của bạn.
  18. Học các ngôn ngữ theo thứ tự hữu ích nhất. Đây là mảng duy nhất mà ngôn ngữ lập trình đầu tiên được học có ý nghĩa của nó. Hãy học ANSI C trước, chứ không phải C++, C#, Java hay D trước. Sau đó mới học C++.
    • Giới hạn ngôn ngữ đầu tiên vào C và chỉ có C bởi vì lập trình các hệ thống đòi hỏi lập trình viên phải quen thuộc với các khái niệm sau:
      • Biên dịch thực tế và toàn bộ mã nguồn.
      • Các tập tin đầu ra đối tượng cấp thấp.
      • Các mã nhị phân liên kết.
      • Ngôn ngữ máy cấp thấp/lập trình hợp ngữ. Nhiều người cho rằng ngôn ngữ C có thể thay thế và dễ dàng hơn để học hợp ngữ. Nó còn hỗ trợ việc chèn mã hợp ngữ vào trong mã bất cứ khi nào bạn thích và nó chỉ có tính thủ tục (giống như hợp ngữ).

Khoa học Lập trình[sửa]

  1. Biết được một nhà khoa học lập trình làm gì. Các nhà khoa học lập trình là những lập trình viên rất cao cấp thay vì phát triển các ứng dụng, thì họ phát triển các công nghệ tính toán như mã hóa, các ngôn ngữ lập trình và các thuật toán khai thác dữ liệu. Mức độ này hiếm khi đạt được mà không có sự nghiên cứu học thuật và chuyên sâu.
  2. Tích lũy kiến thức khoa học tương đương với bằng cấp 4-năm trong ngành khoa học máy tính. Điều này có thể đạt được bằng một trong các cách:
    • Học lấy một bằng cấp học thuật thực sự (thực tế thường là như vậy).
    • Tìm đề cương môn học cho một bằng cấp như vậy từ một trong các trường đại học hiện có và tự học các môn này hoặc là tham gia các khóa học riêng. Về mặt lý thuyết bạn có thể đạt được điều này, nhưng bạn nên đi theo con đường đầu tiên.
  3. Chọn lựa mảng chuyên ngành. Càng cụ thể thì càng tốt. Điều này tùy thuộc và sở thích của bạn. Tuy nhiên, sau đây là một danh sách các chủ đề chính trong khoa học lập trình máy tính:
    • Thiết kế thuật toán (tìm kiếm, phân loại, mã hóa, giải mã và phát hiện lỗi trong thông tin liên lạc là một vài ví dụ)
    • Thiết kế/tối ưu hóa các ngôn ngữ lập trình/trình biên dịch
    • Các mảng trí tuệ nhân tạo (nhận dạng mẫu, nhận dạng giọng nói, xử lý ngôn ngữ tự nhiên, các mạng nơ ron)
    • Khoa học người máy
    • Lập trình khoa học
    • Siêu tính toán
    • Thiết kế/mô hình hóa trợ giúp bởi máy tính (CAD/CAM)
    • Thực tại ảo
    • Đồ họa máy tính (Đồ họa máy tính thường bị nhầm lẫn với thiết kế đồ họa hay thiết kế giao diện đồ họa người dùng. Đồ họa máy tính là lĩnh vực nghiên cứu cách thể hiện và thao tác đồ họa trong các hệ thống máy tính).
  4. Cân nhắc việc lấy một bằng cấp học thuật cao hơn. Bạn có thể theo đuổi một chương trình đào tạo thạc sĩ hoặc tiến sĩ.
  5. Học các công nghệ và ngôn ngữ lập trình liên quan tới lĩnh vực lập trình bạn chọn.

Lời khuyên[sửa]

  • Bất kể kiểu lập trình nào bạn muốn thử và bất kể mức độ nào bạn muốn đạt được, hãy cân nhắc việc tham gia các lớp ở trường hoặc đại học cộng đồng ở địa phương. Đừng e ngại bởi những thuật ngữ như “Khoa học Máy tính”. Bất kỳ lớp học nào bạn tham gia mà không đòi hỏi những yêu cầu hay điều kiện ban đầu đều sẽ tập trung vào giảng dạy cơ bản về lập trình, nhưng dù sao bạn cũng nên kiểm tra với giảng viên hoặc người cố vấn trước khi thực hiện để đảm bảo rằng nó là thứ bạn đang tìm kiếm, vì những lớp học như “Kỹ năng Máy tính” có thể tập trung nhiều hơn vào việc làm quen với các ứng dụng văn phòng hay gì đó tương tự.

Liên kết đến đây

Chia sẻ lên facebook Chia sẻ lên twitter In trang này