VB 2005 vs VC# 2005 ความต่างลึก ๆ ใน IDE
posted on 03 Sep 2007 15:38 by ninkungz in Programming
จริง ๆ ไม่ค่อยอยากอัพเรื่อง Programming เท่าไหร่ เพราะสำหรับใน Exteen เรื่องแนวนี้มักขายไม่ออก แต่คนมันอยากเขียน ช่วยไม่ได้ ต้องยอมรับสภาพ
หลังจากเริ่มเล่น C# แบบหันกลับไปมอง VB(.net) เป็นระยะ ๆ ก็พบความต่างของทั้งสองมากขึ้นเรื่อย ๆ นอกจากตัวภาษาแล้ว IDE ที่หน้าตาเหมือนกันเป๊ะนั่นยังแอบซ่อนความต่างไว้ลึก ๆ (จริง ๆ ตื้นมาก) ส่วนของ Code Editor นี่ไม่พูดถึงแล้ว วันนี้ผมมาเพื่อแงะ Project Properties โดยที่กล่าวถึงทั้งหมดมาจาก VB 2005 Express และ VC# 2005 Express นะครับ (2008 ยังไม่ได้เอามาเล่น)
แรก ๆ ผมก็นึกว่าตรงส่วนนี้ของ VB 2005 และ VC# 2005 จะเหมือนกัน ที่ไหนได้มันต่างกันครับ แถมเป็นตัวบ่งบอกเอกลักษณ์ของแต่ละภาษาได้ดีเลยล่ะ
หน้า Application - ตรงนี้ไว้ใช้กำหนด ชื่อ, ไอค่อน, Startup Object และ Assembly Information (พวกชื่อบริษัท เลขเวอร์ชั่น บลา ๆ ๆ) ซึ่งใน C# ก็มีแค่นั้นล่ะ แต่ของ VB ดันมีของพวกนี้เพิ่มเข้ามา (ดูภาพด้านล่าง)

edit @ 2007/09/03 15:44:05
edit @ 2007/09/03 15:53:38
edit @ 2007/09/03 23:25:41
edit @ 2007/09/06 01:42:22
หลังจากเริ่มเล่น C# แบบหันกลับไปมอง VB(.net) เป็นระยะ ๆ ก็พบความต่างของทั้งสองมากขึ้นเรื่อย ๆ นอกจากตัวภาษาแล้ว IDE ที่หน้าตาเหมือนกันเป๊ะนั่นยังแอบซ่อนความต่างไว้ลึก ๆ (จริง ๆ ตื้นมาก) ส่วนของ Code Editor นี่ไม่พูดถึงแล้ว วันนี้ผมมาเพื่อแงะ Project Properties โดยที่กล่าวถึงทั้งหมดมาจาก VB 2005 Express และ VC# 2005 Express นะครับ (2008 ยังไม่ได้เอามาเล่น)
Project Properties
จริง ๆ ไม่รู้ผมเรียกมันถูกรึเปล่า เพราะปกติมันจะอยู่ในเมนู Project ในไอเท็มที่มีชื่อเดียวกับชื่อ Project แล้วตามด้วยคำว่า Properties ซึ่งเมนูนี้มันเอาไว้ปรับแต่งหลาย ๆ อย่างใน Project ของเรา รายละเอียดอันนี้ต้องลองเข้าไปดูจะรู้เองแรก ๆ ผมก็นึกว่าตรงส่วนนี้ของ VB 2005 และ VC# 2005 จะเหมือนกัน ที่ไหนได้มันต่างกันครับ แถมเป็นตัวบ่งบอกเอกลักษณ์ของแต่ละภาษาได้ดีเลยล่ะ
หน้า Application - ตรงนี้ไว้ใช้กำหนด ชื่อ, ไอค่อน, Startup Object และ Assembly Information (พวกชื่อบริษัท เลขเวอร์ชั่น บลา ๆ ๆ) ซึ่งใน C# ก็มีแค่นั้นล่ะ แต่ของ VB ดันมีของพวกนี้เพิ่มเข้ามา (ดูภาพด้านล่าง)

มันคือ application framework properties นี่ล่ะครับ ดูจากตัวหนังสือในภาพก็คงรู้ว่ามันมีไว้ทำอะไร ซึ่งของพวกนี้นั้นใน VC# เราต้องเขียนเอง (หรือไปหา Class ชาวบ้านมาใช้) แต่ VB เตรียมไว้ให้เราแล้ว แค่คลิ้กเดียวเท่านั้น ยกตัวอย่างเช่น Make single instance application ที่ใช้บังคับให้เปิดโปรแกรมได้ชุดเดียวนั่น ส่วนของ C# ต้องเขียนกันเอง (เท่าที่หาดูมีอันนึงใช้วิธีเรียก Class ของ VB มาใช้...) วิธีง่าย ๆ (แต่ยังไม่ได้ลอง) ก็มีแบบนี้
หน้า Compile/Build - ที่ต้องแบ่งเป็น 2 ชื่อนี่ก็เพราะว่าเจ้าหน้านี้ใน VB ดันเรียก Compile แต่ใน C# ดันเรียก Build (ทั้ง ๆ ที่ทั้งคู่มีเมนู Build เหมือนกัน) ตรงนี้ของ VB กับ C# นี่ต่างกันแบบคนละเรื่องเลย (สมชื่อ) แต่ตรงนี้คนเขียน VB ควรจะเข้ามาเพราะเป็นการปรับความเข้มงวดของภาษา เช่น Option explicit (บังคับให้ประกาศตัวแปรก่อนใช้) Option strict (บังคับให้แปลงขนิดของตัวแปรทุกครั้ง) และเปิดปิดการแจ้งเตือนอื่น ๆ ส่วน C# นั้นต้องขอยอมรับว่าผมมึนกับตัวเลือกของมันมาก ๆ โดยรวมก็คล้าย ๆ กันคือกำหนดการแจ้งเตือนต่าง ๆ แต่มีที่พิเศษเพิ่มมาก็คือ...

Process aProcess = Process.GetCurrentProcess();จากความต่างจุดนี้ก็เห็นได้ชัดแล้วว่า VB ถูกวางไว้ให้เป็นเครื่องมือที่เน้นการสร้าง Application อย่างด่วนจริง ๆ
string aProcName = aProcess.ProcessName;
if (Process.GetProcessesByName(aProcName).Length > 1)
{
MessageBox.Show("The application is already running!!","Test",
MessageBoxButtons.OK,MessageBoxIcon.Stop);
Application.ExitThread();
}
หน้า Compile/Build - ที่ต้องแบ่งเป็น 2 ชื่อนี่ก็เพราะว่าเจ้าหน้านี้ใน VB ดันเรียก Compile แต่ใน C# ดันเรียก Build (ทั้ง ๆ ที่ทั้งคู่มีเมนู Build เหมือนกัน) ตรงนี้ของ VB กับ C# นี่ต่างกันแบบคนละเรื่องเลย (สมชื่อ) แต่ตรงนี้คนเขียน VB ควรจะเข้ามาเพราะเป็นการปรับความเข้มงวดของภาษา เช่น Option explicit (บังคับให้ประกาศตัวแปรก่อนใช้) Option strict (บังคับให้แปลงขนิดของตัวแปรทุกครั้ง) และเปิดปิดการแจ้งเตือนอื่น ๆ ส่วน C# นั้นต้องขอยอมรับว่าผมมึนกับตัวเลือกของมันมาก ๆ โดยรวมก็คล้าย ๆ กันคือกำหนดการแจ้งเตือนต่าง ๆ แต่มีที่พิเศษเพิ่มมาก็คือ...

Optimize code นี่ล่ะ จุดนี้ทำให้เห็นได้ชัดว่า C# ถูกกำหนดมาให้เน้นเรื่องประสิทธิภาพจริง ๆ .
หน้า References - หน้านี้ต้องบอกว่า VB กินขาดครับ เพราะใน VB หน้านี้จะเป็นตัวจัดการ References เบ็ดเสร็จในหน้าเดียวเลยทีเดียว ที่พิเศษสุด ๆ ก็คือปุ่ม Unused References ... ที่ใช้แสดง References ที่ยังไม่ได้ถูกใช้ใน Project ของเรา ให้เลือกเอาออกได้อย่างง่ายดาย สำหรับ C# หน้านี้จะให้คุณได้แค่กำหนด References Path เท่านั้น ที่เป็นเช่นนี้คงเพราะว่า VC# โชว์ References เป็นปกติใน Solution Explorer อยู่แล้วนั่นเอง (VB ปกติจะซ่อนไว้)

ก็หมดแล้วล่ะครับ อาจตกหล่นอะไรไปบ้างก็ช่างเถอะ แต่ดูแล้วจะเห็นว่า VB นั้นง่ายกว่า C# อย่างเห็นได้ชัด หลายอย่างมีการจัดการให้เสร็จสรรพไม่ต้องไปหาที่ไหน แต่นั่นทำให้ VB มีโค้ดซ่อนหูซ่อนตาเราอยู่ค่อนข้างเยอะทีเดียว เนื่องจาก VB เน้นการสร้าง Application มากกว่าจะให้สนใจว่าอะไรอยู่ข้างใน (แต่สนสักหน่อยก็ดีนะเพื่อประสิทธิภาพ)
ส่วน C# นี่มันค่อนข้างเปิดเผย ดูแล้วจริงใจดี และยังสอนให้เราเข้มงวดกับการเขียนโปรแกรมมากขึ้น แต่โดยส่วนตัวผมไม่ค่อยชอบปีกกาเท่่าไหร่เพราะเหตุผลง่าย ๆ คือเวลาพิมพ์มันต้องกด Shift น่ะสิ ซ้ำยังเป็น case sensitive อีกทำให้เวลาเจออะไรที่มีตัวพิมพ์ใหญ่อยู่ในชื่อเราต้องกด Shift เพื่อพิมพ์มันซ้ำอีก (VB จะปรับ case ให้ถูกต้องโดยอัตโนมัติ ไม่ว่าเราจะพิมพ์ยังไง)
หลังจากลองเขียน Code สั้น ๆ ทั้ง VB และ C# ดูก็พบว่า C# ต้องใช้เวลานานกว่าถึง 3 เท่า แถมมักจะรันครั้งแรกไม่ผ่านอีกต่างหาก (มักจะรันผ่านตอนครั้งที่ 3) ส่วนตัวก็ยังยันคำเดิมว่ายังรัก VB มากกว่า แม้ความนิยมมันจะลดลงเรื่อง ๆ ก็เถอะ
แถม : Google Trends - VB vs C#

ส่วน C# นี่มันค่อนข้างเปิดเผย ดูแล้วจริงใจดี และยังสอนให้เราเข้มงวดกับการเขียนโปรแกรมมากขึ้น แต่โดยส่วนตัวผมไม่ค่อยชอบปีกกาเท่่าไหร่เพราะเหตุผลง่าย ๆ คือเวลาพิมพ์มันต้องกด Shift น่ะสิ ซ้ำยังเป็น case sensitive อีกทำให้เวลาเจออะไรที่มีตัวพิมพ์ใหญ่อยู่ในชื่อเราต้องกด Shift เพื่อพิมพ์มันซ้ำอีก (VB จะปรับ case ให้ถูกต้องโดยอัตโนมัติ ไม่ว่าเราจะพิมพ์ยังไง)
หลังจากลองเขียน Code สั้น ๆ ทั้ง VB และ C# ดูก็พบว่า C# ต้องใช้เวลานานกว่าถึง 3 เท่า แถมมักจะรันครั้งแรกไม่ผ่านอีกต่างหาก (มักจะรันผ่านตอนครั้งที่ 3) ส่วนตัวก็ยังยันคำเดิมว่ายังรัก VB มากกว่า แม้ความนิยมมันจะลดลงเรื่อง ๆ ก็เถอะ
แถม : Google Trends - VB vs C#
edit @ 2007/09/03 15:44:05
edit @ 2007/09/03 15:53:38
edit @ 2007/09/03 23:25:41
edit @ 2007/09/06 01:42:22
Tags: csharp, ide, programming, vb, visual basic, visual studio3 Comments

vb เขียน code สั้น ๆ คงดีกว่า
แต่ไอ้ความที่ชอบแอบทำอะไรไว้ ทำให้เกิด bug ง่ายกว่า แถมยัง debug ยากกว่าเนี่ยสิ
#1 By T!D on 2007-09-03 17:38