1122
|
thanhleminh.myopenid.com Updated over 2 years ago |
Đó là một tiêu đề gây sự chú ý! Nhưng tôi hoàn toàn nghiêm túc về điều này!
Đầu tiên, các bạn nên biết một ít về tôi: nghiên cứu tiến sĩ của tôi là một trong những công trình nghiên cứu về sự tự động của việc tối ưu trình dịch dựa vào các đặc tả hình thức ("Machine-Independent Generation of Optimal Local Code" - Viện khoa học máy tính CMU, 1975). Sau công trình này, tôi đã nghiên cứu 3 năm ở CMU về hệ thống máy tính đa xử lí C.mmp sử dụng hệ điều hành Hydra của chúng tôi, một hệ điều hành bảo mật, năng suất. Sau đó tôi trở lại nghiên cứu trình biên dịch trong dự án PQCC (Production Quality Compiler-Compiler - Hệ thống trình biên dịch năng suất chất lượng ), sau cùng dự án này đã trở thành Phòng thí nghiệm Tartan, một công ty biên dịch, nơi mà tôi đã tham gia vào nhóm xây dựng công cụ. Tôi đã bỏ gần một thập kỷ rưỡi viết và sử dụng các công cụ tính toán năng suất lập trình.Bài luận này gồm nhiều phần và trình bày chủ yếu kinh nghiệm của riêng tôi. Tất cả những câu chuyện tôi kể đều đúng. Tên tuổi trong bài cũng không bị thay đổi, mặc dù có một vài chi tiết đã được lược bỏ cẩn thận.
2750
phananhvu.myopenid.com 125Over 2 years ago |
Trong một thảo luận về kế thừa không hết ở JavaVietnam, người ta bàn về vấn đề thiết kế một pattern làm sao để lớp con kế thừa lớp cha nhưng tự loại bỏ những method mà nó không mong muốn. Điều đó có nghĩa là lớp con không tuân thủ "giao ước" (xin dùng từ của anh cl, ý chỉ contract) định trước, tức là nó không tuân thủ một trong những nguyên tắc cơ bản của thiết kế hướng đối tượng (OOD - Object oriented design) là Liscov substitution principle. Điều đó cho thấy khi thiết kế, tìm giải pháp cho một vấn đề nào đó, việc nắm rõ các nguyên lí cơ bản của OOD là vô cùng quan trọng.
Bài này xin giới thiệu về 5 nguyên tắc cơ bản của OOD là:
755
|
thanhleminh.myopenid.com Updated over 2 years ago |
Chúng tôi có giới thiệu về một khái niệm mà tôi gọi là "the gap" vào tháng trước:
Product <------------------------->Customer.
"Gap" chính là khoảng cách giữa khách hàng và sản phẩm của cty bạn. nó tồn tại, thì khi đó khách hàng sẽ ít mua sản phẩm công ty bạn hơn, và tất nhiên doanh thu của công ty bạn sẽ kém đi.
Trong qui luật kinh doanh để tồn tại, cái "gap" này phải được giải quyết triệt để. Đến khi nó xảy ra, "gap" mô tả tất cả các bản phát hành và những trở ngại ngăn cản khách hàng mua sản phẩm.
835
phananhvu.myopenid.com 125Over 2 years ago |
Direct3D là API độc quyền, được thiết kế bởi Microsoft Corporation để tăng tốc xử lí đồ họa 3D trong môi trường Windows. OpenGL là một API theo chuẩn mở, cung cấp các hàm hiển thị hình ảnh 2D, 3D trong hầu hết các hệ điều hành hiện đại. OpenGL và Direct3D đều được implemente ở driver màn hình.
Bài này so sánh hai API kể trên dựa trên các tiêu chí liên quan đến phát triển game.
1171
|
thanhleminh.myopenid.com Updated over 2 years ago |
Điều rất thú vị về Python: sau FORTRAN được viết trên thẻ đục lỗ, nó là ngôn ngữ phổ biến đầu tiên làm cho khoảng trắng có ý nghĩa. Trong Python, khối lệnh không nằm trong ngoặc nhọn { và }, mà chỉ đơn giản là thụt đầu dòng.
Nhiều người thốt lên: "Khoảng trắng không được có ý nghĩa!", nhưng họ không nhớ tại sao. Lí do chính là bạn khó phân biệt được khoảng trắng, bởi vì, um, nó trắng. Do đó, trong makefile của Unix chuẩn, một số dòng phải bắt đầu bằng tab, nếu bạn hoặc editor của bạn tự động thay 1 tab bằng 8 khoảng trắng (tiện quá nhỉ!), thì makefile sẽ tự nhiên không hoạt động nữa mà không báo lỗi. Và chúng ta rút ra bài học: khoảng trắng không được có ý nghĩa!
Ừ, thế đấy.
Hình như ta đi quá xa.
Và đây là cái hay của Python.
Trong những ngôn ngữ giống C (C, C++, Java) mắt người phân biệt khối lệnh bằng thụt đầu dòng, nhưng trình biên dịch phân biệt bằng { và }. Do đó trong trường hợp thụt đầu dòng và ngoặc nhọn không đi đôi với nhau, cái mắt người khó nhìn thấy hơn --ngoặc nhọn-- thắng thế. Nhưng tại sao chúng ta cần 2 cách để xác định khối lệnh, một cho người và một cho trình biên dịch? Tại sao không dùng một cách thôi?
Ken Arnold phát triển ý tưởng này từ Python. Ông đưa ra thứ còn cấp tiến hơn, và nó giống như những tư tưởng lớn, nghe có vẻ điên rồ nhưng lại cực kì hợp lí.
1423
phananhvu.myopenid.com 125Updated over 2 years ago |
Trong quyển sách Beyond Java, xuất bản vài năm trước có đoạn:
Java has characteristics that many of us take for granted. You can find good Java developers everywhere. No one ever gets fired for choosing Java. It's mature and ready for outsourcing.
Tại sao lại nói Java là "ready for outsourcing"? Ý nghĩa sâu xa của câu này là gì? Chúng ta thử tìm hiểu xem sao.
phananhvu.myopenid.com 125over 2 years ago |
3719
phananhvu.myopenid.com 125Over 2 years ago |
Trong kỹ thuật phần mềm(software engineering), design pattern là giải pháp tổng quát có thể dùng lại cho các vấn đề phổ biến trong thiết kế phần mềm. Design pattern không phải là design cuối cùng có thể dùng để chuyển thành code. Nó chỉ là các gợi ý, mẫu mà chỉ ra cách giải quyết vấn đề trong các trường hợp. Các design pattern trong thiết kế hướng đối tượng thường chỉ ra mối quan hệ và tương tác giữa các lớp hay các đối tượng, chứ không chỉ ra các lớp, đối tượng cụ thể nào. Thuật toán không phải design patterns vì chúng chỉ qiải quyết các vấn đề tính toán chứ không giải quyết các vấn đề thiết kế.
915
phananhvu.myopenid.com 125Over 2 years ago |
Trong Singleton, chỉ có một instance của class tồn tại ở một thời điểm. Instance đó có thể được truy xuất ở bất cứ đâu trong chương trình. Đây là một design pattern rất hữu dụng trong một số trường hợp. Tuy nhiên, khi dùng phải chú vài điều. Hơn nữa, Singleton là design pattern được sử dụng khá nhiều trong các "manager" class của Ogre3D.
Bài này xin giới thiệu về Singleton nói chung và về cách Singleton được sử dụng trong Ogre3D.
767
phananhvu.myopenid.com 125Over 2 years ago |
The Cathedral and the Bazaar (viết tắt là CatB) là một tiểu luận của Eric S. Raymond về chủ đề software engineering, dựa trên quan sát quá trình phát triển Linux kernel và kinh nghiệm quản lý open source project, fetchmail. Được giới thiệu lần đầu tiên tại Linux Kongress ngày May 27, 1997 và được xuất bản trong cuốn sách cùng tên năm 1999, đây được coi là tuyên ngôn của Open Source Initiative.
Bài luận so sánh 2 mô hình phát triển các phần mềm tự do (free software):
699
|
id.cntt.tv/giaodn Updated over 3 years ago |
Ruby có một số triết lí rất hay, ví dụ DRY. Chủ đề này xin đề cập đến triết lí “Tất cả đều là object”, các lập trình viên đến từ những ngôn ngữ như C hoặc Java hầu hết chưa thấu hết ý nghĩa.
myown.myopenid.com 9over 3 years ago |
over 2 years ago