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