วันเสาร์ที่ 3 พฤษภาคม พ.ศ. 2557

Computer 1 bit 


       อุกปรณ์ที่ใช้
             ซื้อมาจากร้านชุมพล
                 -IC
                 -แผ่นไข่ปลา


             ซื้อมาจากร้านข้างร้านตู้ปลา
                 -ตระกั่ว
                 -สวิตท์ของวงจร
                 -สายไฟ
                 -socket  16  pin
                 -socket  14  pin
                 -LED สีแดง
             
             ซื้อมาจากร้านราชา
                     -IC      2     ตัว

                          รวมเงินทั้งหมด  546   บาท


รายชื่อสมาชิกในกลุ่ม (กลุ่ม 501)

        53363423  นายณรงค์วุฒิ กิตติเมธีวรกุล
        53363454  นายธงชัย จินดาธรรม
        53363614  นายประกายเพชร ฟองงาม
        53363652  นางสาวปิยวรรณ บุญพยอม
        53363874  นายโรจน์อานันท์ สังข์นวล
        53364055  นายสุรัตน์ สังข์แสง


VDO : อธิบายได้ที่ http://www.youtube.com/watch?v=pH5Zk15JIhc&feature=youtu.be



วันเสาร์ที่ 19 เมษายน พ.ศ. 2557

What Is Software Engineering Anyway?

การนำเสนอเกี่ยวกับวิศวกรรมซอฟต์แวร์ว่ามันแตกต่างจากวิทยาศาสตร์คอมพิวเตอร์และมันได้เข้ามาในชีวิตของนักเรียนเป็นนักศึกษาที่ RIT ได้อย่างไร

-นักวิทยาศาสตร์ควรที่จะต้องรู้เกี่ยวกับเทคโนโลยี เพื่อที่จะได้ปรับปรุบและพัฒนาให้มีความก้าวหน้ามากขึ้น
-นักวิทยาศาสตร์ ควรที่จะทำให้วิทยาศาสตร์มีความเจริญก้าวหน้า
-ในทางตรงกันข้าม วิศวกรรมซอฟเเวร์ก็ควรที่จะรู้ลักษณะเทคโนโลยีที่จะออกแบบ และความเหมาะสมของการออกแบบนั้นๆ
-วิศวกรควรที่จะเรียนรู้วิธีการสร้างและออกแบบผลงานให้มีคุณภาพ
-วิศกร คารที่จะไม่ทำให้เกิดความเสียหายในทางวิศวกรรม

เหมือนกับการที่เราเป็นนักเรียน
-ควรมีความคิดใหม่ๆ
-มีการทำงานเป็น teamwork
-มีการทำการบ้านคิดเป็น 20 ชั่วโมงต่อสัปดาห์



เพิ่มเติม
What is Software Engineering?
•• Software engineering is an engineering discipline that is concerned with all 
aspects of software production.
•• Software engineers should adopt a systematic and organised approach to 
their work and use appropriate tools and techniques depending on the 
problem to be solved, the development constraints and the resources 
available

• What is a software process?
•• A set of activities whose goal is the development or evolution of software.
•• Generic activities in all software processes are:
• Specification Specification -- what the system should do and its development constraints
• Development -- production of the software system
• Validation -- checking that the software is what the customer wants
• Evolution -- changing the software in response to changing demands.


ที่มาจาก :
http://www.youtube.com/watch?v=bFmThPwKRGU

วันพฤหัสบดีที่ 20 มีนาคม พ.ศ. 2557

Pipeline


Samsung Galaxy Pocket

ARM11

Hisilicon SD5113 (ARM11) 530 MHz, 16-bit DDR2-667, Huawei EchoLife HG8245 GPON Terminal.
  • ARMv6 architecture.
  • L1 Data cache = 16 KB. 32 B/line, 4-WAY.
  • L1 Instruction cache = 16 KB. 32 B/line, 4-WAY.
  • L1 TLB size = 10 items (Micro-TLB), fully associative.
  • L2 TLB size = 64 items (Main TLB), 2-WAY.
  • Single-issue out-of-order-completion CPU.
  • Dynamic prediction: BTAC (Branch Target Addresses Cache): 128-entry, direct-mapped, 2-bit saturating prediction history scheme. BTAC hits enable branch prediction with zero cycle delay.
  • Static branch prediction: The processor predicts that all forward conditional branches are not taken and all backward branches are taken.
  • Return stack: 3-entry circular buffer used for the prediction of procedure calls and procedure returns. Only unconditional procedure returns are predicted.
  • Hit-under-miss: When an instruction requests data from a cache, if the data is not there, ARM11 treats this as a non-blocking operation. The cache is instructed to get the missing data, then the pipeline execution can continue as long as the next instructions are not dependent on the missing data. Even if the next instruction is another data load, the ARM11 microarchitecture permits this operation if the data is in the cache (i.e. a hit-under-miss). Only if three successive data misses are encountered, will the pipeline stall.
  • The execution of an ALU or MAC instruction will not be delayed by a waiting LS instruction.

    Pipeline

    Branch misprediction penalty = 6 cycles.
    #StageL/SDescription
    1Fe1Instruction fetch + dynamic branch prediction
    2Fe2
    3DeDecode + static branch prediction + Return Stack
    4IssUnstruction issue + Register read
    5ShADDShifter / Address generation
    6ALUDC1Main integer operation calculation / First stage of data cache access
    7SatDC2Saturation of integer results / Second stage of data cache access
    8WBexWBlsWrite back

เพิ่มเติม

1.7. Pipeline stages

Figure 1.2 shows:
  • the two Fetch stages
  • a Decode stage
  • an Issue stage
  • the four stages of the MP11 CPU integer execution pipeline.
These eight stages make up the MP11 CPU pipeline.
Figure 1.2. MP11 CPU pipeline stages

The pipeline stages are:
Fe1
First stage of instruction fetch and branch prediction.
Fe2
Second stage of instruction fetch and branch prediction.
De
Instruction decode.
Iss
Register read and instruction issue.
Sh
Shifter stage.
ALU
Main integer operation calculation.
Sat
Pipeline stage to enable saturation of integer results.
WBex
Write back of data from the multiply or main execution pipelines.
MAC1
First stage of the multiply-accumulate pipeline.
MAC2
Second stage of the multiply-accumulate pipeline.
MAC3
Third stage of the multiply-accumulate pipeline.
ADD
Address generation stage.
DC1
First stage of Data Cache access.
DC2
Second stage of Data Cache access.
WBls
Write back of data from the Load Store Unit.
By overlapping the various stages of operation, the MP11 CPU maximizes the clock rate achievable to execute each instruction. It delivers a throughput approaching one instruction for each cycle.
The Fetch stages can hold up to four instructions, where branch prediction is performed on instructions ahead of execution of earlier instructions.
The Issue and Decode stages can contain any instruction in parallel with a predicted branch.
The Execute, Memory, and Write stages can contain a predicted branch, an ALU or multiply instruction, a load/store multiple instruction, and a coprocessor instruction in parallel execution.

อ้างอิง:
Architecture for the Digital World:http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0360e/I1002919.html
:http://www.7-cpu.com/cpu/ARM11.html
http://www.gsmarena.com/samsung_galaxy_pocket_s5300-4612.php

วันพฤหัสบดีที่ 23 มกราคม พ.ศ. 2557

ARM CPU คืออะไร

ARM ย่อมาจาก Advanced RISC Machine แปลเป็นไทยได้ว่า เครื่องกล RISC แบบล้ำหน้า 

ในโลกของการออกแบบ CPU นั้นจะมีอยู่ 2 แบบใหญ่ๆคือ RISC และ CISC
         CISC ย่อมาจาก Complex Instruction Set Computer คือ CPU ที่เวลาเราป้อนคำสั่งไป 1 คำสั่ง มันสามารถทำงานได้หลายอย่าง เช่น 1คำสั่งที่ส่งไป ทำให้ CPU โหลดข้อมูลจาก memory , ทำการคำนวณ และก็เก็บผลลัพท์กลับไปไว้ใน memory ได้  ,  ตัวอย่าง CPU ที่เป็นแบบ CISC ก็คือ CPU ของ Intel ทั้งหมดที่ใช้สถาปัตยกรรมแบบ x86
RISC คือ Reduced Instruction Set Computer เป็น CPU ที่เกิดขึ้นภายหลัง โดยการออกแบบนั้นจะเน้นที่การลดจำนวนชุดคำสั่งลง คำสั่งแต่ละคำสั่งทำงานได้ 1 อย่างเท่านั้น  และมีเพียงเฉพาะคำสั่ง load และ store  ที่สามารถติดต่อกับ memory ภายนอกได้(RAM)  ชุดคำสั่งที่เหลือจะติดต่อกับ Register (memory ภายในตัว CPU)เท่านั้น … จากแนวคิดนี้ ทำให้ CPU แบบ RISC สามารถออกแบบได้ง่ายขึ้น สามารถออกแบบให้มีประสิทธิภาพได้สูงสุด และที่สำคัญทำให้จำนวนทรานซิสเตอร์ที่อยู่ภายในน้อยลงอย่างมากเมื่อเทียบกับ CISC  เลยเป็นผลทำให้  RISC กินไฟน้อยและมีขนาดเล็ก … แต่ก็มีข้อเสียคือ การเขียนโปรแกรมจะยุ่งยากกว่าเพราะต้องเขียนคำสั่งมากกว่า และ Complier ก็จะซับซ้อนกว่า



ARM Roadmap 

ถ้าใครเคยได้ยินว่า CPU ตัวนั้นเป็น Cortex-A8 (เช่น A4 ของ Applex) เป็น Cortex A9 (เช่น A5) ก็ดูไล่ไปตามนี้ได้เลย ถ้าเข้าไปในเว็บของ ARM คุณจะได้รายละเอียดมากขึ้นเช่น Cortex-A9 สามารถสร้างได้เป็น 1 ถึง 4 core  สามารถมีความเร็วได้สุงสุด 2GHz


อนาคตของ ARM CPU
    Nvidia ตอนนี้ถือได้ว่ามาแรงแบบสุดๆเป็นผู้นำในการออกแบบและผลิต CPU แบบ ARM ,  CEO ของ  Nvidia ได้ให้สัมภาษณ์ในงาน Asia-D ไว้อย่างชัดเจนถึง พื้นฐาน ARM CPU และอนาคตของมันไว้ว่า

ARM CPU นั้นกินไฟน้อย แบ่งได้เป็นสองแบบ
1. กินไฟระดับ mW ถึง 1 W ใช้ใน Smart phone ต่างๆ
2. กินไฟระดับ 5-7 W ใช้ใน Tablet ต่างๆ
แต่ในอุปกรณ์กินไฟมากๆอย่างเช่น notebook, หรือ ultrabook ที่กินไฟอย่างต่ำ 18W (Macbook Air) ตอนนี้ไม่สามารถใช้กับ ARM ได้ … nVidia มีแผนที่จะผลิต CPU สำหรับตลาดนี้โดยเฉพาะ โดยหวังว่าจะผลิต ARM CPU ที่เป็น 64 บิตกินไฟประมาณ 10W ชื่อว่า Denver (ต่อจาก Stark)  ดังนั้นช่วงนี้เราจะเห็นข่าวดังๆอย่าง
- Server เริ่มหันมาใช้ ARM CPU เพราะประหยัดไฟมากกว่า
- Supercomputer จะใช้กับ ARM ได้
และ Microsoft ก็เริ่มหันมาสนใจ ARM โดยกำลังพัฒนา Windows8 ให้สามารถใช้งานกับ ARM ได้
- Apple ในอนาคตมีแนวโน้มว่าจะใช้ ARM CPU ใน notebook ของ Apple เมื่อ ARM CPU เป็น 64 บิต  (PowerPC CPU ที่ Apple เคยใช้เป็น RISC)







            http://www.techz500.com/?p=1661 
            http://ds.arm.com/downloads/
            http://notebookspec.com/
            file:///D:/ComArt/ARM/ARM.html






MIPS คืออะไร


        จำนวนของ MIPS (million instructions per second) คือล้านคำสั่งต่อวินาทีเป็นหน่วยวัดสมรรถนะทั่วไปและโดยนัยยะคือ จำนวนรวมของงานที่คอมพิวเตอร์ขนาดใหญ่กว่าสามารถทำได้ สำหรับแม่ข่ายขนาดใหญ่ หรือเมนเฟรม MIPS เป็นวิธีวัดต้นทุนของเครื่องคอมพิวเตอร์ MIPS ยิ่งมากมีผลกับรายรับ มีค่าดีกว่า ตามประวัติศาสตร์ ต้นทุนวัดการคำนวณในจำนวน MIPS ได้ลดลงครึ่งหนึ่งตามฐานรายปีสำหรับจำนวนปี
            จำนวนของคุณลักษณะ MIPS ของคอมพิวเตอร์ตามปกติหาได้โดยการเรียกใช้ตามเกณฑ์มาตรฐานหนึ่งเกณฑ์หรือมากกว่า
 สรุปแล้ว MIPS  ก็คือ หน่วยวัดความเร็วของ CPU นั่นเอง







ขอบคุณที่มา :http://www.com5dow.com
                   http://en.wikipedia.org/wiki/R4000
                   http://spimsimulator.sourceforge.net/

วันเสาร์ที่ 11 มกราคม พ.ศ. 2557

ข้อ 2-3

2. รหัสแทนตัวอักขระมีอะไรบ้าง ที่มาที่ไปของแต่ละรหัส
       -

รหัสแทนข้อมูล  หมายถึง รหัสที่ใช้แทนตัวอักขระ ซึ่งประกอบด้วยตัวอักษร ตัวเลข หรือสัญลักษณ์พิเศษอื่น ๆ ที่ใช้ในโปรแกรมคอมพิวเตอร์ เพราะว่าข้อมูลที่เก็บไว้ในหน่วยความจำของคอมพิวเตอร์จะแทนด้วยรหัสเลขฐานสองที่มีเลข ๐ กับ ๑ วางเรียงกัน ที่นิยมใช้มี ๓ รหัสคือ รหัสบีซีดี รหัสแอบซีดิก รหัสแอสกี้

รหัสที่ใช้ในการแทนข้อมูลในปัจจุบันมี 2 กลุ่ม คือ 
1. รหัสเอ็บซีดิก (EBCDIC) : Extended Binary Coded Decimal Interchange Code) เครื่องคอมพิวเตอร์เมนเฟรมของไอบีเอ็มยังคงใช้รหัสนี้
2. รหัสแอสกี (ASCII : American Standard Code Information Interchange) เป็นมาตรฐานที่นิยมใช้กันมากในระบบคอมพิวเตอร์ เป็นรหัส 8 บิท แทนสัญลักษณ์ต่าง ๆ ได้ 256 ตัว

1. รหัสแทนข้อมูล
เนื่องจากเครื่องคอมพิวเตอร์จะสามารถเข้าใจเฉพาะตัวเลขเพียง 2 ตัวเท่านั้น คือ 0 และ 1 ฉะนั้นการที่จะให้เครื่องคอมพิวเตอร์สามารถเข้าใจข้อมูลอื่น ๆ ได้นั้น จะต้องมีการใช้รหัสในการแทนข้อมูลรหัสแทนข้อมูล หมายถึง การนำเอารหัสตัวเลข 0 และ 1 มาแทนตัวอักษร หรือตัวเลข หรือสัญลักษณ์ต่าง ๆ โดยเป็นรหัสที่ใช้แทนข้อมูลต่าง ๆ ซึ่งอยู่ภายในเครื่องคอมพิวเตอร์ เพื่อให้คอมพิวเตอร์และผู้ใช้สามารถเข้าใจข้อมูลต่าง ๆ ได้ ตัวอย่างเช่น ตัวอักษร A จะมีรหัสแทนข้อมูล คือ 01000001 เป็นต้น

2. การวัดขนาดข้อมูลหรือหน่วยวัดความจำ
หน่วยที่ใช้วัดความจำที่เล็กที่สุด คือ ไบต์ (Byte) ซึ่งหมายถึง จำนวนตัวเลขในระบบเลขฐานสองที่ต่อเนื่องกันเป็นกลุ่ม เช่น 01100001 ซึ่ง 1 ไบต์ จะประกอบด้วยตัวเลข 0 หรือ เลข 1 จำนวน 8 ตัว หรือ 8 บิต นั่นเอง
ทั้งนี้ ขนาด 1 ไบต์ หรือ 8 บิต จะสามารถใช้แทนข้อมูลที่เป็นตัวอักษรภาษาอังกฤษ ภาษาไทย ตัวเลข และสัญลักษณ์ต่าง ๆ ได้ 1 ตัว ซึ่งจำนวน 8 บิต จะใช้แทนตัวอักษร ตัวเลข หรือสัญลักษณ์ต่าง ๆ ได้เท่ากับ 256 แบบ หรือ เท่ากับ 28

ดังนั้นเราจะวัดขนาดข้อมูลของคอมพิวเตอร์ตามหน่วยวัดข้อมูลได้ดังนี้
8 BIT (บิต) = 1 Byte (ไบต์) = 1 ตัวอักษร 
1,024 B = 1 KB (กิโลไบต์) = 1,024 ตัวอักษร
1,024 KB = 1 MB (เมกะไบต์) = 1,048,576 ตัวอักษร
1,024 MB = 1 GB (กิกะไบต์) = 1,073,741,824 ตัวอักษร
1,024 GB = 1 TB (เทระไบต์) = 1,099,511,627 ตัวอักษร

3. สำรวจอุปกรณ์ที่ตนเองมีอยู่ว่ารองรับรหัสอะไรบ้าง 
   มีคอมพิเตอร์ ใช้รหัสเลขฐานสอง เช่น 101.....
     
    - Unicode
     - EBCDIC
     - ASCII
1. รหัสคอมพิวเตอร์ภาษาไทยในอดีตมีอะไรบ้าง แต่ละรหัสมีข้อดีข้อเสียอะไร ข้อดีข้อเสียของการที่มีหลายรหัส
    
        4.10  ภาษาคอมพิวเตอร์
มนุษย์ใช้ภาษาในการสื่อสารมาตั้งแต่สมัยโบราณ การใช้ภาษาเป็นเรื่องที่มนุษย์พยายามถ่ายทอดความคิดและความรู้สึกต่าง ๆ เพื่อการโต้ตอบและสื่อความหมาย ภาษาที่มนุษย์ใช้ติดต่อสื่อสารในชีวิตประจำวัน เช่น ภาษาไทย ภาษาอังกฤษ หรือภาษาจีน ต่างเรียกว่า “ภาษาธรรมชาติ” (Natural Language) เพราะมีการศึกษา ได้ยิน ได้ฟัง กันมาตั้งแต่เกิดการใช้งานคอมพิวเตอร์ ซึ่งเป็นเครื่องมือทางอิเล็กทรอนิกส์ให้ทำงานตามที่ต้องการ จำเป็นต้องมีการกำหนดภาษา สำหรับใช้ติดต่อสั่งงานกับคอมพิวเตอร์ ภาษาคอมพิวเตอร์จะเป็น ”ภาษาประดิษฐ์” (Artificial Language) ที่มนุษย์คิดสร้างมาเอง เป็นภาษาที่มีจุดมุ่งหมายเฉพาะ มีกฎเกณฑ์ที่ตายตัวและจำกัด คืออยู่ในกรอบให้ใช้คำและไวยากรณ์ที่กำหนดและมีการตีความหมายที่ชัดเจน จึงจัดภาษาคอมพิวเตอร์เป็นภาษาที่มีรูปแบบเป็นทางการ (Formal Language) ต่างกับภาษาธรรมชาติที่มีขอบเขตกว้างมาก ไม่มีรูปแบบตายตัวที่แน่นอน  กฎเกณฑ์ของภาษาจะขึ้นกับหลักไวยากรณ์และการยอมรับของกลุ่มผู้ใช้นั้น ๆ
ภาษาคอมพิวเตอร์อาจแบ่งได้เป็น 3 ระดับ คือ ภาษาเครื่อง (Machine Language) ภาษาระดับต่ำ (Low Level Language) และภาษาระดับสูง (High Level Language)
4.10.1  ภาษาเครื่อง (Machine Language)
การเขียนโปรแกรมเพื่อสั่งให้คอมพิวเตอร์ทำงานในยุคแรก ๆ จะต้องเขียนด้วยภาษาซึ่งเป็นที่ยอมรับของเครื่องคอมพิวเตอร์ที่เรียกว่า “ภาษาเครื่อง” ภาษานี้ประกอบด้วยตัวเลขล้วน ทำให้เครื่องคอมพิวเตอร์สามารถทำงานได้ทันที ผู้ที่จะเขียนโปรแกรมภาษาเครื่องได้ ต้องสามารถจำรหัสแทนคำสั่งต่าง ๆ ได้ และในการคำนวณต้องสามารถจำได้ว่าจำนวนต่าง ๆ ที่ใช้ในการคำนวณนั้นถูกเก็บไว้ที่ตำแหน่งใด ดังนั้นโอกาสที่จะเกิดความผิดพลาดในการเขียนโปรแกรมจึงมีมาก นอกจากนี้เครื่องคอมพิวเตอร์แต่ละระบบมีภาษาเครื่องที่แตกต่างกันออก ทำให้เกิดความไม่สะดวกเมื่อมีการเปลี่ยนเครื่องคอมพิวเตอร์เพราะจะต้องเขียนโปรแกรมใหม่ทั้งหมด
4.10.2  ภาษาระดับต่ำ (Low Level Language)
เนื่องจากภาษาเครื่องเป็นภาษาที่มีความยุ่งยากในการเขียนดังได้กล่าวมาแล้ว จึงไม่มีผู้นิยมและมีการใช้น้อย ดังนั้นได้มีการพัฒนาภาษาคอมพิวเตอร์ขึ้นอีกระดับหนึ่ง โดยการใช้ตัวอักษรภาษาอังกฤษเป็นรหัสแทนการทำงาน การใช้และการตั้งชื่อตัวแปรแทนตำแหน่งที่ใช้เก็บจำนวนต่าง ๆ ซึ่งเป็นค่าของตัวแปรนั้น ๆ การใช้สัญลักษณ์ช่วยให้การเขียนโปรแกรมนี้เรียกว่า “ภาษาระดับต่ำ”ภาษาระดับต่าเป็นภาษาที่มีความหมายใกล้เคียงกับภาษาเครื่องมากบางครั้งจึงเรียกภาษานี้ว่า  “ภาษาอิงเครื่อง” (Machine – Oriented Language) ตัวอย่างของภาษาระดับต่ำ  ได้แก่ ภาษาแอสเซมบลี เป็นภาษาที่ใช้คำในอักษรภาษาอังกฤษเป็นคำสั่งให้เครื่องทำงาน เช่น ADD หมายถึง บวก SUB หมายถึง ลบ เป็นต้น การใช้คำเหล่านี้ช่วยให้การเขียนโปรแกรมง่ายขึ้นกว่าการใช้ภาษาเครื่องซึ่งเป็นตัวเลขล้วน ดังตารางแสดงตัวอย่างของภาษาระดับต่ำและภาษาเครื่องที่สั่งให้มีการบวกจำนวนที่เก็บอยู่ในหน่วยความจำ
ตารางที่ 5.1 แสดงความสัมพันธ์ของคำสั่งในภาษาระดับต่ำและภาษาเครื่อง
ภาษาระดับต่ำ    ภาษาเครื่อง    รหัสเลขฐานสิบหก
MOV   AL,05    10110000     00000101    B0     05
MOV   BL,08    10110011     00001000    B3     08
ADD   AL,BL    00000000     11011000    00     D8
MOV   CL,AL    10001000     11000001    88     C1
จากตารางบรรทัดแรก 10110000 00000101 เป็นคำสั่งให้นำจำนวน 5 (หรือเขียนในรูปของเลขฐานสองเป็น 00000101) ไปเก็บในรีจิสเตอร์ชื่อ AL โดยส่วนแรก 10110000 คือรหัสคำสั่ง MOV ซึ่งเป็นการเคลื่อนย้ายข้อมูลจำนวนมาเก็บไว้ในรีจิสเตอร์ AL
บรรทัดที่สอง 10110011 00001000 เป็นคำสั่งให้นำจำนวน 8 (หรือเขียนในรูปของเลขฐานสองเป็น 00001000) ไปเก็บในรีจิสเตอร์ชื่อ BL โดยส่วนแรก 10110011 คือรหัสคำสั่ง MOV ซึ่งเป็นการเคลื่อนย้ายข้อมูลจำนวนมาเก็บไว้ในรีจิสเตอร์ BL
บรรทัดที่สาม เป็นคำสั่งการบวกระหว่างรีจิสเตอร์ AL กับ BL หรือนำ 5 บวก 8 ผลลัพธ์เก็บในรีจิสเตอร์ AL
บรรทัดที่สี่ เป็นการนำผลลัพธ์จากรีจิสเตอร์ชื่อ AL ไปเก็บไว้ในรีจิสเตอร์ชื่อ CL
การใช้โปรแกรมที่เขียนด้วยภาษาแอสเซมบลีนั้น  เครื่องคอมพิวเตอร์ไม่สามารถทำงานได้ทันที จำเป็นต้องมีการแปลโปรแกรมในการแปลที่มีชื่อว่า “แอสเซมเบลอร์” (Assembler) ซึ่งแตกต่างไปตามเครื่องคอมพิวเตอร์แต่ละชนิด ดังนั้นแอสเซมเบลอร์ของเครื่องชนิดหนึ่งจะไม่สามารถใช้แปลโปรแกรมภาษาแอสเซมบลีของเครื่องชนิดอื่น ๆ ได้ภาษาแอสเซมบลีนี้ยังคงใช้ยาก เพราะผู้เขียนโปรแกรมจะต้องเข้าใจในการทำงานของเครื่องคอมพิวเตอร์อย่างละเอียด ต้องรู้ว่าจำนวนที่จะนำมาคำนวณนั้นอยู่ ณ ตำแหน่งใดในหน่วยความจำในทำนองเดียวกับการเขียนโปรแกรมเป็นภาษาเครื่อง ภาษาแอสเซมบลีจึงมีผู้ใช้น้อย และมักจะใช้ในกรณีที่ต้องการควบคุมการทำงานภายในของตัวเครื่องคอมพิวเตอร์
4.10.3  ภาษาระดับสูง (High Level Language)
ภาษาระดับสูงเป็นภาษาที่สร้างขึ้นเพื่อช่วยอำนวยความสะดวกในการเขียนโปรแกรมกล่าวคือลักษณะของคำสั่งจะประกอบด้วยคำต่าง ๆ ในภาษาอังกฤษ ซึ่งผู้อ่านสามารถเข้าใจความหมายได้ทันที ผู้เขียนโปรแกรมจึงเขียนโปรแกรมด้วยภาษาระดับสูงได้ง่ายกว่าเขียนด้วยภาษาแอสเซมบลีหรือภาษาเครื่อง ภาษาระดับสูงมีมากมายหลายภาษา อาทิเช่น ภาษาฟอร์แทรน (FORTRAN) ภาษาโคบอล (COBOL) ภาษาปาสคาล (Pascal) ภาษาเบสิก(BASIC) ภาษาวิชวลเบสิก (Visual Basic) ภาษาซี (C) และภาษาจาวา (Java) เป็นต้น โปรแกรมที่เขียนด้วยภาษาระดับสูงแต่ละภาษาจะต้องมีโปรแกรมที่ทำหน้าที่แปลภาษาระดับสูงให้เป็นภาษาเครื่อง เช่น โปรแกรมแปลภาษาฟอร์แทรนเป็นภาษาเครื่อง โปรแกรมแปลภาษาปาสคาลเป็นภาษาเครื่อง คำสั่งหนึ่งคำสั่งในภาษาระดับสูงจะถูกแปลเป็นภาษาเครื่องหลายคำสั่ง
ภาษาระดับสูงที่จะกล่าวถึงในที่นี้ ได้แก่
1)  ภาษาฟอร์แทรน (FORmula TRANstation : FORTRAN)
จัดเป็นภาษาระดับสูงที่เก่าแก่ที่สุด ได้รับการคิดค้นขึ้นเป็นครั้งแรก ราว พ.ศ. 2497 โดยบริษัท ไอบีเอ็ม เป็นภาษาที่เหมาะสำหรับงานที่ต้องการการคำนวณ เช่น งานทางด้านวิทยาศาสตร์ วิศวกรรมศาสตร์ และงานวิจัยต่าง ๆ เนื่องจากแนวคิดในการเขียนโปรแกรมในระยะหลังนี้เปลี่ยนมานิยมการเขียนโปรแกรมแบบโครงสร้างมากขึ้น ลักษณะของคำสั่งภาษาฟอร์แทรนแบบเดิมไม่เอื้ออำนวยที่จะให้เขียนได้ จึงมีการปรับปรุงโครงสร้างของภาษาฟอร์แทรนให้สามารถเขียนโปรแกรมแบบโครงสร้างขึ้นมาได้ในปี พ.ศ. 2509 เรียกว่า FORTRAN 66 และในปี พ.ศ. 2520 สถาบันมาตรฐานแห่งชาติของสหรัฐอเมริกา (American National Standard Institute หรือ ANSI) ได้ปรับปรุง FORTRAN 66 และยอมรับให้เป็นภาษาฟอร์แทรนที่เป็นมาตรฐาน เรียกว่า FORTRAN 77 ใช้ได้กับเครื่องคอมพิวเตอร์ที่มีตัวแปลภาษานี้
2)  ภาษาโคบอล (Common Business Oriented Language : COBOL)
เป็นภาษาที่พัฒนาขึ้นในราว พ.ศ. 2502  ต่อมาได้รับการปรับปรุงจากคณะกรรมการซึ่งเป็นตัวแทนของหน่วยงานธุรกิจและรัฐบาลของสหรัฐอเมริกา เป็นภาษาโคบอลมาตรฐานในปี พ.ศ. 2517 เป็นภาษาที่เหมาะสมสำหรับงานด้านธุรกิจ เครื่องคอมพิวเตอร์ขนาดใหญ่ส่วนมากมีโปรแกรมแปลภาษาโคบอล
3)  ภาษาเบสิก (Beginner’s All – purpose Symbolic Instruction Code : BASIC)
เป็นภาษาที่ได้รับการคิดขึ้นเป็นครั้งแรกที่วิทยาลัยดาร์ทมัธ (Dartmouth College) และเผยแพร่เป็นทางการในปี พ.ศ. 2508ภาษาเบสิกเป็นภาษาที่สร้างขึ้นโดยมีจุดประสงค์เพื่อใช้สอนเพื่อใช้สอนเขียนโปรแกรมแทนภาษาคอมพิวเตอร์ภาษาอื่น เช่น ภาษาฟอร์แทรน ซึ่งมีขนาดใหญ่และต้องใช้หน่วยความจำสูงในการทำงาน ซึ่งไม่เหมาะกับเครื่องคอมพิวเตอร์ในสมัยนั้น ภาษาเบสิกเป็นภาษาที่มีขนาดเล็ก เป็นตัวแปลภาษาชนิดที่เรียกว่าอินเทอร์พรีเตอร์
นอกจากนี้    ภาษาเบสิกเป็นภาษาที่ง่ายต่อการเขียน    ซึ่งผู้เขียนจะสามารถนำไปประยุกต์กับการแก้ปัญหาต่าง ๆ ได้ทุกสาขาวิชา    ผู้ที่เพิ่งฝึกเขียนโปรแกรมใหม่ ๆ หรือผู้ที่ไม่ใช่นักเขียนโปรแกรมมืออาชีพ แต่เป็นเพียงวิศวกรหรือนักวิจัย จะสามารถหัดเขียนโปรแกรมภาษาเบสิกได้ในเวลาไม่นานนัก ปกติภาษาเบสิกส่วนใหญ่ใช้กับไมโครคอมพิวเตอร์
4) ภาษาปาสคาล (Pascal)
ตั้งชื่อตามนักคณิตศาสตร์ชาวฝรั่งเศส ชื่อ เบลส ปาสคาล (Blaise Pascal) ซึ่งเป็นผู้ผลิตเครื่องคิดเลขโดยใช้เฟืองหมุน ภาษาปาสคาลคิดขึ้นในปี พ.ศ. 2514 โดยนิคลอส เวียซ (Niklaus Wirth) ศาสตราจารย์วิชาคอมพิวเตอร์ชาวสวิต ภาษาปาสคาลได้รับการออกแบบให้ใช้ง่ายและมีโครงสร้างที่ดี จึงเหมาะกับการใช้สอนหลักการเขียนโปรแกรม ปัจจุบันภาษาปาสคาลยังคงได้รับความนิยมใช้ในการเรียนเขียนโปรแกรมคอมพิวเตอร์
5)  ภาษาซีและซีพลัสพลัส (C และ C++)
ภาษาซีเป็นภาษาที่พัฒนาจากห้องปฏิบัติการเบลล์ของบริษัทเอทีแอนด์ทีในปี พ.ศ. 2515 หลังจากที่พัฒนาขึ้นได้ไม่นาน ภาษาซีก็กลายเป็นภาษาที่นิยมในหมู่นักเขียนโปรแกรมมาก และมีใช้งานในเครื่องทุกระดับ ทั้งนี้เนื่องจากภาษาซีได้รวมเอาข้อมูลของภาษาระดับสูงและภาษาระดับต่ำเข้าไว้ด้วยกัน กล่าวคือเป็นภาษาที่มีไวยากรณ์ที่เข้าใจง่าย ทำให้เขียนโปรแกรมได้ง่ายเช่นเดียวกับภาษาระดับสูงทั่วไป แต่ประสิทธิภาพและความเร็วในการทำงานดีกว่ามาก เนื่องจากมีการทำงานเหมือนภาษาระดับต่ำ สามารถทำงานได้ในระดับที่เป็นการควบคุมฮาร์ดแวร์ได้มากกว่าภาษาระดับสูงอื่น ๆ ดังจะเห็นว่าภาษาซีเป็นภาษาที่สามารถพัฒนาระบบปฏิบัติการได้ เช่น ระบบปฏิบัติการยูนิกซ์
นอกจากนี้เมื่อแนวคิดของการเขียนโปรแกรมแบบเชิงวัตถุ (Object Oriented Programming : OOP) ได้เข้ามามีบทบาทในวงการคอมพิวเตอร์มากขึ้น ภาษาซีก็ยังได้รับการพัฒนาโดยประยุกต์ใช้กับการเขียนโปรแกรมดังกล่าว เกิดเป็นภาษาใหม่ชื่อว่า “ภาษาซีพลัสพลัส” (C++)
6)  ภาษาวิชวลเบสิก (Visual Basic)
เป็นภาษาที่พัฒนาต่อมาจากภาษาเบสิก  ใช้ไวยากรณ์บางส่วนของภาษาเบสิกในการเขียนโปรแกรม   แต่มีแนวคิดและวิธีการพัฒนาโปรแกรมที่แตกต่างจากภาษาเบสิกโดยสิ้นเชิง รวมทั้งการใช้เนื้อที่ในหน่วยความจำก็แตกต่างกันมาก ทั้งนี้เนื่องจากภาษาวิชวลเบสิกใช้แนวคิดที่ต่างออกไป
7)  การเขียนโปรแกรมแบบจินตภาพ (Visual Programming)
ภาษานี้พัฒนาขึ้นโดยบริษัทไมโครซอฟต์ออกแบบเพื่อเขียนโปรแกรมที่สามารถใช้งานได้บนระบบปฏิบัติการแบบจียูไอ เช่น ระบบปฏิบัติการไมโครซอฟต์วินโดวส์ มีการติดต่อกับผู้ใช้โดยใช้รูปภาพ การเขียนโปรแกรมทำได้ง่ายกว่าการเขียนโปรแกรมแบบเก่ามาก
8)  ภาษาจาวา (Java)
พัฒนาขึ้นในปี พ.ศ. 2534 โดยบริษัทซันไมโครซิสเตมส์ เป็นภาษาที่ได้รับความนิยมสูงมาโดยตลอด เนื่องจากเป็นภาษาที่มีความยืดหยุ่นสูง สามารถเขียนโปรแกรมและใช้งานได้บนเครื่องคอมพิวเตอร์ทุกประเภทและระบบปฏิบัติการทุกรูปแบบ ในช่วงแรกที่เริ่มมีการนำภาษาจาวามาใช้งานจะเป็นการใช้งานบนเครือข่ายอินเทอร์เน็ต เป็นภาษาที่เน้นการทำงานบนเว็บ แต่ปัจจุบันสามารถสามารถนำมาประยุกต์สร้างโปรแกรมใช้งานทั่วไปได้
นอกจากนี้ เมื่อเทคโนโลยีของการสื่อสารก้าวหน้าขึ้น จนกระทั่งเครื่องคอมพิวเตอร์ปาล์มท็อป หรือ แม้แต่โทรศัพท์เคลื่อนที่สามารถเชื่อมต่อเข้าสู่ระบบอินเทอร์เน็ตและใช้งานระบบเวิลด์ไวด์เว็บได้ ภาษาจาวาก็สามารถสร้างส่วนที่เรียกว่า “แอปเพล็ต” (Applet) ให้อุปกรณ์อิเล็กทรอนิกส์ที่กล่าวข้างต้น เรียกใช้งานจากเครื่องที่เป็นแม่ข่าย (Server) ได้
9)  ภาษาเดลฟาย (Delphi)
เป็นภาษาที่ได้รับความนิยมภาษาหนึ่ง แนวคิดในการเขียนโปรแกรมภาษาเดลฟายเหมือนกับแนวคิดในการเขียนโปรแกรมภาษาวิชวลเบสิก คือเป็นการเขียนโปรแกรมเชิงจินตภาพ แต่ภาษาพื้นฐานที่ใช้ในการเขียนโปรแกรมจะเป็นภาษาปาสคาล  ในการเขียนโปรแกรมเชิงจินตภาพนี้มีคอมโพเนนต์ (Component) ที่สามารถใช้เป็นส่วนประกอบเพื่อสร้างส่วนติดต่อผู้ใช้ที่เป็นแบบกราฟิก ทำให้ซอฟต์แวร์ที่พัฒนามีความน่าสนใจและใช้งานง่ายขึ้น การเขียนโปรแกรมด้วยภาษาเดลฟายจึงเป็นที่นิยมในการนำไปพัฒนาเป็นโปรแกรมใช้งานมาก รวมทั้งภาษาปาสคาลเป็นภาษาที่เข้าใจง่าย เหมาะแก่การนำมาใช้สอนเขียนโปรแกรม
5.10.4  การทำงานของโปรแกรมแปลภาษา
ในการประมวลผลโปรแกรมที่เขียนขึ้นด้วยภาษาระดับสูง จำเป็นต้องอาศัยโปรแกรมที่ทำหน้าที่ช่วยในการแปลโปรแกรมภาษาระดับสูงให้เป็นภาษาเครื่อง โปรแกรมแปลภาษาที่ใช้แบ่งออกเป็น 2 ลักษณะ ได้แก่
1)  คอมไพเลอร์ (Compiler)
เป็นโปรแกรมที่ทำหน้าที่ในการแปลโปรแกรมที่เขียนด้วยภาษาระดับสูงที่เรียกกันว่า “โปรแกรมต้นฉบับ” (Source Program) ให้เป็นโปรแกรมภาษาเครื่อง (Object Program) ถ้ามีข้อผิดพลาดเครื่องจะพิมพ์รหัสหรือข้อผิดพลาดออกมาด้วย ภายหลังการแปลถ้าไม่มีข้อผิดพลาด ผู้ใช้สามารถสั่งประมวลผลโปรแกรม และสามารถเก็บโปรแกรมที่แปลภาษาเครื่องไว้ใช้งานต่อไปได้อีก โดยไม่ต้องทำการแปลโปรแกรมซ้ำอีก ตัวอย่างโปรแกรมแปลภาษาแบบนี้ ได้แก่ โปรแกรมแปลภาษาฟอร์แทรน โปรแกรมแปลภาษาโคบอล โปรแกรมแปลภาษาปาสคาล โปรแกรมแปลภาษาซี
2)  อินเทอร์พรีเตอร์ (Interpreter)
เป็นโปรแกรมที่ทำหน้าที่ในการแปลโปรแกรมที่เขียนด้วยภาษาระดับสูงให้เป็นโปรแกรมภาษาเครื่องเช่นเดียวกับคอมไพเลอร์ ความแตกต่างจะอยู่ที่อินเทอร์พรีเตอร์จะทำการแปลและประมวลผลทีละคำสั่ง ข้อเสียของอินเทอร์พรีเตอร์ก็คือถ้านำโปรแกรมนั้นมาใช้งานอีกจะต้องทำการแปลโปรแกรมทุกครั้ง ภาษาบางภาษามีโปรแกรมแปลทั้งสองลักษณะ เช่น ภาษาเบสิก เป็นต้น
4.11  ระบบติดต่อใช้งานคอมพิวเตอร์
ตามปกติเมื่อซื้อเครื่องคอมพิวเตอร์มาใช้งาน มักจะได้ระบบปฏิบัติการมาพร้อมกับเครื่อง ซึ่งสามารถจัดการให้ผู้ใช้เรียกใช้หรือติดต่อกับเครื่องได้ทันที โดยรูปแบบของการติดต่อกับเครื่องจะขึ้นกับระบบปฏิบัติกี่ที่ติดตั้งและซอฟต์แวร์เสริมสภาพแวดล้อมการใช้งาน ซึ่งเป็นซอฟต์แวร์ปรับปรุงเปลี่ยนแปลงระบบติดต่อระหว่างเครื่องกับผู้ใช้ให้ใช้ง่ายและทำงานได้รวดเร็วขึ้น
ระบบติดต่อใช้งานคอมพิวเตอร์อาจแบ่งได้เป็น 3 กลุ่มด้วยกันได้แก่ กลุ่มพิมพ์คำสั่งเข้าไปทีละบรรทัด กลุ่มเลือกรายการเมนู กลุ่มเลือกสัญรูป
4.11.1  กลุ่มพิมพ์คำสั่งเข้าทีละบรรทัด
ระบบการติดต่อแบบนี้เป็นระบบติดต่อแบบแรกที่พัฒนามาพร้อม ๆ กับคอมพิวเตอร์ ก่อนที่จะมีการพัฒนาระบบอื่น ๆ เป็นการป้อนคำสั่งทีละบรรทัด ซึ่งไม่เอื้อต่อการใช้งานคอมพิวเตอร์เท่าใดนัก เพราะผู้ใช้จะต้องเรียนรู้หรือจดจำคำสั่งต่าง ๆ ไว้ให้ได้เสียก่อน เช่น การเรียกใช้คำสั่งของดอส ระบบนี้ผู้ใช้จะมีความสับสนในระยะแรก เพราะจะต้องเรียนรู้คำสั่งว่าใช้งานอะไร และใช้ได้อย่างไร ซึ่งการป้อนหรือพิมพ์คำสั่งเข้าไปจะต้องพิมพ์ไม่ผิดเลย ระบบติดต่อนี้จะใช้ยากและเสียเวลาบ้างถ้าจำคำสั่งไม่ได้ แต่ถ้าใช้ไปนาน ๆ จนคุ้นเคย อาจมีข้อดีที่สามารถเรียกโปรแกรมมาทำงานได้รวดเร็วที่สุดใช้พื้นที่หน่วยความจำน้อยเพราะลดการแสดงผลในส่วนของกราฟิก
4.11.2  กลุ่มเลือกรายการเมนู
ในระบบนี้จะแสดงรายการย่อยของคำสั่งต่าง ๆ  ซึ่งโดยทั่วไปจะเป็นข้อความตัวอักษร  ไม่เป็นรูปกราฟิก  ผู้ใช้เพียงแต่เลื่อนตัวชี้  แถบสี   หรือสัญลักษณ์ลูกศรขึ้นลง รูปสัญลักษณ์อื่น ๆ ไปยังรายการที่ต้องการ แล้วกดปุ่มเลือกรายการนั้น หรืออาจใช้เมาส์เลือกรายการใช้เช่นกัน ระบบติดต่อใช้งานคอมพิวเตอร์กลุ่มนี้จะใช้งานได้ง่ายขึ้น ไม่ต้องจดจำคำสั่งมาก เพราะจะมีรายการคำสั่งแสดงไว้ให้เลือก
4.11.3  กลุ่มเลือกสัญรูป
มีลักษณะคล้ายระบบติดต่อกลุ่มที่สองที่เป็นรายการเมนูให้เลือก เพียงแต่ว่ารายการของกลุ่มที่สาม จะเป็นรูปภาพหรือสัญรูปสำหรับเลือก โดยมี อุปกรณ์เมาส์เป็นตัวเลื่อน ตัวชี้ และเลือกรายการ ในบางกรณีก็อาจเป็นรายการเมนูย่อยของข้อมูลในระบบ การติดต่อระหว่างเครื่องกับผู้ใช้ในลักษณะนี้ได้รับความสนใจมาก เพราะใช้งานง่าย ไม่ต้องเรียนรู้หรือจดจำคำสั่งที่ซับซ้อนระบบติดต่อใช้งานในกลุ่มที่สามที่มีผู้นิยมหรือกล่าวถึงกันมากคือ ระบบติดต่อผู้ใช้เชิงกราฟิก เรียกว่า จียูไอ นับเป็นระบบที่แสดงรูปกราฟิกแบบบิตแมพ (Bit Map) ระบบปฏิบัติการคอมพิวเตอร์ในปัจจุบันส่วนใหญ่ ไม่ว่าจะเป็นวินโดวส์ ดอส โอเอสทู หรือยูนิกซ์ ต่างก็มีซอฟต์แวร์มาเสริมสภาพการใช้งานเป็นแบบจียูไอกันทั้งหมด
ซอฟต์แวร์ประเภทจียูไอ ส่วนใหญ่เป็นโปรแกรมที่ซับซ้อนและมีขีดความสามารถสูง ดังนั้นการติดต่อหรือการเรียนรู้จึงยากกว่าปกติ แต่หลังจากติดตั้งเสร็จเรียบร้อยแล้ว ซอฟต์แวร์ประเภทนี้จะใช้งานได้ง่าย และถ้านำไปทำงานในเครื่องความเร็วสูง ก็จะช่วยประหยัดเวลา และทำให้โปรแกรมต่าง ๆ ใช้งานง่ายขึ้น ซอฟต์แวร์ประเภทจียูไอเป็นซอฟต์แวร์ขนาดใหญ่จึงใช้พื้นที่หน่วยความจำมาก ต้องใช้ตัวประมวลผลที่มีขีดความสามารถสูง จึงจะทำงานได้ผล
ลักษณะเด่นของระบบติดต่อกุยเมื่อใช้กับซอฟต์แวร์ระบบปฏิบัติการหลายภารกิจ คือ สามารถทำหลายงานได้ในเวลาเดียวกัน โดยงานหนึ่ง ๆ จะปรากฏในช่องหน้าต่างที่เปิดขึ้นมาบนจอภาพ สามารถสลับระหว่างช่องหน้าต่างไปมา เปลี่ยนขนาดและย้ายตำแหน่งของช่องหน้าต่าง และการโอนย้ายข้อมูลระหว่างช่องหน้าต่างหรือระหว่างโปรแกรมได้ ในส่วนของผู้ที่เป็นนักเขียนโปรแกรมก็จะได้ประโยชน์ สามารถเขียนโปรแกรมประยุกต์สร้างเป็นเมนูภาพ สัญรูป และช่องหน้าต่างแสดงข้อมูล
ระบบติดต่อกุยที่สมบูรณ์แบบ ควรมีองค์ประกอบดังนี้
1)       มีระบบที่ใช้รูปกราฟิกและสัญรูป
2)       มีการแสดงรายการบนจอที่สวยงาม น่าดู และให้ความสนุกสนานเพลิดเพลินกับการใช้งาน
3)       สามารถพิมพ์ผลลัพธ์ที่ปรากฏบนจอได้เหมือนกับที่เห็น
4)       สนับสนุนการใช้เครื่องพิมพ์หลายรุ่น
5)     แสดงองค์ประกอบของระบบไม่ว่าจะเป็นช่องหน้าต่างหรือรายการเมนูเป็นมาตรฐานเดียวกัน จนทำให้แยกไม่ออกว่ากำลังทำงานอยู่เครื่องต่างระบบ หรือทำงานต่าง          โปรแกรม เป็นต้น
6)       มีลักษณะการใช้งานแบบเลือกรายการ เลือกชิ้นวัตถุที่สามารถชี้และเลือกด้วยเมาส์
7)       มีระบบที่ติดตั้งได้ง่ายและสามารถปรับเปลี่ยนระบบภายในได้ง่าย
8)       สามารถทำงานเข้ากันได้กับฮาร์ดแวร์และซอฟต์แวร์รุ่นเก่า
9)       สนับสนุนการแลกเปลี่ยนข้อมูลระหว่างโปรแกรม

ขอบคุณที่มาจาก: KRU SURIYA