Showing posts with label Thảo luận. Show all posts
Showing posts with label Thảo luận. Show all posts

Wednesday, December 30, 2009

Tôi học ngành công nghiệp, nhưng mở công ty về du lịch

Chào Quý bạn đọc,

Tôi tìm thấy ở đây một sự tương đồng giữa các bạn trẻ.

Đầu tiên chúng ta phải có ước mơ, hoài bão cho riêng mình, chúng ta phải có trí tuệ, bản lĩnh, làm việc chăm chỉ và đam mê công việc mình đã lựa chọn. Và tất nhiên trên đường thành công không thể thiếu yếu tố may mắn:

ước mơ + trí tuệ + bản lĩnh + may mắn = thành công. (các chỉ số luôn đồng hành và tỉ lệ thuận với nhau ).

Tôi tốt nghiệp cao đẳng ngành Công Nghiệp nhưng hiện tại đang làm việc trong lĩnh vực dịch vụ du lịch. Ngay từ hồi niên thiếu tôi đã luôn ước mơ được làm việc trong ngành du lịch và thực sự ngay trong những năm ngồi trên ghế giảng đường tôi đã biết cách làm sao có thể kiếm tiền, xây dựng và phát triển một công ty du lịch.

Trong khi các bạn cùng khoá luôn chú tâm học các môn chính thì tôi lại đi theo một hướng hoàn toàn ngược lại, tôi chỉ nghiên cứu về tin học, tìm hiểu công nghệ Internet, nâng cao khả năng ngoại ngữ, đọc và nghiên cứu các lại sách, tài liệu về kinh doanh, quản lý, học kĩ năng đàm phán, giao tiếp và ứng xử trong kinh doanh....

Và hậu quả là tôi chỉ ra trường với tấm bằng trung bình với các điểm số cực kỳ kém nhưng thành quả lại rất lớn, ảnh hưởng tích cực đến sự thành công của tôi sau này.

Ra trường được hơn 1 tháng, tôi xin vào làm tại một công ty du lịch tư nhân, trải qua 1,5 năm với nhiều vị trí, chức vụ trong công ty, cuối năm 2002 tôi quyết định ra ngoài lập nghiệp ( vào thời đó tôi cho rằng mình đã đủ lông, đủ cánh và luôn tin rằng với đường lối kinh doanh mà mình đã vạch ra, tôi sẽ thành công.).

Các bạn ạ, tôi đã thành công trong việc thuyết phục được 3 anh chị em khác, những người có chuyên môn rất tốt cùng hợp tác xây dựng công ty mới, mỗi thành viên chỉ đóng 10 triệu VNĐ, thuê 1 văn phòng nhỏ tại 1 con phố nhỏ với vẻn vẹn 1 chiếc máy tính, 2 chiếc điện thoại bàn, 1 máy in và 1 máy fax. Chúng tôi cũng tự thiết kế logo, slogan, tên công ty, điều lệ hoạt động và chiến lược kinh doanh.....

Như các bạn đã biết, 1 công ty mới thành lập luôn gặp khó khăn như thế nào trên thương trường. Trải qua hơn 1 năm đầy sóng gió, với sự hạn chế về vốn (trong ngành du lịch việc quảng cáo, quảng bá và thiết lập các mối quan hệ luôn rất quan trong), sự cạnh tranh quyết liệt từ rất nhiều các công ty lớn nhỏ... Chúng tôi thực sự gặp quá nhiều khó khăn, rất ít khách hàng, tiền vốn dần cạn kiệt, nhiều tháng chúng tôi không có lương...

Các bạn biết không, bản thân tôi một chàng trai tỉnh lẻ cách Hà Nội 60 km, bố mẹ đều là cán bộ CVN, đã rất rất nhiều lần phải ăn mì tôm cầm hơi, ngủ dưới nền đất, tắm nước lạnh giữa mùa đông, không có nổi 1.000 VNĐ để ăn sáng, nhiều đêm thức trắng và khóc cho sự nghèo khổ của mình.... Nản chí 2 người trong số 4 cổ đông đã ra đi tìm công việc khác, chỉ còn lại tôi và 1 anh nữa ở lại với số dư tài khoản là 7 triệu VNĐ.

Làm thế nào bây giờ ? tôi chỉ sợ rằng sẽ chỉ còn lại một mình tôi với 1 công ty đang bị suy dinh dưỡng trầm trọng. May thay, anh bạn kia cũng cùng chí hướng như tôi "to be or not to be". Anh lên làm GĐ còn tôi làm GĐKD (công ty không có nhân viên).

Thực tế, vào thời điểm đó, hơn lúc nào hết tôi có niềm tin mãnh liệt rằng mình đang đi đúng hướng, chiến lược và đường lối kinh doanh của mình đang áp dụng sắp cho trái ngọt, và quả đúng như vậy, chúng tôi vẫn nỗ lực làm việc với hơn 100% sức lực có thể, 3 tháng sau chúng tôi ký được hợp đồng với 02 công ty liên doanh tương đối lớn tại Hà Nội và 2 tháng sau nữa đã có được đoàn khách nước ngoài đầu tiên đến từ Singapore.

Sau 2 năm kinh doanh, ngày càng nhiều các hãng lữ hành trên Thế Giới đặt vấn đề hợp tác với chúng tôi, ngày càng nhiều hợp đồng được kí, danh sách đối tác ngày càng dài, các đối tác cung cấp dịch vụ trong nước như khách sạn, nhà hàng, vận chuyển...cũng đã biết đến chúng tôi. Chúng tôi tuyển nhân viên, thậm chí là cả nhân viên người nước ngoài, mở rộng chi nhánh trong nước và Đông Dương, chuyển đến văn phòng mới khang trang hơn, trình độ quản lý của được nâng cao...

Đến nay hai anh em chúng tôi đã có gia đình riêng, rất hạnh phúc và cũng đã tạm được gọi là thành đạt. Công ty đã có đủ lực để cạnh tranh sòng phẳng, tồn tại và phát triển trong lĩnh vực du lịch.

Trên đây là những tâm sự trải nghiệm của tôi, với một mong ước duy nhất là mang đến cho những bạn trẻ đang lập nghiệp sự động viên tinh thần. Các bạn hãy nỗ lực hết sức mình, luôn hoàn thiện mình, kiên trì hiện thực hoá ước mơ, hoài bão của mình, xác định cho mình lý tưởng sống, cộng thêm may mắn nữa, chắc chắn các bạn sẽ thành công.

Chúc các bạn luôn mạnh khoẻ, thành đạt và hạnh phúc.

Trần Hùng, ACT Travel
theo báo VNExpress

Friday, December 4, 2009

Tự Học Lập Trình trong 10 năm (Peter Norvig)

Tại sao mọi người lại vội vã như vậy?
Bước vào bất cư một hiệu sách nào, và bạn sẽ nhìn thấy cuốn Tự học Java trong 7 ngày cùng với vô số những cuốn sách tương tự giúp bạn tự học Visual Basic, Windows, Internet, … trong vòng một vài ngày, thậm chí một vài giờ. Tôi đã dùng công cụ Power Search của Amazon thử tìm những cuốn sách xuất bản sau năm 1992 với mục đích giúp bạn học một thứ gì đó trong vòng vài ngày và tìm được 248 cuốn. 78 cuốn đầu tiên là sách về computer (đứng thứ 79 là cuốn Learn Bengali in 30 days). Tôi thử thay thế “ngày” bằng “giờ” và kết quả giống nhau một cách kinh ngạc: 253 cuốn sách nữa, đầu tiên là 77 cuốn sách computer và đứng thứ 78 là cuốn Teach Yourself Grammar and Style in 24 Hours. Trong số 200 cuốn đầu tiên, 96% là sách máy tính.


Có thể kết luận rằng (1)Mọi người đang đổ xô đi học computer, (2) hoặc computer cực kỳ dễ học, dễ học hơn bất cứ một thứ gì khác. Chẳng có cuốn sách nào dạy bạn nghe Beethoven, dạy Vật lý lượng tử, hay thậm chí dạy cắt lông chó... chỉ trong vòng một vài ngày.
Thử phân tích tựa đề của cuốn Học Pascal trong 3 ngày (Learn Pascal in Three Days)

  • Học: Trong 3 ngày bạn sẽ không đủ thời gian để viết được những chương trình thực sự phức tạp, và học từ những thành công cũng như thất bại của bạn. Bạn cũng không đủ thời gian để làm việc với một lập trình viên giàu kinh nghiệm, và cũng không kịp hiểu cuộc sống trong môi trường đó là như thế nào. Nói một cách ngắn gọn bạn không đủ thời gian để học được nhiều. Đó chỉ có thể là một thứ kiến thức nông cạn chứ không thể là một hiểu biết sâu sắc. Theo như Alexander Pope thì: học một chút là một điều nguy hiểm.

  • Pascal: Trong 3 ngày có lẽ bạn sẽ học được cú pháp của Pascal (nếu bạn đã biết một ngôn ngữ tương tự), nhưng bạn không có nhiều thời gian để học cách sử dụng cú pháp ấy. Nếu bạn là lập trình viên BASIC, bạn sẽ viết một chương trình theo phong cách của BASIC nhưng lại dùng cúp pháp của Pascal, tuy nhiên bạn sẽ không học được Pascal hay ở đâu và dở ở chỗ nào. Vậy thì học Pascal để làm gì? Alan Perlis có nói “Nếu một ngôn ngữ không làm thay đổi cách suy nghĩ của bạn về lập trình thì ngôn ngữ đó không đáng học”. Rất có thể lý do bạn phải học một chút Pascal (hoặc thực tế hơn là Visual Basic hay Javascript) là vì bạn phải dùng một công cụ sẵn có nào đó để hoàn thành nhiệm vụ của bạn. Trong trường hợp này, bạn không học lập trình, bạn đang học cách hoàn thành nhiệm vụ.
  • Trong 3 ngày: Thật đáng tiếc, 3 ngày không đủ cho bạn, như sẽ thảo luận chi tiết hơn ở phần tiếp theo.

Tự học lập trình trong 10 năm
Một số nhà nghiên cứu (Hayes, Bloom) cho rằng phải mất khoảng 10 năm để đạt đến mức tinh thông về một lĩnh vực nào đó – bao gồm đánh cờ, soạn nhạc, vẽ tranh, chơi đàn piano, bơi, tennis… Hình như không có trường hợp ngoại lệ nào: ngay cả Mozart, người được xem là thần đồng âm nhạc vào năm lên 4, cũng phải mất đến 13 năm nữa mới sáng tác ra những kiệt tác âm nhạc. Trong một thể loại khác, ban nhạc The Beatles dường như đã từ chỗ vô danh leo thẳng lên vị trí số 1 bằng một loạt các #1 hit, và xuất hiện trong sô của Ed Sullivan năm 1964. Thực ra, The Beatles đã bắt đầu chơi trong các quán bar nhỏ ở Liverpool và Hamburg từ năm 1957, mặc dù họ đã tạo được sự thu hút từ rất sớm, nhưng thành công lớn thực sự của The Beatles – Sgt. Peppers – ra đời năm 1967. Sammuel Johnson cho rằng để đạt được sự hoàn hảo phải mất hơn 10 năm: “Sự hoàn hảo trong bất cứ một lĩnh vực nào chỉ có thể đạt được bằng cách làm việc cật lực trong suốt cuộc đời; nó không thể mua được với một cái giá rẻ hơn”. Còn Chaucer thì than phiền “Đời thì quá ngắn, mà thời gian học nghề thì quá lâu”
Còn đây là công thức của tôi để thành công trong lập trình:
  • Tìm thấy hứng thú trong việc lập trình và đảm bảo bạn còn đủ hứng thú để đeo đuổi công việc này trong 10 năm.
  • Trao đổi với các lập trình viên khác. Đọc những chương trình do người khác viết. Điều này quan trọng hơn bất cứ cuốn sách học khóa huấn luyện nào.
  • Lập trình. Cách học tốt nhất là vừa học vừa làm. Nói theo cách của giới chuyên môn thì “năng suất tối đa của mỗi người không đơn thuần chỉ do kinh nghiệm, năng suất tăng lên - ngay cả đối với người giàu kinh nghiệm - là kết quả của những cố gắng để hoàn thiện.” và “cách học có hiệu quả nhất cần có: mục đích được xác định rõ ràng với độ khó thích hợp, ý kiến đóng góp phê bình, cơ hội làm lại và sửa sai.” Cuốn Cognition in Practice: Mind, Mathematics, and Culture in Everyday Life là một tài liệu tham khảo thú vị cho quan điểm này.
  • Nếu bạn muốn hãy theo học đại học (hoặc cao học). Như vậy, bạn sẽ thêm cơ hội để làm những công việc đòi hỏi bằng cấp, và cũng giúp bạn có một hiểu biết sâu sắc hơn, nhưng nếu bạn không thích môi trường trường học, bạn vẫn có thể (với một chút cố gắng nhất định) thu được kiến thức tương tự từ công việc. Trong mọi trường hợp, học từ sách sẽ không đủ. Eric Raymond, tác giả cuốn The New Hacker’s Dictionary nói: “Các chương trình giảng dạy về máy tính không thể biến bạn thành một chuyên gia máy tính, cũng giống như nghiên cứu chổi vẽ và bột màu cũng chẳng biến bạn thành một họa sĩ”. Một trong số những lập trình viên xuất sắc nhất mà tôi đã từng mướn chỉ học hết trung học; anh ta đã viết rất nhiều phần mềm tuyệt vời; có news group của riêng anh; và kiếm được đủ tiền từ stock options để mua cho mình một nightclub.
  • Làm việc chung với các lập trình viên khác. Hãy là lập trình viên giỏi nhất trong một số projects; là người kém nhất trong vài projects khác. Khi bạn là người giỏi nhất, bạn kiểm tra khả năng lãnh đạo của mình, và truyền cảm hứng cho người khác từ sư sắc sảo và tầm nhìn của mình. Khi bạn là người kém nhất, bạn học từ những việc mà người giỏi làm, và từ những việc họ không thích làm (vì họ sẽ bắt bạn làm thay họ)
  • Làm việc với các projects sau những lập trình viên khác. Cố gắng hiểu các chương trình viết bởi người khác. Để ý xem cần phải có những gì để hiểu và sửa nó lúc không có tác giả của chương trình. Thiết kế chương trình của bạn để những người làm việc sau bạn có thể bảo trì, sửa chữa nó một cách dễ dàng.
  • Học ít nhất là nửa tá ngôn ngữ lập trình. Bao gồm ít nhất là một ngôn ngữ hỗ trợ class abstractions (như Java hay C++), một ngôn ngữ hỗ trợ functional abstraction (như LISP hay ML), môt ngôn ngữ hỗ trợ syntactic abstraction (như LISP), môt ngôn ngữ hỗ trợ declarative specifications (như Prolog hay C++ template), một ngôn ngữ hỗ trợ coroutines (như Icon hay Scheme) và một ngôn ngữ hỗ trợ parallelism (như Sisal).
  • Nhớ rằng có chữ “computer” trong “computer science”. Bạn cần biết thời gian máy tính của bạn thực hiện một lệnh là bao lâu; thời gian để máy tính tìm một word trong bộ nhớ (khi word đó có và không có trong cache); thời gian đọc các word kế tiếp nhau từ đĩa cứng; và thời gian tìm đến một vị trí mới trong đĩa cứng.
  • Tham gia vào các cố gắng để tiêu chuẩn hóa ngôn ngữ lập trình. Đó có thể là cuộc họp của hội đồng ANSI C++, nhưng cũng có thể chỉ là quyết định xem nhóm lập trình của bạn sẽ dùng 2 hay 4 khoảng trắng ở đầu mỗi dòng. Bằng cách nào thì bạn cũng học được mọi người thích gì ở một ngôn ngũ lập trình, mức độ, và có lẽ hiểu được một chút tại sao họ lại cảm thấy như vậy.
  • Hoàn tất việc tiêu chuẩn hóa ngôn ngữ càng nhanh càng tốt.

Nếu theo công thức này, bạn thử tính xem bạn có thể học được bao nhiêu chỉ từ sách vở. Trước khi đứa con đầu lòng của tôi ra đời, tôi đã nghiền ngẫm tất cả các cuốn sách Làm cách nào để … mà vẫn cảm thấy mình vẫn chẳng biết gì. 30 tháng sau, khi đứa con thứ 2 của tôi chào đời, tôi có đọc lại những cuốn sách đó không? Không. Thay vào đó tôi dựa theo kinh nghiệm của mình, mà hóa ra là những kinh nghiệm này lại có ích và làm cho tôi yên tâm hơn hàng ngàn trang sách viết bởi các chuyên gia.
Fred Brooks, trong bài No Silver Bullets đã đưa ra một kế hoạch gồm 3 giai đoạn để tìm một người thiết kế phần mềm xuất sắc:
  • Tìm kiếm có một cách có hệ thống những người thiết kế phần mềm giỏi nhất càng sớm càng tốt.
  • Phân công các cố vấn nghề nghiệp để giúp đỡ họ thăng tiến trong công việc và theo dõi hồ sơ nghề nghiệp của họ.
  • Tạo cơ hộ để họ trao đổi và cạnh tranh lẫn nhau

Kế hoạch này dựa trên giả thiết là đã tìm được những người đã có sẵn các đức tính để trở thành một người thiết kế phần mềm xuất sắc, và công việc chỉ là tạo điều kiện để họ phát triển. Alan Perlis nói một cách ngắn gọn hơn: “Nếu tất cả mọi người đều có thể học được điêu khắc thì có lẽ Michelangelo đã được dạy để làm ngược lại. Với các lập trình viên xuất sắc cũng vậy.”
Bạn cứ mua cuốn sách Java đó đi, có lẽ bạn sẽ thấy nó có ích. Nhưng, là một lập trình viên, bạn sẽ không thay đổi cuộc đời bạn, hay trình độ của bạn trong 24 giờ, 24 ngày, thậm chí 24 tháng.

Phụ lục: Lựa chọn ngôn ngữ lập trình
Rất nhiều người hỏi tôi: nên bắt đầu từ ngôn ngữ lập trình nào. Không có một câu trả lời chung, nhưng bạn hãy cân nhắc những điểm sau:
Dùng ngôn ngữ lập trình mà bạn bè dùng: Khi người ta hỏi tôi: “Tôi nên dùng hệ điều hành nào, Windows, Unix, hay Mac?” câu trả lời của thôi thường là “Hãy dùng hệ điều hành mà bạn bè của bạn dùng”. Những gì bạn học từ bạn bè quá đủ đề bù đắp những điểm khác nhau giữa các hệ điều hành, hoặc giữa các ngôn ngữ lập trình. Cũng nên xem xét đến những bạn bè tương lai của bạn: cộng đồng lập trình viên mà bạn sẽ là tham gia nếu bạn tiếp tục. Ngôn ngữ mà bạn chọn có một cộng đồng đang phát triển hay đang lụi tàn? Có sách, có website, có diễn đàn để tìm kiếm câu trả lời cho những vấn đề mà bạn gặp phải hay không? Bạn có thích mọi người trên các diễn đàn đó hay không?
Đơn giản. Những ngôn ngữ lập trình như C++Java được thiết kế cho những nhóm làm việc gồm nhiều lập trình viên giàu kinh nghiệm và mối quan tâm của họ là hiệu quả của chương trình. Hậu quả là chúng đã bị phức tạp hóa đề phục vụ cho mục đích này. Mối quan tâm chính của bạn là học lập trình, bạn chưa cần đến sự phức tạp đó. Bạn muốn một ngôn ngũ được thiết kế thật đơn giản, dễ học, dễ nhớ cho một người mới bắt đầu.
Chơi. Nếu bạn muốn học chơi piano, bạn sẽ học chơi theo cách nào: (1)bạn muốn nghe thấy note nhạc ngay sau khi bạn gõ vào phím đàn (interactive mode) hay (2) bạn muốn nghe lại toàn bộ các notes sau khi bạn hoàn tất bản nhạc (batch mode). Rõ ràng cách 1 giúp bạn học piano dễ dàng hơn, và học lập trình cũng vậy. Tìm một ngôn ngữ lập trình có hỗ trợ interactive mode và dùng nó.
Dựa trên những tiêu chuẩn trên, ngôn ngũ lập trình cho người mới bắt đầu mà tôi giới thiệu là Python hay Scheme. Nhưng tùy vào hoàn cảnh của bạn, còn có nhiều chọn lựa tốt khác. Với các lập trình viên tương lai còn đang trong lứa tuổi nhi đồng, thì Alice hoặc Squeak có lẽ thích hợp nhất. Điều quan trọng là bạn chọn nó và hãy bắt đầu.
Source here
http://my.opera.com/lechuck60/blog/tu-hoc-lap-trinh-trong-10-nam-peter-norvig

Sunday, November 29, 2009

AOP: Aspect Oriented Programming

OOP (Object-oriented Programming) lập trình hướng đối tượng hiện là mô hình phát triển được lựa chọn cho hầu hết các dự án phần mềm. OOP rất hữu hiệu trong việc lập mô hình hành vi chung của các đối tượng tuy nhiên nó không giải quyết thỏa đáng những hành vi liên quan đến nhiều đối tượng. AOP giải quyết được vấn đề này, và rất có thể sẽ là bước phát triển lớn kế tiếp trong phương pháp lập trình.

Vào những ngày đầu của ngành khoa học máy tính, các thảo chương viên lập trình trực tiếp bằng mã máy. Những nhà phát triển phần mềm thời đó đã phải tốn nhiều thời gian suy nghĩ về tập lệnh riêng của từng phần cứng máy tính cụ thể hơn là tập trung để giải quyết các yêu cầu của bài toán đặt ra. Dần dần, người ta chuyển sang các ngôn ngữ lập trình cấp cao hơn, cho phép khái quát hoá ở mức độ nào đó mã máy chạy bên dưới. Rồi kế đến là các ngôn ngữ lập trình có cấu trúc cho phép phân tích bài toán thành các thủ tục thực hiện những tác vụ cần thiết. Tuy nhiên, khi độ phức tạp của các bài toán tăng lên, chúng ta cần có những kỹ thuật tốt hơn. OOP cho phép chúng ta xem hệ thống như là một tập các đối tượng cộng tác. Lớp (class) cho phép chúng ta ẩn đi những chi tiết thực hiện bên dưới các giao tiếp (interface). Cơ chế đa hình (polymorphism) cung cấp giao tiếp và hành vi chung cho những khái niệm liên quan.

Hình 1a

Kỹ thuật OOP rất xuất sắc trong việc đóng gói các hành vi và chủ thể (lớp), miễn là chúng hoàn toàn riêng biệt. Tuy nhiên, các bài toán thực tế thường có những hành vi đan nhau liên quan đến nhiều lớp. Theo truyền thống, hầu hết ngôn ngữ lập trình hướng đối tượng như C++ và Java đều không hỗ trợ đóng gói những hành vi đan nhau, dẫn đến mã chương trình có thể nằm lẫn lộn, rải rác và khó quản lý.

AOP (Aspect-oriented Programming) là kỹ thuật lập trình mới cho phép đóng gói những hành vi có liên quan đến nhiều lớp. Nhóm từ AOP mới mẻ này có thể làm cho bạn cảm thấy bối rối. Bạn vẫn chưa kịp nắm vững OOP giờ lại xuất hiện thêm ‘mốt’ lập trình mới? Bạn đừng lo, OOP vẫn tồn tại. AOP có thể xem là một sự bổ sung cho OOP, cho phép chúng ta giải quyết các bài toán phức tạp tốt hơn và hiệu quả hơn.

Vấn đề đan nhau

Hệ thống phần mềm có thể xem như là một thể hiện kết hợp nhiều vấn đề. Một hệ thống tiêu biểu có thể gồm nhiều dạng vấn đề như xử lý nghiệp vụ, hiệu suất, bảo toàn dữ liệu, bảo mật, bẫy lỗi… và còn có những vấn đề của quá trình phát triển hệ thống như tính dễ quản lý, dễ bảo trì và phát triển. Hình 1a và 1b minh họa hệ thống với tập các vấn đề đan nhau.

Để hiểu rõ hơn về vấn đề đan nhau, chúng ta hãy xét một ví dụ đơn giản nhưng khá phổ biến: cập nhật dữ liệu. Giả thiết mục tiêu quan trọng của hệ thống là nó phải dễ phát triển, bảo trì và đảm bảo an toàn dữ liệu. Mục tiêu đầu đặt ra từ yêu cầu hệ thống phải phát triển nhanh và không có lỗi, mục tiêu thứ hai do tính chất quan trọng của dữ liệu.

Mục tiêu đầu có thể đạt được khá dễ dàng. Có thể dùng lập trình thủ tục theo kiểu cũ để thực hiện hệ thống mạch lạc, ngắn gọn và đáp ứng tốt yêu cầu bài toán. Các tác vụ cơ bản của mô đun cập nhật như sau:

  • Nạp dữ liệu.
  • Cập nhật dữ liệu.
  • Lưu dữ liệu.

Tuy nhiên việc thực hiện đơn giản này không giải quyết mục tiêu thứ hai. Để đáp ứng cho mục tiêu thứ hai, chúng ta phải thêm các tác vụ xử lý vấn đề an toàn dữ liệu.

  • Xác thực quyền cập nhật dữ liệu.
  • Khóa dữ liệu để đảm bảo sự an toàn dữ liệu, đề phòng người khác truy cập trong khi đang thực hiện cập nhật.
  • Nạp dữ liệu.
  • Cập nhật dữ liệu.
  • Kiểm tra tính toàn vẹn dữ liệu cập nhật
  • Ghi nhận lại các thao tác cập nhật.
  • Lưu dữ liệu
  • Mở khoá dữ liệu

So với ban đầu thì mô đun cập nhật giờ đây khá phức tạp với nhiều vấn đề liên quan đến những lớp xử lý khác như xác thực, khoá/mở khoá dữ liệu. Những mô đun xử lý khác như thêm mới hay xóa dữ liệu cũng có những vấn đề tương tự.

Vấn đề đan nhau làm cho các mô đun phải xử lý đồng thời nhiều yêu cầu; lập trình viên ngoài việc suy nghĩ về vấn đề xử lý cơ bản còn phải tính đến vấn đề hiệu suất, bảo mật, an toàn dữ liệu… và sự trộn lẫn nhiều đoạn mã xử lý những yêu cầu khác nhau. Một vấn đề nữa đó là tình trạng rải rác mã, do vấn đề đan nhau có ở nhiều mô đun nên các đoạn mã xử lý liên quan cũng xuất hiện ở nhiều mô đun. Những vấn đề này ảnh hưởng đến việc thiết kế và phát triển phần mềm, như hệ thống khó xây dựng, quản lý, phát triển và tính tái sử dụng kém…

Cơ bản về AOP

Hình 1b

Vấn đề cốt lõi của AOP là cho phép chúng ta thực hiện các vấn đề riêng biệt một cách linh hoạt và kết hợp chúng lại để tạo nên hệ thống sau cùng. AOP bổ sung cho kỹ thuật lập trình hướng đối tượng bằng việc hỗ trợ một dạng mô đun khác, cho phép kéo thể hiện chung của vấn đề đan nhau vào một khối. Khối này được gọi là ‘aspect’ (tạm dịch là ‘lát’ – hàm ý lát cắt đi qua nhiều lớp đối tượng), từ chữ ‘aspect’ này chúng ta có tên của phương pháp phát triển phần mềm mới: aspect-oriented programming. Nhờ mã được tách riêng, vấn đề đan nhau trở nên dễ kiểm soát hơn. Các aspect của hệ thống có thể thay đổi, thêm hoặc xóa lúc biên dịch và có thể tái sử dụng. Một dạng biên dịch đặc biệt có tên là Aspect Weaver thực hiện kết hợp các thành phần riêng lẻ lại thành hệ thống hợp nhất.

AOP gồm ba bước phát triển (hình 2a và 2b):

  1. Phân tích các yêu cầu để xác định vấn đề chung và vấn đề đan nhau.
  2. Xây dựng thể hiện từng vấn đề riêng biệt.
  3. Tổng hợp các thể hiện.

Giống như các phương pháp lập trình khác, việc thực hiện AOP gồm hai phần: đặc tả ngôn ngữ mô tả cú pháp và cấu trúc ngôn ngữ; biên dịch kiểm tra sự đúng đắn của mã lệnh theo đặc tả ngôn ngữ và chuyển đổi sang dạng mã máy có thể thực thi.

* Đặc tả ngôn ngữ AOP: Xét ở mức cao, ngôn ngữ AOP gồm 2 thành phần.

  • Thể hiện vấn đề: Ánh xạ yêu cầu riêng lẻ ở dạng mã để trình dịch có thể chuyển đổi sang dạng thực thi. Thể hiện vấn đề có dạng thủ tục cụ thể, bạn có thể dùng các ngôn ngữ truyền thống như C, C++ hay Java.
  • Đặc tả quy tắc đan kết: Xác định cách thức tổng hợp các vấn đề riêng lẽ. Muốn vậy, thể hiện cần sử dụng hoặc tạo một ngôn ngữ để xác định các quy tắc tổng hợp các thể hiện khác nhau. Ngôn ngữ xác định quy tắc đan kết có thể là sự mở rộng của ngôn ngữ thể hiện, hoặc một ngôn ngữ hoàn toàn khác.

* Biên dịch AOP: Trình biên dịch AOP thực hiện theo trình tự hai bước sau:

  1. Kết hợp các hành vi riêng lẻ
  2. Chuyển đổi thông tin kết quả sang dạng mã thực thi
Hình 2a

Việc biên dịch ứng dụng AOP có thể thực hiện theo nhiều cách, trong đó có cách dịch mã sang mã. Theo cách này, mã nguồn được tiền xử lý các aspect riêng lẻ để tạo ra mã đã được đan kết với nhau. Kế tiếp trình biên dịch AOP đưa mã đã được chuyển đổi này sang trình biên dịch ngôn ngữ cơ sở để tạo dạng mã thực thi cuối cùng. Ví dụ, theo cách thức này, các aspect riêng lẻ của ứng dụng AOP dùng ngôn ngữ Java trước tiên sẽ được đan kết ở dạng mã nguồn Java, kế tiếp trình biên dịch Java sẽ chuyển mã nguồn này sang dạng mã thực thi (byte code). Tương tự, cũng có thể thực hiện đan kết ở giai đoạn mã byte code, byte code vẫn là một dạng mã nguồn, nếu như hệ thống thực thi chế độ nền – máy ảo java – hỗ trợ aspect. Với cách này, đầu tiên máy ảo Java sẽ nạp các quy tắc đan kết, rồi áp dụng các quy tắc này cho các lớp được nạp sau đó. Nói cách khác, trình biên dịch thực hiện việc đan kết các aspect trong khi thực thi.

Hình 2b

AOP tổng hợp hệ thống đi từ các vấn đề đan nhau đến vấn đề chính, còn OOP đi theo hướng ngược lại. Tuy nhiên, OOP và AOP không phủ định nhau mà bổ sung cho nhau. AOP có thể dùng các kỹ thuật lập trình khác làm cơ sở, và vẫn giữ được những ưu điểm của hệ thống cơ sở.

Lợi ích của AOP

AOP là một kỹ thuật mới đầy triển vọng, hứa hẹn đem lại nhiều lợi ích cho việc phát triển phần mềm. Dưới đây là một số lợi ích cụ thể:

  • Mô đun hoá những vấn đề đan nhau: AOP xác định các vấn đề một cách tách biệt hạn chế tối thiểu việc nhập nhằng mã, cho phép mô đun hoá cả vấn đề liên quan đến nhiều lớp đối tượng.
  • Dễ dàng phát triển hệ thống: Việc thêm chức năng mới có thể thực hiện dễ dàng bằng cách tạo aspect mới mà không cần quan tâm đến vấn đề đan nhau. Khi thêm các mô đun mới vào hệ thống, các aspect hiện có sẽ đan kết với chúng và tạo nên sự phát triển chặt chẽ.
  • Cho phép để lại quyết định thiết kế tương lai: Một thiết kế tốt phải tính đến cả yêu cầu hiện tại và tương lai, việc xác định yêu cầu tương lai là một công việc khó khăn. Nếu bỏ sót những yêu cầu tương lai có thể bạn sẽ phải thay đổi hay thực hiện lại nhiều phần hệ thống. Với AOP, người thiết kế hệ thống có thể để lại các quyết định thiết kế cho những yêu cầu tương lai nhờ thực hiện theo các aspect riêng biệt.
  • Tái sử dụng mã tốt hơn: Các aspect là những mô đun riêng biệt, được kết hợp linh động – đây chính là yếu tố quan trọng để tái sử dụng mã. AOP cho phép tái sử dụng mã tốt hơn OOP.

Lời kết

AOP là một ý tưởng mới, vẫn còn cần thời gian để đánh giá, tìm hiểu mối quan hệ các kỹ thuật hiện có và để phát triển, ứng dụng rộng rãi.

Cần nhấn mạnh điều quan trọng là AOP xây dựng trên các công nghệ hiện hữu. Nó chỉ làm việc với thiết kế tốt. Để có thiết kế tốt, bạn cần phải áp dụng đúng kỹ thuật cho đúng vấn đề, có thể là AOP, OOP, phân tích theo chức năng, lập trình cấu trúc…

Giờ thì bạn đã biết về sự tồn tại của AOP. Hãy tìm đọc, nghiên cứu và áp dụng nó. Hiện có rất nhiều thông tin về AOP trên internet. Bạn có thể bắt đầu với website Aspect Oriented Software Development (aosd.net).


theo PC World VN

Thursday, October 29, 2009

Blaise Pascal (1623 - 1662) thần đồng Toán học

Blaise Pascal sinh tại Clermont Ferrand, miền Auvergne nước Pháp, ngày 19 tháng 6 năm 1623. Cha của Pascal, ông Etienne, trước kia là một luật gia tại thành phố Paris và vào lúc Pascal chào đời, ông là chánh án tòa Hộ tại Clermont. Khi Pascal lên 3 tuổi, bà mẹ Antoinnette Bégan từ trần, để lại cho chồng 3 người con là Gilberte, Blaise và Jacqueline lúc đó đều còn quá nhỏ.
Ngay từ khi mới tập nói, Pascal đã tỏ ra là một đứa trẻ có năng khiếu khác thường. Lớn lên, Pascal thường hỏi người lớn những câu hỏi hắc búa và cậu cũng trả lời được những câu hỏi thật khó giải đáp. Những điều này làm cho ông Etienne tin tưởng rằng con của ông là một thiên tài, vì vậy ông quyết định lấy cách giáo dục con. Nguyên tắc của ông là luôn luôn khiến cho đứa trẻ làm các việc khó khăn hơn, tiến bộ hơn.

Vào năm 1631, ông Etienne nhường chức vụ của mình cho người khác rồi dọn nhà lên thành phố Paris để chăm sóc sự học vấn của con. Ông tự đảm trách việc giáo huấn và vì vậy, Pascal không có thầy giáo nào khác ngoài người cha thân yêu tài ba. Cậu được dạy cách quan sát, suy tưởng và thường học được những kiến thức qua các cuộc đàm luận với cha. Khởi đầu, ông Etienne quyết định dạy con tiếng La Tinh và Hy Lạp cho đến năm 12 tuổi, tuy nhiên trong các thời giờ nhàn rỗi, ông Etienne cũng kể cho con trai nghe các câu chuyện về Khoa Học nhưng những điều này không bao giờ làm cho Pascal thỏa mãn, cậu luôn luôn khao khát những lý lẽ cuối cùng của sự vật.
Máy tính Pascaline, 6 số
Vì muốn con chuyên tâm về tiếng La Tinh và Hy Lạp là hai ngôn ngữ rất khó học, nên ông Etienne đã cất dấu tất cả những sách về Khoa Học và Toán Học. Nhưng rồi một hôm, khi bước vào phòng, ông thấy con trai đang loay hoay dùng phấn chứng minh trên nền nhà định luật thứ nhất trong 32 định luật của Euclide. Sau khi nghe con thuật lại cách chứng minh, ông Etienne đã phải bỏ nhà, chạy sang nhà ông hàng xóm Le Pailleur để "khóc lên vì sung sướng".

Xưa nay, ông Etienne chưa từng dạy cho con học Toán bao giờ, vả lại định luật của Euclide đó là một bài toán rất khó đối với người lớn, không phải dành cho trẻ em 12 tuổi. Pascal đã chứng minh được rằng tổng số các góc trong một tam giác bằng hai góc vuông, đúng như Euclide đã từng phát biểu. Cũng vì chưa từng học Hình Học, Pascal đã gọi đường tròn là "cái tròn" (un rond), đường thẳng là "cái thước kẻ" (une barre). Từ đây, Pascal mới được cha cho phép đọc các cuốn khái luận của Euclide. Do trí thông minh sẵn có, Pascal đọc tới đâu, hiểu tới đó mà không cần một ai giảng giải. Cậu còn giải được nhiều bài toán khó. Sự tự tìm hiểu do ý thích đã khiến Pascal chẳng bao lâu trở thành một nhà toán học có hạng.
Thời bấy giờ, ông Etienne thường gặp gỡ nhiều nhân vật danh tiếng về Khoa Học nên Pascal cũng được tham dự vào các buổi hội thảo, cậu được làm quen với Cha Mersenne là một nhà bác học thời đó, cũng như với những nhà khoa học danh tiếng khác, chẳng hạn như Desargues, Fermat, Roberval. Tại các buổi họp này, Pascal đã góp ý kiến về các tư tưởng, các lý luận, các lời phê phán những tác phẩm của các nhà bác học đương thời. Cậu cũng trình bày những điều do mình khám phá.

Theo phương pháp Hình Học của Desargues, Pascal đã hoàn thành cuốn "Khảo Sát về Thiết Diện Côníc" (Traité des sections coniques, 1640) khi chưa tới 16 tuổi. Tác phẩm này bao gồm các công trình của Apollonius, nhưng đã được Pascal tự tìm ra và lại chứng minh bằng một phương pháp luận lý vừa đơn giản hơn, vừa tổng quát hơn. Tác phẩm của Pascal đã khiến rất nhiều nhà toán học tài ba đương thời phải khâm phục, kể cả Cha Mersenne và Descartes, và ai cũng đồng ý rằng cuốn sách đó xứng đáng là công trình của một bậc thầy chứ không phải là của một thiếu niên chưa đủ 16 tuổi. Nhiều người đã thúc dục Pascal đưa in tác phẩm nhưng do lòng khiêm tốn, cậu đã từ chối vì vậy ngày ngay người ta chỉ còn lưu giữ được hai cuốn sách đầu tay của nhà thiên tài toán học Pascal.

Năm 1638, khi chính phủ Pháp ra lệnh giảm bớt lợi tức của Tòa Đô Chính Paris, một nhóm người đã đứng lên phản đối trong đó có người cha của Pascal. Vì vậy ông Etienne bị Thủ Tướng Richelieu cho người theo dõi và phải trốn về miền Auvergne. Lúc bấy giờ, Pascal 15 tuổi và cô em gái Jacqueline 13. Giống như anh trai, Jacqueline cũng nổi tiếng là một thần đồng về thơ văn. Khi lên 11 tuổi, Jacqueline đã sáng tác được một kịch thơ 5 hồi và tác phẩm thơ này đã được giới văn nghệ Paris ưa chuộng. Rất nhiều người và ngay cả Thi Hào Corneille đều ưa thích đọc thơ của Jacqueline.

Nhờ tài năng về Thơ Phú, Jacqueline được phép đóng kịch trước Hồng Y Giáo Chủ Richelieu. Vị Thủ Tướng này đã không tiếc lời khen ngợi cô bé và hỏi thăm về gia cảnh. Nhân lúc này, Jacqueline liền ngâm một bài thơ xin ân xá cho cha và Thủ Tướng đã nhận lời. Ông Etienne nhờ vậy được phép trở lại Paris và lại được cử giữ chức vụ Giám Đốc Thuế Vụ miền Rouen. Nhưng trách nhiệm này làm ông Etienne mệt mỏi vì sổ sách kế toán quá nhiều. Để giúp đỡ cha, Pascal đã sáng chế ra một chiếc máy tính mà nguyên tắc của nó còn được áp dụng cho các loại máy tính tối tân ngày nay. Phát minh này đã làm dang tiếng của Pascal vang lừng.

Vào các năm trước, gia đình Pascal tuy ngoan đạo nhưng tôn giáo chưa được coi là quan trọng cho tới năm 1646, dòng tu khổ hạnh (Jansenism) của Cơ Đốc Giáo đã ảnh hưởng tới vùng Pascal cư ngụ. Đây là nhóm tôn giáo chủ trương do ông Cornelis Jansen, một giáo sư thần học gốc Hòa Lan, sống tại Louvain. Các niềm tin của giáo phái này khác hẳn với các lời rao giảng của các giáo sĩ Dòng Tên (the Jesuites). Ông Etienne Pascal, do không ưa thích tôn giáo, nên đã mang gia đình dọn lên thành phố Paris. Tới khi ông Etienne qua đời vào năm 1651, cô em gái Jacqueline của Pascal liền vào nhà tu tại Port Royal. Do ảnh hưởng này, Pascal đã để tâm tới tôn giáo cũng như tới các vấn đề thần học.

Cũng vào năm biết tới dòng tu Khổ Hạnh, Pascal đã thực hiện lại các thí nghiệm của Torricelli và phổ biến các điều khám phá của mình trong tác phẩm "Các thí nghiệm mới liên quan tới khoảng chân không" (Nouvelles expériences touchant le vide, 1647). Pascal đã dựa vào thí nghiệm rồi dùng lý luận, đánh đổ các quan niệm cổ xưa của Aristotle về chân không và ông cũng đưa ra những khám phá mới về áp suất không khí. Pascal đã tìm thấy kết luận rằng càng lên cao, áp suất của không khí càng giảm đi. Để kiểm chứng điều này, Pascal đã nhờ người anh rể là Florin Perier lên ngọn núi Puy-de-Dome thực hiện nhiều thí nghiệm cần thiết. Các kết quả của Perier đã xác nhận lời tiên đoán của Pascal. Do khám phá này của Pascal, các nhà khoa học đã chế tạo được các phong vũ biểu và các cao độ kế.

Trong khi nghiên cứu các thí nghiệm của Torricelli, Pascal còn tìm cách tổng quát hóa những ý niệm về chất lỏng. Ông đã thiết lập nhiều định luật về áp suất của chất lỏng để rồi phổ biến qua tác phẩm :"Khảo sát sự cân bằng chất lỏng" (Traité de l 'équilibre des liqueurs). Cuốn sách này được hoàn thành vào năm 1651 nhưng mãi tới năm 1663 mới được xuất bản và căn cứ vào đó, nhiều nhà khoa học đã coi Pascal là một trong những người sáng lập ra môn Thủy Động Học (Hydrodynamics).

Sau khi người cha thân yêu qua đời, Pascal không chuyên tâm nhiều vào việc khảo cứu khoa học. Ông thường giao du với nhiều người, nhất là Hầu Tước trẻ tuổi De Roannez và Hiệp Sĩ De Mere. Chính trong thời kỳ này, ông đã chuyên đọc về Epictète và Montaigne. Do sự đi lại với De Mere, Pascal đã lưu tâm tới lý thuyết toán học của cách đánh bài. Ông bắt đầu nghiên cứu phép tính Sác Xuất (Probability) rồi vào năm 1654, đã phổ biến các kết quả qua các bức thư viết cho Fermat và qua cuốn "Khảo Sát về Tam Giác Số Học" (Traité du triangle arithmétique).

Cũng vào năm 1654, Pascal tới Port Royal thăm cô em gái Jacqueline đang sống trong tu viện. Cuộc đi thăm này khiến cho Pascal cảm thấy "ghê tởm cực độ các sự giả dối của đời người". Sự bất toại nguyện càng tăng thêm cho tới khi "đêm lửa" xẩy đến, làm thay đổi hẳn cuộc sống cũ của Pascal. Chính vào đêm 23 tháng 11 năm 1654 đó, trong khi đang khảo cứu Toán Học, Pascal cảm thấy như được đối thoại cùng Thượng Đế trong hai tiếng đồng hồ. Pascal thấy mình đã nhận lãnh một chức vụ thiêng liêng, rồi vì quá xúc động, ông nguyện hiến cả đời mình cho Thượng Đế và quyết tâm làm tỏ đức tin nơi Đấng Chí Tôn.

Vào năm 1655, Antoine Arnauld, nhà thần học chính thức của Port Royal bị các nhà thần học Sorbone kết án, nhất là về lối tu khổ hạnh (Jansenism) đối với Chúa Cứu Thế. Có lẽ do chính Arnauld khuyến dụ, Pascal đã viết ra các bức thư Provinciales. Lối hành văn cũng như cách tranh luận của Pascal qua tác phẩm này đã quyến rũ được dân chúng Paris, nhất là trong khoảng thời gian từ tháng Giêng năm 1656 tới tháng 4 năm 1657. Khi sống tại Port Royal, Pascal được mời viết cho nhà trường các bài giảng về Hình Học, có lẽ vì lý do này, Pascal đã viết nên cuốn "Phương Pháp chứng minh Hình Học" (On Geometrial Demonstrations).

Thời còn thơ ấu, thể chất của Pascal rất mỏng manh, nên khi lớn lên, tình trạng sức khỏe của ông cũng không được khá. Vào năm 1658, Pascal lại bị chứng đau răng hành hạ và vì muốn tìm quên nỗi đau nhức, Pascal quay ra làm Toán. Ông nghiên cứu hình học Cycloide, là thứ hình học đang được Roberval và các nhà toán học đương thời khảo sát. Pascal đã tìm ra được nhiều tính chất quan trọng nhưng vì muốn chứng tỏ các điều khám phá của mình có thể giải đáp được nhiều bài toán hắc búa, Pascal đề nghị một cuộc thách đố vói các nhà toán học. Nhiều người đã nhận lời trong đó có Wallis và Laouère, nhưng rồi chỉ có Pascal cho ra các kết quả hoàn toàn.

Càng về cuối đời, Pascal càng sống khổ hạnh. Sau khi đứa cháu của ông được cứu khỏi tại Port Royal và được mọi người coi là một sự huyền diệu, Pascal chuyên tâm đọc sách và kiếm tài liệu để viết nên cuốn sách "Biện hộ cho Thiên Chúa Giáo" (Apology for the Christian Religion) mà sau này, tác phẩm đó được phổ biến sau khi ông qua đời dưới tên là "Tư Tưởng" (Pensées).

Tháng 6 năm 1662, Pascal đem nốt căn nhà ở tặng cho một gia đình nghèo đang mắc bệnh đậu mùa. Ông dọn tới ở nhờ người chị gái Gilberte. Tại nơi này, Pascal bị ốm nặng và cơn bệnh còn hành hạ ông trong hai tháng. Pascal qua đời vào ngày 19 tháng 8 năm đó, hưởng thọ 39 tuổi.

Năm 1962, cả nước Pháp đã làm lễ kỷ niệm 300 năm ngày húy kỵ của Blaise Pascal, nhà bác học kiêm triết gia kiêm văn sĩ. Để ghi nhớ bậc Vĩ Nhân Khoa Học này, người ta đã phát hành tem thư, tổ chức các buổi thuyết trình về Triết Học, Toán Học và Văn Chương. Nhiều phòng triển lãm đã trưng bày các tác phẩm của Pascal cùng chiếc máy tính, phát minh lừng danh của ông. Qua các bài diễn văn, các Viện Sĩ Louis de Broglie, Francois Mauriac. đã ca ngợi Blaise Pascal là một thiên tài của Nhân Loại, đã mang cả cuộc đời phụng sự cho Khoa Học và Triết Học.

Nguồn (http://vietsciences.free.fr)

Wednesday, October 28, 2009

Hướng dẫn thi chứng chỉ MCPD & MCTS:70-536,70-526,70-548,70-547,70-528,70-529,70-549!

Lấy từ diễn đàn ITEXPert.org
hôm nay chia sẻ với các bạn kinh nghiệm thi một số chứng chỉ của Microsoft, tuy các chứng chỉ về các công nghệ hơi cũ (.NET 2.0), nhưng hi vọng sẽ là khởi đầu tốt cho những ai còn băn khoăn chưa biết bắt đầu với sự nghiệp chinh phục các chứng chỉ Microsoft từ đâu.

Thi các chứng chỉ Microsoft không phải quá khó, nhưng cần đầu tư thời gian để ôn tập thực sự. Một điều rất quan trọng nữa đó là các tài liệu tham khảo và việc phân chia thời gian để ôn hợp lý, trong tutorial này tôi sẽ đính kèm các tài liệu tôi đã dùng trong khi thi.

Đầu tiên giới thiệu một chút về tôi đã nhỉ:
- Thi chứng chỉ MS đầu tiên (M70-229 - Design and Implementing Database with Microsoft ® SQL Server 2000) vào năm 2003, sau khi tốt nghiệp đại học, được 927 điểm.
- Sau 5 năm, quyết đinh thi tiếp đợt 2 và hoàn thành bộ Microsoft Enterprise Developer gồm 7 môn thi trong vòng 3 tuần, với 3 môn được

Exam ID Description Date Completed

549 PRO: Designing and Developing Enterprise Applications by Using the Microsoft® .NET Framework
Aug 29, 2008
529 TS: Microsoft® .NET Framework 2.0 - Distributed Application Development
Aug 27, 2008
528 TS: Microsoft® .NET Framework 2.0 - Web-based Client Development
Aug 25, 2008
547 PRO: Designing and Developing Web-based Applications by Using the Microsoft® .NET Framework
Aug 25, 2008
548 PRO: Designing and Developing Windows®-based Applications by Using the Microsoft® .NET Framework
Aug 22, 2008
526 TS: Microsoft® .NET Framework 2.0 - Windows®-based Client Development
Aug 15, 2008
536 TS: Microsoft .NET Framework - Application Development Foundation
Aug 08, 2008

1. Chọn môn thi:

Tutorial này dành cho các chứng chỉ liên quan đến Microsoft Visual Studio 2005 - .NET Framework 2.0. Các chứng chỉ được chia làm 2 loại và 3 lĩnh vực bao gồm tổng cộng 7 môn thi.

Các loại chứng chỉ:
  • MCTS: Microsoft Certified Technology Specialist
  • MCPD: Microsoft Certified Professional Developer
Các lĩnh vực liên quan:
  • Web Applications
  • Windows Applications
  • Distributed Applications
Sau đây liệt kê môn thi cho từng loại chứng chỉ và trang web của Microsoft nói về yêu cầu và các khóa học của Microsoft cùng các tài liệu tham khảo, tuy nhiên bạn đừng quá quan tâm vào các tài liệu của Microsoft vì trong các bài tiếp theo tôi sẽ cung cấp chi tiết các tài liệu cần dùng.

- MCTS: Web Applications: 2 môn
  • 70-536: TS: Microsoft .NET Framework 2.0–Application Development Foundation
  • 70- 228: TS: Microsoft .NET Framework 2.0 – Web-Based Client Development
- MCTS: Windows Applications: 2 môn
  • 70-536: TS: Microsoft .NET Framework – Application Development Foundation
  • 70-526: TS: Microsoft .NET Framework 2.0 – Windows-Based Client Development
- MCTS: Distributed Applications: 2 môn
  • 70-536: TS: Microsoft .NET Framework – Application Development Foundation
  • 70-529: TS: Microsoft .NET Framework 2.0 – Distributed Application Development
- MCPD: Web Developer: Phải hoàn thành MCTS cho Web Application và 70-547 (3 môn).
  • MCTS: Web Applications
  • 70-547: PRO: Designing and Developing Web Applications by Using the Microsoft .NET Framework
- MCPD: Windows Developer: Phải hoàn thành MCTS cho Windows Application và 70-548 (3 môn).- MCPD: Enterprise Applications Developer: Phải hoàn thành cả 3 bộ MCTS (4 môn) và 2 bộ MCPD ở trên (2 môn) và môn cuối cùng 70-549:
  • PRO: Designing and Developing Enterprise Applications by Using the Microsoft .NET Framework
Như vậy để lấy một chứng chỉ MCTS, bạn sẽ phải thi 2 môn. Lấy MCPD - Windows Developer hoặc MCPD - Web Developer sẽ cần thi 3 môn. Và để lấy MCPD-Enterprise Applications Developer sẽ phải thi tất cả 7 môn ở trên.

Mục tiêu là lấy được MCPD-Enterprise Applications Developer, thứ tự các môn thi không quan trọng lắm, nhưng để tối ưu để lấy từng chứng chỉ một, và thấy được kết quả sau từng môn thi nên đã chọn thứ tự các môn thi như sau:
  • 70- 536 TS: Microsoft .NET Framework - Application Development Foundation
  • 70-526 TS: Microsoft® .NET Framework 2.0 - Windows®-based Client Development
--> Hoàn thành MCTS-Windows Applications
  • 70-548 PRO: Designing and Developing Windows®-based Applications by Using the Microsoft® .NET Framework
--> Hoàn thành MCPD: Windows Developer
  • 70-528 TS: Microsoft® .NET Framework 2.0 - Web-based Client Development
--> Hoàn thành MCTS: Web Applications
  • 70-547 PRO: Designing and Developing Web-based Applications by Using the Microsoft® .NET Framework
--> Hoàn thành MCPD: Web Developer
  • 70-529 TS: Microsoft® .NET Framework 2.0 - Distributed Application Development
--> Hoàn thành MCTS: Distributed Applications
  • 70-549 PRO: Designing and Developing Enterprise Applications by Using the Microsoft® .NET Framework
--> Hoàn thành MCPD: Enterprise Applications Developer!

Tổng cộng thời gian tôi đã thi là 3 tuần, nhưng tôi biết có người đã thi cả 7 môn chỉ trong vòng 2 tuần với 4 môn có số điểm tuyệt đối 1000/1000 nên bạn không nên lo lắng mà hãy bắt tay vào thực hiện thôi


2. Luyện thi

Trước khi đi đến chi tiết từng môn, bài này tóm tắt việc ôn luyện sao cho hiệu quả.

Theo tôi thì bạn chỉ nên thi chứng chỉ khi đã làm qua và có kiến thức/kinh nghiệm khá tốt về lĩnh vực đó. Tuy nhiên với những người ít kinh nghiệm thì vẫn có thể đặt mục tiêu thi chứng chỉ để CV mình đẹp hơn, trong quá trình luyện thi bạn cũng sẽ bổ xung kiến thức và kỹ năng thực hành cho lĩnh vực đó. Hơn thế nữa việc thi đỗ và master kiến thức về công nghệ là 2 chuyện hoàn toàn khác nhau

Những người đã từng thi chứng chỉ MS mỗi người có một cách khác nhau. Nếu ôn luyện một cách nghiêm chỉnh để vừa nắm vững kiến thức, vừa thi đỗ bạn phải mất từ 2 tháng đến 6 tháng cho một môn thi.

Còn nếu ôn luyện chỉ để thi đỗ thì sao?

3h....vì thế việc thi 1 ngày 2 môn là hoàn toàn có thể

- Ôn luyện nghiêm chỉnh:
  • Kinh nghiệm về lý thuyết và thực hành với môn thi đó.
  • Học theo Microsoft Self-Paced Training Kit cho từng môn thi. Tùy theo từng môn, tài liệu này có thể từ 300 đến gần 1000 trang. Bạn đọc nắm vững hiểu và thực hành theo hết tài liệu thì có thể đảm bảo sẽ thi đỗ ngay.
  • Luyện tập thêm từ các tài liệu brain dumps khác: Test King, Pass4Sure,..
- Ôn luyện để thi đỗ: luyện theo Pass4Sure. Đây là loại tài liệu brain dumps, nôm la là những người thi chứng chỉ khác đã copy các câu hỏi của Microsoft và tập hợp lại. Do bộ đề của Microsoft thường không thay đổi, nên ôn luyện cách này chỉ việc nhớ câu hỏi và câu trả lời và vào phòng thi copy nguyên xi là xong.

Mọi người thường nghĩ tài liệu luyện chứng chỉ tốt nhất là Test King, tuy nhiên Test King cung cấp tài liệu dưới dạng pdf, tài liệu thường gồm hơn 200 câu hỏi và thường có rất nhiều câu hỏi trùng nhau nên việc học tập ôn luyện khá khó khăn.Ưu điểm duy nhất là có giải thích chi tiết theo kèm theo từng câu hỏi.

Pass4Sure được đánh giá là công chương trình ôn chứng chỉ hiệu quả nhất hiện nay. Đây là 1 ứng dụng windows viết trên Java tập hợp các đề thi của Microsoft. Với mỗi môn thường chỉ có 2 đề, mỗi đề gồm tối đa 45 câu hỏi kèm theo đáp án nên việc ôn luyện là chỉ cần nhớ 90 câu hỏi cùng với đáp án này.

Chú ý cách này chỉ áp dụng cho các chứng chỉ của .NET 2.0 ở đây, vì với các chứng chỉ mới hơn hiện tại Pass4Sure đã hợp tác với Microsoft để không cung cấp các đề thi của Microsoft nữa. Và thêm nữa là việc cung cấp hoặc lưu hành các tài liệu dạng này là vi phạm Term and Conditions của Microsoft (Take it at your own risks).

Nguồn tài liệu:

- Để học tập trao đổi kinh nghiệm về thi chứng chỉ của những người đi trước, bạn nên tham gia forum: www.sadikhov.com
- Để tìm tài liệu ôn thi chứng chỉ, theo tôi bạn nên tìm ở trang web chia sẻ file : http://www.4shared.com và sau đó tìm kiếm theo môn mình định thi, ví dụ tìm các tài liệu liên quan đến M70-536 bạn điền 70-536 và bấm nút Search files. Trang kết quả sẽ có rất nhiều tài liệu liên quan đến 70-536. Bạn có thể chọn tài liệu phù hợp từ đó để ôn luyện cho hiệu quả.
- http://www.examcollection.com/
- http://www.thiquocte.com/

3. Hướng dẫn thi M70-536: TS: Microsoft .NET Framework 2.0–Application Development Foundation

Đây là môn thi bắt buộc và quan trọng nhất trong hệ thống chứng chỉ MCTS, MCPD cho .NET Framework 2.0.

Địa chỉ download tài liệu:
  • Pass4Sure 70-536 v2.29:
  • Microsoft Self-Paced Training Kit:
Như đã viết ở bài trên, có 2 cách học: học để hiểu và nắm vững, cách thứ 2 là học để thi. Với mỗi môn này để hiểu hết và làm chủ kiến thức của mình bạn phải mất từ 3-6 tháng hoặc đến 1 năm vừa học vừa thực hành thực tế (bạn nên theo cách này) và bạn nên dùng tài liệu Microsoft Self-Paced Training Kit ở trên. Còn nếu mà chỉ để học và thi lấy chứng chỉ thì bạn có thể thậm chí không cần hiểu gì về môn này (không biết gì về IT) vẫn có thể thi đỗ chỉ với khoảng từ 3h đến 6h ôn tập cách này áp dụng với tài liệu Pass4Sure.

Let's start!
  • Download tài liệu Pass4Sure ở trên về.
  • Giải nén và chạy file "Interactive Test Engine-70-5362.29.exe". Chú ý chương trình này dùng Java Language Runtime, nên nếu máy bạn chưa có Java runtime thì phải cài Java Runtime trước, download Java Runtime tại đây. Màn hình đầu tiên chạy chương trình như sau:
  • Có 2 chế độ để bắt đầu, chế độ ôn tập (Practice Exam), và chế độ tập thi (Virtual Exam - như trong thi thật). Do bản Pass4Sure này có 6 bộ đề, cho cả 3 ngôn ngữ lập trình C#, C++ .NET và VB.NET nên nếu dùng chế độ ôn tập thì sẽ phải ôn qua 264 câu hỏi, tuy nhiên chỉ cần ôn tập khoảng 90 câu hỏi cho mỗi ngôn ngữ lập trình mình chọn là đủ, vì vậy nếu dùng chế độ Practice Exam sẽ tốn thời gian. Hãy bắt đầu với chế độ thi thử bằng cách bấm Virtual Exam.
    • Trên màn hình đầu tiên hiện ra, cho phép chọn bộ đề sẽ thi. Mỗi ngôn ngữ lập trình chỉ có 2 bộ đề:
      • Nếu bạn quen dùng C# hơn, dùng bộ đề A và D
      • Nếu bạn quen dùng VB.NET, dùng bộ đề C và F
      • Còn 2 bộ đề B và E dùng cho C++ .NET
    • Sau khi chọn bộ đề, để các tùy chọn khác theo giá trị mặc định và click vào Start Virtual Exam.
  • Với mỗi câu hỏi, bạn tự suy nghĩ và điền câu trả lời cho mình, cho đến hết 45 câu hỏi của bộ đề. Nếu câu hỏi nào chưa chắc bạn có thể click vào "Mark For Review" để sau đó xem lại, câu hỏi nào chưa trả lời được thì bạn cứ đoán kết quả và chọn một trong các lựa chọn. Để sau khi kết thúc bạn có thể so sánh kết quả mình đoán và đáp án của chương trình.
  • Sau khi trả lời hết 45 câu hỏi, trên màn hình cuối cùng bạn có thể xem lại tất cả các câu hỏi và câu trả lời mình đã chọn:
  • Sau đó click vào End Exam để hiện lên kết quả, xem bạn có đủ điểm thi đỗ hay chưa. Trong bài thi thật, bạn cần 70% câu trả lời đúng để thi đỗ, tức là 700/1000 điểm. Trên màn hình tiếp theo sẽ hiện lên điểm số cho bài thi của bạn. Bước tiếp theo rất quan trọng là bạn chú ý xem câu hỏi nào mình trả lời sai để vào xem (và ghi nhớ!) đáp án.
  • Để xem đáp án bạn click vào "Review Exam" ở màn hình trên để xem lại lần lượt từng câu.
  • Làm lại các bước trên với bộ đề thứ 2.
  • Sau đó bạn có thể dùng chế độ "Practice Exam" để ôn lại và làm đi làm lại cho đến khi thi thử đạt khoảng trên 800 điểm là đảm bảo thi đỗ.
  • Chú ý: Các câu trả lời trong đề thi thật có thứ tự và nội dung giống hệt bộ đề ở đây, nên bạn chọn cách nào miễn là nhớ được đáp án khi đi thi thật sẽ đảm bảo pass thôi.
Lời cuối cùng: hướng dẫn này nên xem như tài liệu bổ xung kiến thức giúp bạn tự tin hơn khi thi chứng chỉ. Cách này không được khuyến khích, để thực sự nắm vững kiến thức của phần này bạn nên dành thời gian để nghiên cứu các tài liệu về công nghệ của Microsoft và thực hành trên thực tế. Vì nếu thi đỗ chứng chỉ mà khi đi phỏng vấn hoặc làm việc mà không nắm được kiến thức thì cũng không có tác dụng gì.

4. Hướng dẫn thi M70- 528 -TS: Microsoft .NET Framework 2.0 – Web-Based Client Development.

Để đọc chi tiết cách thi và hướng dẫn sử dụng tài liệu xin bạn vui lòng tham khảo bài số 1 đến số 3.
  • Địa chỉ download Pass4Sure cho M70-288:
5. Hướng dẫn thi M70-526: TS: Microsoft .NET Framework – Application Development Foundation.

Để đọc chi tiết cách thi và hướng dẫn sử dụng tài liệu xin bạn vui lòng tham khảo bài số 1 đến số 3.
  • Địa chỉ download Pass4Sure 2.29 cho M70-526:
6. Hướng dẫn thi M70-529: TS: Microsoft .NET Framework 2.0 – Distributed Application Development.

Để đọc chi tiết cách thi và hướng dẫn sử dụng tài liệu xin bạn vui lòng tham khảo bài số
7. Hướng dẫn thi M70-547: PRO: Designing and Developing Web Applications by Using the Microsoft .NET Framework.

Để đọc chi tiết cách thi và hướng dẫn sử dụng tài liệu xin bạn vui lòng tham khảo bài trước.
  • Địa chỉ download Pass4Sure 2.29 cho M70-547:
8. Hướng dẫn thi 70-548: PRO: Designing and Developing Windows Applications by Using the Microsoft .NET Framework.

Địa chỉ download Pass4Sure 2.29 cho M70-548:
9. Hướng dẫn thi 70-549: PRO: Designing and Developing Enterprise Applications by Using the Microsoft .NET Framework

Hệ thống chứng chỉ của Microsoft

+MCTS
Microsoft Certified Technology Specialist (MCTS) - Chứng nhận cho phép những chuyên gia có trình độ kiến thức và sự thành thạo trong một số lĩnh vực công nghệ khác nhau của Microsoft.

+MCITP
The Microsoft Certified IT Professional (MCITP) - Chuyên gia IT: chứng nhận những kỹ năng trong lập kế hoạch, triển khai, hỗ trợ, bảo trì và tối ưu những cơ sở hạ tầng IT.

+MCPD
The Microsoft Certified Professional Developer (MCPD) - Chuyên gia phát triển: giấy uỷ nhiệm phân biệt bạn với một chuyên gia phát triển ứng dụng Windows, Chuyên gia phát triển ứng dụng web hay nhà phát triển ứng dụng. Sự uỷ nhiệm này chứng tỏ rằng bạn có thể xây dựng những ứng dụng phong phú sử dụng Microsoft .NET Framework 2.0.

+Microsoft Certified Architect Program - Kiến trúc sư chương trình: mục tiêu phấn đấu thực các giải pháp trong thực hành kiến trúc và cơ sở hạ tầng kiến trúc những người ứng dụng thành công những Framework và phương pháp để tạo một công trình qua toàn bộ vòng đời IT.

+MCDST
Microsoft Certified Desktop Support Technicians (MCDSTs) - Chuyên viên hỗ trợ kỹ thuật Desktop: có chuyên môn và kỹ năng chăm sóc khách hàng để giải quyết khắc phục sự cố phần cứng và phần mềm phát sinh quanh Microsoft Windows.

+MCLC
The Microsoft Certified Learning Consultant (MCLC) - Cố vấn tri thức: đã được công nhận là những MCTs những người mà vai trò của họ là tư vấn cho khách hàng. Những MCTs này là những chuyên gia trong lĩnh vực thiết kế và chuyển giao những giải pháp tuỳ biến theo yêu cầu khách hàng.

+MCSA
Microsoft Certified Systems Administrators (MCSAs) - Quản trị hệ thống: quản lý mạng và những hệ thống dựa trên những hệ điều hành Microsoft Windows. Bao gồm 2 chuyên môn: Messaging và Security.

+MCSE
Microsoft Certified Systems Engineers (MCSEs) - Kỹ sư hệ thống: thiết kế và thực hiện một cơ sở hạ tầng giải pháp dựa trên hệ điều hành Windows và hệ thống phần mềm Microsoft Windows Server. Bao gồm hai chuyên môn:Messaging (hệ thống thư điện tử ) và Security(chuyên sâu về bảo mật).

+MCDBA
Microsoft Certified Database Administrators (MCDBAs) - Quản trị cơ sở dữ liệu: thiết kế, thực hiện và quản lý cơ sở dữ liệu Microsoft SQL Server.
+MCT
Microsoft Certified Trainers (MCTs) là những giảng viên đủ tiêu chuẩn - những người mà được chứng nhận bởi Microsoft để chuyển giao những khoá học của Microsoft tới những chuyên viên và những nhà phát triển.
+MCAD
Microsoft Certified Application Developers (MCADs) – Chuyên viên phát triển ứng dụng Microssoft: sử dụng các công nghệ Microsoft để phát triển và bảo trì những ứng dụng, thành phần, web hoặc dịch vụ dữ liệu đầu cuối.

+MCSD
Microsoft Certified Solution Developers (MCSDs) - Chuyên gia phát triển giải pháp. Thiết kế và phát triển những giải pháp thương mại hàng đầu với những công cụ phát triển, công nghệ, nền tảng và kiến trúc của Microsoft Windows.

+Microsoft Office Specialist
(Office Specialists) - chuyên viên văn phòng là sự thừa nhận một cách toàn diện về kỹ năng với những phần mềm của Microsoft.

Để tìm hiểu thêm thông tin chi tiết về hệ thống chứng chỉ của Microsoft bạn có thể truy cập trang web này.

Thông tin về một số chứng chỉ

Tham khảo thêm tại trang web Microsoft Learning Certificaiton
Các khóa học của Microsoft có tổng cộng 12 kỳ thi chia làm bốn nhóm (xem bảng). Thí sinh thi đậu một trong 12 kỳ thi này sẽ được cấp chứng chỉ MCP (Microsoft Certified Professional). Để được công nhận là nhà phát triển các ứng dụng của Microsoft - chứng chỉ MCAD - thí sinh phải đậu ba kỳ thi : Phát triển web hoặc Windows, các dịch vụ web và một trong năm kỳ thi tự chọn. Với chứng chỉ này, thí sinh có khả năng xây dựng, kiểm tra, triển khai và bảo trì các ứng dụng. Tuy nhiên, để có thêm kỹ năng phân tích và thiết kế hệ thống, thí sinh phải đạt được chứng chỉ MCSD với năm kỳ thi : Phát triển web, phát triển Windows, các dịch vụ web, kiến trúc giải pháp và một trong năm kỳ thi tự chọn.

Tất cả các bài thi đều làm trực tuyến và có kết quả ngay. Nội dung gồm các tình huống thực tế với những câu hỏi trắc nghiệm có nhiều chọn lựa trả lời (multiple-choice question). Pearson VUE (http://www.vue.com) và Prometric (http://www.prometric.com) là hai tổ chức nhận đăng ký thi các chứng chỉ của Microsoft.

Các chứng chỉ của Microsoft

Mã số
Nội dung

Phát triển ứng dụng web hoặc Windows
70-305 Phát triển và thực hiện các ứng dụng web với Visual Basic.Net và Visual Studio .Net
70-306 Phát triển và thực hiện các ứng dụng trên nền Windows với Visual Basic .Net và Visual Studio .Net
70-315 Phát triển và thực hiện các ứng dụng web với Visual C# . Net và Visual Studio .Net
70-316 Phát triển và thực hiện các ứng dụng trên nền Windows với Visual C# Net và Visual Studio .Net

Phát triển các thành phần máy chủ và các dịch vụ web XML
70-310 Phát triển các dịch vụ web XML và các thành phần máy chủ với Visual Basic .Net và .Net Framework
70-320 Phát triển các dịch vụ web XML và các thành phần máy chủ với Visual C# và .Net Framework

Kiến trúc giải pháp
70-300 Phân tích các yêu cầu và xác định những kiến trúc giải pháp dùng Net

Các môn tự chọn
70-229 Thiết kế và thực hiện cơ sở dữ liệu với SQL Server 2000 (phiên bản dùng cho doanh nghiệp)
70-230 Thiết kế và thực hiện các giải pháp với Biztalk Server 2000 (phiên bản dùng cho doanh nghiệp)
70-234 Thiết kế và thực hiện các giải pháp với Commerce Server 2000
70-330 Bảo mật các ứng dụng với Visual Basic .Net
70-340 Bảo mật các ứng dụng với Visual C# .Net

Trong hệ thống chứng chỉ của công nghệ .NET thì exam 70-536 là 1 exam nền. Bạn muốn lấy bất cứ chứng chỉ nào đều phải có đều kiện tiên quyết là đã passed 70-536.

Saturday, October 24, 2009

Bạn cần ngôn ngữ lập trình nào ?

Bạn cần ngôn ngữ lập trình nào?

Hiện nay, số người quen với máy tính, với việc lập trình ngày một nhiều, PC đã trở nên phổ biến. Nhu cầu được giao tiếp với thế giới bên trong máy tính không chỉ là một sở thích, hay công việc riêng tư của những người làm tin học nữa. Chỉ với vốn tiếng Anh tương đối, một chút trợ giúp là bạn đã có thể trở thành một nhà lập trình rồi, thế nhưng đó chỉ là các điều kiện cần mà chưa đủ. Số lượng trình biên dịch, chủng loại, tính năng ngày một phong phú, để chọn cho mình một ngôn ngữ lập trình, một trình biên dịch phù hợp với công việc chuyên môn cũng như nhu cầu học tập, nghiên cứu, bạn không thể không khỏi có những đắn đo. Những gì sau đây có thể giúp ích cho bạn ?

Để có cho mình một công cụ lập trình phù hợp về cả trình độ lẫn nhu cầu, bạn cần xác định xem bạn sẽ dùng nó để làm gì; tìm hiểu thế giới bên trong máy tính, chỉ để học thêm một ngôn ngữ lập trình mới nhằm phục vụ cho quá trình học tập, hay đó là một lựa chọn cho một hướng phát triển phần mềm chuyên nghiệp ? Hơn thế nữa bạn còn cần phải định hướng rõ ràng; môi trường thực hiện sẽ là môi trường phân tán hay môi trường cục bộ ? Có thể là hơi rắc rối nhưng những suy tính ban đầu này sẽ có ảnh hưởng rất nhiều tới các bước đi sau này.

Những người có ham muốn tìm hiểu sâu thế giới bên trong máy tính thường lấy hợp ngữ (Assembly) làm công cụ, có thể nói đây là thứ ngôn ngữ đầu tiên tương đối độc lập đối với các quá trình thực xảy ra trong các bộ vi xử lý. Qua một tập hữu hạn các lệnh được nhận biết nhờ các từ gợi nhớ sơ đẳng, người lập trình có thể trực tiếp can thiệp vào quá trình di chuyển dữ liệu, sửa đổi dữ liệu, điều khiển thiết bị... Công việc còn lại của trình dịch Assembler rất ít, phần lớn nhiệm vụ của nó là ánh xạ các lệnh gợi nhớ trong chương trình nguồn tới một tập cố định các lệnh của bộ vi xử lý, một số thao tác xử lý macro.

Để có được một chương trình hoàn chỉnh, người lập trình sẽ phải tìm hiểu thấu đáo tập lệnh, vì số lệnh, các chi tiết kỹ thuật cho tập lệnh có thể rất khác nhau giữa các bộ vi xử lý; định hình rõ ràng trình tự các thao tác; khả năng mà trình dịch có thể làm được; và nhất là xác định mức độ cần thiết của các thủ thuật lập trình. Chẳng hạn, trong khi các bộ vi xử lý dòng Intel (x86 phổ dụng trong các máy PC) thường có khoảng 8 thanh ghi đa năng, 6 thanh ghi đoạn, một thanh ghi con trỏ lệnh, cờ... thì các bộ vi xử lý dòng Motorola (MC680x0 phổ dụng trong các máy MacIntosh, các máy trạm của Sun, trong các hệ thống máy tính nhiều bộ vi xử lý, và trong rất nhiều máy PC) thì lại có tới khoảng 8 thanh ghi dữ liệu 80 bit, khoảng ngần ấy số thanh ghi địa chỉ cùng hàng tá thanh ghi với rất nhiều công dụng khác nhau, chế độ làm việc khác nhau.

Chính vì tính chỉ định phần cứng cao như vậy mà hiệu quả làm việc của một người thông qua hợp ngữ phụ thuộc rất nhiều vào kinh nghiệm làm việc, theo đó các chương trình này rất khó bảo trì, khó kiểm soát khi số thao tác của chương trình tăng, và đôi khi còn khó hiểu đối với chính người viết ra nó nếu không có các văn bản bảo trì được ghi chép cẩn thận. Nhưng bù lại, các chương trình thực hiện bằng hợp ngữ nói chung thường có kích thước rất khiêm tốn, chạy nhanh nhất tính trên cùng một trình tự thao tác cụ thể so với các ngôn ngữ khác.

Basic vốn là một ngôn ngữ phi cấu trúc, nó được phát triển để giúp người lập trình đỡ phần vất vả khi làm việc trên các bộ vi xử lý khác nhau. Với nó, người lập trình không phải lo lắng nhiều về sự khác nhau trong chi tiết kỹ thuật của từng bộ vi xử lý cụ thể, họ chỉ cần bận tâm tới việc cấu trúc sao cho chương trình của họ được tối ưu. Để có được tính khả chuyển trên nhiều loại vi xử lý, các chương trình Basic cần có một chương trình thông dịch để kích hoạt, trình thông dịch này có nhiệm vụ ánh xạ mã đầu ra của trình dịch Basic vào tập lệnh cụ thể của bộ vi xử lý khi chạy chương trình. Người ta đã từng đưa trình thông dịch này vào trong phần cứng, lưu trữ lâu dài trong các bộ nhớ chỉ đọc (ROM), và cung cấp các khả năng tương tác tương đối thuận tiện, giúp người lập trình thiết kế và gỡ rối nhanh chóng các chương trình Basic.

Ngày nay, Basic đã được cải tiến nhiều, về cả trình dịch lẫn bản thân ngôn ngữ, các ứng dụng của Microsoft thường dùng Basic như một công cụ để người sử dụng tuỳ biến chúng theo nhu cầu. Vì chạy thông dịch cho nên các ứng dụng viết bằng Basic chạy không nhanh, nhưng vì tính phổ cập, rất nhiều nhà phát triển công cụ vẫn hỗ trợ nó. Sản phẩm hỗ trợ Basic ở mức cao được nói đến ở đây là Visual Basic của Microsoft. Đây là một công cụ phát triển được Công ty này rất ưu ái, hiện nó đang được ưu chuộng trong lĩnh vực phát triển ứng dụng trên Windows. Visual Basic được hỗ trợ rất nhiều khả năng về cơ sở dữ liệu, các kỹ thuật phát triển phần mềm mới như OLE, COM, DCOM...

Nếu như bạn chưa có ý định trở thành nhà phát triển phần mềm ứng dụng thì cũng nên biết tới Basic, bởi vì hầu hết các ứng dụng lớn ngày này như Notes, bao gồm cả các phần mềm xử lý bảng tính, văn bản của Mirosoft đều có sử dụng macro lệnh được thiết kế dựa trên Basic, cho phép người sử dụng sửa đổi, bổ sung các tính năng mới theo nhu cầu.

Thế rồi phải nói tới Pascal, có thể nói đây là thứ ngôn ngữ vỡ lòng cho hầu hết những người bắt đầu tiếp xúc với máy tính. Nó được biết tới không chỉ vì là một trong số các ngôn ngữ cấu trúc ra đời đầu tiên trên thế giới, mà còn là vì tính dễ đọc, dễ tiếp cận của nó. Nếu bạn biết tiếng Anh, không nhất thiết phải biết về tin học, khi đọc một chương trình viết trong ngôn ngữ này bạn sẽ thấy ngay về cơ bản nó đang nói về một quá trình làm việc nào đó.

Với thứ ngôn ngữ này, người lập trình khỏi phải đau đầu vì phải tổ chức lấy chương trình, thay vào đó họ sẽ dùng các câu lệnh tiếng Anh rất dễ nhớ, dễ sử dụng. Việc xây dựng một chương trình rất giống với việc mô phỏng một quá trình hoạt động, có đầu ra đầu vào, mã nguồn của một chương trình như thế rất dễ đọc, dễ sửa đổi. Tất nhiên, trình dịch sẽ phải làm việc vất vả hơn bởi nó phải phân giải cả một dãy lệnh vốn chỉ dễ hiểu đối với con người nhưng lại... không thể hiểu nổi đối với các bộ vi xử lý. Hầu hết các ngôn ngữ lập trình cấu trúc (tất nhiên trong đó có Pascal) đều lấy việc dịch sang hợp ngữ làm một bước trung gian, theo đó các cấu trúc lệnh if...then, case...of, v.v. được chuyển thành các khối mã nguồn Assembly. Tóm lại, việc cấu trúc chi tiết cho một chương trình cụ thể được thực hiện tự động bởi trình dịch, lúc này các thủ thuật lập trình Assembly của người lập trình không còn có thể áp dụng vào đây, đôi khi nó còn máy móc làm phình to mã cho dù đã sử dụng tới cả chục thuật toán tối ưu.

Hầu hết các công cụ phát triển có hỗ trợ Pascal ngày nay đều đưa ra các khả năng kết nối mới cho nó, mã trình có thể được viết riêng rẽ trên nhiều tệp rồi kết nối, hoặc được nạp từ thư viện động... nhưng nói chung, đây là ngôn ngữ chỉ phù hợp với các ứng dụng nhỏ và trung bình, phổ dụng trong lĩnh vực đào tạo. Nếu bạn là người mới tiếp xúc với máy tính, muốn tìm hiểu cách hoạt động của một chương trình thì bạn hãy chọn ngôn ngữ này.

Delphi của Borland chỉ là một công cụ phát triển ứng dụng, nó được xây dựng bằng lõi Pascal. Với công cụ này, sau một vài tiếng đồng hồ đọc help, nhất là có ai đó hướng dẫn đôi chút, bạn hoàn toàn có thể tự viết cho mình các ứng dụng đơn giản như trình xem tệp .AVI, nghe nhạc, các thao tác tính toán, lưu trữ đơn giản... Nó tỏ ra rất thích hợp với những bạn thích khám phá nhưng không muốn tốn quá nhiều thời gian nghiền ngẫm.

Ngôn ngữ C là ngôn ngữ lập trình cấu trúc như Pascal và là thứ công cụ mạnh đã từng được sử dụng để thiết kế hầu hết các hệ điều hành trên thế giới. Các hệ điều hành như UNIX, AMOEBA... đều thực thi bằng C, và nói chung đây là thứ ngôn ngữ có tính khả chuyển tương đối cao cho nên các hệ điều hành này có thể chạy trên rất nhiều phần cứng khác nhau, ngay cả với WINDOWS cũng vậy, rất nhiều module của nó cũng được xây dựng bằng C.

C++ là một bước phát triển tiếp theo của C trong xu thế 'đối tượng hoá' ngôn ngữ, nói như vậy là bởi hầu hết các trình dịch C++ đều lấy C làm nền cho tất cả các định hướng nhằm tận dụng các ưu thế mà mô hình thiết kế hướng đối tượng mang lại. Vốn dĩ C vẫn chưa được chuẩn hoá mặc cho rất nhiều cố gắng đã được đưa ra, các trình dịch C++ lại càng khó tìm được tiếng nói chung. Các nhà cung cấp trình dịch C đều muốn rằng sản phẩm của họ được các nhà phát triển công cụ ưa dùng, thế nhưng các nhà cung cấp công cụ phát triển lại muốn các trình dịch hướng theo mô hình thiết kế vốn muôn hình muôn vẻ mà họ đưa ra. Cứ như thế, C++ phát triển trong sự thiếu nhất quán, hệ thống từ khoá không được hỗ trợ đầy đủ, đôi khi không thống nhất, cách cấu trúc chương trình cũng không giống nhau mặc dù chúng giống nhau về mô hình.

Ngày nay, hầu hết các công cụ phát triển hệ thống mạnh như Visual C++, C++Builder, Visual Age... đều hỗ trợ song song cả C lẫn C++. Nói chung đây là các công cụ mạnh, thể hiện được ưu thế của chúng trong từng môi trường phát triển cụ thể; ví dụ Visual C++ thích hợp với những người muốn phát triển các ứng dụng nhất là các ứng dụng gắn với Windows, C++Builder thân thiện ngay cả với những người không nhiều kinh nghiệm trong lĩnh vực lập trình, ... Để tìm cho mình một trình dịch C++ phù hợp hãy lựa chọn; chẳng hạn, nếu bạn cần hướng theo việc xây dựng các ứng dụng phục vụ, có liên quan tới các dịch vụ chuẩn của Windows, không nhất thiết phải có màn hình giao tiếp phức tạp, hoặc cần có các ứng dụng can thiệp sâu vào hệ thống... bạn hãy lựa chọn Visual C++. Công cụ này đưa ra khá nhiều mẫu (wizard), theo khung định sẵn đó bạn chỉ cần thực thi các chi tiết là đã có một ứng dụng hoàn chỉnh rồi. Còn nếu bạn không đủ thời gian cần thiết để nghiền ngẫm cả đống các văn bản công bố từ Microsoft, mà lại muốn có các ứng dụng mang tính bề mặt, nhanh, đầy tính tương tác, bạn hãy sử dụng C++Builder hay một số sản phẩm tương tự từ IBM, Symantec...

Java là ngôn ngữ thế hệ mới, thế hệ năm, nó kế thừa hầu hết những 'tư chất' tốt đẹp của các bậc tiền bối, hướng đối tượng từ mô hình thiết kế tới mô hình thực thi, hỗ trợ đa luồng một cách rất tinh tế, độ tin cậy cao, tính khả chuyển tuyệt vời... Java nay không còn là một cơn sốt bình thường, nó là một xu thế song song tồn tại với các mô hình lập trình hiện có, ngày càng nhiều lĩnh vực mà nó có mặt. Ban đầu, mục tiêu của các nhà thiết kế của ngôn ngữ này là "Web đi tới đâu, Java đi tới đó", nay thì sao, nó đang len lỏi vào cả các hệ thống đầy tính thương mại như các hệ quản trị dữ liệu của ORACLE, rồi cả các hệ thống phục vụ cực lớn... Với phiên bản 2, từ tên ấn bản JDK được đổi thành SDK, Sun dần lộ rõ những ham muốn rất lớn lao trong việc đưa Java vào đời sống tin học của mọi người trên thế giới.

Java là ngôn ngữ mạnh, về cả mô hình thiết kế lẫn tính năng. Nếu bạn muốn thiết kế các trang Web sống động, bạn hãy chọn nó, một khối mã .CLASS vài KB có thể làm được nhiều điều hơn cả 100KB ảnh, nó là giải pháp cho một đường truyền tốc độ thấp. Nếu bạn muốn thiết kế các chương trình phân tán, Java là một lựa chọn tốt, nó có một lượng thư viện mạng được tổ chức hợp lý, thân thiện với người lập trình. Với nó bạn có thể tự thiết kế lấy các giao thức (ngay cả các giao thức lạ lẫm chưa từng được nhắc tới trong RFC), các ứng dụng phục vụ, và các ứng dụng sử dụng dịch vụ... mà không đòi hỏi mất quá nhiều thời gian tìm hiểu hệ thống, tìm kiếm các công bố kỹ thuật. Nếu bạn cần viết các ứng dụng mà mã của chúng có thể được sử dụng lại một cách linh hoạt, trên nhiều loại phần cứng, tốn ít thời gian bảo trì...và hợp 'thời' nhất, bạn cũng nên chọn Java. Với các ngôn ngữ khác, việc sử dụng lại mã rất khó, ví dụ bạn đã có một tệp .dll, cùng với hàng tá chi tiết kỹ thuật kèm theo bạn cũng rất khó sử dụng lượng thư viện có trong đó, đấy là chưa tính tới việc mã thư viện động này chỉ có thể sử dụng được trên các hệ thống Windows. Với Java thì lại khác, mô hình thiết kế của nó cho phép mã của mỗi lớp được gói trong một tệp .CLASS riêng, được kiểm soát trong không gian tên bởi hệ thống chạy Java, và được nạp một cách tường minh mỗi khi chương trình cần tới các hành vi của chúng. Có thể xem môi trường chạy Java lúc này là một cái giỏ táo, mỗi quả táo là một đối tượng, vết kích hoạt của một chương trình Java rất giống như lối của các con sâu, đục xuyên từ quả này sang quả khác... ứng với một con sâu, chương trình có một luồng kích hoạt, nhiều con sâu ứng với một chương trình Java đa luồng (multithread).

Môi trường kích hoạt Java có xu hướng phân tán, các đối tượng kích hoạt có thể không cùng nằm trên một máy duy nhất, theo đó nó có thể nằm rảI rác đâu đó trên mạng, chúng 'liên kết' với nhau để hình thành một chương trình thông qua mạng... Thế nhưng, khi các ưu thế trên không có trong định hướng của bạn về một công cụ lập trình, bạn đừng nên sử dụng nó. Thứ nhất, Java chạy thông dịch, tốc độ chậm dù đã được cải thiện nhờ cơ chế dịch JIT (một cơ chế nhận biết để ánh xạ một cách thông minh khối mã đầu vào cần thông dịch và khối mã đầu ra cần kích hoạt nhằm tiết kiệm thời gian dịch), và dù có mong đợi thế nào thì Java vẫn sẽ chạy thông dịch. Thứ hai, bản thân ngôn ngữ này đang trong thời gian hoàn thiện; hoàn thiện về hệ thống từ khoá, hoàn thiện về cách tổ chức máy ảo, hoàn thiện về thư viện...