เวลาที่จะเริ่มเรียนการเขียนโปรแกรม แต่ละภาษาก็มักจะเริ่มให้เขียนโปรแกรมที่เรียกว่า "hello world" กัน
ซึ่งโปรแกรมก็ไม่มีอะไรซับซ้อนแค่พิมพ์คำว่า "hello world" ออกมาที่หน้าจอ console เท่านั้น
ที่นี้ผมก็อยากจะลองเขียนโปรแกรม "hello world" ที่ใช้เนื้อที่ไฟล์น้อยที่สุดหลังจากที่ complie ออกมาแล้ว
ซึ่งก็จะลองทั้งหมด 2 ภาษา
------------------------------------------------------------------------
เริ่มต้นด้วยภาษาซีผมเขียนแบบง่ายๆตามนี้
D:\test>copy con hello.cpp <-- สร้างไฟล์ hello.cpp โดยพิมพ์จากหน้าจอโดยตรง
#include <stdio.h>
int main(void) {
printf("hello world\n");
return 0;
}
^Z <--- กด Clt+Z
1 file(s) copied.
D:\test>gcc hello.cpp -o hello <-- ต้องไป download โปรแกรม c complier มาก่อน ผมใช้ MinGW
D:\test>hello
hello world
ได้ไฟล์ hello.exe มาขนาด 23,308 bytes
07/03/2013 01:11 AM 82 hello.cpp
07/03/2013 01:19 AM 23,308 hello.exe
2 File(s) 23,390 bytes
------------------------------------------------------------------------
แบบทีสองผมใช้ภาษาแอสแซมบลี เนื่องจากไม่มีตัว complier เลยใช้โปรแกรม debug ที่มากับ windows แทน
D:\test>debug
-a
1419:0100 mov ah,9
1419:0102 mov dx,109
1419:0105 int 21
1419:0107 int 20
1419:0109 db 'hello world$'
1419:0115
-rcx
CX 0000
:15 <-- จำนวนไบต์ของโปรแกรมในที่นี้คือ 15 (ฐาน 16)
-n hello.com
-w
Writing 00015 bytes
-q
D:\test>hello.com
hello world
ได้ไฟล์ hello.com มาขนาด 21 bytes
07/03/2013 01:29 AM <DIR> ..
07/03/2013 01:27 AM 21 HELLO.COM
07/03/2013 01:11 AM 82 hello.cpp
07/03/2013 01:29 AM 23,308 hello.exe
3 File(s) 23,411 bytes
2 Dir(s) 71,600,300,032 bytes free
------------------------------------------------------------------------
สรุปเมื่อเขียนด้วยซีจะได้โปรแกรมทีมีขนาด 23,308 bytes
และถ้าเขียนด้วยภาษาแอสแซมบลีจะมีขนาด 21 bytes
จะมีใครที่สามารถเขียนโปรแกรม hello world ที่มีขนาดไฟล์น้อยกว่านี้ได้อีกหรือเปล่าครับ (ไม่ใช้ไฟล์ .bat น่ะ)
ว่ากันเรื่อง Hello World
ซึ่งโปรแกรมก็ไม่มีอะไรซับซ้อนแค่พิมพ์คำว่า "hello world" ออกมาที่หน้าจอ console เท่านั้น
ที่นี้ผมก็อยากจะลองเขียนโปรแกรม "hello world" ที่ใช้เนื้อที่ไฟล์น้อยที่สุดหลังจากที่ complie ออกมาแล้ว
ซึ่งก็จะลองทั้งหมด 2 ภาษา
------------------------------------------------------------------------
เริ่มต้นด้วยภาษาซีผมเขียนแบบง่ายๆตามนี้
D:\test>copy con hello.cpp <-- สร้างไฟล์ hello.cpp โดยพิมพ์จากหน้าจอโดยตรง
#include <stdio.h>
int main(void) {
printf("hello world\n");
return 0;
}
^Z <--- กด Clt+Z
1 file(s) copied.
D:\test>gcc hello.cpp -o hello <-- ต้องไป download โปรแกรม c complier มาก่อน ผมใช้ MinGW
D:\test>hello
hello world
ได้ไฟล์ hello.exe มาขนาด 23,308 bytes
07/03/2013 01:11 AM 82 hello.cpp
07/03/2013 01:19 AM 23,308 hello.exe
2 File(s) 23,390 bytes
------------------------------------------------------------------------
แบบทีสองผมใช้ภาษาแอสแซมบลี เนื่องจากไม่มีตัว complier เลยใช้โปรแกรม debug ที่มากับ windows แทน
D:\test>debug
-a
1419:0100 mov ah,9
1419:0102 mov dx,109
1419:0105 int 21
1419:0107 int 20
1419:0109 db 'hello world$'
1419:0115
-rcx
CX 0000
:15 <-- จำนวนไบต์ของโปรแกรมในที่นี้คือ 15 (ฐาน 16)
-n hello.com
-w
Writing 00015 bytes
-q
D:\test>hello.com
hello world
ได้ไฟล์ hello.com มาขนาด 21 bytes
07/03/2013 01:29 AM <DIR> ..
07/03/2013 01:27 AM 21 HELLO.COM
07/03/2013 01:11 AM 82 hello.cpp
07/03/2013 01:29 AM 23,308 hello.exe
3 File(s) 23,411 bytes
2 Dir(s) 71,600,300,032 bytes free
------------------------------------------------------------------------
สรุปเมื่อเขียนด้วยซีจะได้โปรแกรมทีมีขนาด 23,308 bytes
และถ้าเขียนด้วยภาษาแอสแซมบลีจะมีขนาด 21 bytes
จะมีใครที่สามารถเขียนโปรแกรม hello world ที่มีขนาดไฟล์น้อยกว่านี้ได้อีกหรือเปล่าครับ (ไม่ใช้ไฟล์ .bat น่ะ)