Từ 1 tới 7 trên tổng số 7 kết quả

Đề tài: Học lập trình trong 21 ngày hay 10 năm? Học lập trình thế nào?

  1. #1
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,750

    Mặc định Học lập trình trong 21 ngày hay 10 năm? Học lập trình thế nào?

    HỌC LẬP TRÌNH TRONG 21 NGÀY HAY 10 NĂM ?

    … Không ai trong chúng ta bắt đầu học từ hư không, chúng ta đứng trên vai của những người khổng lồ như Wirth, Knuth và hàng ngàn người khác. Sau đó chính bờ vai của chúng ta sẽ góp phần xây dựng tương lai.


    Tại sao mọi người lại học một cách hối hả như vậy?

    Đến bất kì một nhà sách nào, bạn cũng có thể tìm thấy những quyển sách hướng dẫn đại loại như "Tự học Java trong 7 ngày", và vô số những quyển chỉ cách tự học Visual Basic, Window, Internet… trong một vài ngày hoặc vài giờ. Tôi đã vào website Amazon.com để tìm kiếm các sách có chủ đề "Teach youself" và nhận được 248 tiêu đề sách, 78 quyển đầu là sách về máy tính (quyển thứ 79 là "Learn Bengali in 30 days"). Tôi thay thế từ "days" bằng từ "hours" và cũng nhận được một con số tương tự: 253 quyển với 77 quyển đầu nói về máy tính (quyển thứ 78 có tựa đề "Teach Yourself Grammar and Style in 24 Hours").

    Như vậy có thể đi đến kết luận rằng: người ta đang học về máy tính một cách hấp tấp, hoặc tin học là một môn khoa học dễ dàng nhất trên thế giới này. Thật ra, không có quyển sách nào trên thế giới có thể dạy người ta học nhạc Beethoven, Vật lý Lượng tử,… trong một vài ngày hoặc vài giờ.

    Chúng ta hãy phân tích xem tựa đề "Learn Pascal in Three Days" có nghĩa gì:

    Learn: trong ba ngày, bạn không thể có đủ thời gian để viết một vài chương trình có ý nghĩa và học những bài học kinh nghiệm từ những chương trình đó. Bạn càng không có đủ thời gian để hiểu được ngôn ngữ Pascal là như thế nào. Bạn cũng không có thời gian để học hỏi từ những lập trình viên có kinh nghiệm. Trong một thời gian ngắn ngủi như vậy, bạn không thể học được nhiều. Do đó, quyển sách chỉ có thể đề cập tới những vấn đề nông cạn. Mà như Alexander Pope(1) đã nói: "Học hành nông cạn thực sự là một điều nguy hiểm".

    Pascal: trong ba ngày, bạn có thể học về cú pháp của ngôn ngữ Pascal (nếu như bạn đã biết một ngôn ngữ khác tương tự), nhưng không thể học được nhiều về cách dùng cú pháp ấy. Trong một thời gian ngắn, nếu là một người biết Basic, bạn có thể viết một chương trình theo phong cách Basic bằng ngôn ngữ Pascal, thế nhưng bạn không thể biết được ngôn ngữ Pascal hay (hoặc dở) ở chỗ nào. Một người nổi tiếng là Alan Perlis(2) đã nói: "Một ngôn ngữ không ảnh hưởng tới cách suy nghĩ của bạn về lập trình là một ngôn ngữ không đáng để học". Bạn có thể nghĩ rằng không cần học nhiều về ngôn ngữ Pascal (hoặc về Visual Basic, hay javascript) bởi vì bạn chỉ cần một công cụ để hoàn thành một công việc nào đó. Nhưng đó là một cách nghĩ sai lầm, nếu không học về cách lập trình thì làm sao bạn có thể hoàn thành công việc.

    In Three Days: thật không may, 3 ngày không thể đủ để học bất kì ngôn ngữ nào, phần viết sau đây sẽ chứng minh cho bạn điều đó.

    Tự học lập trình trong 10 năm.

    Các nhà nghiên cứu đã xác định rằng một người mất khoảng mười năm để thành thạo một lĩnh vực nào đó, từ chơi cờ, soạn nhạc, hội họa, chơi đàn dương cầm, bơi lội cho đến nghiên cứu vật lý lượng tử.
    Và thực tế là không có một con đường tắt nào: ngay cả Mozart, người được coi là thần đồng âm nhạc vào năm lên 4, vậy mà phải mất 13 năm rèn luyện mới được công diễn trên thế giới. Samuel Johnson(3) còn cho rằng 10 năm là chưa đủ, ông đã nói: "Thành công trong bất kì lĩnh vực nào chỉ có thể đạt được bằng sự lao động của cả một đời người; và không thể nào có một cái giá thấp hơn".
    Đây là nguyên tắc để thành công trong việc lập trình của tôi:

    Yêu thích việc lập trình, và học lập trình trong sự hứng thú. Và phải chắc rằng sự yêu thích đó đáng để cho bạn bỏ ra 10 năm theo đuổi. Trao đổi với các lập trình viên khác, đọc các chương trình của người khác. Điều này quan trọng hơn bất kì quyển sách hay khóa học nào.

    Tự viết chương trình. Cách học tốt nhất là học bằng thực hành. Nhớ rằng bạn phải viết các chương trình một cách cẩn thận. Quyển sách "Cognition in Practice: Mind, Mathematics, and Culture in Everyday Life" là một quyển sách hay để tham khảo về các qui tắc trong việc lập trình.

    Nếu muốn, bạn có thể bỏ ra 4 năm để học đại học. Việc này tạo cơ hội cho bạn làm một số việc trước khi tốt nghiệp, và sẽ cho bạn một sự hiểu biết sâu hơn về lĩnh vực mình quan tâm. Nếu bạn là người không thích trường học, bạn có thể học hỏi từ công việc thực tế những bài học tương tự. Nhưng trong bất kì trường hợp nào, việc chỉ học từ sách vở cũng không thể nào là đầy đủ. Như Eric Raymond, tác giả của quyển "The New Hacker''s Dictionary" đã nói: "Sự giáo dục về Khoa học Máy tính không thể đào tạo ra những lập trình viên xuất sắc cũng như việc học về bút vẽ và màu tô không thể nào tạo ra một họa sĩ có tài".

    Khi bạn làm việc trong một dự án với các lập trình viên khác, bạn có thể thấy rằng: một người có thể rất giỏi trong dự án này, nhưng sẽ rất dở trong một dự án khác. Khi bạn là người giỏi nhất, bạn hãy thử khả năng của mình trong vai trò lãnh đạo dự án, và cố gắng truyền cảm hứng của bạn cho các thành viên khác. Khi bạn là người dở nhất, hãy cố gắng học hỏi từ những việc mà lãnh đạo của bạn làm và không làm.

    Khi bạn đang thua kém các lập trình viên khác. Hãy dồn hết tâm trí của bạn để hiểu các chương trình của họ. Xem xét các chương trình đó dùng để làm gì và thử sửa lỗi các chương trình đó khi mà họ không có mặt ở đó. Kế tiếp, hãy nghĩ cách giải quyết vấn đề tốt hơn nếu có thể.

    Bạn nên học ít nhất 6 ngôn ngữ lập trình. Trong đó có một ngôn ngữ hỗ trợ lớp trừu tượng (như Java hay C++), một ngôn ngữ theo quan điểm hàm (như Lisp hay ML), một ngôn ngữ khai báo (như Prolog), một ngôn ngữ hỗ trợ xử lý tuần tự (như Icon hay Scheme), và một ngôn ngữ hỗ trợ xử lý song song (như Sisal).

    Cố gắng học một ngôn ngữ chính quy, có thể là ANSI C++, và hoàn tất việc học ngôn ngữ này càng nhanh càng tốt.

    Luôn nhớ rằng, trong từ "Khoa học Máy tính" đã hàm chứa "Máy tính". Bạn phải biết rõ thời gian máy tính thực thi các lệnh, lấy thông tin từ bộ nhớ và đọc dữ liệu từ đĩa. Nghĩa là bạn cũng phải có hiểu biết cơ bản về phần cứng máy tính và cách thức làm việc của chúng.

    Tổng kết
    Tôi tin rằng, kinh nghiệm thực tế sẽ luôn đưa ra những điều bổ ích hơn so với hàng ngàn trang sách viết bởi những chuyên gia. Và bây giờ, bạn có thể đi mua một quyển sách về Java, bạn sẽ thu được một số điều hữu dụng từ quyển sách đó. Thế nhưng, bạn không thể thay đổi cuộc đời của mình hay nói cách khác là bạn không thể trở thành một lập trình viên chuyên nghiệp chỉ trong 24 giờ, 24 ngày, hay 24 tháng. Tôi tin chắc như thế.

    Theo Peter Norvig, Hữu Xuân lược dịch.

    (1) Alexander Pope (1688-1744): ông được xem như là nhà phê bình văn học tân cổ điển nổi tiếng ở Anh.

    (2) Alan Perlis (1922-1990): trưởng khoa đầu tiên của khoa Khoa học Máy tính, Đại học Carnegie. Chủ tịch đầu tiên của ACM. Người đầu tiên đoạt giải thưởng Turing.

    (3) Samuel Johnson (1709 - ?): một trong những họa sĩ người Anh nổi tiếng ở thế kỷ 18.

    Tác giả: trannam136
    Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667 (Office: 04 6329 2380)
    Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó. Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp!

  2. #2
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,750

    Mặc định Phương pháp lập học lập trình hiệu quả.

    Các ngôn ngữ lập trình ra đời và lỗi thời nhanh một cách đáng kinh ngạc trong ngành Khoa học Máy tính. Các ngôn ngữ lập trình mới thường chứa đựng những quy tắc khác nhau làm cho mọi người phải thường xuyên thay đổi cách dùng các công cụ cũng như thói quen lập trình. Nhưng việc học một ngôn ngữ lập trình mới để cung cấp thêm kiến thức cho nghề nghiệp của mình cũng là một nhu cầu chính đáng.

    Trước khi học một ngôn ngữ mới, bạn thường đặt ra câu hỏi: Làm sao để học ngôn ngữ lập trình này được hiệu quả? Có một vài gợi ý nhỏ sau có thể giúp bạn học các ngôn ngữ lập trình dễ dàng hơn:

    1. Nắm vững các kiểu dữ liệu cơ bản mà ngôn ngữ lập trình cung cấp.

    Hầu hết các ngôn ngữ đều cung cấp kiểu số nguyên integer. Bạn phải tìm hiểu thêm thế nào là long integer hoặc short integer? Thế nào là kiểu liệt kê (Enumerated)? Thế nào là kiểu kí tự (Character)? Thế nào là kiểu chuỗi (String)? Ngôn ngữ có hỗ trợ kiểu số thực dấu chấm động hay không, và tầm giá trị của mỗi kiểu dữ liệu là bao nhiêu? Và khi một ngôn ngữ nào đó không hỗ trợ kiểu dữ liệu mà bạn cần dùng thì tốt hơn bạn nên chuyển sang dùng một ngôn ngữ khác.

    2. Nắm vững cấu trúc dữ liệu cơ bản được ngôn ngữ cung cấp.

    Chẳng hạn Pascal có cấu trúc mảng (array), Lisp có thể thao tác rất dễ dàng với cấu trúc danh sách (list), còn Java thì có thể làm việc với các lớp và các giao tiếp.…Và những vấn đề bạn nghĩ trong đầu cuối cùng phải được biểu diễn bằng các kiểu dữ liệu mà ngôn ngữ cung cấp, việc hiểu rõ mối quan hệ giữa chúng là nền tảng để giải quyết các vấn đề.

    3. Ngôn ngữ cung cấp những toán tử dựng sẵn nào?

    Ví dụ: Prolog xem tìm kiếm là một thao tác cơ bản, Snobol xem thao tác đối sánh mẫu trên các chuỗi (string pattern matching) là một toán tử cơ sở, các ngôn ngữ hàm (ML, Haskell) cho phép bạn tạo ra một giá trị mới nhưng không làm thay đổi cấu trúc hiện tại, APL cung cấp toán tử ma trận, … Danh sách các toán tử dựng sẵn của một ngôn ngữ sẽ cho ta biết những vấn đề mà những chuyên gia thiết kế ngôn ngữ đó cho là quan trọng nhất.

    4. Nắm vững loại vấn đề mà ngôn ngữ có thể trợ giúp giải quyết.

    Các ngôn ngữ thường được phát triển vì một lý do nào đó, thường là để giải quyết một loại vấn đề mang tính đặc trưng. Do đó, bạn nên cố gắng nắm rõ những chức năng đặc trưng của ngôn ngữ để giải quyết vấn đề đồng thời cũng nên tìm hiểu tại sao cùng một vấn đề nhưng dùng ngôn ngữ này để giải quyết lại dễ dàng hơn dùng ngôn ngữ khác.

    5. Tìm hiểu những thư viện có sẵn trong ngôn ngữ.

    Các ngôn ngữ thường có các thư viện do nhiều người đã phát triển để giải quyết những vấn đề khác nhau, bạn có thể sử dụng lại để giải quyết một vấn đề mới. Smalltalk có một thư viện đồ sộ với lượng mã luôn sẵn sàng để người lập trình sử dụng. C++ với thư viện chuẩn STL chứa nhiều cấu trúc dữ liệu thường dùng. Java có các thư viện cung cấp các tác vụ về mạng. Bạn hãy cố gắng tìm và sẽ thấy những gì cần thiết sẵn có.

    6. Hãy học hỏi, mô phỏng lại!

    Bắt đầu với việc mô phỏng lại các chương trình hiện có. Phải làm cho chúng có thể hoạt động trên hệ thống của bạn, bởi vì hệ thống mà nó được phát triển có thể không giống với hệ thống của bạn, và khi bạn có thể làm cho nó hoạt động tốt trên hệ thống của mình thì tức là bạn đã hiểu rõ về nó. Học các chương trình để hình dung được các tính năng khác nhau của ngôn ngữ.

    7. Hãy thử nghiệm và rút ra kết luận!

    Khi bạn đã có một vài chương trình có thể chạy tốt, bạn thử nghiệm bằng cách tạo ra một vài thay đổi. Bạn có thể lấy ra một chương trình và sửa lại nó để giải quyết một vấn đề sai khác chút ít so với chương trình ban đầu hay không? Bạn có thể lấy ra một phần nhỏ của chương trình và diễn đạt lại bằng cách khác hay không?

    8. Hiện thực lại các vấn đề đã hiểu rõ bằng một ngôn ngữ mới.

    Lấy một vài chương trình đã được viết trong một ngôn ngữ rồi cố gắng viết lại chúng trong ngôn ngữ mới. Không nên dịch từng câu lệnh sang ngôn ngữ mới mà hãy xem xét những tính năng đặc trưng nào của ngôn ngữ mới có thể dùng để giải quyết vấn đề. Cẩn thận xem xét những vấn đề nào dễ dàng hiện thực trong ngôn ngữ mới và những vấn đề nào khó khăn hơn. (Chương trình truyền thống đầu tiên nên viết là chương trình in ra chuỗi "hello world").

    9. Khi gặp một vấn đề mới thì nên nghĩ về những vấn đề đã biết trước đó có cùng đặc điểm với vấn đề mới. Sau đó hãy bắt đầu thử nghiệm.

    Vẫn còn nữa nhé, sợ dài chẳng ai thèm đọc thoai.
    Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667 (Office: 04 6329 2380)
    Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó. Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp!

  3. #3
    No Avatar
    tuanna Khách

    Người xưa từng dạy "Dục Tốc Bất Đạt", tôi đồng ý với ý kiến cho rằng nếu bạn là một người chưa có khái niệm thế nào là lập trình và software development thì không nên bắt đầu bằng những quyến sách học cấp tốc như vậy. Tuy nhiên cũng không thể cực đoan cho rằng những quyển sách như vậy là không có giá trị riêng của nó. Chúng rất có ích đối với những người lập trình có kinh nghiệm, đã thành thạo ít nhất 2 đến 3 ngôn ngữ thì việc tham khảo những ngôn ngữ khác để sử dụng trong quá trình thiết kế và phát triển phần mềm. Và trong một số trường hợp mà bạn phải nắm bắt nhanh một ngôn ngữ nào đó để hoàn thành công việc trong một thời gian rất ngắn thì ắt hẳn bạn phải tạm thời sử dụng những cuốn sách đó như một quick reference và cố gắng có một cái nhìn tổng quan, cũng như những khía cạnh đặc biệt của ngôn ngữ mới đó.

    Về cơ bản để là một lập trình viên tốt, ngoài năng lực, kỹ năng lập trình, kinh nghiệm, bạn còn cần có cái nhìn rộng và khả năng tư duy thoát ra khỏi phạm vi của một hay nhiều ngôn ngữ mà bạn đang sử dụng để viết phần mềm. Tất nhiên bạn giành nhiều thời gian để đào sâu, khai thác các khía cạnh của 1 ngôn ngữ nhưng cũng không nên bó hẹp hay phụ thuộc vào nó. Bên cạnh đó cũng cần nói thêm là các ngôn ngữ lập trình hiện đại về sau này có rất nhiều điểm tương đồng và làm thuận tiện hơn cho developers, và nếu quan sát kỹ thì phần lớn đều dựa trên những basics từ ngôn ngữ C.

    Điều tôi muốn nhấn mạnh ở đây là "THINKING". Mỗi một ngôn ngữ lập trình đều có những đặc thù, điểm mạnh, điểm yếu, và phạm vi ứng dụng, chúng ta cần biết phân tích tình huống để vận dụng sao cho có hiệu quả.

  4. #4
    Ngày gia nhập
    04 2009
    Nơi ở
    Hà Nội
    Bài viết
    733

    Cái này đọc nhiều trên các bài báo, forum khác rùi!

  5. #5
    Ngày gia nhập
    02 2009
    Bài viết
    75

    Các quyển sách có các tít là "Hoc lập trình trong X ngày " chỉ có thể sử dụng để làm quen ngôn ngữ ,rất nông cạn thấy nó tôi cũng không bao giờ down
    Còn 10 năm hay 20 năm thì ta lấy chuẩn gì để so sánh ? Nếu chỉ để làm được việc kiếm tiền thì 5 năm ĐH là được .Còn không thì việc hoc là cả đời

    chán code, ghét máy tính rồi

  6. #6
    Ngày gia nhập
    05 2009
    Bài viết
    3

    Wink Tản mạn về lập trình

    Nếu thật sự yêu thick lập trình thì việc bỏ ra 10 năm hay la` bỏ ra cả đời để học cũng nên thôi.Nhưng học lập trình không phải dễ,việc ti`m kiếm tài liệu phù hợp để học cũng không phải chuyện đơn giản.Mình rất thick lập trình nhưng tài liệu của mình thì ít quá.Các bạn có thể giới thiệu cho mình một vài tài liệu hay được ko.Thank trước nhen.

  7. #7
    Ngày gia nhập
    06 2009
    Bài viết
    12

    bài viết hay và có giá trị đối với mình, thanks

Các đề tài tương tự

  1. Lương cho một seoer sẻ như thế nào trong năm nay và năm sau
    Gửi bởi vanvuongaa trong diễn đàn Tuyển dụng - Việc làm CNTT
    Trả lời: 0
    Bài viết cuối: 14-03-2013, 11:00 AM
  2. Kỹ thuật C Bài toán nhập số năm xuất tên năm âm lịch, cách làm thế nào?
    Gửi bởi hikaru2838 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 09-12-2012, 09:51 PM
  3. Lập trình C++ Định dạng ngày tháng năm trong C++ như thế nào??
    Gửi bởi leo009394 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 0
    Bài viết cuối: 20-11-2011, 09:52 AM
  4. Làm thế nào để chỉ hiện ngày tháng năm trong drgview?
    Gửi bởi cham3cham trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 2
    Bài viết cuối: 16-06-2011, 05:41 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn