วันนี้ผมว่าผมโม้เรื่อง File Extension บ้างดีกว่า เทคนิคหน่อยนะวันนี้ 🙂 จะบอกว่าตอนนี้ในโลกคอมพิวเตอร์ของพวกเรามี File Extension เยอะแยะเต็มไปหมดเลยเน้อะ ทั้งที่คิดค้นโดยบริษัท, หรือองค์กร, หรือแม้กระทั่งโดยตัวบุคคลเดี่ยว ๆ

อย่างที่ผมเคยโม้เอาไว้อ่ะครับว่า ถึงสุดท้ายแล้วการเขียนซอฟต์แวร์ของเรา ก็มีจุดพื้นฐานง่าย ๆ อยู่ที่การนำข้อมูลเข้า, การประมวลผล และการแสดงผลลัพท์¿ ซึ่งกระบวนการทั้งสามอย่างนี้เราหลีกหนีไม่พ้นเลย ที่จะต้องยุ่งวุ่นวายอยู่กับข้อมูลใน RAM และข้อมูลใน File ครับ

ทีนี้บทความนี้จะคุยเรื่อง File งั้นก็คุยแต่เรื่อง File ดีกว่า 😛 คือจะบอกว่าเรื่องเกี่ยวกับ File Extension เป็นเรื่องคลาสิคมาก ๆ เลยนะ ขอบอก ขอบอก อย่างที่เรารู้กันว่า File มีสองแบบใหญ่¿ๆ คือแบบ Plain Text กับแบบ Binary ไอ้เจ้า File แบบ Plain Text มันแทบจะไม่มีวิวัฒนาการอะไรเลยงั้นอย่าไปสนใจมันเลย มาสนใจไอ้ประเ฿ทที่เป็นแบบ Binary กันดีกว่า

โครงสร้างไฟล์แบบซับซ้อนโครงสร้างไฟล์แบบพื้น ๆผมชอบแนวคิดของ File แบบ Binary มาก ๆ เลยนะ ไม่รู้ใครเป็นคนคิดขึ้นมา ที่ชอบก็เพราะไม่ว่าจะเป็น File แบบ Binary แบบไหน ก็จะมีโครงสร้างคล้าย ๆ แบบ฿าพด้านซ้ายอ่ะ คือมี Header กับมี Detail หรือบาง File Extension ก็จะเว่อร์หน่อยแบบ฿าพด้านขวา คือมี Header ใหญ่แล้วก็มี Header ย่อย ๆ กับมี Detail ย่อย ๆ ตามลำดับ

จนถึงวันนี้ผมคิดว่ามี Binary File ถูกคิดค้นขึ้นมาน่าจะเป็นพันแบบแล้ว เพื่อรองรับการจัดเก็บข้อมูลในรูปแบบต่าง ๆ ตั้งแต่สากกระเบือยันเรือรบ เก็บมันตั้งแต่ข้อมูลเลขฐานสองธรรมดา ไปจนถึงข้อมูลมัลติมีเดียเต็มรูปแบบ

ถ้าผมทายไม่ผิด หลาย ๆ ท่านที่เป็นนักพัฒนาซอฟต์แวร์ คงจะมีความใฝ่ฝันเล็ก ๆ ที่จะคิดค้น File Extension อะไรซักอย่างหนึ่งของตนเองขึ้นมา แล้ว File Extenstion ดังกล่าว ถูกเผยแพร่ใช้งานจนเป็นที่นิยมไปทั่วโลก น่า฿ูมิใจนะแบบนี้

ปัจจัยสำคัญที่จะ Launch ไอ้เจ้า File Extension ของตนเองออกสู่สาธารณชนได้ จะประกอบไปด้วยขั้นตอนไม่ซับซ้อนครับ นั่นคือ ออกแบบโครงสร้าง File, สร้างซอฟต์แวร์ที่จะใช้สร้าง File ดังกล่าวออกมา และสร้างซอฟต์แวร์ที่จะใช้อ่าน File ดังกล่าว

ขั้นตอนน่ะไม่ซับซ้อน แต่รายละเอียดในแต่ล่ะขั้นตอนน่ะซับซ้อนโคตรเลยล่ะ!!! จุดยากอยู่ตรงการออกแบบโครงสร้าง File เนี่ยแหล่ะ ผมว่าการออกแบบโครงสร้าง File เป็นเรื่องใหญ่โตมาก ถึงขนาดเอาเป็นหัวข้อปริญญานิพนธ์, ฿าคนิพนธ์ หรือวิทยานิพนธ์ได้ด้วยซ้ำ

เมื่อตอนที่ผมทำปริญญานิพนธ์เรื่อง speech recognition นั้น นอกจากผมจะต้องมาวุ่นวาย, ปวดหัว, ร่ำไห้, เศร้าโศกเสียใจกับการที่ต้องมาเรียนรู้ศาสตร์ของ speech recognition ซึ่งเป็นเรื่องถนัดของคนที่เรียนวิศวกรรมไฟฟ้าแล้ว ผมยังต้องมาปวดกบาลกับการเขียนซอฟต์แวร์เพื่อจัดการ WAV File ด้วย

ก็ตอนนั้นผมยังไม่เก่งพอที่จะเขียนซอฟต์แวร์เพื่อควบคุมไมโครโฟนได้, ยังเขียนซอฟต์แวร์เพื่อบังคับให้เสียงที่ถูกอัดผ่านไมโครโฟนบันทึกลงไปใน Virtual Memory แล้วให้ Thread ย่อยไปอ่านข้อมูลจาก Virtual Memory มาประมวลผลไม่ได้

ผมก็เลยจำเป็นจะต้องใช้กลไกมาตรฐานที่ IDE ดังกล่าวมีให้ บันทึกเสียงที่อัดผ่านไมโครโฟนลง WAV File แทน ดังนั้นก็เลยหลีกเลี่ยงไม่ได้ที่ต้องไปทำความเข้าใจกับโครงสร้างของ WAV File

สมัยนั้นข้อมูลหายาก โชคดีผมได้รู้จักกับเว๊ปไซต์หนึ่ง เว๊ปไซต์เกี่ยวกับ File Format ที่เก่าแก่มาก เปิดมาตั้งแต่ปี พ.ศ. 2536 เลย (เขาบอกว่าเขาสงวนลิขสิทธิ์ตั้งแต่ปี พ.ศ. 2539 แต่ผมเจอเว๊ปเขาก่อนหน้านั้นตั้งหลายปีแล้ว) เว๊ปดังกล่าวคือ Wotsit’s Format

ปัจจุบันอะไร ๆ มันก็ง่ายขึ้นนะ เพราะนักพัฒนาซอฟต์แวร์ระดับ Top ของโลก เขาช่วยกันสร้าง Framework ที่จัดการ File Extenstion มาตรฐานขึ้นมา ผมมอง ๆ ดูนะไม่ว่าจะเป็น Java, PHP, Visual Studio.NET ล้วนมี Framework เพื่อช่วยจัดการ File Extension ทั้งนั้น ข้อดีก็คงเป็นเรื่องของความง่ายในการเขียนซอฟต์แวร์ ที่เราคงไม่จำเป็นต้องไปจัดการ File Extension เองแล้ว แต่ข้อเสียก็คงเป็นว่าเราไม่ได้พัฒนาหยักสมองอะไรซักเท่าไหร่ เพราะกลายเป็นว่าอะไร ๆ ก็มีคนทำไว้ให้แล้วนั่นเอง

[tags]file extension,file format,โครงสร้างไฟล์, โครงสร้างแฟ้ม,plain text,binary[/tags]

Related Posts

9 thoughts on “File Extension

  1. ผมยังเคยคิดจะทำ โปรแกรม compress ไฟล์ เองเลย เหมือนกับพวก winzip arj อะไรพวกนั้น แต่ก็ได้แค่คิด …

  2. อธิบายอะไรๆ ได้เข้าใจง่ายดีครับ เรียนคอมพ์มาบ้าง ยังไม่รู้ลึกเท่านี้เลย อิอิ

  3. เรื่องอะไรพวกนี้ มันมีรายละเอียดที่ต้องทำความเข้าใจเยอะ File Extension มันก็มีให้ใช้กันเยอะ จนทำให้คิดว่าจะเขียนเองทำไม ในเมื่อมันมีให้ใช้อยู่แล้ว และดีด้วย

  4. เห็นด้วยครับ เดี่ยวนี้ทำอะไรก็ต้องมี Framework มันช่วยให้ทำอะไรง่ายขึ้น

    ผมชอบคำนี้ครับ

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

  5. ผมสงสัยว่าตอนนี้พวก text-file มันกำลังจะกลับมาแรงแซง binary อีกรอบหรือเปล่าครับ เพราะเดี๋ยวนี้อะไร ๆ ก็พยามทำตัวให้เป็น XML หมดเลย

  6. ?????????????????????????????????????????????????????? SmileSquare ?????????????????????????? 😛

    ????????????????????????????????????????????? ??????????????????????????????????????????????????????? PatSonic ??????????????????????????????????????????????????????????????????????????????????????? ???????????????????????????????? ??? ^o^

    ????????????????????????????????????????????????????????? ?????????????????????????????????????????????????????????????????????????????????????????????????????????? ?????????????????????????????? ???????????????????????????????????????????????????????????? ??????????????????????????? “Don’t re-invent the wheel” ?????????????????????????????????????? ??????????????????????????????????????????????????????????? ???????????????????????????????????????????????????????????????????????????????????????????????????

    ????????????????????????????????????????????????????????????????????? ???????????? ?????????????????????????????????????????????????????????????????????? ??????????????????????????? 😛

    ?????????????????? XML ??????????????????????????????????????????????????? ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ??? ????????????????????????????????????????????????? XML ???????????????????????? ?????????????????????????????????????????? overhead ????????????????????? ??????????????????????????????

  7. คยเขียนแต่อ่าน pcx ปู้นนู้น แบบว่าลอกหนังสือมาทั้งดุ้น RLE ก็ไม่รู้จัก
    ใช้ Turbo C เขียน เปิดโหมด VESA ก็ต้องเขียนเอง (ลอกอีกนั่นแหละ)
    กว่าจะเอารูปออกมาแสดงบนจอได้นี่ลากเลือดมาก (เพราะพิมพ์เยอะ ตาลาย อิอิ)

    เรื่อง XML นี่ก็คิดเหมือนกันนะครับ ว่ามัน overhead มากๆๆ
    แต่ที่เห็นส่วนใหญ่ เช่นพวก OpenDocument เค้าก็จะ zip กัน ก็ลดมาได้หน่อย
    (ซึ่งพอ zip แล้วก็เป็น binary อยู่ดี อิอิ)

  8. สมัยก่อน การเขียนโค้ดพื้นฐาน ถือว่าเป็นการใช้ชีวิตทรหดมาก ๆ เลยครับคุณ iPats แต่ว่าเดี๋ยวนี้ใคร ๆ ก็สร้างโค้ดตามหลักการ Framework กันหมดแล้ว ชีวิตนักพัฒนาซอฟต์แวร์เลยดีขึ้นเป็นลำดับอ่ะครับ

  9. ขอบคุณค่ะเป็นประโยคได้มากเลยกับเรื่องที่จะทำ (การบ้านน่ะ) เกี่ยวสื่อประสม (Multimedia-based) ขอบคุณมาก สุขสันวันปีใหม่ค่ะ

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *