Tổng số lượt xem trang

Thứ Năm, 21 tháng 1, 2016

WARNIER - Giới thiệu

22/1/2016

Ngày 25/12/2015, OGT đã cho phát hành tập sách Phương pháp WARNIER theo dạng ebook, bởi NXB Trẽ. Nhận thấy kỹ sư tin học đào tạo tại VN từ 1985 đến nay không biết viết chương trình, nên OGT đã soạn ra tập sách này, với mong muốn là kỹ sư tin học tự mình đào tạo đề có kỹ năng này. Dưới đây là bài giới thiệu.

Lời  giới  thiệu

(1992)

Tập sách này được soạn thảo dùng làm giáo trình đào tạo thảo chương viên vi tính tại Văn phòng Dịch vụ Điện toán SAMIS. Mục đích tập sách này là giới thiệu một phương pháp thảo chương mới, tạm gọi là phương pháp WARNIER, mà chúng tôi cho đem ứng dụng vào ngôn ngữ dBase/FoxBase, khá thịnh hành trong giới thảo chương trên máy vi tính ứng dụng vào quản lý kinh tế.

Trước tiên, chắc bạn đọc cũng muốn biết WARNIER là ai. Tên đầy đủ là Jean Dominique WARNIER. Ông ta là một kỹ sư người Pháp làm việc cho công ty máy điện toán Pháp mang tên BULL Compagnie (một đối thủ của công ty IBM) trong lãnh vực điện toán. Từ những năm 1972 trở đi, ông ta cùng một nhóm nghiên cứu đề ra những nguyên tắc lô gic trong việc giải các bài toán điện toán ứng dụng vào quản lý kinh tế. Những nguyên tắc này giúp đào tạo thảo chương viên một cách có hệ thống, không tùy thuộc vào loại ngôn ngữ hay thay đổi theo thời gian. Ông ta đặt cho phương pháp của ông ta là phương pháp LCP, tắt của cụm từ Lois de Construction des Programs (Qui tắc Xây dựng Chương trình). Năm 1974, Jean Dominique Warnier nhận được giải thưởng khoa học tại Mỹ, và được nước Pháp tặng huân chương. Phương pháp WARNIER đã được phổ biến trên nhiều nước trên thế giới, được dịch ra nhiều thứ tiếng, và trong năm 1985, sách LCP được bán trên 100.000 bản trên khắp thế giới và tại Pháp.

Từ những năm 1972 trở đi, người viết đã nghiên cứu phương pháp WARNIER qua 2 tập sách: Entrainement à la Construction des Programmes (Luyện thảo chương trình) do nhà xuất bản “Les Editions d’Organisation”, Pháp, phát hành. Nghiên cứu để  cho biết mà thôi, chứ chưa đem ra ứng dụng vì chưa có đất dụng võ, vì vào thời điểm ấy, cho đến năm 1985, chúng tôi đang điều hành trung tâm điện toán tại Xí Nghiệp Liên Hiệp Rượu Bia NGK 2 (trước 1976, là công ty bia của Pháp mang tên BGI – Brasseries & Glacières de l’Indochine), nơi đây sử dụng ngôn ngữ RPG (Report Program Generator) của IBM chạy trên máy IBM 360/20. Cách viết ngôn ngữ RPG cũng gần giống như với phương pháp WARNIER, nhưng có vẽ hơi cứng nhắc vì ngôn ngữ RPG áp đặt trước một lưu đồ (flowchart) cố định không thể thay đổi được cho phép uyển chuyển. Do đó, chúng tôi chưa nghĩ đến việc ứng dụng phương pháp WARNIER mặc dù chúng tôi rất thích thú phương pháp này.

Mãi đến năm 1985, khi chúng tôi chuyễn qua viết lại chương trình quản lý cho máy vi tính với ngôn ngữ dBase III tại XNLH Rượu Bia NGK 2, chúng tôi mới bắt đầu nghiên cứu ứng dụng phương pháp WARNIER này vào ngôn ngữ dBase, và dạy cho anh chị em thảo chương viên của XNLH Rượu Bia NGK 2. Kết quả rất khả quan nhưng cũng chỉ giới hạn trong phạm vi XNLH Rượu Bia NGK 2.

Chúng tôi có những nhận xét sau đây mà không biết bạn đọc có đồng tình hay không:

·        dBase/FoxBase so với các ngôn ngữ thế hệ trước như Cobol hoặc RPG chẵng hạn, có những lợi điểm đáng kể là ngôn ngữ vấn tin (query language) mạnh, và nhất là khi viết chương trình dBASE/FoxBASE ta không cần khai báo cấu trúc tập tin như ta đã làm trong Data Division khi viết Cobol, hoặc mô tả phần Input khi viết RPG. Nếu cấu trúc tập tin thay đổi thì là cả một sự phiền toái vì phải sữa một loạt chương trình COBOL hoặc RPG, nếu không nói đến đôi khi bỏ quên không sữa. Nhưng nhìn chung, khi viết chương trình dBASE/FoxBASE chúng tôi có cảm tưởng là chẵng khác  nào viết một chương trình  hợp ngữ (assembly), mặc dù so với hợp ngữ thì các lệnh dBASE/FoxBASE thuộc loại macro, viết dễ dàng hơn. Mặc dầu, dBASE/FoxBASE không có lệnh GOTO quái ác, nhưng đọc một chương trình viết theo dBASE/FoxBASE để sữa lỗi không phải là dễ. Một chương trình  dBASE/FoxBASE trung bình cũng đã trên 10 trang, 500 dòng lệnh, đọc hoa cả mắt khi ngồi trên màn hình  để sữa sai chương trình.

·        Thứ đến, lệnh của dBASE/FoxBASE cũng có nhiều cái rối rắm đối với người học thảo chương ngôn ngữ này. Một thí dụ: động tác “nhập liệu” nghĩa là đọc dữ liệu ở ngoài đưa vào ký ức trung ương, đối với dBASE/FoxBASE có đến không biết bao nhiêu là lệnh như ACCEPT, INPUT, GET, READ, LIST, DISPLAY, SKIP, LOCATE/CONTINUE, SEEK, FIND, WAIT. Học viên không biết đâu mà lần.

·        Cuối cùng, từ 5 năm nay, máy vi tính tràn ngập thị trường Việt Nam. Cũng may không tác hại như hàng lậu, tuy nhiên cũng do đó nhiều trung tâm mang tên là đào tạo chuyên viên “lập trình” được mở ra nhiều như nấm sau cơn mưa. Nói là dạy viết chương trình  quản lý cho máy vi tính, nhưng thực chất người ta nhồi cho học viên, với trình độ văn hóa khác nhau, với tư duy không đồng đều, một số lệnh dBASE/FoxBASE, và học viên không biết vận dụng thế nào để viết chương trình với số lệnh đã học. Nhất là khi trở về xí nghiệp học viên tốt nghiệp đụng phải những bài toán thực tế khó khăn phức tạp khác xa với những bài tập nho nhỏ làm ở lớp. Chúng tôi không phủ nhận cũng có một số giảng viên dạy tận tâm, nhiều kinh nghiệm, nhưng khi truyền đạt kiến thức trong lĩnh vực tin học này, thì họ cũng chỉ truyền đạt những kinh nghiệm chắt chiu từ nhiều năm trong nghề, chứ không truyền đạt một phương pháp viết chương trình. Do đó, nhiều học viên câu lệnh thì thuộc như cháo, nhưng khi ngồi trước màn hình đánh vào chương trình  thì không biết bắt đầu từ đâu, chỉ có nước mở bài mẫu nào đó của thầy gần giống rồi viết thử xem trật trúng ra sao. Trúng cũng không hiểu vì sao nó trúng, mà trật cũng không hiểu vì sao nó trật. Nói tóm lại, học viên viết chương trình  kiểu “chầm chày may rũi”. Cho nên dù cho ngồi trên máy bao nhiêu giờ cũng vô ích. Có thể sữa càng nhiều lại càng sai, vì không biết đường đi nước bước trong chương trình của mình.

Ngoài ra, chúng tôi có nhận xét cuối cùng là: trong tình hình hiện nay người ta chủ trương dạy ngôn ngữ dBASE/FoxBASE không cần vẽ lưu đồ (flowchart), đến nỗi học viên tin học không biết lưu đồ là cái quái gì. Như kiểu kiến trúc sư xây cao ốc không cần bản vẽ. Đúng là xây cái chòi tranh thì chả cần bản vẽ, nhưng viết một chương trình  phức tạp mà không lưu đồ thì chỉ có nước đi vào một mê hồn trận của chương trình, vì đâu có gì cụ thể một như một lưu đồ để chỉ đường đi nước bước. Đây là chưa nói đến việc học viên chưa được trang bị những phương pháp chuẩn bị các dữ liệu mẫu để thử (testing) chương trình  bảo đảm chương trình  chạy không sai trước khi đưa vào sử dụng. Một công ty sản xuất nước ngọt nọ nhờ một công ty dịch vụ vi tính kia gia công viết chương trình  về tiền lương.Viết xong không biết kiểm tra thế nào mà khi phát lương xuống cho công nhân mới thấy là sai, phải cho thu hồi phiếu lương lại, làm mất mặt phòng máy vi tính và gây sự hoài nghi của công nhân đối với máy vi tính, mà người ta đã ca tụng là rất chính xác không bao giờ sai.

Từ những nhận định trên, chúng tôi mới soạn giáo trình tạm thời gồm 8 chương cơ  bản để huấn luyện học viên SAMIS trong khi viết chương trình theo ngôn ngữ  dBASE/FoxBASE, cho học viên một phương pháp làm việc khi thảo chương, tránh tình trạng học viên viết chương trình theo ngẫu  hứng hoặc sữa chương trình  theo kiểu đánh “du kích”.

Tập sách này không đòi hỏi người đọc một kiến thức sâu rộng, miễn là phải có một tư duy lô gic. Người học các ngôn ngữ khác  như Pascal, BASIC, khi muốn ứng dụng ngôn ngữ mình học vào các  bài toán quản lý kinh tế, có thể tự mình học được phương pháp này, vì phương pháp WARNIER sẽ đưa tới một tập hợp lệnh được gọi là pseudo-code, từ đó người học ngôn ngữ nào đó có thể suy diễn dịch từ pseudo-code WARNIER qua ngôn ngữ ứng dụng của mình. Đây là điều mà tác giả đã làm với ngôn ngữ dBASE/FoxBASE.

Tập sách này đang còn trong vòng khảo nghiệm, chỉ lưu hành nội bộ. Tuy nhiên, cũng không tránh khỏi việc tập sách này đến tay bạn đọc bằng những con đường lắt léo nào đó. Nếu các bạn đem phương pháp này ra ứng dụng vào một hay nhiều bài toán đã giải, các bạn sẽ thấy là chương trình viết theo lối WARNIER sẽ ít tốn ký ức, chạy nhanh hơn và sáng sủa hơn, và có thể sửa đỗi dễ dàng về sau. Khi soạn các bài tập cho sách này, chúng tôi chỉ thử 2 lần: lần đầu sữa những lỗi cú pháp, lần sau thử chính thức, và trước sự ngạc nhiên của chúng tôi, chương trình  chạy tốt qua lần thử thứ hai. Chúng tôi sẵn sàng chờ đợi sự góp ý của các bạn.

Chúng tôi cũng lưu ý các  bạn đọc là phương pháp WARNIER chỉ ứng dụng vào việc giải quyết vấn đề quản lý kinh tế hành chánh. Những ai đang viết chương trình  cho hệ thống (hệ điều hành chẵng hạn) sẽ bị thất vọng.

TP HCM, tháng 8/1990
DƯƠNG QUANG THIỆN, Kỹ sư điện toán


Lời  giới  thiệu -  Phiên bản 2 (2015)

Cuối năm 2013, tác giả có mời 3 giảng viên đại học tin học giúp tác giả xây dựng dự án ERP (Enterprise Resources Planning), mà tác giả đã phân tích kỹ tới database.  ERP này gồm 8 modules: Order-Processing/Sales (OP/S), Inventory Control (IC), Accounts Receivable (AR), Accounts Payable (AP), Purchase Order (PO), Payroll (PR), Fixed Assets (FA), Accounting (AC), và Cash & Bank (CB).

Tác giả thỏa thuận với 3 giảng viên này chỉ làm việc: (1) tại nhà của tác giả; (2) mỗi buỗi sáng từ 8-11,30g; (3) tuần 5 ngày; (4) với lương bán thời gian do giãng viên đưa ra là 5 triệu đồng/tháng. Khởi đầu, tác giả giao module Order-Processing/Sales cho các giảng viên làm việc. Trong 3 ngày đầu, tác giả giãi thích cặn kẽ mục đích của module này, và cung cấp cho các giảng viên tài liệu của module mà tác giả đã phân tích đến cấu trúc database cũng như các biểu mẫu data entry của module.

Tuy nhiên, sau 7 tháng làm việc các giảng viên này cũng không cho ra nỗi hệ thống Sales chạy theo Access 2013, đồng thời cũng không cho ra một tập sách giải thích thiết kế từng chương trình của module để có thể phát hành dưới dạng ebook cho người sử dụng tự thiết kế module theo chĩ dẫn của tập sách. Trong khoảng thời gian 7 tháng này, tác giả đã kiểm tra hoạt động của các giãng viên này, và đã 2 lần yêu cầu xóa bỏ làm lại. Cuối cùng, sau 7 tháng làm việc, kết quả không đạt yêu cầu, nên tác giả đành quyết định chấm dứt hợp tác với các giãng viên.

Sau đó, tác giả tự hỏi tại sao 3 giảng viên trong 7 tháng trời không lập trình nỗi một module mà tác giả đã bỏ công phân tích và thiết kế đến chi tiết. 3 người trong 7 tháng bán thời gian, có nghĩa là 21 tháng bán thời gian, hoặc 10,5 tháng toàn thời gian, nghĩa là 10,5 tháng/1 lập trình viên. Con số kinh khủng, vì hồi trước với ngôn ngữ FoxPro, module Sales, chúng tôi chỉ mất 1 tháng lập trình là tối đa cho Công ty Rượu Bia SABECO. Còn ở đây thời gian lập trình lên đến hơn 10 tháng mà không kết quả. Đúng là vô lý.

Sau một thời gian suy gẫm, tác giã đi đến một kết quả kinh khũng: 3 giãng viên này mặc dầu có nhều kinh nghiệm đi dạy lập trình trên 7 năm, nhưng lại KHÔNG BIẾT VIẾT CHƯƠNG TRÌNH QUẢN LÝ. Sau đó, tác giả mới sực nhớ là khi mở công ty SAMIS dạy lập trình FoxPro, tác giả đã soạn ra tập sách dạy phương pháp Warnier theo FoxPro. Chính tập sách này, bị bỏ quên từ năm 1990, dạy cho lập trình viên viết  các chương trình quản lý.

Trong lần tái bản này, nguyên gốc chỉ 200 trang, chúng tôi cho trình bày thêm việc chuyễn theo các ngôn ngữ C#, Visual Basic, Access 2013, và Java, ngoài FoxPro. Như vậy phương pháp Warnier có thể áp dụng cho 5 ngôn ngữ lập trình. Ngoài ra, tác giả cho bổ sung một số kiến thức lập trình quản lý, mà tác giả tin là ở đại học người ta không dạy đâu. Cuối cùng sau lần bổ sung này, tập sách dày lên 500 trang.

Tiện đây, tác giả thành thật cảm ơn các anh em cựu thành viên SAMIS đã giúp hoàn thành tập sách này, mỗi người theo ngôn ngữ mình chuyên môn: anh Đàm Văn Chương (FoxPro, VB, Access), anh Võ Văn Thành (C#), anh Hoàng Ngọc Giao (Java).

Dương Quang Thiện (82 tuổi)
Kỹ sư Điện toán IBM – Hưu trí
Email: dqthien@gmail.com

Tháng 11/2015

Không có nhận xét nào:

Đăng nhận xét