Trang 1 trên tổng số 5 123... Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 42 kết quả

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

  1. #1
    Ngày gia nhập
    01 2007
    Bài viết
    412

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

    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 lập trình 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.

    PHƯƠNG PHÁ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.
    Tin học cho người mới bắt đầu
    Chương trình đầu tiên cần phải học chính là hệ điều hành.
    Nếu đang sử dụng Windows thì học Windows, Linux thì học Linux...
    Hiện nay hầu hết các hệ điều hành đều có giao diện trực quan GUI, cho nên việc học để sử dụng nó đã trở nên rất dễ dàng.
    Tuy nhiên, khi học bạn cũng nên quan tâm đến những điều cốt lõi cần phải nắm bắt đó là :
    -thế nào là một tập tin, thư mục, ổ đĩa - hiểu được rõ ràng chính là bạn đã hiểu được cách hệ điều hành tổ chức dữ liệu như thế nào rồi;
    -làm thế nào để thực hiện các thao tác copy, cắt, dán- đó là các thao tác cơ bản khi bạn thao tác với dữ liệu.
    - Sử dụng được các chương trình đi kèm theo với hệ điều hành. Hiện nay thì hệ điều hành nào cũng "khuyến mãi" các chương trinh như soạn thảo văn bản (WordPad, VI), vẽ, máy tính bỏ túi, trình duyệt Web.


    Chương trình thứ hai là chương trình phục vụ cho nhu cầu sử dụng của bạn.

    Các chương trình quan trọng nhất mà mình đề ngị các bạn nên Master cách sử dụng là Nescape, IE, OE...YM,IRC...Các khái niệm cần nắm bắt là thế nào là một trang Web, địa chỉ trang Web. Làm sao để tìm kiếm một trang Web mà mình cần. Trang Web mà mình thích nhất là www.google.com

    Nếu bạn thường xuyên phải xử lý văn bản thì học cách sử dụng các chương trình Office, Lotus, StarOffice...

    Nếu bạn muốn là lập trình viên thì nên học cách sử dụng các chương trình hỗ trợ lập trình.

    Hiện nay, theo mình các phần mềm đều được thiết kế trực quan, rất dễ sử dụng. Cho nên, dưới góc độ user, mình nghĩ chỉ cần xài nhiều thì biết nhiều, hư nhiều thì cài lại nhiều, càng biết nhiều.

    Chương trình thứ ba, thứ tư,...cũng là chương trình phục vụ cho nhu cầu sử dụng của bạn
    Các câu hỏi thường gặp
    Tôi vừa tốt nghiệp đại học ngành công nghệ thông tin, những bài tập lập trình trong chương trình học đối với tôi không quá khó để hoàn thành, nhưng tôi vẫn e rằng, những khả năng của mình vẫn còn khá "amateur" để tồn tại trong một môi trường làm việc chuyên nghiệp.

    Tôi vẫn còn 5 hay 6 tháng trước khi có một cuộc phỏng vấn với một công ty hàng đầu về tin học, ai đó có thể cho tôi biết những kỹ năng nào cần hoàn thiện trước khi phải đối mặt với những qui luật khắt khe trong công việc?

    ...chân thành cảm ơn.


    Trả lời của một người thuê lập trình viên :

    Trên quan điểm của một người thuê lập trình viên, tôi khuyên bạn nên mang tới buổi phỏng vấn một vài chương trình bạn đã từng viết. Chúng sẽ phần nào phản ánh được khả năng hoàn thành các phần việc được giao đồng thời thể hiện được những hiểu biết về lý thuyết chẳng hạn như: mô hình phát triển 3 tầng (3 - tier), các kỹ thuật lập trình hướng đối tượng …

    Trả lời của một lập trình viên :

    Đây là một vấn đề trăn trở từ khi tôi còn là một tân lập trình viên như bạn.
    Ngoài việc học các kỹ năng về công nghệ, một kỹ năng vô giá nhưng ít được nói tới là cách trở thành một người lĩnh hội nhanh. Đây là một vấn đề không thuộc về phạm trù kỹ thuật, là kỹ năng cơ bản nhưng lại thiếu ở nhiều người. Ngày nay, các công ty hầu như không đưa ra các khóa tu nghiệp đầy đủ nữa, thay vì vậy lại muốn bạn có được khả năng đào sâu những vấn đề quan trọng. Nói thẳng ra, họ không giúp bạn được nhiều. Vì vậy, tôi xin giới thiệu một vài kinh nghiệm rút ra được trong quá trình làm việc và học tập:
    1. Trước tiên, phải tìm hiểu hệ thống mạng của công ty để biết được tài nguyên có sẵn mà cụ thể hơn là mã chương trình. Từ nguồn mã này, bạn có thể biết được cách làm việc của mọi người trong công ty. Lưu giữ cho riêng mình các đoạn mã chẳng hạn như các template có thể sẽ giúp đỡ bạn rất nhiều trong việc nắm bắt các khúc mắc gặp phải.
    2. Dành thời gian để nghiên cứu về cách thức hoạt động và lý do vì sao lại hoạt động như vậy của các đoạn mã mà những người trong công ty viết ra để nắm bắt được vấn đề một cách sâu sắc. Điều này cũng giúp bạn có được khả năng "cảm giác" những công việc sẽ phải thực hiện.
    3. Không ngừng rèn luyện kỹ năng gõ phím của mình. Khả năng cảm giác vị trí phím nhanh có thể giúp bạn tăng năng suất công việc.
    4. Rèn luyện khả năng đọc và nắm bắt vấn đề nhanh. Rõ ràng, đây là một vấn đề không phải dễ gặm. Thử ghé thăm các trang web phục vụ học tập đặc biệt là các trang về rèn luyện kỹ năng trí tuệ, chẳng hạn như brain.com. Trên các trang này sẽ có nhiều sản phẩm phục vụ việc phát triển nhanh chóng các kỹ năng về trí tuệ.

    Những gợi ý trên bao gồm nhiều kỹ năng cơ bản mà bạn phải tốn thời gian để có được, nhưng những lợi ích đem lại chắc sẽ làm bạn ngạc nhiên, vậy hãy bắt đầu ngay bây giờ.

    Kiến thức nền tảng là quan trọng để đưa bạn tới cánh cửa của công việc. Tuy nhiên, bạn sẽ sớm nhận thấy rằng hầu hết các công ty đều quan tâm nhiều tới khả năng nắm bắt được cách thức làm việc của họ. Nói cách khác là họ quan tâm đến khả năng thích nghi với công việc cũng như các công nghệ mới hơn là kiến thức mà bạn mang theo trong người. Tóm lại, họ muốn tìm người có thể giúp họ thành công và khi gặp một ai đó có khả năng lĩnh hội tốt, họ sẽ bị thuyết phục ngay.

    Trả lời của một lập trình viên :

    Đừng quá lo lắng về những kỹ năng mà bạn có. Bạn đã là một người lập trình tốt trong thời gian theo học đại học, vì vậy chỉ cần có sự tự tin thì bạn sẽ hoàn thành tốt mọi thứ trong một môi trường chuyên nghiệp. Họ cũng sẽ sử dụng những kỹ năng mà bạn đã biết. Không có gì mới mẻ hay bí mật cả, họ chỉ muốn biết cách bạn hoàn thành đúng công việc. Không có ai có thể nắm bắt mà không cần kinh nghiệm, vì vậy trong thời gian trước khi phỏng vấn, bạn nên thực hiện một vài dự án để có thể đổi mới một vài quan điểm nhằm mang lại một ít kinh nghiệm trong công việc.

    Trả lời của giám đốc công ty Reliable Software:

    Tôi hy vọng sẽ giúp bạn với các thói quen lập trình tốt mà tôi đã đúc kết được qua nhiều dự án đã làm ở Microsoft cũng như ở công ty tôi - Reliable Software:

    1. Bắt đầu với thiết kế tốt. Thường xuyên cập nhật tài liệu thiết kế. Tạo thêm các tài liệu thiết kế trước khi thêm vào những đặc điểm hay tính năng mới.
    2. Chương trình đang phát triển phải luôn luôn thể hiện được chức năng của nó. Quá trình phát triển là quá trình thêm các tính năng mới mà không phá vỡ các chức năng đã tồn tại.
    3. Công việc phải được chia thành các bước nhỏ. Trong đó, việc viết code cho mỗi bước có khả năng hoàn thành trong một ngày làm việc. Mỗi phạm vi công việc lớn hơn cũng nên phân chia và làm từng bước.
    4. Mỗi một dòng lệnh cần phải được xem xét và chỉnh sửa liên tục. Mỗi nhóm lập trình nhỏ nhất là 2 người để có thể trao đổi và xem xét code lẫn nhau. Vì vậy bạn hãy tập làm việc theo nhóm.

    5. Luôn cố gắng làm việc theo phong cách top-down:
    + Phân tích: bắt đầu với những đối tượng cấp trên cùng.
    + Hiện thực: tạo đối tượng cấp trên sử dụng các stub (chỉ có interface mà không hiện thực).
    + Chỉnh sửa: thay đổi các đối tượng ở cấp độ cao trước. Nếu cần sử dụng các stub hoặc các hàm cũ.

    Sưu tầm

  2. #2
    Ngày gia nhập
    01 2007
    Bài viết
    412

    Mặc định Nên bắt đầu từ c hay c++ ?

    NÊN BẮT ĐẦU TỪ C HAY C++ ?

    Hiện nay trên thế giới có hàng trăm ngôn ngữ lập trình, có hàng chục ngôn ngữ phổ biến, mỗi một quý lại có thêm vài ngôn ngữ mới ra đời - gần đây nhất là C# với môi trường .NET Framework. Tuy nhiên, C và C++ vẫn là các ngôn ngữ của học sinh, sinh viên, những người bắt đầu bước vào nghề lập trình. Những vấn đề mà tôi đề cập ở đây được trích lược từ những sách lập trình C++ như: Tự học lập trình trong 21 ngày (Teach Yourself In 21 Days), Bắt đầu phân tích và thiết kế hướng đối tượng với C++ (Beginning Object - Oriented Analysis and Design with C++) …

    Hy vọng những gì tôi trình bày ở đây đem lại hứng thú cho rộng rãi giới lập trình viên C++ chứ không chỉ dành cho những người mới bắt đầu. Những gì tôi muốn là cung cấp cho các bạn nội dung cơ bản và những khó khăn của ngôn ngữ.
    Bây giờ, chúng ta bắt đầu xem xét C++ như là một ngôn ngữ lập trình hướng đối tượng. Một câu hỏi mà đa số các người muốn học lập trình C++ là: "Tôi có nên học C trước khi học C++ hay không?Liệu chúng ta có thể xem C++ là C kèm với các lớp hoặc C++ là phiên bản hướng đối tượng của C hay không?". Câu hỏi này giúp tôi nhận ra rằng cần phải tìm sự khác nhau giữa hai ngôn ngữ này.

    Về cú pháp, tập hợp lệnh của C++ là một tập rộng hơn của C. Điều này có nghĩa là việc biên dịch một chương trình C bởi trình biên dịch C++ vẫn tốt đẹp nhưng ngược lại thì không.

    Về ngữ nghĩa, giữa hai ngôn ngữ này có sự khác biệt rất lớn. Ngữ nghĩa của một ngôn ngữ bảo cho bạn biết ngôn ngữ được sử dụng như thế nào, bạn phải mô tả những gì cho ý tưởng của bạn bằng ngôn ngữ. Về phương diện này, có một bước nhảy khá xa giữa C++ và C. Có thể minh họa sự khác biệt về vấn đề cú pháp và ngữ nghĩa của C++ và C như sau:

    Giả sử bạn là một nhà khoa học người Anh vào năm 1600. Bạn nhận được hai quyển sách khoa học. Một quyển được viết tại Việt Nam vào năm 1600. Một quyển khác được viết tại Anh vào năm 1997 và được gửi ngược về quá khứ cho bạn. Đối với quyển thứ nhất, bạn sẽ thấy những ký tự thật buồn cười và phải tốn một thời gian dài bạn mới hiểu được cú pháp của nó. Nhưng một khi bạn đã học được tiếng Việt Nam thì những ký tự này không còn làm bạn ngạc nhiên nữa. Còn quyển sách thứ hai rất giống những ký tự bằng tiếng Anh mà bạn biết nhưng nó lại mang một ý nghĩa lạ lùng.

    " Điểm khác nhau cơ bản về mặt ngữ nghĩa là: C là ngôn ngữ lập trình thủ tục còn C++ là ngôn ngữ lập trình hướng đối tượng. Bạn có thể viết chương trình hướng đối tượng trong C, Pascal, thậm chí bằng Assembler. Tuy nhiên, bạn nên biết một điều là những ngôn ngữ này không được thiết kế cho lập trình hướng đối tượng như C++.
    Đối với lập trình thủ tục, những gì ta nghĩ về chương trình gồm có một loạt các chức năng và cấu trúc dữ liệu. Những chức năng này sẽ tác động lên cấu trúc dữ liệu, điều tác chúng và cuối cùng là xuất thông tin kết quả. Họ ngôn ngữ lập trình thủ tục như C, Pascal được xây dựng để hỗ trợ cho kỹ thuật lập trình cấu trúc. Trong đó một vấn đề sẽ được phân rã thành những chương trình nhỏ hơn có thể giải quyết được.

    Để cảm nhận được cách tiếp cận của lập trình thủ tục, tôi lấy một ví dụ là việc cập nhật lương cho nhân viên của một tổ chức. Bạn có thể tạo ra một thủ tục có tên là GiveARaise và truyền cấu trúc Employee cho thủ tục này. Trong C, mã lệnh viết cho tác vụ này như sau:

    C Code:
    1. #include <stdio.h>
    2. struct Employee
    3. {
    4.     int salary;
    5.     int level;
    6. };
    7. void GiveARaise (struct Employee * pEmployee, double pctg);
    8. void InitializeEmployee (struct Employee *pEmp) ;
    9. int main()
    10. {
    11.     struct Employee Emp;
    12.     InitializeEmployee(&Emp);
    13.     Emp.salary = 50 000;
    14.     Emp.level =3;
    15.     Printf("Emp''s salary : %d\n",Emp.salary);
    16.     GiveARaise(&Emp,.23);
    17.     Printf("Emp''s salary : %d\n",Emp.salary);
    18.     Return 0;
    19. }
    20.  
    21. void GiveARaise (struct Employee * pEmployee, double pctg)
    22. {
    23.     int increment = (int)(pEmployee ->salary*pctg);
    24.     printf("Incrementing Employee''s salary by %d\n",
    25.         increment);
    26.     pEmployee->salary+=increment;
    27. }
    28.  
    29. void InitializeEmployee(struct Employee *pEmp)
    30. {
    31.     pEmp->salary=50 000;
    32.     pEmp->level=3;
    33.     printf("Initializing Employee with salary :%d\n",
    34.         pEmp->salary);
    35. }

    Khi biên dịch và chạy đoạn chương trình trên, kết quả xuất hiện trên màn hình là:

    Output Code:
    1. Initializing Employee with salary: 50000
    2. Emp''s salary: 50000
    3. Incrementing Employee''s salary by 11500
    4. Emp''s salary: 61500

    Đoạn chương trình C đơn giản trên minh hoạ một số vấn đề mà người lập trình thủ tục phải đối mặt. Chúng ta sẽ đi lướt qua những vấn đề đó.

    Trong chương trình trên có sử dụng một cấu trúc dữ liệu đơn giản là Emplyee. Cấu trúc này chỉ có những thuộc tính đó là lương hiện tại (salary) của nhân viên và bậc lương (level) của anh ta. Bạn có thể tưởng tượng rằng khi chương trình được phát triển lớn hơn, ta có thể thêm vào những thuộc tính khác như số năm làm việc, số điện thoại, địa chỉ, tên nhân viên, số bảo hiểm xã hội …

    Trong đoạn chương trình này có hai hàm được định nghĩa. Một hàm làm công việc khởi tạo các thuộc tính trong cấu trúc Emplyee. Hàm thứ hai xác định mức tăng lương của một nhân viên cụ thể. Đây chỉ là chương trình minh hoạ nên nó rất đơn giản. Trong các chương trình thực tế có thể tạo ra những giao diện đồ hoạ để việc trao đổi thông tin với người dùng thân thiện hơn và hấp dẫn hơn.

    Rõ ràng là một khi bạn muốn thêm vào những thuộc tính mới cho lớp Employee hoặc nếu bạn muốn thay đổi các thuộc tính đã có, ví dụ đổi mức lương từ số nguyên sang số thực, bạn phải thay đổi tất cả những hàm này.

    Như vậy, một khi chương trình phát triển đến một độ phức tạp nào đó, việc quản lý các thủ tục của chương trình trở nên khó khăn hơn. Bạn cần quản lý một lượng lớn dữ liệu và cũng không có cơ chế kế thừa nên phần lớn các chương trình lập trình theo thủ tục phải làm mới gần như toàn bộ. Những gì mà bạn có thể thừa hưởng từ những chương trình trước đó chỉ là cắt và dán những đoạn mã nào đó.
    Thế lập trình hướng đối tượng cung cấp cho lập trình viên những khả năng gì?
    Ngôn ngữ lập trình hướng đối tượng đã xây dựng một mối liên kết khắng khít giữa cấu trúc dữ liệu và những phương thức điều tác chúng. Điều quan trọng là khi tiếp cận với lập trình hướng đối tượng những gì bạn phải nghĩ đến không còn là cấu trúc dữ liệu và các hàm điều tác. Thay vào đó bạn phải luôn nghĩ đến cái gọi là "đối tượng" (object).

    Hầu hết mọi người khi nhìn vào một chiếc xe hơi, họ không nghĩ về những thông tin mà nó có và làm cách nào để điều quản những thông tin ấy. Họ nghĩ về các bánh xe, bộ truyền động, hộp số… Họ nghĩ về cách cho xe chạy, dừng lại, tăng tốc… Họ nghĩ về đường đi, cảnh sát công lộ và những vé phạt quá tốc độ… Nói ngắn gọn là hầu hết mọi người nghĩ đến những sự vật (things) và những sự vật đó làm những gì. Thực tế, đây là cách mà loài người nghĩ về mọi thứ. Quá trình tiến hoá hàng chục triệu năm đã dạy chúng ta cách nhìn về một thế giới như được lắp đầy bởi những sự vật. Một vài trong số những sự vật đó chúng ta có thể ăn, một số khác lại ăn chúng ta…

    Một cách lý tưởng, phần mềm của chúng ta được mô hình hóa rất giống với thế giới thực. Nhìn theo góc độ này, những chương trình của chúng ta trở nên dễ hiểu hơn và dễ bảo trì hơn. Những đối tượng trong thế giới thực có những đặc tính và những hành vi riêng, đối tượng trong chương trình cũng vậy.

    Bây giờ chúng ta xem những khác biệt trong ngôn ngữ lập trình hướng đối tượng mà cụ thể là C++. Hãy xem đoạn mã sau:

    C++ Code:
    1. #include <iostream.h>
    2. class Employee
    3. {
    4. public:
    5.     Employee(int salary, int level);
    6.     ~Employee(){}
    7.  
    8.     void GiveARaise(double pctg);
    9.     int GetSalary() const {return mSalary;}
    10. private:
    11.     int mSalary;
    12.     int mLevel;
    13. };
    14. Employee::Employee(int salary, int
    15.     level):mSalary(salary),mLevel(level)
    16. {
    17.     cout<<"Initializing Employee with salary :"<<mSalary<<endl;
    18. }
    19. void Employee::GiveARaise(double pctg)
    20. {
    21.     int increment = int(mSalary*pctg);
    22.     cout<<"Incrementing salary by "<<increment<<endl;
    23.     mSalary+=increment;
    24. }
    25. int main()
    26. {
    27.     Employee Emp(50000,3);
    28.     Cout<<"Emp''s salary :"<<Emp.GetSalary()<<endl;
    29. }

    Trong chương trình trên chúng ta khai báo một lớp (class) có tên là Employee. Một lớp chẳng qua là một kiểu dữ liệu mở rộng. Chúng ta bắt đầu với những kiểu dữ liệu xây dựng sẵn trong C như kiểu int, double, float … nhưng bây giờ chúng ta thêm vào một danh sách bằng cách tạo ra một kiểu dữ liệu mới và sau đó khai báo biến sử dụng kiểu dữ liệu mới này.

    Một kiểu dữ liệu có thể có những hành vi (behavior) và những thuộc tính (atribute). Hành vi được thể hiện bởi những phương thức (method) trong lớp, còn những thuộc tính được đại diện bởi các biến thành viên của lớp. Trong lớp Employee ở trên có 2 biến thành viên: mSalary và mLevel; 4 phương thức: hàm dựng (contructor), hàm hủy (destructor), hàm truy cập (accessor) GetSalary và GiveARaise.

    Hàm dựng dùng để khởi tạo các biến khi đối tượng được tạo ra. Trong ví dụ của chúng ta, hàm dựng làm tác vụ khởi tạo giá trị cho hai biến là mSalary và mLevel.

    Hàm hủy được dùng khi huỷ đối tượng và có tác dụng giải phóng tài nguyên như bộ nhớ mà đối tượng được cấp phát. Trong ví dụ này, hàm hủy không làm gì cả.

    GetSalary chỉ làm công việc trả về giá trị của mSalary.

    GetARaise là hàm thành viên của Employee và nó truy xuất được đến biến cục bộ mSalary. Hàm này được dùng khi bạn muốn tăng lương cho nhân viên.

    " Sử dụng đối tượng Employee như thế nào ?
    Một "khách hàng" (client) của một lớp là bất kỳ đối tượng hay một hàm có gọi đến các phương thức của lớp. Trong trường hợp của chúng ta, hàm main() có gọi đến các phương thức của lớp Employee nên có thể xem hàm main() là một khách hàng của lớp này. Trong hàm main(), chúng ta tạo ra một thể hiện (instance) của lớp Employee.

    Chúng ta xem lại những phân biệt giữa một lớp Employee và một đối tượng Employee cụ thể (giả sử đó là Fred, nhân viên của phòng tiếp thị). Lớp Employee là tổng quát cho tất cả nhân viên, những thuộc tính mà lớp Employee có là gì và hành xử của nó như thế nào? Employee được thể hiện trong C++ là một lớp. Đối với nhân viên cụ thể (Fred chẳng hạn) là một thể hiện của lớp và được đại diện trong C++ bởi một đối tượng.

    " Tại sao lại phải phiền phức đến thế ?
    Bạn đã điều tác được cấu trúc Employee bằng những hàm trong C, vậy tại sao lại phải học những thứ phiền toái chỉ để phục vụ cho cùng một công việc ?
    Một lợi điểm của hướng đối tượng là tạo ra những đối tượng có biên chặt chẽ hơn. Mọi thứ mà chúng ta biết và mọi thứ mà chúng ta làm được bó lại với nhau thành một gói gọn gàng. Ý tưởng này được gọi là bao đóng (encapsulation). Bằng cách bao đóng những phương thức và biến vào trong một thực thể đơn, chúng ta giảm được ức chế tâm lý cho lập trình viên. Những nhà phát triển hướng đối tượng chia giới lập trình hướng đối tượng thành hai loại: nhà cung cấp và khách hàng. Nhà cung cấp chuyên viết các lớp và làm cho nó chạy. Khách hàng kết hợp các thể hiện của những lớp này cho chúng làm việc với nhau.
    Trở lại chương trình trên, giới khách hàng không cần biết lương của nhân viên được lưu trữ như thế nào trong lớp Employee. Tất cả những gì mà họ quan tâm là làm sao để có thể lấy được thông tin lương của một nhân viên cụ thể từ lớp Employee, làm sao để cho nhân viên tăng lương (bằng cách gọi phương thức GiveARaise).

    Những phương thức này là một phần trong các giao tiếp (interface) của lớp Employee. Giao tiếp báo cho khách hàng biết những gì mà lớp có thể làm. Họ không thể biết được liệu thông tin lương của nhân viện có được lưu xuống cơ sở dữ liệu hay không, hay chỉ được lưu trong biến thành viên… Tất cả những chức năng bên trong đều không thể thấy được bởi các khách hàng. Khả năng này được gọi là che dấu dữ liệu (data hiding), nó là kết quả của sự bao đóng.

    Ngoài ra, hướng đối tượng còn cung cấp hai lợi điểm rất lớn. Thứ nhất, khách hàng có thể lờ đi những chi tiết bên trong mà lo tập trung vào những thứ khác. Thứ hai, nó cho phép nhà cung cấp có thể thay đổi cách thức làm việc bên trong mà không làm đổ vỡ chương trình của khách hàng. Điều này cho phép phía nhà cung cấp có thể làm cho những lớp của anh ta ngày càng tốt hơn và hiệu quả hơn mà không buộc phía khách hàng phải viết lại mã lệnh.
    Bây giờ chúng ta nói một ít về cách học C++ như thế nào?
    Đừng cố học C++ như những ngôn ngữ khác. Hãy học những ưu điểm mà nó mang lại. Đừng bao giờ học theo kiểu: "À, một class chỉ là một structs và thêm vào một số hàm". Đúng ra là một class là một type mà nó định nghĩa những thuộc tính và hành vi của một thứ gì đó. Điểm mạnh của C++ là hỗ trợ lập trình hướng đối tượng . Do vậy bạn hãy bắt đầu từ điểm xuất phát này.

    Trở lại với câu hỏi nên bắt đầu với C hay C++ trước ?

    Đây là một quyết định nhạy cảm. Dù thế nào đi nữa thì bạn vẫn phải học C. Một là học C như là bước đệm để học các ngôn ngữ khác hay cụ thể hơn là C++, hai là bạn có thể học C khi học các kỹ thuật C++. Theo ý tôi, bạn nên học các khái niệm cơ bản của C trước khi bắt đầu với C++. Tôi cảm thấy nếu ngay từ đầu bạn cố gắng bắt đầu với C++, một ngôn ngữ hướng đối tượng, bạn sẽ mất đi những kỹ năng cần thiết phải có đối với một nhà lập trình.

    Các trình biên dịch của Borland, và một vài cuốn sách dường như không phân biệt giữa C và C++. Thay vì vậy, họ lại phân biệt giữa ngôn ngữ cấu trúc và ngôn ngữ hướng đối tượng. Học C++ như một ngôn ngữ cấu trúc với các mở rộng C++ được kết hợp trong C sẽ giúp cho người học nắm bắt C dễ dàng khi học C++. Thường trong các buổi nói chuyện và thảo luận, tôi thường xem C như là ngôn ngữ cấu trúc và C++ là ngôn ngữ hướng đối tượng.

    Khi viết một quyển sách về lập trình, các tác giả phải có một chọn lựa rõ ràng giữa C và C++. Họ không thể trình bày cả hai một cách tường tận trong khuôn khổ của một quyển sách mà không làm cho người đọc nhàm chán vì sự không rõ ràng giữa hai ngôn ngữ. Thông thường, một cuốn sách dạy C++ (OOP) sẽ không thể đào sâu những kỹ năng lập trình thuần tuý tạo nên sự mạnh mẽ trong lập trình C. Những cuốn sách C++ cho người mới bắt đầu thường đề cập tới những vấn đề một cách rời rạc và sơ sài. Tạo cho người đọc một sự hiểu biết thiếu tính toàn diện.

    Khi khởi đầu với các cuốn sách về C, bạn sẽ tiếp cận vấn đề một cách khá chi tiết và có được những bước tiến dễ dàng trên một nền tảng kiến thức cơ bản. Tuy nhiên, những cuốn sách này lại đề cập quá nhiều những vấn đề định dạng xuất nhập. Những vấn đề này thực sự hữu dụng trong C và giúp cho người đọc hài lòng với một công việc khó khăn, nhưng đó chỉ là một phần rất nhỏ đối với một ngôn ngữ. Với C++, bạn sử dụng một phương thức xuất nhập hoàn toàn khác. Các kỹ năng về định dạng xuất nhập trong C không phải là quá lãng phí, nhưng nó không phải là cực kỳ hữu dụng. Nắm bắt tốt những kỹ thuật định dạng trong C sẽ rất thuận lợi khi lắp ghép hay duy trì những đoạn code cũ.

    Tôi nghĩ, nếu muốn trở thành một nhà lập trình viên chuyên nghiệp, và hiểu được cách viết những đoạn code một cách hiệu quả bạn nên bắt đầu với C. Nếu bạn có sở thích, và đang tìm một con đường học lập trình nhanh chóng, và sẽ quay trở lại những vấn đề cần thiết, bạn có thể bắt đầu với C++.

  3. #3
    Ngày gia nhập
    11 2006
    Bài viết
    633

    Nhiếu ý kiến về việc này lắm, cãi hoài cũng ko xong. Theo tui thì mấy cuốn sách dạy 1 NNLT trong vài ngày cũng có phần đúng. Tức là mình học lập trình với 1 ngôn ngữ trừu tượng, tự mình tưởng tượng ra là như thế nào, viết ra làm sao, cái này học khó hơn so với 1 ngôn ngữ cụ thể nhưng nếu nắm bắt được thì cầm trong tay ngôn ngữ nào cũng làm được. Sau khi hiểu được ngôn ngữ trừu tượng thì bạn đi vào 1 NNLT cụ thể, hiểu được syntax của nó và giải quyết vấn đề. Kiểu học này học cả đời cũng ko hết.

  4. #4
    Ngày gia nhập
    01 2007
    Bài viết
    412

    Học, học nữa....hộc máu
    "Học lập trình là phải biết xông pha" --> có lẽ đúng với bạn huynguyen ấy nhỉ. Xem ra neverland còn kém quá, năm mới sắp đến rối, phải CỐ GẮNG thôi! Yeah!

  5. #5
    Ngày gia nhập
    11 2006
    Bài viết
    633

    Hihi, trong ngành CS (hay còn gọi là IT) thì ko có ai gọi là kém quá, cũng ko có ai gọi là pro quá cả. Hơn thua nhau là ở chỗ đọc nhiều và biết vận dụng tát cả những điều mình đã đọc thôi.

  6. #6
    Ngày gia nhập
    09 2006
    Nơi ở
    /usr/share/.hack@
    Bài viết
    1,433

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

    Miễn sao có vợ, một nghề nghiệp lương khá, ổn định là được , không cần giỏi -> pete đơn giản vậy thôi ^.^!
    None!

  7. #7
    Ngày gia nhập
    01 2007
    Bài viết
    412

    Trích dẫn Nguyên bản được gửi bởi pete_87 Xem bài viết
    Miễn sao có vợ, một nghề nghiệp lương khá, ổn định là được , không cần giỏi -> pete đơn giản vậy thôi ^.^!
    he he,neverland cũng cầu điều này á, có điều lập trình là 1 niềm đam mê, 1 lẽ sống, nên nếu vừa có được vợ vừa có được sống theo lẽ sống của mình thì...tốt quá rồi

    Java is the Brother of C but has no Son : A Poor Man ---> neverland nhớ là trong bộ visual studio 2005 có thằng Visual J (hổng biết thằng này có phải là son of Java không nhỉ)

  8. #8
    Ngày gia nhập
    10 2006
    Nơi ở
    In Your Bugs
    Bài viết
    823

    Theo thiển ý của kid thì ngôn ngữ lập trình nào cũng được , miễn là U học cho thành thạo , đào sâu nghiên cứu thì các ngôn ngữ khác cũng sẽ dễ dàng tiếp cận thôi , kid có nghiên cứu 1 ít về java rồi php nhưng cuối cùng lại đến với C thì nhận ra điều ấy , có lẽ nên học thật giỏi 1 thằng rồi trên cơ sở đó chuyển qua các thằng khác mà mình hay công viêc của mình đòi hỏi . Nếu ai đó nói rằng C kô mạnh thì window 95 viết bằng chi ?
    Bản thân ngôn ngữ đó không mạnh mà vấn đề là do chỗ xử lí của người lập trình mà thôi !

  9. #9
    Ngày gia nhập
    01 2007
    Bài viết
    412

    Trích dẫn Nguyên bản được gửi bởi kidkid Xem bài viết
    Theo thiển ý của kid thì ngôn ngữ lập trình nào cũng được , miễn là U học cho thành thạo , đào sâu nghiên cứu thì các ngôn ngữ khác cũng sẽ dễ dàng tiếp cận thôi , kid có nghiên cứu 1 ít về java rồi php nhưng cuối cùng lại đến với C thì nhận ra điều ấy , có lẽ nên học thật giỏi 1 thằng rồi trên cơ sở đó chuyển qua các thằng khác mà mình hay công viêc của mình đòi hỏi . Nếu ai đó nói rằng C kô mạnh thì window 95 viết bằng chi ?
    Bản thân ngôn ngữ đó không mạnh mà vấn đề là do chỗ xử lí của người lập trình mà thôi !
    Bởi vậy mới có phát biểu nổi tiếng "cấu trúc dữ liệu + giải thuật = chương trình". neverland cũng đã từng học qua chút ít về VB,C,C++ nhưng rốt cuộc tìm thấy niềm vui nơi anh chàng C# cực cool. Việc đào sâu nghiên cứu 1 ngôn ngữ là 1 hướng đi đúng. Mình hiện đang học ĐH, và thấy có nhiều bất cập trong việc dạy lập trình lắm, này nhé: năm đầu học Pascal,C, năm hai sang hợp ngữ, năm 3 qua VC,VB, năm 4 thì đến Java. Mà học ngôn ngữ sau có đào sâu hơn được gì đâu, cứ học đến thao tác trên mảng là coi như xong!!! Tại sao họ không cho SV học 1 ngôn ngữ lập trình duy nhất trong suốt các năm ĐH nhỉ, như thế sẽ tốt hơn, tránh tình trạng "ngôn ngữ nào cũng biết mà chẳng viết được cái gì"

  10. #10
    Ngày gia nhập
    10 2006
    Nơi ở
    In Your Bugs
    Bài viết
    823

    Ở trường kid ( ĐH DL Ngoại Ngữ Tin Học ) thì không dạy về Pascal , các môn khác thì đều có riêng môn C được học sâu hơn 1 tí . Tùy theo mỗi học sinh mà cảm nhận về thầy giáo thế nào , riêng với mình và 1 người bạn nữa thì thầy dạy rất tuyệt , tận tâm và luôn đưa ra nhiều đề tài và hướng dẫn tụi mình làm ví dụ như game caro , tetris đó . Vì thế mà kid có được ngày hôm nay . Vì kid chỉ biết đến C cách đây là tháng 10 thôi !

    Rồi có 1 khoảng thời gian bỏ C đi học lung tung xèng khác nữa .

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. Máy Photocopy Ricoh 2018D thanh lý giá: 11,5 triệu_Bảo hành 1 năm _ bảo trì miễn phí 5 năm tận nơi sử dụng
    Gửi bởi thuongfoto01 trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 1
    Bài viết cuối: 28-02-2012, 10:34 AM
  3. Nhập năm và in số ngày trong năm đó
    Gửi bởi phanvanngoc trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 10-07-2010, 10:48 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