ตอนนั้นเป็นช่วงที่ทำ project ด้วย C บน DOS ก็มีเพื่อนของรุ่นพี่ที่อยู่ในทีมงานเดียวกัน ได้เอา software มา demo ให้ดูครั้งหนึ่ง ใช้พัฒนาระบบบน dos เป็น text mode ตอนนั้นเห็นแล้วก็รู้สึกแปลกดีนะ เพราะไม่เห็นจะมีการ coding โปรแกรมซักที เห็นหน้าจอมีแต่ตาราง แล้วก็กรอก parameter ในตาราง คิดในใจว่าเหมือนโปรแกรมเอาไว้ทำเล่นซะมากกว่าที่จะทำใช้ได้จริง ก็ดูแบบแค่รับทราบ เลยไม่มีคำถามอะไร
จริงๆแล้วนึกถึง 3GL หรือ 4GL tool ที่เคยได้ทำ project ครั้งหนึ่งชื่อ Mark V ทำงานบน Mainframe เป็นลักษณะที่กำหนด parameter บนตารางทำนองเดียวกัน และก็มี cycle การทำงานที่ต้องทำความเข้าใจอยู่พักนึงเลยทีเดียว ใช้งานบน Mainframe ดูว่าจะใช้กับ project ใหญ่ที่ช่วยให้ไม่ต้อง coding หลักการทำนองเดียวกับ Magic Software เลย แต่ไม่รู้ใครมาก่อนใคร แต่ที่รู้จักนั้นรู้จัก Mark V ก่อน แล้วหลังจากนั้นอีกหลายปีก็ได้เห็น Magic จากพี่ที่เขาเอามา demo ให้ดู
หลังจากที่ได้ดู demo แล้ว พอมีช่วงว่างก็ลองมาทำเองบ้าง แต่ทำไม่ได้เหมือนอย่างที่มา demo ให้ดู เพราะคิดว่าโปรแกรมของเล่นมันก็น่าจะลองเดาเล่นได้ แต่พอลองเดาก็ไม่ได้แถมยังงงเองอีก ก็เลยเลิกสนใจไป
ในช่วงที่ทำงานกับ Progress database นั้นก็ได้ไปฟังสัมนาของ Betagro ไม่แน่ในว่าชื่อเต็มว่าอะไร อาจจะเป็น Betagro Computer System หรือเปล่านี่แหละ เพราะตอนนั้นทำตลาด product Magic Software ตอนหลังถึงจะแยกออกมาเป็น Magic Software Thailand ก็พอไปฟังก็เริ่มเห็นภาพมากขึ้น เริ่มเข้าใจแล้วว่า Magic Software มีลักษณะการทำงานอย่างไร ก็คิดจะเอามาใช้กับ Progress อยู่เหมือนกัน เพราะ Magic จะติดต่อกับ database ผ่าน gateway ของ Magic แต่ผิดหวังเพราะไม่มี gateway สำหรับ Progress ก็เลยหยุดไป ได้แต่รับข้อมูลความเคลื่อนไหวของ software ตัวนี้ไปเรื่อยๆ
อีกจุดที่สนใจ Magic Software ในตอนแรกไม่ได้เกี่ยวกับการทำงานของ magic หรอก แต่เป็นโฆษณาของ magic ที่ลงโฆษณาในอเมริกา เป็นรูปเด็กเล็กไม่น่าเกินขวบนึงนั่งเรียงแถวกันบนเก้าอี้เด็ก เหมือนเก้าอี้กินอาหารของเด็ก บางคนก็อมจุกนมยาง แล้วที่หน้าอกของเด็กแต่ละคนก็จะติดป้ายชื่อ แต่เป็นชื่อของ programming langauge หรือ programming tool อื่น เช่น foxpro, dbase, COBOL, C ฯลฯ ด้านบนก็มีข้อความประมาณว่า tool อื่นๆ เป็นเด็กไปเลย เห็นแล้วก็รู้สึกว่าโอ้โห เขาโฆษณากับแบบนี้ไม่กลัวโดนฟ้องเลยหรือไง อ่านแล้วก็ได้ความว่าในปีนั้น (จำไม่ได้ว่าปีไหน) มีการแข่งขัน Droege Competition ที่อเมริกา มี programmer มาร่วมแข่งขันเขียนระบบขึ้นมาภายใต้ข้อกำหนดเดียวกัน โดย start from scratch คือเริ่มเขียนกันขึ้นมาใหม่เลย ไม่มีการเตรียม หรือเอาสิ่งทีเคยทำไว้มา modify ใช้ใหม่ ก็ปรากฏว่า programmer ที่ใช้ Magic Software เป็น tool เป็นผู้ชนะเลิศ และอันดับ top 5 ทั้ง 5 อันดับ ก็เป็น programmer ที่ใช้ magic software เป็น tool เช่นเดียวกัน (link นี้เป็นบันทึกของผู้ที่ได้ไปแข่งขันในครั้งนี้ด้วย http://www.trillium-sw.com/news3-5.htm) จึงเป็นบางอ้อที่เขากล้าเอามาทำใบโฆษณา
จากจุดนั้นก็เลยอยากจะรู้ว่ามันเป็นอย่างที่คุยจริงหรือเปล่า พอมีจัดสัมนาก็เลยมักจะไปร่วมฟัง ก็พอได้รับข้อมูลเพิ่มขึ้นแต่ก็ยังเป็นความเข้าใจภาพกว้างว่าเป็น software tool ที่ช่วยในการพัฒนาระบบงาน ใช้ร่วมกับ database ได้เกือบทั้งหมด (ในยุคนั้น) ไม่ว่าจะเป็น Oracle, DB2, Informix, AS400 file, Btrieve เป็นต้น โดยจะมี gateway เป็นตัวเชื่อมการติดต่อระหว่าง magic กับ database เหล่านั้น ลักษณะการทำงานไม่มีการ code โปรแกรม แต่เป็นการกำหนด operation ตาม engine cycle ซึ่งมีอยูเพียง 13 operation เท่านั้น (ในตอนนั้น) ก็สามารถทำงานได้ครบตามที่ต้องการ ใน version ต้นเป็น version ที่ทำงานบน DOS เป็น text mode สุดที่ version 5 หลังจากนั้นเริ่มมี version 6 เป็น Magic for Windows version แรก จากนั้นก็มี version 7 (แล้วก็ 8, 9, 10 ตอนนี้ก็ใช้ชื่อเป็น uniPaas) ดูแล้วก็อยากจะลองหาตัว demo มาลองศึกษาดูเหมือนกัน แต่ก็เจอปัญหาเดิมคือ ต้องเรียนถึงจะรู้ ลองเล่นเองคงจะไม่เข้าใจแน่นอน (ตอนนั้นไม่ค่อยมี user guide ที่เป็น soft file ให้ดู ไม่เหมือนตอนนี้ที่หาได้มากขึ้น)
16 พฤษภาคม 2552
15 พฤษภาคม 2552
Progress Database
ชื่อนี้ได้ยินค่อนข้างน้อย เพราะคนส่วนใหญ่เขาใช้ Oracle, DB2, Informix และก็การใช้งาน Progress ก็ต้องใช้ ภาษาของ Progress เอง (ถ้าเข้าใจไม่ผิด) เพราะในตอนนั้นมีหนังสือเกี่ยวกับ Progress ภาษาไทยทำออกมาเห็นอยู่รายเดียว ก็ได้ความรู้จากหนังสือเล่มนี้เอง ต้องขออภัยที่จำชื่อหนังสือที่ถูกต้อง และชื่อผู้แต่งไม่ได้ และก็เนื่องจากกว่าตอนหลังไม่ได้ใช้ Progress แล้ว ก็เลยบริจาคหนังสือไปแล้ว
เรื่องราวเกี่ยวกับ Progress ในเรื่องการเขียนโปรแกรมนั้นมีไม่ค่อยมากนั้น เพราะในช่วงนั้นดูระบบเป็นส่วนใหญ่ และก็ช่วยหาทางแก้ปัญหาระบบที่ทำงานช้ามาก โดยเฉพาะถ้ามีการ run batch ที่มีการอ่านข้อมูลใน database เป็นจำนวนมากละก็พากันอืดไปหมดเลยทีเดียว ต้องพยายามหาทางแก้ไข เช่น เพิ่ม harddisk เพื่อให้มี temporary area มากขึ้น และให้มีการกระจายของ data มากขึ้นการ access data จะได้ไม่กระจุกอยู่ที่ drive เดียว หรือในบาง sector เท่านั้น, การเพิ่ม RAM ก็เป็นสิ่งที่ได้ลองทำ แต่ในส่วนของ hardware นี้เป็นเรื่องที่ต้องรอเวลาพอสมควร คือรอของบประมาณ รอสั่งของซึ่งอาจจะต้องรอของ lot ต่อไปเนื่องจากไม่มีในสต็อก, ในส่วนต่อไปที่พยายามแก้ก็คือปรึกษาเจ้าของ product ให้มาช่วยวิเคราะห์ว่าน่าจะปรับ parameter ของ database แล้วจะช่วยได้บ้างหรือไม่ และก็มีอย่างสุดท้ายที่มีคนแนะนำก็คือ อาจจะต้องปรับโปรแกรมที่ทำไว้ ปรับปรุงการ design ระบบกันใหม่แต่ก็เป็นที่เรื่องใหญ่ที่ไม่ได้ทำ
ประสบการณ์ด้าน programming กับ Progress จึงมีน้อย ได้ลองเขียนโปรแกรม report อยู่บ้าง ก็รู้สึกว่าถ้าเขียนโปรแกรม online คงจะยากเอาการทีเดียว ก็เลยมีความเห็นว่า ในกระบวนการจัดทำระบบงานนั้น ช่วงของการจัดทำโปรแกรม หรือการเขียนโปรแกรม ก็เป็นช่วงที่ใช้เวลาไม่น้อยทีเดียว และส่วนใหญ่ก็มักจะเสร็จไม่ทันกำหนดเสียด้วย จนเป็นเรื่องที่ชินชากันไปเลยทีเดียว ว่าถ้าจะให้เพิ่มโปรแกรม ปรับปรุงระบบ ก็ต้องใจเย็นๆรอกันหน่อย
ก็เลยพยามยามหาเครื่องมือหรือโปรแกรมภาษาในรูปแบบไหนบ้างที่จะช่วยให้ทำงานเขียนโปรแกรมได้เร็วขึ้นบ้างนะ ก็เลยเป็นจุดเริ่มของตอนต่อไป คือ Magic Software จนกลายเป็น Magic Programmer ไป
เรื่องราวเกี่ยวกับ Progress ในเรื่องการเขียนโปรแกรมนั้นมีไม่ค่อยมากนั้น เพราะในช่วงนั้นดูระบบเป็นส่วนใหญ่ และก็ช่วยหาทางแก้ปัญหาระบบที่ทำงานช้ามาก โดยเฉพาะถ้ามีการ run batch ที่มีการอ่านข้อมูลใน database เป็นจำนวนมากละก็พากันอืดไปหมดเลยทีเดียว ต้องพยายามหาทางแก้ไข เช่น เพิ่ม harddisk เพื่อให้มี temporary area มากขึ้น และให้มีการกระจายของ data มากขึ้นการ access data จะได้ไม่กระจุกอยู่ที่ drive เดียว หรือในบาง sector เท่านั้น, การเพิ่ม RAM ก็เป็นสิ่งที่ได้ลองทำ แต่ในส่วนของ hardware นี้เป็นเรื่องที่ต้องรอเวลาพอสมควร คือรอของบประมาณ รอสั่งของซึ่งอาจจะต้องรอของ lot ต่อไปเนื่องจากไม่มีในสต็อก, ในส่วนต่อไปที่พยายามแก้ก็คือปรึกษาเจ้าของ product ให้มาช่วยวิเคราะห์ว่าน่าจะปรับ parameter ของ database แล้วจะช่วยได้บ้างหรือไม่ และก็มีอย่างสุดท้ายที่มีคนแนะนำก็คือ อาจจะต้องปรับโปรแกรมที่ทำไว้ ปรับปรุงการ design ระบบกันใหม่แต่ก็เป็นที่เรื่องใหญ่ที่ไม่ได้ทำ
ประสบการณ์ด้าน programming กับ Progress จึงมีน้อย ได้ลองเขียนโปรแกรม report อยู่บ้าง ก็รู้สึกว่าถ้าเขียนโปรแกรม online คงจะยากเอาการทีเดียว ก็เลยมีความเห็นว่า ในกระบวนการจัดทำระบบงานนั้น ช่วงของการจัดทำโปรแกรม หรือการเขียนโปรแกรม ก็เป็นช่วงที่ใช้เวลาไม่น้อยทีเดียว และส่วนใหญ่ก็มักจะเสร็จไม่ทันกำหนดเสียด้วย จนเป็นเรื่องที่ชินชากันไปเลยทีเดียว ว่าถ้าจะให้เพิ่มโปรแกรม ปรับปรุงระบบ ก็ต้องใจเย็นๆรอกันหน่อย
ก็เลยพยามยามหาเครื่องมือหรือโปรแกรมภาษาในรูปแบบไหนบ้างที่จะช่วยให้ทำงานเขียนโปรแกรมได้เร็วขึ้นบ้างนะ ก็เลยเป็นจุดเริ่มของตอนต่อไป คือ Magic Software จนกลายเป็น Magic Programmer ไป
EASYTRIEVE
EASYTRIEVE เป็นProgramming tool อีกแบบหนึ่งที่ทำงานบน Mainframe
พอดีว่าใช้งานตามความจำเป็น ไม่ได้ศึกษาอย่างจริงจัง พอดีในช่วงนั้นต้อง maintain โปรแกรมเดิมที่ทำไว้แล้ว และก็มีงานบาง job เขียนไว้ด้วย EASYTRIEVE ก็เลยได้สัมผัส
คือการ run งาน batch (ไม่แน่ใจว่าปัจจุบันจะเปลี่ยนไปมากหรือเปล่า เพราะไม่ได้ทำงานบน Main frame นานแล้ว) จะต้องจัด job ส่งไป run โดยเขียน JCL (Job Control Language) เพื่อกำหนดส่วนของ data กำหนด area ของโปรแกรม และอื่นๆ จัดเป็นลำดับตามขั้นตอน เช่น step แรกจะไปอ่าน data มา sort ลง temp area ต่อด้วย step2 อ่านข้อมูลมา summary แยกตาม group ของอะไรก็ว่าไป step3 เลือกเฉพาะ group ที่เข้าเกณฑ์ที่กำหนดไว้ใน data table บางตัว แล้วมา list เฉพาะรายการเหล่านั้น เป็นต้น
ทีนี้มันก็อาจจะมีบาง step ที่ถ้าเขียนโปรแกรม ก็นิดเดียวเอง ถ้าต้องเขียน แล้ว compile & catalog ก็จะไม่จำเป็น ก็ใช้ EASYTRIEVE มาช่วยในการทำเป็นโปรแกรมง่ายอ่านค่าแล้วรวมค่แยกตาม group อะไร และ step compile ก็สั้นๆ ไม่ต้อง catalog ให้เปลือง area ของ compiled catalog area ประมาณนั้น เพราะสมัยก่อนเรื่องของ disk space เป็นเรื่องที่ต้องระวังไม่ให้สิ้นเปลือง เพราะมีจำนวนจำกัด และราคาแพง ไม่เหมือนสมัยนี้ PC ยังมีความจุมากกว่า mini computer สมัยก่อนเสียอีก EASYTRIEVE มาช่วยแบ่งเบางานเล็กงานน้อยไปได้พอสมควรทีเดียว แต่ก็มีบ้างที่อาจจะมีบางคนใช้ EASYTRIEVE จนเชี่ยวชาญและติดใจในความง่ายในการ code ก็มีบ้างที่ใช้ EASYTRIEVE มาทำโปรแกรมอย่างเป็นล่ำเป็นสันทีเดียว ถ้าในกรณีอย่างนี้มักจะ compile catalog เก็บไว้เลย
พอดีว่าใช้งานตามความจำเป็น ไม่ได้ศึกษาอย่างจริงจัง พอดีในช่วงนั้นต้อง maintain โปรแกรมเดิมที่ทำไว้แล้ว และก็มีงานบาง job เขียนไว้ด้วย EASYTRIEVE ก็เลยได้สัมผัส
คือการ run งาน batch (ไม่แน่ใจว่าปัจจุบันจะเปลี่ยนไปมากหรือเปล่า เพราะไม่ได้ทำงานบน Main frame นานแล้ว) จะต้องจัด job ส่งไป run โดยเขียน JCL (Job Control Language) เพื่อกำหนดส่วนของ data กำหนด area ของโปรแกรม และอื่นๆ จัดเป็นลำดับตามขั้นตอน เช่น step แรกจะไปอ่าน data มา sort ลง temp area ต่อด้วย step2 อ่านข้อมูลมา summary แยกตาม group ของอะไรก็ว่าไป step3 เลือกเฉพาะ group ที่เข้าเกณฑ์ที่กำหนดไว้ใน data table บางตัว แล้วมา list เฉพาะรายการเหล่านั้น เป็นต้น
ทีนี้มันก็อาจจะมีบาง step ที่ถ้าเขียนโปรแกรม ก็นิดเดียวเอง ถ้าต้องเขียน แล้ว compile & catalog ก็จะไม่จำเป็น ก็ใช้ EASYTRIEVE มาช่วยในการทำเป็นโปรแกรมง่ายอ่านค่าแล้วรวมค่แยกตาม group อะไร และ step compile ก็สั้นๆ ไม่ต้อง catalog ให้เปลือง area ของ compiled catalog area ประมาณนั้น เพราะสมัยก่อนเรื่องของ disk space เป็นเรื่องที่ต้องระวังไม่ให้สิ้นเปลือง เพราะมีจำนวนจำกัด และราคาแพง ไม่เหมือนสมัยนี้ PC ยังมีความจุมากกว่า mini computer สมัยก่อนเสียอีก EASYTRIEVE มาช่วยแบ่งเบางานเล็กงานน้อยไปได้พอสมควรทีเดียว แต่ก็มีบ้างที่อาจจะมีบางคนใช้ EASYTRIEVE จนเชี่ยวชาญและติดใจในความง่ายในการ code ก็มีบ้างที่ใช้ EASYTRIEVE มาทำโปรแกรมอย่างเป็นล่ำเป็นสันทีเดียว ถ้าในกรณีอย่างนี้มักจะ compile catalog เก็บไว้เลย
07 เมษายน 2552
ทำงานกับภาษา C บน DOS
ได้มีโอกาสทำงานด้วย ภาษา C โดย run บน DOS ตอนเริ่มทำ project ก็เริ่มจากอ่าน text book จำชื่อไม่ค่อยได้ อาจจะชื่อ C Programming หรือ Programming in C ประมาณนี้ เล่มไม่ใหญ่มาก แต่เขียนอ่านง่าย ทีนี้ระบบงานส่วนใหญ่ที่ทำนั้นสิ่งสำคัญก็คือ การออกแบบหน้าจอ การจัดตำแหน่งของ field ต่างๆ การทำสี ตัวหนา ตัวกระพริบ ถ้าใช้ C คงจะเหนื่อยหนักทีเดียว ก็เลยใช้ซอฟแวร์ชื่อว่า PowerScreen มาเป็นตัวช่วย คือจะช่วยจัดการในเรื่องต่างๆ ที่เกี่ยวกับ user interface ทั้งหลายบนจอภาพ วิธีการก็คือ ที่ตัว PowerScreen จะมีหัวข้อให้กำหนดรูปภาพของจอภาพ (ต็องไม่ลืมว่าสมัยที่เป็น dos นั้น เป็น text mode ไม่ใช่ GUI อย่างปัจจุบันนี้) แล้วก็กำหนด attribute ให้กับ field ต่างๆบนจอภาพ เมื่อจะใช้งาน ก็ไป call PowerScreen และก็ส่ง parameter ต่างๆ ให้สอดคล้องกับ field ที่กำหนดของจอภาพนั้นๆ รายละเอียดและวิธีการจำไม่ได้แล้ว จากนั้น control จะย้ายไปที่ PowerScreen จนกว่า user จะกดปุ่มที่กำหนดไว้ ก็จะกลับมาที่โปรแกรม แล้วก็จะเป็นส่วนของ process ของโปรแกรมที่จะทำงานตามขั้นตอนของตัวเอง
สำหรับข้อมูลนั้นใช้ Betrieve มาเป็นตัวจัดการ file เนื่องจาก Btrieve ในยุคนั้นมีชื่อเสียงมากเรื่องการจัดการ file บน PC มีความเสถียร และก็ file ไม่พังง่าย (ไม่รวม hard disk crash) คือเคยลองทดสอบโปรแกรมที่อ่านข้อมูลขึ้นมา แต่ยังไม่บันทึกกลับไป คือมีการ open file ค้างไว้ read ข้อมูลมารอไว้ แตยังไม่ได้กด save ก็ทำการปิดสวิทซ์เครื่องเลย ลองเปิดเครื่องมาเรียกดูข้อมูล ก็ยังทำงานได้ปกติดี ในสมัยนั้นการจัดการ file บน PC ถ้าไม่ดีพอ file ที่ open ค้างไว้อาจพังได้ ก็นับว่า Btrieve ได้รับความเชื่อถือในการนำมาเป็น file management ที่กว้างขวางทีเดียว
การจัดการในส่วนของ Btrieve ก็ต้องทำขั้นตอนต่างๆ open file ให้ครบทุก file ที่ต้องใช้งาน read record ที่ต้องการ โดยจะต้องกำหนด key เริ่มต้นเพื่อที่จะได้ record ที่ต้องการ แล้วการ read record ก็ต้องไม่ลืม open file ให้เรียบร้อยก่อน ก็มีบ้างที่ลืมเพราะบางครั้ง มีหลาย file ที่ต้องถูกเรียกใช้งานในโปรแกรม พอมาเพิ่มทีหลังก็ลืมไปเพิ่มในส่วนการ open file และสิ่งที่ลืมไม่ได้คือ ต้องไม่ลืม close file เมื่อตอนจะจบโปรแกรมด้วย โดยเฉพาะ file ที่มีการ udpate record ไปบ้างแล้ว ถ้าไม่ close file ให้เรียบร้อย ข้อมูลอาจจะ physical write ไม่ครบ หรือถ้าโชคร้าย file damage เลยก็มี
การ read record ก็สามารถทำได้ทั้ง read next หรือ previous ขึ้นอยู่กับโปรแกรมนั้นๆ ว่าต้องการให้สามารถทำงานได้หรูหราขนาดไหน จะมีทั้งเลื่อนทีละ record หรือทีละหน้า ก็ต้องกำหนด logic ขึ้นมาเอง แต่ถ้ามี pattern ที่ดีแล้ว ไม่ว่าจะเป็นงานแบบไหน หรือใช้ภาษาอะไร ก็สามารถนำหลักการไปประยุกต์ใช้ได้ดีทีเดียว
งานที่เขียนด้วย C ยุคนั้นมักจะเจอบักประเภท โปรแกรมตายแบบ error exception เครื่อง hang หรือ reset ไปเลย เพราะเป็น dos ถ้าตายก็ตายทั้งเครื่องเลย ไม่มีตายเฉพาะโปรแกรมเหมือนใน Windows ส่วนสาเหตุเท่าที่พอจำได้ ก็จะได้แก่ ประเภท String ลืมปิดท้ายบ้าง, control การทำงานในแบบ array ไม่ดีบ้าง, การคำนวณทางคณิตศาสตร์ด้วยตัวแปรที่ไม่ใช่ numeric บ้าง เพราะ error เหล่านี้จะเจอตอนที่ run program ตอน compile จะไม่เจอ ถึงตอนนั้นก็ต้องไล่โปรแกรมดูว่ามันไปตายตรงไหน ยังดีที่ตัวที่ใช้ทำโปรแกรม C นั้นมีตัวช่วยในการ trace โปรแกรม set break point, ดูค่าในตัวแปรต่างๆได้ ก็เป็นเครื่องมือช่วยเช็คเวลาโปรแกรมทำงานได้ดีทีเดียว
เมื่อจบ project ที่เขียนด้วย C แล้วมีความรู้สึกอย่างหนึ่งคือ งานที่เกี่ยวกับ Business Application แล้ว Cobol เขียนง่ายกว่า แต่ Cobol บน PC นั้นแทบไม่มีให้ใช้เลย ที่มีอยู่ก็มีปัญหาเรื่อง โปรแกรม hang, crash error ไปเลย หรือมีข้อจำกัดที่ขนาดโปรแกรม ใหญ่เกินกว่านี้ๆไม่ได้ อะไรทำนองนี้ ในตอนนั้นเลยหันมาพึ่ง C บน dos เพราะ compile แล้วได้ exe ที่เล็กกว่า แต่ก็ต้องแลกกับรูปแบบของภาษาที่ไม่ค่อยเหมากับลักษณะของงานที่ต้องการนัก แต่ก็ไม่เหลือวิสัยที่จะทำได้ แต่จะเหนื่อยและต้องตั้งหลักกันหน่อยเท่านั้นเอง
สำหรับข้อมูลนั้นใช้ Betrieve มาเป็นตัวจัดการ file เนื่องจาก Btrieve ในยุคนั้นมีชื่อเสียงมากเรื่องการจัดการ file บน PC มีความเสถียร และก็ file ไม่พังง่าย (ไม่รวม hard disk crash) คือเคยลองทดสอบโปรแกรมที่อ่านข้อมูลขึ้นมา แต่ยังไม่บันทึกกลับไป คือมีการ open file ค้างไว้ read ข้อมูลมารอไว้ แตยังไม่ได้กด save ก็ทำการปิดสวิทซ์เครื่องเลย ลองเปิดเครื่องมาเรียกดูข้อมูล ก็ยังทำงานได้ปกติดี ในสมัยนั้นการจัดการ file บน PC ถ้าไม่ดีพอ file ที่ open ค้างไว้อาจพังได้ ก็นับว่า Btrieve ได้รับความเชื่อถือในการนำมาเป็น file management ที่กว้างขวางทีเดียว
การจัดการในส่วนของ Btrieve ก็ต้องทำขั้นตอนต่างๆ open file ให้ครบทุก file ที่ต้องใช้งาน read record ที่ต้องการ โดยจะต้องกำหนด key เริ่มต้นเพื่อที่จะได้ record ที่ต้องการ แล้วการ read record ก็ต้องไม่ลืม open file ให้เรียบร้อยก่อน ก็มีบ้างที่ลืมเพราะบางครั้ง มีหลาย file ที่ต้องถูกเรียกใช้งานในโปรแกรม พอมาเพิ่มทีหลังก็ลืมไปเพิ่มในส่วนการ open file และสิ่งที่ลืมไม่ได้คือ ต้องไม่ลืม close file เมื่อตอนจะจบโปรแกรมด้วย โดยเฉพาะ file ที่มีการ udpate record ไปบ้างแล้ว ถ้าไม่ close file ให้เรียบร้อย ข้อมูลอาจจะ physical write ไม่ครบ หรือถ้าโชคร้าย file damage เลยก็มี
การ read record ก็สามารถทำได้ทั้ง read next หรือ previous ขึ้นอยู่กับโปรแกรมนั้นๆ ว่าต้องการให้สามารถทำงานได้หรูหราขนาดไหน จะมีทั้งเลื่อนทีละ record หรือทีละหน้า ก็ต้องกำหนด logic ขึ้นมาเอง แต่ถ้ามี pattern ที่ดีแล้ว ไม่ว่าจะเป็นงานแบบไหน หรือใช้ภาษาอะไร ก็สามารถนำหลักการไปประยุกต์ใช้ได้ดีทีเดียว
งานที่เขียนด้วย C ยุคนั้นมักจะเจอบักประเภท โปรแกรมตายแบบ error exception เครื่อง hang หรือ reset ไปเลย เพราะเป็น dos ถ้าตายก็ตายทั้งเครื่องเลย ไม่มีตายเฉพาะโปรแกรมเหมือนใน Windows ส่วนสาเหตุเท่าที่พอจำได้ ก็จะได้แก่ ประเภท String ลืมปิดท้ายบ้าง, control การทำงานในแบบ array ไม่ดีบ้าง, การคำนวณทางคณิตศาสตร์ด้วยตัวแปรที่ไม่ใช่ numeric บ้าง เพราะ error เหล่านี้จะเจอตอนที่ run program ตอน compile จะไม่เจอ ถึงตอนนั้นก็ต้องไล่โปรแกรมดูว่ามันไปตายตรงไหน ยังดีที่ตัวที่ใช้ทำโปรแกรม C นั้นมีตัวช่วยในการ trace โปรแกรม set break point, ดูค่าในตัวแปรต่างๆได้ ก็เป็นเครื่องมือช่วยเช็คเวลาโปรแกรมทำงานได้ดีทีเดียว
เมื่อจบ project ที่เขียนด้วย C แล้วมีความรู้สึกอย่างหนึ่งคือ งานที่เกี่ยวกับ Business Application แล้ว Cobol เขียนง่ายกว่า แต่ Cobol บน PC นั้นแทบไม่มีให้ใช้เลย ที่มีอยู่ก็มีปัญหาเรื่อง โปรแกรม hang, crash error ไปเลย หรือมีข้อจำกัดที่ขนาดโปรแกรม ใหญ่เกินกว่านี้ๆไม่ได้ อะไรทำนองนี้ ในตอนนั้นเลยหันมาพึ่ง C บน dos เพราะ compile แล้วได้ exe ที่เล็กกว่า แต่ก็ต้องแลกกับรูปแบบของภาษาที่ไม่ค่อยเหมากับลักษณะของงานที่ต้องการนัก แต่ก็ไม่เหลือวิสัยที่จะทำได้ แต่จะเหนื่อยและต้องตั้งหลักกันหน่อยเท่านั้นเอง
03 เมษายน 2552
ถัดมากับ COBOL บน IBM Mainframe
แล้วต่อมาก็ได้ทำโปรแกรมด้วย COBOL อีก แต่เปลี่ยนเป็น IBM Mainframe สมัยนั้นระบบงานส่วนใหญ่มักจะใช้ COBOL ในการทำโปรแกรม เนื่องจากลักษณะของภาษาไม่ซับซ้อน ทำความเข้าใจได้ไม่ยาก (แต่ต้องเขียนโปรแกรมให้อ่านง่ายด้วย)
มาคราวนี้ทันสมัยขึ้นมาอีก คือ เดิมที่ทำงานบน NEC ใช้ NEC-ISAM file แต่ตอนนี้ข้อมูลจะเก็บใน DB2 ซึ่งเป็น Database ของ IBM ซึ่งในยุคนั้นมักจะใช้ VSAM เป็นส่วนใหญ่ ได้เขียนโปรแกรมติดต่อกับฐานข้อมูลถือได้ว่าเป็นเรื่องน่าสนใจไม่น้อยทีเดียว
ระบบงานบน Mainframe ที่เป็น Online นั้นจะเรียกใช้ผ่าน CICS โดยในตอนนั้นถือเป็นโชคดีที่ได้รับถ่ายทอดเทคนิคในการเขียนโปรแกรมในลักษณะที่ไม่ hold resource เอาไว้ แต่ก็ต้องเพิ่มภาระในการจัดการ โดยจะต้อง write status ต่างๆ เก็บไว้ใน record จำไม่ได้ว่าน่าจะเป็น VSAM เพราะจะนำ field ต่างๆ ที่ต้องการมาต่อกันให้เรียบร้อยแล้วจึง write เก็บไว้ ก่อนที่จะจบการทำงาน และเมื่อโปรแกรมถูกเรียกให้ทำงานอีก ก็จะอ่าน record ว่ามี write ข้อมูลเก็บไว้หรือเปล่า ถ้าไม่มีก็แสดงว่าเพิ่งจะเริ่มการทำงาน แต่ถ้ามีข้อมูลอยู่ก็แสดงว่าเป็นการกลับเข้ามาทำงานต่อ ฟังดูแล้วออกจะงงอยู่บ้าง แต่เนื่องจากเวลาผ่านมาร่วม 10 ปีแล้วเลยจำรายละเอียดขั้นตอนในการเขียนโปรแกรมไม่ค่อยได้ ทำให้อธิบายได้ไม่ละเอียดและแสดงตัวอย่างไม่ได้ แต่การใช้เทคนิคนี้ OS จะไม่เปลือง resource มาก เนื่องจากครั้งแรกที่โปรแกรมถูกเรียกขึ้นมาทำงานก็จะมีการทิ้งหน้า screen ไว้แล้วจบการทำงานคืน resource ไป หลังจากนั้น เมื่อ user ป้อนค่าต่างๆ ลงบนจอภาพแล้วกด Enter หรือ Function key ที่กำหนดไว้ โปรแกรมก็จะถูกเรียกให้มาทำงานต่อ โดยนำค่าที่ได้จากจอภาพไปประมวลผลต่อ
ดูแล้วจะเหมือนงาน Batch ที่ส่ง screen มาทิ้งไว้ แล้วก็ sleep ไป และเมื่อ user input ค่าต่างๆแล้วก็จะถูกปลุกให้ตื่นมาทำงานต่อนั่นเอง วนซ้ำอยู่อย่างนี้จนกด key ที่กำหนดไว้ให้เป็นการเลิกการทำงานจึงเลิกการทำงานจริง ถ้าจำไม่ผิดความแตกต่างกันอยู่ตรงคำสั่ง EXIT กับ STOP RUN เป็นกุญแจสำคัญของเทคนิคนี้
มาคราวนี้ทันสมัยขึ้นมาอีก คือ เดิมที่ทำงานบน NEC ใช้ NEC-ISAM file แต่ตอนนี้ข้อมูลจะเก็บใน DB2 ซึ่งเป็น Database ของ IBM ซึ่งในยุคนั้นมักจะใช้ VSAM เป็นส่วนใหญ่ ได้เขียนโปรแกรมติดต่อกับฐานข้อมูลถือได้ว่าเป็นเรื่องน่าสนใจไม่น้อยทีเดียว
ระบบงานบน Mainframe ที่เป็น Online นั้นจะเรียกใช้ผ่าน CICS โดยในตอนนั้นถือเป็นโชคดีที่ได้รับถ่ายทอดเทคนิคในการเขียนโปรแกรมในลักษณะที่ไม่ hold resource เอาไว้ แต่ก็ต้องเพิ่มภาระในการจัดการ โดยจะต้อง write status ต่างๆ เก็บไว้ใน record จำไม่ได้ว่าน่าจะเป็น VSAM เพราะจะนำ field ต่างๆ ที่ต้องการมาต่อกันให้เรียบร้อยแล้วจึง write เก็บไว้ ก่อนที่จะจบการทำงาน และเมื่อโปรแกรมถูกเรียกให้ทำงานอีก ก็จะอ่าน record ว่ามี write ข้อมูลเก็บไว้หรือเปล่า ถ้าไม่มีก็แสดงว่าเพิ่งจะเริ่มการทำงาน แต่ถ้ามีข้อมูลอยู่ก็แสดงว่าเป็นการกลับเข้ามาทำงานต่อ ฟังดูแล้วออกจะงงอยู่บ้าง แต่เนื่องจากเวลาผ่านมาร่วม 10 ปีแล้วเลยจำรายละเอียดขั้นตอนในการเขียนโปรแกรมไม่ค่อยได้ ทำให้อธิบายได้ไม่ละเอียดและแสดงตัวอย่างไม่ได้ แต่การใช้เทคนิคนี้ OS จะไม่เปลือง resource มาก เนื่องจากครั้งแรกที่โปรแกรมถูกเรียกขึ้นมาทำงานก็จะมีการทิ้งหน้า screen ไว้แล้วจบการทำงานคืน resource ไป หลังจากนั้น เมื่อ user ป้อนค่าต่างๆ ลงบนจอภาพแล้วกด Enter หรือ Function key ที่กำหนดไว้ โปรแกรมก็จะถูกเรียกให้มาทำงานต่อ โดยนำค่าที่ได้จากจอภาพไปประมวลผลต่อ
ดูแล้วจะเหมือนงาน Batch ที่ส่ง screen มาทิ้งไว้ แล้วก็ sleep ไป และเมื่อ user input ค่าต่างๆแล้วก็จะถูกปลุกให้ตื่นมาทำงานต่อนั่นเอง วนซ้ำอยู่อย่างนี้จนกด key ที่กำหนดไว้ให้เป็นการเลิกการทำงานจึงเลิกการทำงานจริง ถ้าจำไม่ผิดความแตกต่างกันอยู่ตรงคำสั่ง EXIT กับ STOP RUN เป็นกุญแจสำคัญของเทคนิคนี้
สมัครสมาชิก:
บทความ (Atom)