ตัวอย่างโครงงาน

40
เล็ทมีซี : เครื่องมือเรียนรูเพื่อฝกเขียนโปรแกรมสําหรับเครื่องหลาย หนวยประมวลผลโดยใชภาษาซี/ซีพลัสพลัส LET ME C : a Learning Tool providing a Multiprocessor-programming Environment based on C/C++ โปรแกรมเพื่อสงเสริมการเรียนรู(นักศึกษา) รายงานฉบับสมบูรณ เสนอตอ ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ สํานักงานพัฒนาวิทยาศาสตรและเทคโนโลยีแหงชาติ กระทรวงวิทยาศาสตรและเทคโนโลยี ไดรับทุนอุดหนุนโครงการวิจัย พัฒนาและวิศวกรรม โครงการแขงขันพัฒนาโปรแกรมคอมพิวเตอรแหงประเทศไทย ครั้งที11 ประจําปงบประมาณ 2552 โดย นางสาวจตุรดา ดียิ่ง นางสาวกุสุมา อาดัมภ ชื่ออาจารยที่ปรึกษาโครงการ นางสาววรวรรณ มะเริงสิทธิสถาบันการศึกษา มหาวิทยาลัยธรรมศาสตร รหัสโครงการ 11p12c602

Upload: jokercoke

Post on 29-May-2015

385 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ตัวอย่างโครงงาน

เล็ทมีซี : เครื่องมือเรียนรูเพ่ือฝกเขียนโปรแกรมสําหรับเครื่องหลาย

หนวยประมวลผลโดยใชภาษาซี/ซีพลัสพลัส LET ME C : a Learning Tool providing a Multiprocessor-programming

Environment based on C/C++

โปรแกรมเพื่อสงเสริมการเรียนรู(นักศึกษา)

รายงานฉบับสมบูรณ

เสนอตอ ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ สํานักงานพัฒนาวิทยาศาสตรและเทคโนโลยีแหงชาต ิ

กระทรวงวิทยาศาสตรและเทคโนโลยี ไดรับทุนอุดหนุนโครงการวิจัย พัฒนาและวิศวกรรม

โครงการแขงขันพัฒนาโปรแกรมคอมพิวเตอรแหงประเทศไทย ครั้งที่ 11 ประจําปงบประมาณ 2552

โดย นางสาวจตุรดา ดีย่ิง นางสาวกุสุมา อาดัมภ

ชื่ออาจารยที่ปรึกษาโครงการ นางสาววรวรรณ มะเริงสิทธ์ิ

สถาบันการศึกษา มหาวิทยาลัยธรรมศาสตร

รหัสโครงการ 11p12c602

Page 2: ตัวอย่างโครงงาน

I

กิตติกรรมประกาศ (Acknowledgement) โครงการเล็ทมีซี ไดรับทุนสนับสนุนการพัฒนาโครงการจากศูนยเทคโนโลยีอิเล็กทรอนิกสและ

คอมพิวเตอรแหงชาติ สํานักงานพัฒนาวิทยาศาสตรและเทคโนโลยีแหงชาติ กระทรวงวิทยาศาสตรและ

เทคโนโลยี ไดรับทุนอุดหนุนโครงการการแขงขันพัฒนาโปรแกรมคอมพิวเตอรแหงประเทศไทย คร้ังที่ 11

จากศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ สํานักงานพัฒนาวิทยาศาสตรและเทคโนโลยี

แหงชาติ และสํานักงานสงเสริมอุตสาหกรรมซอฟตแวรแหงชาติ พรอมระบุชื่อโครงการที่ไดรับทุนไวดวย

ขอขอบพระคุณอาจารยที่ปรึกษาที่ไดใหคําแนะนํา ขอคิดเห็น และใหความรูตางๆ รวมทัง้ให

ความชวยเหลือในดานตางๆ

ขอขอบคุณภาพภาควิชาวทิยาการคอมพวิเตอร คณะวิทยาศาสตรและเทคโนโลย ี

มหาวิทยาลัยธรรมศาสตร ที่ใหขอมูล ขาวเก่ียวกับโครงการโครงการแขงขันพัฒนาโปรแกรมคอมพิวเตอร

แหงประเทศไทย

และขอขอบคุณเพื่อนๆ และผูที่เกีย่วของทกุๆทานที่ใหคําปรึกษา และใหคําชวยเหลือตลอดการ

ทํางานจนสําเร็จลุลวงไปไดดวยดี

ผูพัฒนาโครงการจึงขอกราบขอบพระคุณมา ณ โอกาสนี ้

นางสาวจตุรดา ดียิ่ง

นางสาวกุสุมา อาดัมภ

Page 3: ตัวอย่างโครงงาน

II

บทคัดยอ

นวัตกรรมของสถาปตยกรรมหนวยประมวลผลแบบมัลติคอร เพื่อเพิ่มศักยภาพการประมวลผล

ในภาวะวิกฤติการขาดแคลนพลังงาน ขอจํากัดของวิกฤตพลังงานเชน สถาปตยกรรมการ ออกแบบมีขอดี

ขอเสีย สรรถนะการทํางานและการใชพลังงานในการประมวลผล จึงเปนเร่ืองที่สําคัญที่จะตองพิจารณา

ในดานฮารดแวรก็มุงใหความสําคัญกับการออกแบบเพื่อลดการใชพลังงานอยางส้ินเปลือง อยางไรก็ตาม

ในบทบาทของโปรแกรมเมอรควรใหความสําคัญ กับการออกแบบโปรแกรมที่มีสมถนะไดตรงตามความ

ตองการ และใชพลังงานใหนอยที่สุด งานวิจัยชิ้นนี้มุงหวังใหผูเ ร่ิมตนเขียนโปรแกรมเชิงขนาน ให

ความสําคัญทั้งการเขียนโปรแกรมอยางมีประสิทธิภาพและคํานึงถึงการประหยัดพลังงาน โดยใชเคร่ืองมือ

ที่ชื่อวา LET ME C ซึ่งเปนเคร่ืองมือตัวอยางที่ชวยให ผูเร่ิมตนการเขียนโปรแกรมเชิงขนานไดศึกษาการ

เขียนโปรแกรมเชิงขนานและผลกระทบ จากการใชพลังงานของโปรแกรม

คําสําคัญ: เคร่ืองมือเรียนรู, การทาํความเขาใจโปรแกรมเชิงขนาน, สมรรถนะการประมวลผลเชงิ

ขนาน, การเขียนโปรแกรมทีต่ระหนักถึงพลังงาน

Page 4: ตัวอย่างโครงงาน

III

Abstract Emerging of multicore architecture makes high-performance PCs available. Despite

that, the limitation caused by power crisis on such architecture has made the trade offs between

performance and power-aware computing ever more important. Hardware vendors have

focused their design on how to reduce the power consumption of components. However,

programmers also play an important role in designing a program which could satisfy

performance requirement within the minimum power consumption. This research work proposes

an approach for training novice parallel programmers to be both performance- and power-

aware by using a learning tool called LET-ME-C. We demonstrated that the tool could, not only

guide the programmers on how the codes could be parallelized, but also depict the impact of

novice’s codes on performance and power consumption at prompt.

Keywords: Learning tool, Parallel Program Comprehension, Parallel Execution

performance, Power-aware programming

Page 5: ตัวอย่างโครงงาน

IV

บทนํา

การเปล่ียนยุคของหนวยประมวลผลเขาสูยุคหลายหนวยประมวลผล (Multicore) สงผลกระทบ

ใหผูเขียนโปรแกรมประยุกตจะตองเปล่ียนวิธีการพัฒนาโปรแกรมจากเชิงลําดับมาเปนเชิงขนาน เพื่อให

โปรแกรมสามารถดึงศักยภาพสูงสุดของหนวยประมวลผลทุกคอรในระบบข้ึนมาได โดยใหมีความ

ส้ินเปลืองพลังงานนอยที่สุด หนวยประมวลผลแบบหลายหนวยประมวลผล ประมวลผลพรอมกันไปเชิง

ขนานโดยรวมกันทํางานยอยซ่ึงเปนอิสระตอกันทํางานพรอมกันไป ทําใหงานเสร็จเร็วข้ึน คอมพิวเตอรสวน

บุคคลท่ีมีหนวยประมวลผลแบบหลายหนวยประมวลผล มักจะมีสถาปตยกรรมแบบใชหนวยความจํารวม

กลาวคือ เม่ือแบงการประมวลผลของโปรแกรมเปนงานยอย แตละสวนงานยอยสามารถเรียกใชตัวแปรใน

หนวยความจํารวมกันได โดยไมตองใชการส่ือสารขอมูลระหวางหนวยประมวลผล ดังนั้นการประมวลผล

เชิงขนานโดยใชหนวยความจํารวมจึงไดรับความนิยมในกลุมผูพัฒนาโปรแกรมเชิงขนานบนเคร่ืองหลาย

หนวยประมวลผล ซึ่งผูพัฒนาโปรแกรมสวนใหญจะใชโอเพนเอ็มพี (OpenMP) เปนสวนตอประสาน

โปรแกรมประยุกต (API) เพื่อพัฒนาโปรแกรมเชิงขนานบนเครื่องดังกลาว เพราะโอเพนเอ็มพีอํานวยความ

สะดวกในการแบงงานยอย ควบคุมการส่ือสารระหวางงานยอยโดยใชตัวแปรรวมกัน ลักษณะการสื่อสาร

โดยใชตัวแปรรวมกันนี้มีความใกลเคียงกับโปรแกรมแบบลําดับ จึงทําใหการเขียนโปรแกรมทําไดรวดเร็ว

อยางไรก็ตาม ทั้งที่หนวยประมวลผลแบบหลายหนวยประมวลผล นั้นกลายเปนแพลตฟอรมหลักในการ

ประมวลผลปจจุบัน แตผูเรียนเขียนโปรแกรมเบ้ืองตนยังไมมีเคร่ืองมือเพื่อชวยทําความเขาใจการ

ประมวลผลเชิงขนาน บนสถาปตยกรรมมัลติคอร จึงทําใหความรูทางดานการเขียนโปรแกรมเชิงขนานโดย

ใชโอเพนเอ็มพี ยังคงจํากัดอยูในกลุมผูเช่ียวชาญเทานั้น นอกจากนี้ผูเรียนเขียนโปรแกรมเบ้ืองตน มักจะ

มองขามความสําคัญของการปรับปรุงสมรรถนะของโปรแกรมเพื่อลดความสิ้นเปลืองพลังงาน จึงเปนเหตุ

ให โปรแกรมที่ผลิตไดอาจจะทํางานตรงตามความตองการ แตไมไดถูกปรับใหใชพลังงานอยางประหยัด

ที่สุด

เพื่อเปนทางเลือกสําหรับผูเรียนเขียนโปรแกรมที่ตองการปรับแนวทางการเขียนโปรแกรมเขาสู

ยุคมัลติคอรงายข้ึน รายงานหัวขอพิเศษฉบับนี้จึงนําเสนอ โครงงานเล็ทมีซี โครงงานสรางเคร่ืองมือเรียนรู

เพื่อฝกเขียนโปรแกรมสําหรับเคร่ืองหลายหนวยประมวลผลโดยใชภาษาซี/ซีพลัสพลัส เพื่อเปนเคร่ืองมือ

ชวยในการเรียนรู และฝกฝนการเขียนโปรแกรมที่มีการประมวลผลเชิงขนาน เพราะในปจจุบันการ

ออกแบบระบบคอมพิวเตอรเร่ิมใหความสนใจกับการออกแบบหนวยประมวลผลใหมีความสามารถดาน

การประมวลผลเชิงขนาน เพื่อเพิ่มความเร็วในการประมวลผล นอกจากนี้เล็ทมีซียังมีการแสดงผลขอมูล

เกี่ยวกับการใชพื้นที่หนวยความจําของโปรแกรม แสดงปริมาณพลังงานที่สูญเสียในการประมวลผล

เพื่อใหผูใชคํานึงถึงประสิทธิภาพของโปรแกรมที่ไดพัฒนาข้ึน

Page 6: ตัวอย่างโครงงาน

V

สารบัญ กิตติกรรมประกาศ (Acknowledgement) I

บทคัดยอ II

Abstract III

บทนาํ IV

สารบัญ V

สารบัญรูป VI

วัตถุประสงคและเปาหมาย 1

- วัตถุประสงค 1

- ประโยชน 2

รายละเอียดของการพัฒนา 3

- เนื้อเร่ืองยอ 3

- ทฤษฎีหลักการและเทคนิคหรือเทคโนโลยีที่ใช 11

- เคร่ืองมือที่ใชในการพัฒนา 12

- รายละเอียดโปรแกรมที่ไดพัฒนาในเชิงเทคนิค 12

- ขอบเขตและขอจํากัดของโปรแกรม 13

- กลุมผูใช 13

- ผลการทดสอบโปรแกรม 13

เอกสารอางอิง (Reference) 17

ภาคผนวก (Appendix) 18

Page 7: ตัวอย่างโครงงาน

VI

สารบัญรูป รูปที่ 1 เคร่ืองมือเรียนรูเอลวสิ (ALVIS) แบบแสดงผลตอบกลับอัตโนมัติ – ทนัททีี่ผูเรียนพิมพผิด

(Hundhausen และ Brown, 2007) 4

รูปที่ 2 ผังตนไมตัดสินใจเพื่อประมาณการใชพลังงาน (Xian, Lu, & Li, 2007) 5

รูปที่ 3 การใชพลังงานของโปรแกรมอานไฟลส่ีวิธ ี(Xian, Lu, & Li, 2007) 5

รูปที่ 4 ภาพ Visual Programming Environment (Tan & Cai, 1994) 6

รูปที่ 5 Scalable Graph จะถูกแสดงเปนภาพการแตกเทรดในลักษณะกรวย 3 มิติ (Kim, Lom, & Jun,

2007) 7

รูปที่ 6 แสดง Data dependence และ Graph 7

รูปที่ 7 Iteration Space ของ Array 1 มิติ 7

รูปที่ 9 แสดง Iteration Vector 8

รูปที่ 10 Loop-independent dependence 8

รูปที่ 12 Distance Vector 8

รูปที่ 8 Iteration Space ของ Array 2 มิติ 8

รูปที่ 11 Loop-carried dependence 8

รูปที่ 15 แสดง ตัวอยางที ่2 ของลูปทเกิด loop carried dependency ซึ่งสามารถทําการแกไข

dependency 9

รูปที่ 13 แสดงการวิเคราะห loop carried dependency 9

รูปที่ 14 แสดง ตัวอยางที ่1 ของลูปทเกิด loop carried dependency ซึ่งสามารถทําการแกไข

dependency 9

รูปที่ 16 โปรแกรมเล็ทซี (ฤทธิรณชัย, 2550) 10

รูปที่ 17 แสดงหนาจอเพื่อเลือกไฟล Setup 17

รูปที่ 18 หนาจอการเร่ิมติดต้ังโปรแกรม 18

รูปที่ 19 เลือกประเภทการติดต้ังโปรแกรม 18

รูปที่ 20 เร่ิมตนการติดต้ังโปรแกรม 18

รูปที่ 21 แสดงหนาจอขณะทําการติดต้ังโปรแกรม 19

รูปที่ 22 หนาจอแสดงการลงทะเบียนโปรแกรม 19

รูปที่ 23 หนาจอแสดงการเสร็จส้ินการลงโปรแกรม 20

Page 8: ตัวอย่างโครงงาน

VII

รูปที่ 24 หนาจอแสดงการกาํหนดคุณสมบัติของโปรแกรม 20

รูปที่ 25 เลือกประเภทการกําหนดคุณสมบัติของโปรแกรม 21

รูปที่ 26 กําหนดวนิโดวสอ็อบชั่น 21

รูปที่ 27 กําหนดอ็อบชั่นความปลอดภัยของโปรแกรม 22

รูปที่ 28 แสดงหนาจอขณะติดต้ังการกําหนดคุณสมบัติของโปรแกรม 23

รูปที่ 29 เสร็จส้ินการกําหนดคุณสมบัติของโปรแกรม 23

รูปที่ 30 แสดงหนาจอเพื่อเลือกไฟล jre-6u3-windows-i586-p-s.exe 24

รูปที่ 31 แสดงหนาจอใหยอมรับเงื่อนไขลิขสิทธิ์ของโปรแกรม 25

รูปที่ 32 แสดงหนาจอขณะทําการติดต้ังโปรแกรม 25

รูปที่ 33 แสดงหนาจอเสร็จสิ้นการติดต้ังโปรแกรม 26

รูปที่ 34 นําไฟล letmec_beta1 ไปวางยังทีท่ี่ตองการ 27

รูปที่ 35 ภาพภายในไฟล letmec_beta1 27

รูปที่ 36 ภาพ Logo ของเล็ทมีซ ี 28

รูปที่ 37 ภาพโปรแกรมเล็ทมีซี 28

รูปที่ 38 ภาพ Open file เพือ่เปดไฟล 29

รูปที่ 39 ภาพการเปดไฟล 29

รูปที่ 40 ภาพแสดงไฟล test.cpp 30

รูปที่ 41 ภาพแสดงการเลือกคําส่ัง การ Run โปรแกรม 30

รูปที่ 42 ภาพแสดงการ Run โปรแกรม 31

รูปที่ 43 ภาพแสดง Execution time และ Instruction count 31

รูปที่ 44 ภาพแสดงการเลือก รุนของ Processor และช่ือของรุน ของ Processor 32

รูปที่ 45 ภาพแสดงการยีนยนัการเลือก Processor และการเปลียนแปลงของ Ideal Time 32

Page 9: ตัวอย่างโครงงาน

1

วัตถุประสงคและเปาหมาย

เล็ทมีซีเปนเคร่ืองมือชวยสอนเขียนโปรแกรมแบบขนาน (Parallel Programming) ที่สงเสริมให

ผูเรียนตระหนักถึงความสําคัญของการออกแบบโปรแกรมตอความส้ินเปลืองพลังงาน ผูพัฒนาจึงมี

แนวทางในการพัฒนาโปรแกรมเล็ทมีซีข้ึนเพื่อเปนเครื่องมือชวยในการเรียนรู และฝกฝนการเขียน

โปรแกรมที่มีการประมวลผลเชิงขนาน เพราะในปจจุบันการออกแบบระบบคอมพิวเตอรเร่ิมใหความสนใจ

กับการออกแบบหนวยประมวลผลใหมีความสามารถดานการประมวลผลเชิงขนาน เพื่อเพิ่มความเร็วใน

การประมวลผล นอกจากนี้เล็ทมีซียังมีการแสดงผลขอมูลเกี่ยวกับการใชพื้นที่หนวยความจําของโปรแกรม

แสดงปริมาณพลังงานที่สูญเสียในการประมวลผล เพื่อใหผูใชคํานึงถึงประสิทธิภาพของโปรแกรมที่ได

พัฒนาข้ึน

วัตถุประสงค

เพื่อสรางโปรแกรมเล็ทมีซีซึ่งเปนโปรแกรมประยุกตใชบนวินโดว ตอยอดจากโปรแกรมเล็ทซี โดย

เพิ่มสวนการสอนเขียนโปรแกรมเชิงขนานดังนี้

1. เพื่อพัฒนาตัวตัดคําและตัวเทียบไวยากรณ(Lexical scanner และ Syntactic Analyser)

ใหสามารถ อานไวยากรณ ของโอเพนเอ็มพีเอพีไอได

2. เพื่อพัฒนาสวนติดตอกับผูใชโปรแกรมเล็ทมีซี ใหสามารถไฮไลทไวยากรณของโปรแกรมเชิงขนานได

3. เพื่อพัฒนาสวนวิเคราะหประสิทธิภาพการประมวลผลโปรแกรมเชิงขนานท่ีผูใชเขียนข้ึนในเล็ทมีซี

4. เพื่อพัฒนาตัววิเคราะหความสิ้นเปลืองพลังงานของโปรแกรมเชิงขนานที่ผูใชเขียนข้ึนใน

เล็ทมีซี

Page 10: ตัวอย่างโครงงาน

2

ประโยชน

1. การสรางโปรแกรมเล็ทมีซี เปนแนวคิดใหผูใชเขาใจการประมวลผลเชิงขนาน ซึ่งเปนความรู

เบ้ืองตนของการทํางานของคอมพิวเตอรที่มีระบบการประมวลผลเชิงขนานหรือคอมพิวเตอร

แบบ Core 2 Duo ที่ในปจจุบันคอมพิวเตอรจะเร่ิมมีการพัฒนาระบบการประมวลผลแบบเชิง

ขนานมีแนวโนมใชกันมากข้ึน เพราะฉะนั้นผูใชคอมพิวเตอรจะสามารถศึกษาระบบการ

ประมวลผลเชิงขนานไดจากโปรแกรมเล็ทมีซี

2. สวนของการไฮไลทโปรแกรมจะชวยใหผูใชเห็นความผิดพลาดของการเขียนโปรแกรมไดงายข้ึนและทันที โดยเมื่อผูใชพิมพคําส่ัง หรือโคดในสวนที่เปนคําสําคัญ เล็ทมีซีจะทําการไฮไลทใน

สวนทําเหลานั้นทันที ทําใหผูใชงานสามารถตรวจสอบไดทันที

3. สวนของการวิเคราะหพลังงานและประสิทธิภาพทําใหผูใชทราบถึงการใชพลังงานและประสิทธิภาพของโปรแกรมที่ผูใชเขียนข้ึนได

4. การสรางสวนของโปรแกรมโดยใชจาวาเทคโนโลยี ทําใหผลลัพธที่ได สวนวิเคราะห

ประสิทธิภาพ หรือสวนวิเคราะหการใชพลังงาน สามารถนําไปพัฒนาตอเพื่อสรางเปน

โปรแกรมประยุกตอ่ืนๆ ได

Page 11: ตัวอย่างโครงงาน

3

รายละเอียดของการพัฒนา

ในการพัฒนาโครงงานเล็ทมีซีผูพัฒนาไดทําศึกษารายละเอียด ประวัติความเปนมาของขอมูล

ตางๆ ที่เกี่ยวของ และทฤษฎีตางๆ ที่มีความเกี่ยวของ ดังนี้

เนื้อเร่ืองยอ (Story Board)

เคร่ืองมือเรียนรูสําหรับฝกเขียนโปรแกรมเริ่มตนมีในรูปแบบของโปรแกรมชวยสอน หรือ ซีเอไอ (Computer

Aided Instruction) โดยในป ค.ศ. 1970 มีระบบชวยสอนชื่อ “ทีช (TEACH)” ของมหาวิทยาลัยเอ็มไอที (MIT) เปน

โปรแกรมสอนเขียนโปรแกรมภาษา UNCL ใหกับนักศึกษาช้ันปที่หนึ่ง (Fenichel, Weizenbaum, & Yochelson, 1970)

[5] ในป ค.ศ. 1968 - 1969 ซึ่งไดรับการยอมรับจากผูเรียนโดยสวนใหญ แตผูวิจัยไมไดประเมินประสิทธิภาพของการ

เรียนรูที่ไดรับจากการใชโปรแกรม จึงไมอาจระบุไดวาโปรแกรมทีชมีสวนชวยพัฒนาศักยภาพของผูเรียน

ภายหลังจากระบบทีช มีคณะวิจัยกลุมหนึ่ง (เนวาเลียเนน และคณะ, 2006) กลาวถึงงานวิจัยซึ่งไดพัฒนา

เคร่ืองมือชวยสอนโดยใชภาพหลายชิ้น โดยกลาววา การศึกษาของเคร่ืองมือเหลาน้ีไดแสดงใหเห็นวา การสอนเขียน

โปรแกรมโดยใชภาพมีผลสัมฤทธิ์ตอการเรียนรูระยะยาว (Long-term effects) จึงไดนําเสนองานวิจัยเพื่อพิสูจนผลกระทบ

จากการใชภาพเคล่ือนไหวหรือภาพน่ิง ตอการเรียนรูระยะส้ัน (Short-term effects) เนวาเลียเนน และคณะ ใชโปรแกรม

ชวยสอนช่ือ แพลนเอน่ี (PlanAni) มาทําการทดลอง โดยปรับใหแพลนเอน่ีแสดงภาพเคล่ือนไหวในสองระดับ คือแสดงโดย

ละเอียด และแสดงอยางหยาบหรือแสดงเปนภาพนิ่ง ผูวิจัยทําการทดลองโดยใหผูเรียนกลุมเดียวกัน ทดลองใชแพลนเอน่ี

ทั้งสองรูปแบบ และพบวาผูเรียนใหความสนใจกับขอความประกอบมากกวาภาพเคล่ือนไหว จึงสรุปไดวาการมี

ภาพเคลื่อนไหวโดยละเอียดไมไดมีผลกระทบตอการโตตอบระยะส้ันของผูเรียน เทากับการมีคําอธิบายหรือขอความ

ประกอบภาพ ซึ่งสอดคลองกับขอมูลในตัวโปรแกรม

ในป ค.ศ. 2005 เอฟโฟโปลัส และคณะ (Efopoulos, Dagdilelis, Evangelidis, & Satratzemi, 2005) เสนอ

เคร่ืองมือเรียนรูบนเว็บชื่อ ไวป (WIPE – Web Integrated Programming Environment) โดยเสนอวาเคร่ืองมือเรียนรูควร

ใชหลักการออกแบบสามประการไดแก

1. เคร่ืองมือควรออกแบบใหงายตอการใชงาน (Simplicity)

2. เคร่ืองมือควรใชขอมูลที่สอดคลองกับหนังสือหรือคูมือ (Consistency)

3. เคร่ืองมือควรเนนใหผูเรียนเขียนโปรแกรมไมใชออกแบบจอภาพ (Emphasis on the source code)

คณะวิจัยไดนําไวปไปทดลองใชกับนักศึกษาซ่ึงเรียนเขียนโปรแกรมในช้ันปที่หนึ่ง และคนพบความผิดพลาดท่ี

นักศึกษาสวนใหญตองใชเวลานานในการแกไข ไดแก ผิดไวยากรณแปดประการ และการผิดเชิงตรรกะส่ีประการ

ฮันดฮาวเซนและบราวน (Hundhausen & Brown, 2007) ศึกษาผลกระทบของคุณลักษณะความมีชีวิตชีวา

(Live ness) ของเคร่ืองมือเรียนรู ตอผลสัมฤทธิ์ของการเรียนของผูเร่ิมตนเรียนวิธีการเขียนโปรแกรมเชิงขั้นตอน

(Imperative programming) และไดคนพบวาผูเรียนจะเขียนคําส่ังที่ผิดไวยากรณและผิดความหมายนอยมากหากผูเรียน

ไดรับผลตอบกลับ (feedback) จากเคร่ืองมือเรียนรูเม่ือเทียบกับการไมไดรับผลตอบกลับ แตอยางไรก็ตาม ไมวาผูเรียนจะ

ไดรับผลตอบกลับดวยวิธีการใด ไมสงผลวาจะชวยใหผูเรียนลดการเขียนไวยากรณหรือความหมายผิดแตกตางกันอยางมี

Page 12: ตัวอย่างโครงงาน

4

นัยสําคัญทางสถิติ กลาวคือ การเลือกรับผลตอบกลับเม่ือตนตองการ (Self-select feedback) หรือ การแสดงผลตอบกลับ

ทันทีโดยอัตโนมัติ (Automatic feedback) นั้นไมมีความแตกตางกัน

งานวิจัยของ ฮันดฮาวเซนและบราวน ศึกษาสองในสามองคประกอบ ของคุณลักษณะความมีชีวิตชีวาของ

เคร่ืองมือเรียนรู ซึ่งทานิโมโตไดระบุไว (Tanimoto’s notion of liveness) ไดแก

1. ลักษณะของเนื้อหาที่ตอบกลับตอผูเรียน (feedback content)

2. เวลาท่ีผูเรียนตองรอผลตอบกลับ (feedback delay)

3. วิธีการที่ผูเรียนไดรับผลตอบกลับ (feedback self-selection) ซึ่งหมายถึงผูเรียนสามารถเลือกรับผล

ตอบกลับเม่ือตองการ หรือ เคร่ืองมือเรียนรูแสดงผลตอบกลับทันทีโดยอัตโนมัติ

โดยใชเคร่ืองมือเรียนรูชื่อ เอลวิส (ALVIS) สอนเขียนโปรแกรมภาษาซัลซา (SALSA) ซึ่งเปนภาษาอยางงาย มี

ลักษณะคลายคําส่ังเทียม เอลวิสถูกปรับเปนสามรูปแบบจําแนกตามลักษณะการแสดงผลตอบกลับ ฮันดฮาวเซนและบ

ราวน คัดเลือกนักศึกษาระดับปริญญาตรีชั้นปที่ 1 โดยคัดเลือกผูที่ไมเคยเขียนโปรแกรมมากอน โดยนักวิจัยคาดวาจะทํา

การทดลองในอนาคตเพื่อหาผลกระทบของการชะลอเวลาสงผลตอบกลับ และความเปนไปไดที่จะสรางเคร่ืองมือเรียนรูที่

ปรับตามลักษณะความตองการของผูเรียนได

รูปที่ 1 เครื่องมือเรียนรูเอลวิส (ALVIS) แบบแสดงผลตอบกลับอัตโนมัติ – ทันทีที่ผูเรยีนพิมพผิด

(Hundhausen และ Brown, 2007) สวนการเขียนโปรแกรมโดยตระหนักถึงพลังงาน (Power-aware programming) นั้นเปนประเด็น

สําคัญในการผลิตโปรแกรมสําหรับระบบฝงตัว หรือสําหรับหนวยประมวลผลแบบฝงตัว ซึ่งการวิเคราะห

ความส้ินเปลืองพลังงานไฟฟานั้น อธิบายโดยใชปริมาณพลังงานในหนวย วัตต (watt) วัตตตอช่ัวโมง

(watt-hour) หรือ จูล (Joule) การประมาณการใชพลังงานในปจจุบันทําโดยวิเคราะหจากคําส่ัง

ภาษาแอสเซมบลี โดยคอมไพเลอรซึ่งการวิเคราะหแบงเปน ระดับรอบของสัญญาณนาฬิกา ระดับคําส่ัง

ระดับกลุมคําส่ัง และระดับฟงกชั่น

เซียนและคณะ (Xian, Lu, & Li, 2007)เสนอเคร่ืองมือเขียนโปรแกรมเพื่อสรางโปรแกรมประยุกต

ที่ตระหนักถึงการใชพลังงาน โดยเคร่ืองมือนี้จะแสดงคุณลักษณะการใชพลังงานของโปรแกรมเม่ือ

Page 13: ตัวอย่างโครงงาน

5

ประมวลผล เคร่ืองมือเขียนโปรแกรมที่นักวิจัยเสนอมีลักษณะเปน ไลบราล่ีที่โปรแกรมประยุกตสามารถ

เรียกใชได (Application Program Interface Library) ที่จะนําไปใชเพื่อวิเคราะหความส้ินเปลืองพลังงาน

การประมาณความสิ้นเปลืองพลังงานทําโดยแบงการทํางานของคําส่ังในโปรแกรมเปนสามชนิด

การสงรับขอมูลจากเครือขาย (net) การอานเขียนดิสก (disk) การคํานวณที่หนวยประมวลผล (processor)

เม่ือโปรแกรมประมวลจนถึงคําส่ังQueryEnergy ไลบราร่ีจะประสานงานกับ OS เพื่อนํากลุมคําส่ังที่อยู

ในชวงมาแยกชนิดและประเมินคาพลังงานของคําส่ังแตละชนิดโดยใชตนไมตัดสินใจ (ดังรูปท่ี 2) และ

คํานวณคาประมาณการส้ินเปลืองพลังงานออกมาในหนวยจูล (ดังรูปท่ี3)

รูปที่ 2 ผังตนไมตัดสินใจเพ่ือประมาณการใชพลังงาน (Xian, Lu, & Li, 2007)

รูปที่ 3 การใชพลังงานของโปรแกรมอานไฟลส่ีวิธี (Xian, Lu, & Li, 2007)

ผลลัพธจากการทดลองพบวาไลบรารีสามารถชวยใหผูสรางโปรแกรมไดประเมินความส้ินเปลือง

พลังงานของโปรแกรมได และชวยใหผูเขียนโปรแกรมตระหนักตอความสําคัญในการประเมินการใช

พลังงานในระหวางพัฒนาโปรแกรม

การเขียนโปรแกรมที่มีการทํางานแบบประมวลผลเชิงขนาน จะชวยลดเวลาในการประมวลผลให

ลดลง และเพิ่มประสิทธิภาพใหกับคอมพิวเตอร แตเนื่องจากการพัฒนาโปรแกรมเชิงขนาน มีความยุงยาก

ซับซอนในการเขียนโปรแกรม ดังนั้นหัวใจหลักที่ชวยในการพัฒนาโปรแกรมเชิงขนานจึงอยูกับเคร่ืองมือที่

ชวยในการพัฒนา ซึ่งยังมีนอย ในป ค.ศ.1994 ฮงคอนเทน และคณะ (Tan และ Cai, 1994) ไดเสนอ

เคร่ืองมือที่ชื่อวา วีพีคอนส (VPEcons) ซึ่งเปนเคร่ืองมือที่ชวยในเขียนโปรแกรมเชิงขนาน ประเภท Visual

Page 14: ตัวอย่างโครงงาน

6

Programming Environment โดยเร่ิมจากการพัฒนาเปนรูปแบบของ Model รูปภาพ เพื่อใหงายตอการ

เขาใจระบบการทํางานของโปรแกรมที่ออกแบบ และลักษณะของโปรแกรมประเภท Visual

Programming Environment

รูปที่ 4 ภาพ Visual Programming Environment (Tan & Cai, 1994)

วีพีคอนส จึงเปนอีกเคร่ืองมือหนึ่งที่เขามาชวยในการพัฒนาโปรแกรมเชิงขนานใหงายข้ึน โดย

ลักษณะของ วีพีคอนสจะใชกราฟฟกเขามาเปนเคร่ืองมือชวยในการออกแบบโปรแกรมเชิงขนานใหอยูใน

รูปแบบของโมเดล หลังจาก VPECons จะแปลงจากรูปแบบของโมเดลเปนภาษา C ที่สามารถทํางาน

บนระบบเชิงขนานได

ภายหลังมีการใชคําส่ังโอเพนเอ็มพี ซึ่งเปนสวนตอประสานโปรแกรมประยุกต(API) ที่ถูกเลือกใช

สําหรับพัฒนาโปรแกรมเชิงขนาน สามารถรองรับการโปรแกรมในภาษาซี/ซีพลัสพลัสและฟอรเทน รวมถึง

รวมถึง ยูนิค(Unix )และไมโครซอรฟ วินโดวร (Microsoft Window) ในป ค.ศ. 2004 เรนี คลอบเบอร และ

คณะ (Kobler, Kranzlmuller, และ Volkert, 2004) ไดเสนอเคร่ืองมือที่ชื่อวา เดวิซ (DeWiz) ในรูปแบบ

ของกราฟแสดงเหตุการณ(Event Graph) ที่จะอธิบายการเปล่ียนแปลงในแตละข้ันตอนการประมวลผล

คําส่ังตางๆ ในสวนของโปรแกรมเชิงขนาน (Critical Regions) ที่ถูกแทรกดวยคําส่ังของ OpenMP

ในการใชคําส่ัง เพื่อใชในการแตกเทรดมักจะเกิดปญหาในการแยงกันใชขอมูล หรือที่เรียกวา

Data race ยังโจ คิม และคณะ (Kim, Lom, และ Jun, 2007) ไดมีการนําเสนอ Thread Visualization tool

ซึ่งเปนเคร่ืองมือที่เขามาชวยแสดง ลําดับการทํางานของการแตกเทรด เปนภาพ Scalable Graph ที่ถูก

แสดงเปนภาพการแตกเทรดในลักษณะกรวย 3 มิติ (3D Cone Scalable Thread Visualization และจะถูก

ตรวจสอบประสิทธิภาพ ในการคนหาการแยงกันใชขอมูล ไดโดย Synthetic Program

Page 15: ตัวอย่างโครงงาน

7

รูปที่ 5 Scalable Graph จะถูกแสดงเปนภาพการแตกเทรดในลักษณะกรวย 3 มิติ (Kim, Lom, & Jun, 2007)

Data Dependence เปนการ รอบันทึกและการอานคาของขอมูลลงหนวยความจํา ที่ตองพิจาณาในเรื่องของลําดับการประมวลผล

ของตัวแปรในโปรแกรม โดยสามารถแบงประเภทไดดังนี้

1. Flow Dependence (or true dependence) : (RAW: read after write)

2. Antidependence : (WAR: write after read)

3. Output Dependence: (WAW: writer after write)

รูปท่ี 6 แสดง Data dependence และ Graph

การวิเคราะห loop carried dependency Loop dependence คือการที่ในหน่ึงรอบการวนลูปแตละคร้ัง statement การทํางานขางในลูปมี

dependency กันระหวางลูป กลาวคือขางในการทํางานของลูปมีขอมูลที่เกิดความเก่ียวเนื่องกันในลักษณะของ

Data dependency ทําใหลูปนั้นประมวลผลโดยการแบงการทํางานออกเปนเทรดยอยๆไมได

ส่ิงที่ตองพิจารณาในการวิเคราะห loop carried dependency มีดังนี้ 1. Iteration Space

เปนตัวบอกจํานวนครั้งที่เกิดการวนลูป ซึ่งหมายความวา loop มีการกวาดพ้ืนที่ไปเทาใด เชน

do i = 1,100 A(i) = A(i)+1 enddo

รูปที่ 7 Iteration Space ของ Array 1 มิต ิ

Page 16: ตัวอย่างโครงงาน

8

2. Iteration Vector Iteration Vector เปนคาที่บอกขนาด และทิศทางของ iซึ่งเปนตัวกําหนดการวนลูป วาคา iมีการเพ่ิมหรือ

ลด ไปในทิศทางใด

รูปท่ี 9 แสดง Iteration Vector จากรูป Iteration Vector คือคา i ที่มีการเพ่ิมทีละ 1 และเคล่ือนที่ไปในทิศทางขวามือ

3. Dependence and Loop ในการประมวลผลเชิงขนานนั้น จําเปนตองพิจารณาดวยวา ขางในลูปมีการเกิด dependency แบบใดซึ่ง

ในบางลักษณะของ dependency สามารถแกไขได ซึ่งสงผลใหสามารถแบงการทํางานเปนสวนยอยๆที่

สามารถทํางานพรอมกันได ลักษณะของ Dependency

- Loop-independent dependence

รูปท่ี 10 Loop-independent dependence

- Loop-carried dependences

4. Distance Vectors เปนคาที่บอกวา คา output ที่การประมวลผลกอนหนา จะเปนคา input ที่คําส่ังตอมา ซึ่งอยูในลูปเดียวกัน โดย

มีระยะหาง เปนเทาใด โดยหาคา Distance Vector ไดจาก v = iT – iS (target– source)

รูปที่ 12 Distance Vector

do j = 1,6 do i = 1,5 A(j,i) = A(j-1,i-1)+1 enddo enddo

do i = 1,100 A(i) = B(i) + 1 C(i) = A(i) * 2 enddo

do i = 1,6 do j = 1,5 A(i,j) = A(i-1,j-2)+1 enddo enddo

Distance Vector : (1,2)

do i = 1,100 A(i) = A(i-1)+1 enddo

do i = 1,100 A(i) = B(i) + 1 C(i) = A(i-1) * 2 enddo

รูปท่ี 8 Iteration Space ของ Array 2 มิติ

รูปท่ี 11 Loop-carried dependence

Page 17: ตัวอย่างโครงงาน

9

วิเคราะหหา loop carried dependency ในการเขียนโปรแกรม เชิงขนาน นั้น ส่ิงแรกที่ตองคํานึงถึงนั้นคือ การพิจารณาวาในโคดสวนใดสามารถทําการ

ประมวลผลเชิงขนานได โดยตองวิเคราะห วาเกิด dependency หรือไม โดยหาจากการหาคาของ iteration space และ

คาของ distance vector โดยทั้งสองจะทําใหทราบวาการทํางานของลูปนั้น มี input ใดที่รอ output อื่นอยูซึ่งหมายความ

วาในการทํางานนั้นเกิด dependency ซึ่งในขั้นตอมาคือการวิเคราะหวา dependency สามารถแกไขไดหรือไม ถา

สามารถแกไข ได หมายความวา โคดสวนนั้นสามารถทําการประมวลผลเชิงขนานได จากโคดตัวอยาง วิเคราะหหา Distance vectors ได

Distance vectors : (1,0) for accesses to A

(0,1) for accesses to B

A เกิด loop carries dependency ที่ลูป i

B เกิด loop carries dependency ที่ลูป j

Loop Transformations

ลักษณะของลูปขางลางนี้ เปนลูปที่เกิด loop carried dependency ซึ่งสามารถทําการแกไข

dependency ที่เกิดขึ้นได โดยการสลับการทํางานของลูปขางใน กับลูปขางนอก ทําใหสามารถแบงงานยอย

เพื่อการประมวลผลเชิงขนานได

รูปที่ 15 แสดง ตัวอยางที่ 2 ของลูปทเกิด loop carried dependency ซึ่งสามารถทําการแกไข dependency

do i = 1,5 do j = 1,5 A(i,j) = B(i-1,j)+1 B(i,j) = A(i, j-1) * 2 enddo enddo

do i = 1,6 do j = 1,5 A(i,j) = A(i-1,j-2)+1 enddo enddo

do j = 1,5 do i = 1,6 A(i,j) = A(i-1,j-2)+1 enddo enddo

รูปที่ 13 แสดงการวิเคราะห loop carried dependency

รูปที่ 14 แสดง ตัวอยางที่ 1 ของลูปทเกิด loop carried dependency ซึ่งสามารถทําการแกไข dependency

Page 18: ตัวอย่างโครงงาน

10

จากการศึกษาเคร่ืองมือเรียนรูสําหรับฝกเขียนโปรแกรม โดยโปรแกรมเล็ทซี (ฤทธิรณชัย, 2550)

ซึ่งเปนเคร่ืองมือชวยสอนเขียนโปรแกรมเชิงลําดับรูปแบบหนึ่ง

รูปท่ี 16 โปรแกรมเล็ทซี (ฤทธิรณชยั, 2550)

และจากการศึกษาเร่ืองของการพัฒนาโปรแกรมเชิงขนาน ทําใหทราบวา โปรแกรมในลักษณะ

เคร่ืองมือเรียนรูสามารถชวยใหโปรแกรมเมอรมีผลสัมฤทธิ์ทางการเรียนเพิ่มมากข้ึน ประกอบกับแนวโนม

ของคอมพิวเตอรในอนาคต การออกแบบระบบคอมพิวเตอรเร่ิมใหความสนใจกับการ เพิ่มความเร็วในการ

ประมวลผล โดยออกแบบใหเคร่ืองคอมพิวเตอรมีหลายหนวยประมวลผล ซึ่งจะชวยลดเวลาในการ

ประมวลผลใหลดลง และเพิ่มประสิทธิภาพใหกับคอมพิวเตอรไดเปนอยางมาก ดังนั้นการทํางานแบบ

ประมวลผลเชิงขนานจึงมีแนวโนมวาถูกนําไปใชกันมากในอนาคตอันใกล และยังขาดเคร่ืองมือสําหรับการ

ชวยเขียนโปรแกรมเชิงขนาน จึงเปนเรืองที่นาสนใจที่จะสรางโปรแกรมเพื่อชวยโปรแกรมเมอรในการเขียน

โปรแกรมเชิงขนานข้ึนมา

การพัฒนาเกี่ยวกับการเขียนโปรแกรมเชิงขนานกอนหนานั้นมีเคร่ืองมือที่ถูกพัฒนาข้ึนมากมาย

โดยสวนใหญจะเนนการแสดงภาพการทํางานของโปรแกรมที่ทํางานเชิงขนานที่มีความซับซอนเพื่อให

เขาใจไดงายข้ึน และเพื่อตรวจหาความผิดพลาดจาการทํางานเชิงขนาน และจากการวิจัยตางๆไดชี้ให

ตระหนักวาการทํางานเชิงขนานมีลักษณะโครงสรางที่ซับซอนซึ่งเกิดจากการทํางานของสวนยอยเปน

จํานวนมาก และการแสดงเปนรูปภาพของโครงสราง และพฤติกรรมของการประมวลผลเชิงขนานนั้นมี

ความจําเปนและสามารถชวยใหเขาใจโปรแกรมเชิงขนานไดงายข้ึน ผูพัฒนาเล็ทมีซีจึงเลือกที่จะพัฒนา

เคร่ืองมือชวยเขียนโปรแกรมเชิงขนานโดยใหความสามารถการแสดงภาพการทํางานของโปรแกรมเชิง

ขนานเปนส่ิงสําคัญที่โปรแกรมตองมี

Page 19: ตัวอย่างโครงงาน

11

ทฤษฎีหลักการและเทคนิคหรือเทคโนโลยีที่ใช

1. การหาคาประสิทธิภาพจะมีสวนที่ติดตอกับผูใช ซึ่งแบงออกเปนสองสวนหลัก คือ

1.1 เวลาที่ไดจากการประมวลผลจริง (Measured Response Time) ในสวนนี้จะเปนสวนที่มี

การแสดงเวลาที่จับไดในการประมวลผลโปรแกรมที่ผูเรียนเขียนข้ึนจริง โดยมีหนวยเปนมิลลิวนิาท ี

(ms)

1.2 เวลาประมวลผลที่ไดจากการคํานวณ (Theoretical Execution Time) ในสวนนี้จะเปน

สวนที่มีการแสดงเวลาในการประมวลผลโปรแกรมที่ผูเรียนเขียนข้ึนโดยไดจากการคํานวณ ซึ่งเวลา

ดังกลาวสามารถหาไดจากสมการประเมนิประสิทธิภาพ (Performance Equation) โดยสมการ

ประเมินประสิทธิภาพ มีดังนี ้

ประมาณความเร็วในการประมวลผล (Execution Time Equation)

คําอธิบายสมการ

1. Execution Time คือ เวลาในการประมวลผล มีหนวยเปน วินาท ี(second)

2. Instruction Count คือ จํานวนคําส่ังที่ประมวลผลในโปรแกรม

3. CPI หรือ Cycle Per Instruction คือ จํานวนรอบการทาํงานตอหนึง่คําส่ัง

4. Clock Rate คือ ความถีข่องสัญญาณนาฬิกาของหนวยประมวลผล มีหนวยเปน เฮิรซ (Hz)

2. ประเภทชุดคําส่ังภาษาของเคร่ือง ไดแก

1. Data Transfer Instruction

2. Control Transfer Instruction

3. I/O Instruction

4. Floating-point Instructions

5. Binary Arithmetic Instructions

6. No Operation Instructions

Execution Time = Instruction Count * CPI * 1/Clock Rate

Page 20: ตัวอย่างโครงงาน

12

เคร่ืองมือที่ใชในการพัฒนา

1. ภาษา Java

2. Eclipse RCP

3. Java CUP

4. JFlax

5. JFreeChart

รายละเอียดโปรแกรมที่ไดพฒันาในเชงิเทคนิค (Software Specification)

1. Input/Output Specification

1.1 Input Specification

- โคดภาษา C++ ที่ผูใชเขียนข้ึน

1.2 Output Specification

- โคดโปรแกรมที่ทาํการไฮไลท - แสดงผลการคอมไพลโปรแกรม และ Error ของโปรแกรมที่ผูใชเขียนข้ึน

- แสดง Instruction ดวย Pie Chart

- แสดง Excuetion Time ดวย Bar Chart

2. Functional Specification

2.1 สามารถวิเคราะหและไฮไลท(highlight)ไวยากรณของโปรแกรม

2.2 สามารถ Compile และ Run โปรแกรมที่ผูใชเขียนข้ึนได

2.3 สามารถรายงาน error ของโปรแกรม

2.4 สามารถคํานวณ Excuetion Time ของโปรแกรมและแสดงออกมาในรูปแบบของ Bar Chart

ได

2.5 คํานวณหา Instruction count ของโปรแกรม และแสดงออกมาในรูปแบบของ Pie Chart ได

Page 21: ตัวอย่างโครงงาน

13

ขอบเขตและขอจํากัดของโปรแกรมที่พัฒนา

การสรางเคร่ืองมือเรียนรูบนวินโดวส

การสรางสวนวิเคราะห และไฮไลทภาษา

การสรางสวนวิเคราะหเพื่อสงเสริมการเขียนโปรแกรมทีต่ระหนักถึงประสิทธิภาพและพลังงาน

กลุมผูใชโปรแกรม

นักศึกษาและผูสนใจเกี่ยวกบัการเขียนโปรแกรมเชิงขนาน ซึ่งเปนพื้นฐานของการพฒันาของ

สถาปตยกรรมหนวยประมวลผลแบบมัลติคอร เพื่อเพิม่ศักยภาพการประมวลผล

ผลการทดสอบโปรแกรม

1. ทดสอบการไฮไลทภาษาของเล็ทมีซ ี

ผลการทดสอบ มีการ ไฮไลทสีของคําสําคัญ ไดถูกตอง

2. ทดสอบการ Compile และ Run โปรแกรมที่ผูใชเขียนข้ึน

ผลการทดสอบ สามารถ Compile และ Run Program ที่ผูใชเขียนข้ึนไดถูกตอง

3. ทดสอบการแสดง error ของโปรแกรม

ผลการทดสอบ มีการแสดง error ในสวนของ Console View ได

4. คํานวณ Excuetion Time ของโปรแกรม

ผลการทดสอบ มีการแสดงผลการคํานวณ Excuetion Time ดวย Bar Chart

5. คํานวณหา Instruction count ของโปรแกรม

ผลการทดสอบ มกีารแสดงผลการคํานวณ Instruction count ดวย Pie Chart

Page 22: ตัวอย่างโครงงาน

14

ปญหาและอุปสรรค

เล็ทมีซีมกีารพฒันาที่คอยขางซับซอน การพัฒนาจึงตองถูกแบงออกเปนสวนๆ และจะมีการพัฒนา

ที่แตกตางกัน จึงตองใชเวลาในการวิเคราะหและพิจารณาในแตละสวน

เล็ทมีซ ีมีสวนที่เปน Compiler ซึ่งตองมกีารเขียนในสวน Passer และ Scanner ที่ตองใชเวลาใน

การเขียน และตองมีการตรวจสอบ

มีสวนที่ตองใชเคร่ืองมือเขามาชวยในการพฒันาโครงการ เชน Eclipse RCP ซึ่งผูพฒันาไมมี

ความคุนเคย และตองมีการศึกษาเครื่องมอืที่เขามาชวยในการพัฒนา ซึ่งอาจตองใชเวลาใน

การศึกษามาก

เล็ทมีซ ีตองมีการนาํสวนตางๆ ที่ไดพฒันาข้ึนมาประกอบเปนระบบใหญ โดยแตละสวนทําการ

พัฒนาโดยใชวิธีแตกตางกนั และจะมีปญหาในการประกอบเขากนัเปนระบบใหญ

แนวทางในการพัฒนาและประยุกตใชรวมกับงานอ่ืนๆ ในข้ันตอไป

โครงงานเล็ทมซีีเปนเคร่ืองมอืชวยสอนภาษาเขียนโปรแกรมเชิงขนาน ดวยภาษาซีพลัสพลัส

เพราะเนื่องจากคอมพิวเตอรสวนใหญถูกพฒันาใหมหีนวยประมวลผลหลายคอร ดังนั้นผูเขียนโปรแกรม

จะตองเปล่ียนวิธีการพัฒนาโปรแกรมจากเชิงลําดับมาเปนเชิงขนาน เพื่อเปนส่ิงทีจ่ะเพิ่มประสิทธิภาพของ

เคร่ืองประมวลผลหลายคอรใหทํางานไดเต็มประสิทธิภาพยิง่ข้ึน และเนื่องจากสภาวะโลกในปจจุบันมีการ

ตระหนักถึงการใชพลังงานมากข้ึน การเขียนโปรแกรมที่คํานงึถงึการประหยัดพลังงานจึงเปนอีกส่ิงหนึง่ที่

ตองเหน็ความสําคัญอีกเชนกัน เล็ทมีซีจงึเปนเคร่ืองมือทีจะชวยใหผูใชจึงจําเปนตองมีการเรียนรูการเขียน

โปรแกรมเชิงขนาน และในขนะเดียวกนัก็ชวยใหผูใชเหน็ถึงการใชพลังงานของโปรแกรมที่ไดเขียนข้ึนเชนกัน

เพื่อใหผูใชนําไปปรับปรุง เพือ่ใหโปรแกรมที่พัฒนามีประสิทธิภาพย่ิงข้ึน

เนื่องจากเล็ทมีซีเปนโปรแกรมที่อานภาษาซีพลัสพลัส แตสามารถพัฒนาเพิ่มเติมเพือ่นําไปใช

วิเคราะหภาษาอ่ืนๆ เชน ซี จาวา หรือ ชีซาพ โดยนําสวนของ Passer และ Scanner ของเล็ทมีซีไปพัฒนา

เพิ่มเติม

Page 23: ตัวอย่างโครงงาน

15

ขอสรุปและขอเสนอแนะ

โครงงานเล็มมซีีถูกออกแบบใหมีโครงสรางที่สามารถทําความเขาใจไดงาย ซึง่ผูสนใจสามารถ

นําไปพฒันาตอใหมีประสิทธภิาพ และทํางานไดหลากหลายมากข้ึน โดยการพฒันาใหมีการแสดงผลใน

รูปแบบตางๆ ที่มีความหลากหลายและใหงายตอการเขาใน เชน การใชภาพประกอบการแสดงผล ภาพ

ประกอบการประมวลผล การเพิ่มคําอธิบาย หรือ เพิ่มเนื้อหาที่จะเขามาชวยในการเรียนรูเพิม่เติม

ในสวนของ การคํานวณหา ชุดคําส่ัง Instruction count สามารถนําไปพัฒนาในการหาพลังงาน

ไฟฟา เพื่อวิเคราะหความส้ินเปลืองพลังงานของโปรแกรมที่เขียนได

Page 24: ตัวอย่างโครงงาน

16

เอกสารอางอิง (Reference)

Efopoulos, V., Dagdilelis, V., Evangelidis, G., & Satratzemi, M. (2005). a programming

environment for novices. Proceedings of the 10th annual SIGCSE conference on

Innovation and technology in computer science education (pp. 113-117). Caparica,

Portugal: ACM Press New York, NY, USA.

Fenichel, R. R., Weizenbaum, J., & Yochelson, J. C. (1970). A program to teach programming.

In Communications of the ACM (pp. 141-146). New York: ACM.

Hundhausen, C. D., & Brown, J. L. (2007). An experimental study of the impact of visual

semantic feedback on novice programming. In Journal of Visual Languages and

Computing (pp. 537-559). Orlando, FL, USA: Academic Press, Inc.

Kim, Y.-J., Lom, J.-S., & Jun, Y.-K. (2007). Scalable Thread Visualization for Debugging Data

Race in OpenMP Programs., (pp. 310-321).

Mahim, M., J., C. T., Tiberiu, C., Girish, V., C., G. S., & Mihai, B. (December 2006). Tartan:

evaluating spatial computation for whole program execution. the 12th international

Conference on Architectural Support For Programming Languages and Operating

Systems (pp. 163-174). New York, NY, USA: ACM.

Tan, H.-K., & Cai, W. (1994). VPEcons:Avisual Constructor for Parallel Programming.

Xian, C., Lu, Y.-H., & Li, Z. (2007). A programming environment with runtime energy

characterization for energy-aware applications. the 2007 international symposium on

Low power electronics and design (pp. 141-146). New York, NY, USA: ACM.

ฤทธิรณชัย, พ. (2550). โครงงานปญหาพเิศษระดับปริญญาตรี เร่ือง เล็ทซ:ี เคร่ืองมือเรียนรูเพื่อฝกเปน

C++ โปรแกรมเมอรที่มีประสิทธิภาพและพอเพียง. กรุงเทพ: มหาวทิยาลัยธรรมศาสตร.

Page 25: ตัวอย่างโครงงาน

17

ภาคผนวก (Appendix)

คูมือการติดต้ังอยางละเอียด 1. MySQL Server Version 5.0 ซึ่งมีข้ันตอนการติดต้ังโปรแกรม ดังรูปขางลางตอไปนี้

1. เลือกไฟล Setup

รูปท่ี 17 แสดงหนาจอเพือ่เลือกไฟล Setup

2. หลังจากข้ึนหนาตาง Setup ใหกดปุม Next >

Page 26: ตัวอย่างโครงงาน

18

รูปท่ี 18 หนาจอการเริ่มติดต้ังโปรแกรม

3. เลือกติดต้ังโปรแกรมแบบ Typical เนื่องจากเปนการลงแบบมาตรฐาน จากนั้นกดปุม Next >

รูปท่ี 19 เลอืกประเภทการติดต้ังโปรแกรม

4. กดปุม Install เพื่อเร่ิมตนการติดต้ังโปรแกรม

รูปท่ี 20 เริ่มตนการติดต้ังโปรแกรม

Page 27: ตัวอย่างโครงงาน

19

5. ระบบจะทําการติดต้ังโปรแกรมลงบนเคร่ืองคอมพวิเตอร

รูปท่ี 21 แสดงหนาจอขณะทําการติดต้ังโปรแกรม

6. เลือก Skip Sign-Up จากนัน้กดปุม Next >

รูปท่ี 22 หนาจอแสดงการลงทะเบียนโปรแกรม

Page 28: ตัวอย่างโครงงาน

20

7. เลือก Configure the MySQL Server now จากนั้นกดปุม Finish เพื่อทําการกําหนดคุณสมบัติ

ของโปรแกรม

รูปท่ี 23 หนาจอแสดงการเสร็จสิ้นการลงโปรแกรม

8. กดปุม Next > เพื่อทาํการกําหนดคุณสมบัติของโปรแกรม

รูปท่ี 24 หนาจอแสดงการกําหนดคุณสมบัติของโปรแกรม

Page 29: ตัวอย่างโครงงาน

21

9. เลือก Standard Configuration จากนัน้กดปุม Next >

รูปท่ี 25 เลอืกประเภทการกําหนดคุณสมบัติของโปรแกรม

10. เลือก Install As Windows Service และ Launch the MySQL Server automatically จากนั้นกด

ปุม Next>

รูปท่ี 26 กําหนดวินโดวสอ็อบชั่น

Page 30: ตัวอย่างโครงงาน

22

11. เลือก Modify Security Settings แลวใสรหัสผาน หลังจากนัน้เลือก Enable root access from

remote machines แลวกดปุม Next >

รูปท่ี 27 กําหนดอ็อบชั่นความปลอดภัยของโปรแกรม

12. กดปุม Execute เพื่อทําการกําหนดคุณสมบัติของโปรแกรม

Page 31: ตัวอย่างโครงงาน

23

รูปท่ี 28 แสดงหนาจอขณะติดต้ังการกําหนดคุณสมบัติของโปรแกรม

13. กดปุม Finish เปนการเสร็จส้ินการกําหนดคุณลักษณะของโปรแกรม

รูปท่ี 29 เสรจ็สิ้นการกําหนดคุณสมบติัของโปรแกรม

Page 32: ตัวอย่างโครงงาน

24

2 . การติดต้ังโปรแกรมท่ีใชในโปรแกรมเล็ทมีซี โดยภายในเคร่ืองคอมพวิเตอรของผูใช ตองมี

GNU make 3.8 ข้ึนไป และ มี GNU gcc และ โปรแกรมที่นาํมาติดต้ัง มีดังนี ้

2.1 Java Runtime Environment (JRE) Version 1.6 ซึ่งมีข้ันตอนการติดต้ังโปรแกรม ดังรูปขางลาง

ตอไปนี้

1. เลือกไฟล jre-6u3-windows-i586-p-s.exe

รูปท่ี 30 แสดงหนาจอเพือ่เลือกไฟล jre-6u3-windows-i586-p-s.exe

Page 33: ตัวอย่างโครงงาน

25

2. กดปุม Accept > เพื่อยอมรับเงื่อนไขลิขสิทธิ์ของโปรแกรมตามกฎหมาย

รูปท่ี 31 แสดงหนาจอใหยอมรับเงื่อนไขลขิสทิธิข์องโปรแกรม

3. ระบบจะทาํการติดต้ังโปรแกรมลงบนเคร่ืองคอมพวิเตอร

รูปท่ี 32 แสดงหนาจอขณะทําการติดต้ังโปรแกรม

4. กดปุม Finish เปนการเสร็จส้ินการติดต้ังโปรแกรม

Page 34: ตัวอย่างโครงงาน

26

รูปท่ี 33 แสดงหนาจอเสร็จสิ้นการติดต้ังโปรแกรม

2.2 การติดต้ังเล็ทมีซี 1. สามารถคัดลอกไฟล letmec_beta1 ไปวางยงัที่ที่ตองการไดเลย

Page 35: ตัวอย่างโครงงาน

27

รูปท่ี 34 นําไฟล letmec_beta1 ไปวางยังที่ที่ตองการ

2. เปดไฟล letmec_beta1 จะพบไฟลดังภาพ

รูปท่ี 35 ภาพภายในไฟล letmec_beta1

3. เลือกเปดไฟล letmec_bet.exe จะปรากฏ Logo ของเล็ทมีซี ดังภาพ(สามารถสราง Shoutcu ได

จากไฟลนี)้

Page 36: ตัวอย่างโครงงาน

28

รูปท่ี 36 ภาพ Logo ของเล็ทมีซี

4. จะปรากฏภาพโปรแกรมเล็ทมีซ ี

รูปท่ี 37 ภาพโปรแกรมเล็ทมีซี

คูมือการใชงานอยางละเอียด

1. เลือก Open file เพื่อเปดไฟลที่ตองการ

Page 37: ตัวอย่างโครงงาน

29

รูปท่ี 38 ภาพ Open file เพื่อเปดไฟล

2. เลือกไฟลที่ตองการ ดังตัวอยางคือ test1.cpp

รูปท่ี 39 ภาพการเปดไฟล

3. ไฟลที่เปดข้ึนมาได ดังภาพคือไฟล test1.cpp

Page 38: ตัวอย่างโครงงาน

30

รูปท่ี 40 ภาพแสดงไฟล test.cpp

4. เลือก Analysis -> Run ทําการ Run โปรแกรม

รูปท่ี 41 ภาพแสดงการเลือกคําสัง่ การ Run โปรแกรม

Page 39: ตัวอย่างโครงงาน

31

5. เล็ทมีซีจะแสดงผลการ Run โปรแกรมที่ผูใชเขียนข้ึน

รูปท่ี 42 ภาพแสดงการ Run โปรแกรม

6. โปรแกรมเล็มทีซี จะแสดง Execution time และ Instruction count

รูปท่ี 43 ภาพแสดง Execution time และ Instruction count

Page 40: ตัวอย่างโครงงาน

32

7. เราสามารถเลือก รุนของ Processor และช่ือของรุน ของ Processor ได

รูปท่ี 44 ภาพแสดงการเลือก รุนของ Processor และชื่อของรุน ของ Processor

8. กด Confirm เพื่อยีนยันการเลือก คาของ Ideal Time จะเปลียนไป

รูปท่ี 45 ภาพแสดงการยนียันการเลือก Processor และการเปลยีนแปลงของ Ideal Time