Category Archives: Talk

Talk: iPhone SDK – II

ตอนแรกผมว่าจะเขียน iphone sdk ละ แต่คิดว่ามันยังไม่ถึงเวลาจะเขียน เพราะอีกตั้งหลายเดือนกว่าจะที่มันจะ update firmware และเราก็คงทำได้แค่ เขียนและลองใช้แต่เฉพาะ กับ emulator แต่ก็เท่าที่อ่านข่าวมาหลายอย่างก็พบว่า มันยังมีกฎต่างๆของ iphone ที่ห้ามไว้ เป็นต้นว่า ห้ามเขียนโปรแกรมที่เกี่ยวกับซิมการ์ด เป็นต้นและอื่นๆอีกมากมาย เท่าๆที่ผมอ่านๆมาเหมือนว่า Java ก็ไม่สามารถทำงานได้เพราะว่ามันเป็น interpreter ซึ่งก็เป็นข้อห้ามของ apple

และผมก็ได้อ่าน review จาก http://www.blognone.com/node/7210 ของคุณ MK ได้เขียนไว้แต่ผมไม่ค่อยเห็นด้วยน่ะ คือเท่าที่อ่านมา เค้าเข้าใจว่ามันเขียนได้เฉพาะ objc แต่จริงๆแล้วมันเขียนได้ด้วย c/c++ อีกภาษา และผมก็ไม่เห็นด้วยตรงที่เค้าบอกว่า

” ข้อดีคือเทคโนโลยีที่ใช้ใน iPhone เป็นเทคโนโลยีที่พิสูจน์แล้วว่าสมบูรณ์ มั่นคง แข็งแรง บั๊กน้อย (ภาษาอังกฤษเรียก mature) แถมประหยัดสตางค์ของแอปเปิลเอง เพราะจ้างนักพัฒนาเขียนไลบรารีครั้งเดียว ใช้ได้ทั้งบนคอมพิวเตอร์ และ iPhone (รวมถึง iPod touch ดังจะกล่าวต่อไป) นักพัฒนาที่คุ้นเคยกับแมคอยู่แล้วก็สบาย แทบไม่ต้องเรียนรู้อะไรใหม่ยกเว้น Cocoa Touch กับเทคโนโลยีเฉพาะของ iPhone อย่างอื่นอีกเล็กน้อยเท่านั้น

แต่ข้อเสียก็มาพร้อมกัน คือนักพัฒนาบนแมคที่ว่าเนี่ย มันมีอยู่สักกี่คนกันเชียว การเรียนรู้ชุดเครื่องมือเหล่านี้ต้องลงทุนสูงพอสมควร อย่างน้อยๆ ต้องซื้อเครื่องแมคมาใช้ ตามอัพเดตใช้ซอฟต์แวร์เวอร์ชันล่าสุดอยู่เสมอ (iPhone SDK รันได้เฉพาะบน Leopard 10.5.2 ขึ้นไป และฮาร์ดแวร์อินเทลเท่านั้น) แถมพัฒนาซอฟต์แวร์บนแพลตฟอร์มนี้แล้วก็รันได้แต่บนแมค ตลาดมีขนาดเล็กมากเมื่อเทียบกับพีซี ยิ่งในประเทศไทย จะหาคนที่พัฒนาซอฟต์แวร์บนแมคเพื่อเลี้ยงชีพนี่แทบนับนิ้วได้ “

จริงๆแล้วข้อดี คือเพราะมันแทบจะเหมือน Api ของ OSX นั่นไม่ใช่ว่ามันจะทำให้ apple ประหยัดเงินสำหรับจ้างนักพัฒนาของตัวเอง แต่มันหมายถึงการพอร์ทโปรแกรมจาก mac มายัง iphone นั้นจะง่ายมากและนักพัฒนาก็เรียนรู้ cocoa touch เพิ่มเติม

ข้อเสียผมก็ไม่ค่อยเห็นด้วยเท่าไหร่ ก็จริงอยู่ว่านักพัฒนาบน mac มันน้อย และตลาดมันแคบ เค้าอาจจะมองว่ามันต้องเขียนด้วย Objc อย่างเดียวมันจึงไม่น่าสนใจ จริงๆข้อเสียทีผมคิดว่ามันน่าจะเป็นที่ การหา resource สำหรับการพัฒนา หรือการเรียนรู้ Carbon/Cocoa นั้นน้อยมากๆ ( นี่เป็นสาเหตุหลักๆ ของผมที่เขียน blog นี้ขึ้นมา ) ผมก็คิดเหมือนกับเค้าน่ะว่า จะหานักพัฒนาซอฟแวร์บนแมคเพื่อเลี้ยงชีพ ในเมืองไทยจะมีสักกี่คน ผมก็ไม่รู้น่ะว่าเมืองไทยจะมีกี่คน แต่ให้เดา ไม่น่าจะถึง 20 คน ไม่ได้หมายถึงว่า เขียน web , php , perl , ruby บน mac น่ะ แต่หมายถึงคนที่ต้องเขียน Objc/Cocoa/Carbon แบบนี้

ความเป็นจริงผมก็ไม่คิดว่า จะได้มาเขียน  software บน mac แบบจริงๆจังๆน่ะ แต่ด้วยว่าอยากลองของใหม่ เลยต้องทำให้ผมต้องพัฒนาโปรแกรมบน mac เพื่อเลี้ยงชีพ จริงๆการเรียนรู้การเขียนโปรแกรมบน mac ไม่ได้ยากเลย แต่ที่สำคัญมากๆก็คือ แหล่งข้อมูลมันน้อยมากๆ ลำพังอ่าน doc ของ apple เองก็อาจจะงง ได้ง่ายๆ ผิดกับ Microsoft ที่เค้ามี MSDN เป็นแหล่งรวมทุกๆอย่างสำหรับการพัฒนา ถ้าจะให้เทียบ แล้วเหมือนกับ ร้านหนังสือ B2S คือ Apple ส่วน Amazon คือ Microsoft อะไรแบบนี้เลย  แหล่งข้อมูลมันต่างกันเยอะมากๆ ก็ไม่แปลกที่ทำไมว่า คนเขียนโปรแกรมบน mac มันน้อยนัก

Talk: iPhone SDK – I

วันก่อน Apple ได้ปล่อยตัว SDK ออกมาแล้ว และผมก็โหลดมาเรียบร้อยแล้ว จาก  Bittorrent !!! จริงๆ ก็ก็โหลดจาก Apple เองมาแล้ว แต่ เวปมันดันล่มซะนี่ ก็ให้ทำยังไงละ โหลดจาก bit เอาอาจจะไวกว่า ก็เลยโหลดมาลงดู เท่าที่ผมดูจาก vdo และ document แล้วเนี่ย พบว่า Apple ได้ออกแบบให้ การเขียนโปรแกรมจาก Mac มาสู่ iphone นั้นง่ายมากๆ เพราะว่า ตัว Framework นั้นก็แทบจะเหมือนกับ OSX อยู่แล้ว แต่สิ่งที่ Apple ยังไม่ได้ออกมาด้วยในตอนนี้ก็คือ Interface builder

แต่หลังจากผมลอง โหลดมาและลอง สร้างโปรเจคขึ้นมาทำการ Compile เล่นๆ ดูก็พบว่า โอ้ววว iPhone Emulator นี่มันดีจริงๆ ผมไม่เคยเห็น ว่าการพัฒนา App สำหรับมือถือมันจะง่ายขนาดนี้ ถ้าเป็น symbian นี่ท่าจะยากกว่านี้เยอะ

ความรู้สึกผมว่ามันแทบจะไม่ได้ต่างอะไรกับการเขียนโปรแกรมจาก mac มาสู่ iphone เลย และแน่นอนว่า ข่าวดีหลายอย่างก็คือว่า iPhone นั้นรองรับ C/C++ ตอนแรกคิดว่าจะให้เขียนเฉพาะ Objc ซะแล้วอีก และที่ดีกว่านั้นสำหรับผมก็คือว่า มันรองรับ Objc++ ด้วยสิ มันทำให้ผมเขียนโปรแกรม Objc แล้วไปใช้ lib ของ C/C++ ได้เลย

และใน iphone SDK นี้ได้ทำการ update Xcode เป็น Xcode 3.1 แล้ว หน้าตาก็เปลี่ยนไปในทางที่ดีขึ้น

ไว้คราวหลังจะลอง เอา sceen shot มาให้ดูละกันว่ามันเป็นยังไง

Talk: Mac Pro

จริงว่าจะไม่เขียนเรื่องส่วนตัวเท่าไหร่ แต่ก็คิดว่าถ้ามันเกี่ยวกับ mac ก็น่าจะเขียนบ้าง คือเนื่องจากวันก่อนผมเข้าไปดูที่เวปของ Apple ( ปกติไม่ค่อยเข้า ) ก็เห็น Spec ของ Mac Pro จริงๆก็ออกได้ตั้งแต่ช่วงมกราคมแล้วละ เห็นแล้วก็ร้องเพราะว่า ความแรงมันต่างกันกับเครื่องปัจจุบันเหลือเกิน คือเครื่องปัจจุบันของผม ก็ Mac Pro น่ะ Xeon Quard core , Ram 4 Gb.

ก็น่าจะเรียกได้ว่าเทพพอสมควร แต่ว่าพอเห็นเครื่อง Mac Pro ใหม่แล้วก็ต้องบอว่าของผม มันเด็ก เพราะว่าตัวใหม่มัน Xeon 8-Core ขอกรี๊ดสักที ให้ตายเหอะ ราคาก็เท่ากันอีกต่างหาก คือเพิ่งได้เครื่องมาตอน พฤษศจิกายน มามกราคม มันออกใหม่แรงกว่าเดิม ในราคาเท่าเดิม นี่มันระยะเวลาแค่ 3 เดือนเองน่ะ แต่ก็เอาเถอะไม่คิดมาก เพราะว่าไม่ใช่เงินเรา บริษัทออกให้ แต่ก็แอบเซ็งเล็กน้อย แต่ก็อย่างว่างานส่วนมากของผมคือ เขียนโปรแกรม บน Mac เนี่ยสิ งานเลยไม่ได้ยุ่งกับ Graphic มากเท่าไหร่ แต่ว่า ก็ต้องใช้เครืองแรงๆ เพราะว่าโปรแกรมที่เขียนมันเกี่ยวกับ 3D ใช้แต่ Xcode แต่ก็ยังดีใจอย่างว่า อีกราวๆ 2 อาทิตย์ บริษัทจะซื้อ Mac book pro มาด้วย ไว้ให้มันได้มาก่อนจะได้เอามายลโฉม เจ้า MBP

Programming on Mac OSX

ภาษาที่ใช้การเขียนโปรแกรม บน Mac OSX นั้นแบ่งออกเป็น หลักๆ สามอย่าง คือ

  • Objective C
  • C/C++
  • ภาษาอื่นๆ เช่น java , php

ปกติแล้วเราจะมักจะคุ้นเคยกับ C/C++ หรือว่า Java , php , perl อะไรแบบนี้ แต่คงไม่เคยได้ยิน Objective-C ( ต่อไปนี้ขอเขียนว่า ObjC ) ในส่วนของ การเขียนโปรแกรมด้วย Obj-C เดี๋ยวจะมาเล่าให้ฟังอีกที แต่โดยหลักๆแล้ว การเขียนโปรแกรม Appliction บน Mac ส่วนมากจะนิยม C/C++ กับ Obj-C ภาษาอื่นๆไม่ค่อยเป็นที่นิยมเท่าไหร่ ( คือส่วนตัวผมแล้ว พวก java หรือว่าอื่นๆมันไม่ใช่ภาษาที่จะเอามาเขียนเป็น App ที่ใช้งานจริงเท่าไหร่ ) เนื่องจากว่า ภาษา C/C++ เองนั้นเป็นที่นิยม และมันเป็นภาษาของแทบจะทุกๆ Platform ที่ต้องมีและ Lib ก็มีให้ใช้เยอะมาก ส่วนภาษา Obj-C เองนั้น ได้พัฒนาโดย NextStep ( บริษัทของ Steve Job ช่วงออกจาก Apple ) เป็นการต่อยอดออกมาอีกทีจากภาษา C

เนื่องจากความนิยมใน 2 ภาษานี้ ( จริงๆผมว่ามันนิยมจริงๆแค่ C/C++ น่ะแต่เนื่องจากว่า ภาษา Obj-C มันเป็นภาาษหลักของ OpenStep แล้ว Apple ก็ไปซื้อ NextStep มาทำให้ Obj-C เป็นที่นิยมมากขึ้น )

ทำให้ Apple มี Frameworkออกมาหลักๆ 2 อันคือ

  • Carbon
  • Cocoa

โดยที่ Carbon นั้นจะเป็นภาษา C/C++ ส่วน Cocoa จะใช้ภาษา Obj-C

ไม่ว่าจะเขียนด้วย C/C++ หรือว่า Obj-C ตัว Framework เองนั้นมีคลาส ให้ใช้มากมายและแทบจะเหมือนกันๆ คือเค้าออกแบบให้มันทำงานได้เหมือนกัน เพียงแต่ว่าชื่อเรียกจะไม่เหมือนกัน แต่เท่าที่ลองๆมา ก็พบว่ามันก็ไม่ได้ต่างกันมาก คือถ้าถามว่าแล้วจะเลือกอะไรดี ผมบอกไม่ได้เหมือนกัน แต่ว่าถ้าเคยเขียน C/C++ มาก่อนอยู่แล้ว ก็น่าจะเลือก Carbon อาจจะเหมาะกว่า แต่ว่าถ้าไม่เคยเขียน C/C++ มาก่อน ผมว่าไปเขียน Obj-C อาจจะง่ายกว่า ก็ได้ แต่ถ้าใครเขียน C/C++ แล้วอยากลองของใหม่ก็ได้น่ะ เพราะว่าเท่าที่เขียนๆมันก็ไม่ได้ต่างจาก C/C++ เท่าไหร่ จะแตกต่างในบางเรื่องก็เท่านั้น แต่ผมว่า Obj-C เรียนรู้ไม่ยากเลย

First word

ผมคิดไว้นานแล้วละครับ ว่าอยากจะเขียน Blog สักอันที่เกี่ยวกับ Mac ( และโดยเฉพาะ เกี่ยวกับ Programming ) แต่ก็ไม่รู้ว่าจะไปเขียนที่ไหนดี เคยใช้ Blogspot ก็ดีน่ะ แต่ว่าอันนั้นมันเขียนแต่เรื่องส่วนตัวไปหน่อย เลยกะว่า Blog นี้จะเอาไว้ทำ เฉพาะเนื้อหาสาระ และเรื่องต่างๆของ Mac และจะเน้นไปทาง Development ซะมากกว่า เผื่อว่าหากมีใครได้เอามันไปใช้ต่อยอด

โดยคาดว่าสิ่งที่อยากจะเอามาเขียนใน Blog นี้ก็น่าจะเป็น

  • Xcode
  • Objective-C
  • C++
  • Unix/Linux/Darwin
  • OpenGL
  • Carbon / Cocoa