มีโปรเจคสร้างภาษาใหม่เล่นๆ ช่วงปิดซัมเมอร์ว่างๆ ครับ
เลยอยากเก็บข้อมูลให้ได้ถึงระดับ bit เพราะภาษาใหม่นี้อาจให้ 1 ตัวมีแค่ 6 bit ครับ
พร้อมทั้งเก็บมันเป็นไฟล์นามสกุลใหม่ *.myFile เลย
แล้วก็เขียนโปรแกรมแปลภาษา + editor ภาษาใหม่ที่เราคิดขึ้นมาครับ
(แบบไฟล์ *.txt ที่ใช้โปรแกรม notepad เปิดอ่าน+แก้ไขครับ)
อยากทราบว่า ใช้ภาษาอะไรเขียนโปรแกรมแนวนี้ได้บ้าง
จะหาความรู้เพิ่มได้ที่ไหน หาหนังสืออะไรอ่านดีครับ
จขกท.มีความรู้ java เล็กน้อยครับ
on
ศึกษา compiler
chaiwathuy Mon, 19/04/2010 - 15:20
ศึกษา compiler ก่อนเพื่อน
ต่อจากนั้น OS
ใช้ภาษาที่ทำงานระดับล่างทั้งหลาย เช่น C, assembly เป็นต้น
เอาแค่นี้ก่อน
ถ้าจะทำจริงซัมเมอร์เดียวไม่เพียงพอ
ผมว่าอย่างน้อยปีนึง
มีเหตุผลในเชิงวิศวกรรมอะไรที่
lew Mon, 19/04/2010 - 16:56
มีเหตุผลในเชิงวิศวกรรมอะไรที่จะพยายามเก็บระดับบิตอย่างนั้นอ่ะครับ?
ออกตัวก่อนว่า ผม (ยัง)
neizod Mon, 19/04/2010 - 17:56
In reply to มีเหตุผลในเชิงวิศวกรรมอะไรที่ by lew
ออกตัวก่อนว่า ผม (ยัง) ไม่ได้เรียนสายคอมพิวเตอร์โดยตรงครับ
แค่สนใจคอมพิวเตอร์เป็นงานอดิเรกอย่างรุนแรงเท่านั้น
ที่สนใจเก็บให้ได้ถึงระดับบิท เพราะ
เช่น 100000, 010000 ไปเรื่อยๆ จนถึง 0000001 ถือว่ามีความคล้ายกันในภาษาของผมครับ
มีข้อโต้แย้งหรือคำแนะนำอะไร เชิญถกมาได้เลยครับ เพราะทั้ง 4 ข้อที่ผมคิดมานี้ ผมไม่มีความรู้ด้าน database เลยครับ
(จริงๆ คือ ยังไม่รู้อะไรเกี่ยวกับการเขียนโปรแกรมด้วยซ้ำเลยหละครับ)
ถ้าเน้นเรื่องประสิทธิภาพ
McKay Mon, 19/04/2010 - 19:26
In reply to ออกตัวก่อนว่า ผม (ยัง) by neizod
ถ้าเน้นเรื่องประสิทธิภาพ การทำให้เป็น 6 บิทนั้นน่าจะทำให้ช้าลงครับ เพราะจะเรียกใช้ instruction set ของ CPU ไม่ได้
ok
neizod Mon, 19/04/2010 - 22:32
In reply to ถ้าเน้นเรื่องประสิทธิภาพ by McKay
ok รับทราบครับ
ตอนนี้หาหนังสือ C มาอ่านละ ^^
แนะนำเพิ่ม คือภาษา assembly
GuBaRaK Mon, 19/04/2010 - 22:45
In reply to ok by neizod
แนะนำเพิ่ม คือภาษา assembly นะครับ
สมมุตินะครับ ว่าแบบที่คุณคิดไว้ มันใช้ได้จริง
ก็ต้องเริ่มโดยการออกแบบ CPU ใหม่ ให้มีการประมวลผลแบบ 6 bits (งานช้าง)
จากนั้นก็พยายามทำให้ระบบปฏิบัติการณ์ใรปัจจุบันที่ใช้กัน Support กับ CPU 6bits ที่เพิ่งได้สร้างไป (งานไดโนเสาร์)
หนทางยังอีกยาวไกล สู้ๆคร้าบ
การเก็บข้อมูลให้มีประสิทธิภาพ
lew Tue, 20/04/2010 - 00:54
In reply to ออกตัวก่อนว่า ผม (ยัง) by neizod
ควรเริ่มหัดเขียนโปรแกรมก่อนทุกอย่างเลยครับ
ขอบคุณครับ ^^
neizod Tue, 20/04/2010 - 01:01
In reply to การเก็บข้อมูลให้มีประสิทธิภาพ by lew
ขอบคุณครับ ^^
ต้องเริ่มที่สร้างที่ CPU
nakannohc Mon, 19/04/2010 - 22:33
ต้องเริ่มที่สร้างที่ CPU แล้วมั้งครับ ?
เอ่อ... อ่านไปอ่านมา ชักงงๆ
neizod Tue, 20/04/2010 - 00:55
เอ่อ... อ่านไปอ่านมา ชักงงๆ เองแฮะ
เอาใหม่ๆๆ
ภาษาที่ผมกำลังสร้างนี้ ไม่ใช่ภาษาทางคอมพิวเตอร์ครับ แต่เป็นภาษาแบบภาษาไทย ภาษาอังกฤษ ภาษาจีน ประมาณนั้น
ทีนี้ ไอ่ภาษาใหม่ของผมเนี่ย ผมมานั่งคำนวณดูแล้ว พบว่ามันมีรูปแบบที่แตกต่างกันไม่เกิน 2^6 แบบ ทำให้ผมเห็นว่าการกำหนดมาตฐาน 8 bit = 1 byte มันเปลืองที่ไปหน่อย
เลยอยากลองคิดใหม่ดู โดยให้ตัวอักษรของผม 1 ตัวถูกเก็บด้วยข้อมูลขนาดแค่ 6 bit ก็พอครับ
...แต่จะว่าไป ภาษาอังกฤษเค้าก็มี 24 ตัว แต่ยังเผื่อไว้ถึง 256 แบบ (8 bit) เลยนี่หว่า
คือ เอ่อ CPU Word
mr_tawan Tue, 20/04/2010 - 04:01
In reply to เอ่อ... อ่านไปอ่านมา ชักงงๆ by neizod
คือ เอ่อ CPU Word เมื่อก่อนมันเป็น 8 บิท (พวก 8086) (ก่อนหน้านี้มี 4004 อีกตัวมั้ง?) เขาเลยใช้ 2^8 เพราะว่ามันคือค่าที่เป็นไปได้มากที่สุดที่จะป้อนเป็น Operand ให้กับคำสั่งของ CPU ถ้าใช้ค่ามากกว่านี้ต้องคำนวนมากกว่า 1 ครั้งซึ่งทำให้การคำนวนซับซ้อนขึ้นและทำให้ประสิทธิภาพช้าลง ก็เอาไอ้ที่ง่ายที่สุดนี่ล่ะ (จะเอาเร็วนั่นเอง) แล้วเนื่องจากมันมีค่าต่างกันได้ถึง 256 ค่า เขาก็ยัด ๆ สัญลักษณ์ประหลาด ๆ ลงไปให้มันเต็มล่ะครับ
(รู้ไว้ใช้ว่า : ASCII Code เป็นรหัส 7บิท นะครับ บิทสุดท้ายไม่ใช้ ในภายหลังมีการเพิ่มเติมรหัสเข้ามาเป็น Extended-ASCII ใช้ 8 บิท)
ในโลกปัจจุบัน (หรืออนาคตอันใกล้สำหรับหลาย ๆ คน) CPU Word เราใช้กันอยู่ที่ 64 บิท (AMD-64, Opteron, และอื่น ๆ) ซึ่งสามารถป้อนค่าในช่วง 0-2^64 ได้เลยน่ะครับ
ตัว wchar_t ที่ใช้แทนอักขระ บน UNIX environment ส่วนใหญ่ มีขนาดเท่ากับ int หรือ เท่ากับ CPU Word ( 32 หรือ 64 บิทก็ว่ากันไป) เพื่อช่วยด้าน Efficiency ส่วนบน Windows จะเป็น 16bit ตายตัวตลอด (น่าจะเกี่ยวกับเรื่อง Compatibility)
เรากลับมาที่ 6 บิท Word ก่อน ถ้าหากเราใช้ค่าแค่ 6 บิท นี่ไม่ได้ช่วยทำให้ Performance ดีขึ้นนะครับ เพราะเอาเข้าจริง ๆ มันก็คำนวนที่ 8 บิทนั่นล่ะครับ (อันนี้แล้วแต่ CPU Instruction แต่ละค่ายด้วย บางค่ายอาจจะโละคำสั่ง 8 บิททิ้งไปหมดแล้วก็ได้ ...)
ส่วน Storage ถ้าเราเก็บค่าแค่ 2^6 (แอบเดาว่าเป็น A-Z กับ a-z + สัญลักษณ์นิดหน่อย) เราสามารถที่จะเอาข้อมูล 6 บิทเข้ารหัสใน storage ได้เหมือนกัน ... แต่ตอนเข้ารหัสกับถอดรหัสออกมาใช้คงกินแรงพิลึก + Storage ปัจจุบันที่ความจุมหาศาล ... มันอาจจะได้ไม่คุ้มเสียน่ะครับ ส่วนใหญ่การเข้ารหัสลักษณะนี้น่าจะทำเพื่อความปลอดภัยของข้อมูลมากกว่า ... ไม่มั่นใจเหมือนกันผมไม่ค่อยเชี่ยวเรื่องนี้เท่าไหร่ครับ
ปล. ท่านใดอ่านแล้วเห็นว่าอันไหนไม่ถูก มาช่วยกันแก้หน่อยนะครับ เรื่องนี้ผมไม่ค่อยเชี่ยวชาญเท่าไหร่ :P
งั้นผมแนะนำอีกแบบนึง
nuttin0011 Tue, 20/04/2010 - 04:10
In reply to เอ่อ... อ่านไปอ่านมา ชักงงๆ by neizod
งั้นผมแนะนำอีกแบบนึง ไม่จำเป็นว่าทุกอย่างต้องเก็บด้วย 6 bit เสมอไป เช่น ผมลองภาษาผมที่มีแค่ ABCD
ถ้า ใช้ 2 bit A=00 B=01 C=10 D=11
แล้วผมเขียนคำว่า AAAAABBBCD ผมต้องเก็บว่า 00 00 00 00 00 01 01 01 10 11
แต่ถ้าผมให้
A=0 B=10 C=110 D=111
เขียนคำเดิม จะได้ 0 0 0 0 0 10 10 10 110 111
จะประหยัดได้ จาก 20 bit เป็น 17 bit
ปล. พูดให้งง แล้วจากไป 555
ปล2. คุณลองแบบตัวอย่างแรกดูนะครับ ไปล่ะ
จขกท.หมายถึงเรื่อง Charactor
heart Tue, 20/04/2010 - 04:43
จขกท.หมายถึงเรื่อง Charactor Encoding มั้ง
8bit = 1byte ถูกต้องแล้ว นี่เป็นหน่วยวัด เปลี่ยนไม่ได้ (รู้สึก จขกท จะบอกเปลืองไปหน่อย 55)
1 กิโลมี 10 ขีด เปลืองไป จะเอาเหลือ 1 กิโลมี 6 ขีดได้ไหมหละ 5555
ตัวอักษรจริงแล้วจะเก็บด้วยกี่บิท ก็ได้ เพียงแต่มันไปเก็บที่ 8บิท
คนเลยบอกว่า 1 ตัวอักษร = 1 ไบท์
จริงๆมันไม่ได้เป็นเช่นนั้นเสมอไป ข้อมูลจะเก็บกี่บิทก็ได้ ไม่ว่าจะข้อมูลไฟล์อะไรก็แล้วแต่
รวมถึงตัวอักษรด้วย
หลายคงอ่านกระทู้ไป เหมือนผมทีแรก นึกถึงเรื่องสถาปัตยกรรม CPU ขึ้นมาทันทีเลย
การทำงานของการเก็บอักษรไม่มีอะไรมาก เอา bit มา map ว่า บิทรหัสนี้ คืออักษรอะไร
แค่นั้นเอง
อย่างที่คุณ nuttin0011 บอก2bit ก็ได้แล้ว
มันขึ้นอยู่กับตัวอ่านข้อมูล ว่าแปลเลขบิท ให้แสดงผลเป็นอักษรอะไร
ตัวอักษรในโลกมีเยอะมาก มีหลายภาษา ถ้าแค่ภาษาอังกฤษ 3-4bit ก็เอาอยู่แล้ว
แต่ถ้าให้รองรับหลายภาษา ก็ต้องมีจำนวน bit เยอะให้รองรับ
แต่อย่างที่คุณ nuttin0011 บอกว่า ไม่ต้องเก็บทุกตัวให้ครบเสมอไป
เช่น A ก็เก็บแค่ 1 bit
ฺB ก็ 1 bit
C ก็ 2 Bit
แต่มันได้แค่ 4 ตัวอักษร ถ้าเยอะขึ้น มันก็จะมีปัญหาคือ ข้อมูลที่เราเซฟเนี่ยะ บิทมันจะต่อกันยาวพรืดดเลย
เวลาจำนวนบิทไม่เท่ากัน มันจะอ่านยาก ว่าอักษรไหน เป็นอักษรไหน
เค้าเลยกำหนดให้เท่ากันหมด เวลาเขียนโปรแกรมอ่าน
จะได้ตัดทีละ 8 bit มาแสดงผล
หรือถ้าจะให้มีทางแก้ ก็ต้องให้ชุด bit เป็นตัวคั่นแต่ละอักษร ซึ่งนั่นก็อาจจะทำให้ข้อมูลยาวขึ้นอยู่ดี
และที่สำคัญ นับจำนวนอักษรยากด้วย
อัลกอริทึมในการนับจำนวนตัวอักษรง่ายๆ ก็คือเอาจำนวนำบิท มาหารจำนวนบิทที่ใช่ต่ออักษร 1 ตัว
ง่ายกว่ามานั่งคัดอักษรจากกลุ่มไบท์ ที่ไม่มีความยาวแน่นอน
^O^
จะลองเขียนก็ลองเลยครับ
ไม่ต้องห่วงว่าจะใช้ได้จริงไหม
เพราะโจทย์ที่เกิดจากความไม่พอใจอะไร อยากทำเอง ทำใหม่
นี่แหละสร้างโปรแกรมเมอร์มือโปรมานักต่อนักแล้ว
โอเคครับ
neizod Tue, 20/04/2010 - 10:18
In reply to จขกท.หมายถึงเรื่อง Charactor by heart
โอเคครับ เจอศัพท์ที่เข้าท่าซักที (Charactor Encoding)
ก็ว่า เขียนไปเขียนมาชักงงๆๆๆ ถ้าเขียนแบบนี้แต่แรกน่าจะช่วยให้เข้าใจเยอะกว่าเนาะ
ขอบคุณครับ ^^
ผมว่ามันไม่น่าจะเหมาะ
tekkasit Tue, 20/04/2010 - 22:24
ผมว่ามันไม่น่าจะเหมาะ การประหยัดพื้นที่ดิสก์สักห้าสิบเปอร์เซ็นต์ฟังแล้วดูดี แต่ว่าสำหรับคนทั่วๆไป มันจะเป็นตัวเลขสักกี่ TB?
ยิ่งถ้าคุณมานั่งพล็อตกราฟราคาสื่อกับความจุดู จะเห็นได้ว่าเดี๋ยวนี้ความจุต่อราคาของสื่อ มันถูกลงอย่างน่าใจหาย มันพุ่งไปแบบ exponential เลยทีเดียว จำเมื่อก่อนสักยี่สิบปีก่อนได้รึเปล่า HDD ขนาด 10M ราคาปาเท่าไร ถ้าเอาราคานั้นมาซื้อ External HDD แบบ USB เดี๋ยวนี้ ไม่รู้ซื้อได้กี่อัน ขนาดก็ใหญ่กว่าไม่รู้ตั้งเท่าไร แถมราคา USB drive ราคานิดเดียวเก็บได้ 4G เรียกว่าเด็กสมัยนี้จะซื้อมาเก็บรายงาน รูปประกอบ เอกสารอ้างอิง ส่งพร้อมกับฉบับรูปเล่มรายงานให้อาจารย์ก็ยังไหว
ผมมองระยะยาว เรื่องความเสี่ยงในการเลือกมาทำ document archival ก็ยังเสี่ยง
การมากำหนด encoding scheme หรือไฟล์ compression algorithm ที่ไม่เป็นที่รู้จักกว้างขวาง ในระยะยาว มันจะเป็นปัญหา ยกตัวอย่างว่า อีกยี่สิบปี ดิสก์คุณล่ม โปรแกรมคุณหายไปแล้ว algorithm ที่สุดจ้าบนั่นหายไปแล้ว ด้วยเพราะมีคนใช้แค่หยิบมือเดียว แต่ media ที่มีไฟล์เอกสารที่บรรจุข้อมูลอันทรงคุณค่า ที่อาจจะไรท์ลง DVD ไว้ แต่มันดันเก็บในไฟล์รูปแบบที่ไม่มีใครอ่านออก ก็กลายเป็นหีบที่ไม่มีใครเปิดได้ไป
เพราะเมื่อเทียบกับ tar.gz, zip หรือแม้แต่ UTF-8, TIS-620 พวกนี้มันเป็นมาตรฐานที่เปิดเผย publish เรียบร้อย มีคนใช้เยอะ ใครๆก็สามารถเข้าถึง algorithm และสามารถสร้างตัวอ่านและเขียนรูปไฟล์รูปแบบพวกนี้ได้
กับการแค่ประหยัดพื้นที่แค่ 2G หรือ 2T มันจะดูจะมีความหมายน้อยกว่า เมื่อเทียบกับความเสี่ยงที่เกิดขึ้นเนื่องจากการเก็บไฟล์รูปแบบที่เป็นรูปแบบจำเพาะ แต่ไม่มีใครเปิดอ่านได้
ถ้าคุณจะลองฝึกพัฒนาทักษะการ programming ผมว่ามันก็โอเค แต่ผมคนหนึ่งละคงไม่อยากจะใช้ algorithm นั่น
ปล. ใครเคยใช้ Stacker, DriveSpace, DoubleSpace อยู่บ้าง ยกมือหน่อยสิ
/me ยกมือ
mr_tawan Wed, 21/04/2010 - 04:46
In reply to ผมว่ามันไม่น่าจะเหมาะ by tekkasit
/me ยกมือ
อ่า... ระยะยาว
neizod Wed, 21/04/2010 - 11:24
In reply to ผมว่ามันไม่น่าจะเหมาะ by tekkasit
อ่า... ระยะยาว ถ้าโปรแกรมเจ๊งก็ซวยสินะ
จะว่าไป ผมคงทำเล่นๆ อยู่แล้วอะ ถ้ามันเจ๊งก็ไม่เป็นไร
แต่ถ้าไม่เจ๊ง แล้วมีคนใช้เยอะ publish ทีน่าจะสนุก ได้ชื่อว่าเป็นคนคิดค้นมาตฐานใหม่ด้วย อิอิ
เยียมครับ... ผมชอบให้มีคนคิดแ
takeaway Wed, 21/04/2010 - 12:24
In reply to อ่า... ระยะยาว by neizod
เยียมครับ...
ผมชอบให้มีคนคิดแบบนี้เยอะๆนะครับ..(ตัวเองก็พยายามอยู่)
ออกนอกกรอบดี สำคัญ ถ้ากล้าคิด ต้องกล้าลงมือทำให้สำเร็จครับ
ไม่มีใครทำอะไรสำเร็จในครั้งแรก...ความล้มเหลวต้องมาก่อนความสำเร็จเสมอ
เอาใจช่วยครับ...อย่างน้อยก็ได้ความรู้จากการลงมือทำครับ
ซึ่งจะเข้าใจกว่าการฟังคนมาสอน แต่อาจจะใช้เวลามากกว่า เยอะๆๆๆ
ครับ ยังไงผมก็ไม่รีบอยู่แล้ว
neizod Wed, 21/04/2010 - 22:37
In reply to เยียมครับ... ผมชอบให้มีคนคิดแ by takeaway
ครับ ยังไงผมก็ไม่รีบอยู่แล้ว แถมเวลายังเหลือเฟืออีก ^^
ความรู้น้อย
7 Wed, 21/04/2010 - 13:02
ความรู้น้อย เลยคิดเรื่อยเปื่อยแบบนี้ได้ ลองศึกษาดูสัก 2-3 ปี แล้วค่อยกลับมาอ่านที่ตัวเองเขียนวันนี้ใหม่
ครับผม
neizod Wed, 21/04/2010 - 22:36
In reply to ความรู้น้อย by 7
ครับผม ^^
เมื่อก่อนสมัยที่ผมทดลองทำโน่นนี่นั่นอะไรเล่นๆ ก็ไม่ได้คิดอะไรกับอนาคตมาก
พอทำเสร็จก็ไม่ได้คิดว่าจะโดนใจใครหรือเปล่า ใช้ได้จริงหรือเปล่า
คิดแค่ว่า เฮ้ย มันสนุกดีหวะ 555
พอตอนนี้ลองมองกลับไป
อึม... แต่ละอย่างที่ทำก็นะ น่าอายจัง คิดไปได้ไง ตอนนั้นคิดอะไรอยู่เนี่ย
แต่ผมก็ไม่เคยรู้สึกเสียดายหรือรู่สึกไม่ดีนะ ที่ได้ทำสิ่งต่างๆ เหล่านั้นลงไป
เพราะถ้าผมไม่ลงมือทำสิ่งเหล่านั้น ผมก็ไม่มีวันนี้หรอกครับ
ผมสนับสนุนนะครับ เอาใจช่วย
newstar Sun, 25/04/2010 - 20:19
In reply to ครับผม by neizod
ผมสนับสนุนนะครับ เอาใจช่วย บางทีไม่เห็นจำเป็นต้องตามสิ่งที่มีอยู่เลย
บางครั้ง คิดนอกกรอบ อาจจะได้ผลงานสร้างสรรค์ที่โลกต้องตะลึงครับ
ผมมองว่าเป็นความกล้าคิดกล้าทำ
takeaway Thu, 22/04/2010 - 09:14
In reply to ความรู้น้อย by 7
ผมมองว่าเป็นความกล้าคิดกล้าทำ อย่างนึงนะครับ
(ยังไม่เคยรู้ว่าแบบเดิมเค้าทำยังงัย เลย คิดวิธีการอีกแบบขึ้นมา เช่น
ไม่รู้ว่า การเดินทางโดยรถยนต์ต้องมีล้อวงกลม มีพวงมาลัยเพื่อบังคับ ก็เลยคิด รถยนต์ที่มีล้อเป็นสี่เหลี่ยม และ ไม่มีพวงมาลัยบังคับ หรือ กระทั่ง รถที่ไม่มีรล้อและไม่ได้ขับเคลื่อนโดยน้ำมันน่ะครับ ถ้าไม่อย่างงั้นคนไทยเราคงไม่มีเทคโนโลยีใหม่ๆ เป็นของตัวเองซักทีน่ะครับ)
เอาใจช่วยนะครับ
ก็
heart Mon, 26/04/2010 - 14:32
In reply to ความรู้น้อย by 7
ก็ การเขียนของเรื่อยเปื่อยแบบนี้เล่นๆ นั่นแหละครับ ถึงจะพัฒนา
ถ้ารอให้ 2-3 ปี แล้วไม่ลงมืออะไรเลยก็ไม่มีความรู้เพิ่้มพอที่จะกลับมาดูโพสของวันนี้หรอกครับ ^^
ผมยังจำได้ว่า ตอนหัดเขียนโปรแกรมใหม่ๆ ของเขียนอะไรลงไปบ้าง ที่ไม่ได้ใช้งานจริง
แต่มันก็เป็นการพัฒนาตัวเองรูปแบบนึง
ลองทำแล้ว ก็ได้รู้ว่ามันไม่เวิร์ค ก็ยังได้ทักษะการแปลง การเข้ารหัส เอาไปใช้อะไรได้อีกตั้งหลายแนวทาง