VB.Net กับการอภิปราย C # [ปิด]


18

ฉันอยู่ในสถานที่ทำงานซึ่งเป็นจุดเริ่มต้นของโครงการคำถามที่ว่า "เราควรใช้ VB.Net หรือ C #" ได้รับการหยิบยกขึ้นมา

จริงอยู่ที่ว่ามันเป็นเรื่องธรรมดาที่จะต้องตัดสินใจน้อยกว่าในตอนแรกของ. Net โดยเฉพาะอย่างยิ่งเมื่อพิจารณาถึงแนวโน้มของการบรรจบกันของภาษา

ดังนั้นระหว่าง VB.Net และ C # คุณชอบภาษาใดและทำไม


2
เพียงเพื่อโยนประแจในงานมีบางผลิตภัณฑ์ (เช่นนักออกแบบ WF ใน VS2010) ที่สนับสนุนเฉพาะไวยากรณ์ VB.Net ...
Damovisa

รอบ ๆ ที่นี่โปรแกรมเมอร์ C # จะได้รับค่าตอบแทนมากกว่าโปรแกรมเมอร์ VB.NET
SeanX

ฉันนำส่วน "นิรันดร์" ออกจากชื่อที่ดูเหมือนว่า "ไม่เป็นธรรม" ตัวคำถามเองนั้นมีประโยชน์มากและคุณภาพของคำตอบนั้นเป็นตัวบ่งชี้ที่ดีกว่าของวิธีการสร้างสรรค์ที่น่าอับอาย "แนวทางหกประการ"
Wizard79

ฉันมักจะสงสัยว่าจะกลับตัวเองหรือไม่หากแนวโน้มยังคงดำเนินต่อไปใน C # ทำให้ผู้ที่มี VB.NET ประสบปัญหามากขึ้นและสามารถสั่งพรีเมี่ยมที่สูงขึ้นได้
JohnFx

คำตอบ:


29

ฉันชอบ C # มากกว่า VB.NET เพราะ

  • การหาโปรแกรมเมอร์ / งานง่ายขึ้น:

ข้อความแสดงแทน

  • การค้นหาความช่วยเหลือง่ายขึ้น:

ข้อความแสดงแทน

(จาก stackoverflow)


3
+1 ดังนั้นรวดเร็วแทนที่ google เป็นแหล่งช่วยเขียนโปรแกรมที่ฉันต้องการ
ไม่ระบุตัวตนพิมพ์

12
คำถามคือแท็ก C # เพิ่มขึ้น 10 เท่าหมายความว่าเนื้อหาครอบคลุมมากขึ้นใช้งานได้มากขึ้นหรือมีปัญหามากกว่านี้หรือไม่ +1 เมื่อมีงาน
JeffO

12
ฉันจะระวังนายจ้างที่จะไม่ว่าจ้างโปรแกรมเมอร์ VB.NET ให้ทำ C #
Matt Olenik

@Anonymous: ดังนั้นแทนที่ google โดยวันที่ 2 (มากกว่าหนึ่งปีที่ผ่านมา) FireFox ที่บ้านมี SO, MSDN และโปรแกรมเมอร์เป็นเว็บไซต์ค้นหาหลัก 3 แห่งของฉัน
IAbstract


27

ฉันเกลียด VB.NET วันที่ฉันยังคงใช้มันเป็นวันที่ฉันเสียใจ ที่กล่าวว่ารสนิยมของฉันเป็นส่วนหนึ่งของสถานการณ์และประสบการณ์ของฉันและไม่จำเป็นต้องเกี่ยวข้องกับสิ่งที่คุณกำลังทำ ...

ฉันคิดว่ามันเป็นสิ่งสำคัญเมื่อเปรียบเทียบภาษาที่พัฒนาอย่างต่อเนื่องเช่น C # และ VB.NET เพื่อดูประวัติของพวกเขาและดูว่าพวกเขามาถึงสถานะปัจจุบันของพวกเขาอย่างไร:

ข้อดีดั้งเดิมของ BASIC บนไมโครคอมพิวเตอร์รวมถึงขนาดและความเรียบง่าย (ไวยากรณ์ขนาดเล็กที่ง่ายต่อการแยกวิเคราะห์ที่ทำขึ้นสำหรับล่ามขนาดเล็กที่มีเหตุผลรวดเร็วและเหลือห้องในหน่วยความจำสำหรับโปรแกรมและข้อมูลจริง) สภาพแวดล้อมแบบโต้ตอบที่เปิดใช้งานการทดสอบ สัญลักษณ์และโครงสร้างคำศัพท์ที่ตัดสั้นเพื่อให้มีความชัดเจนเหมือนไวยากรณ์ภาษาอังกฤษ มันไม่เหมาะสมสำหรับโปรแกรมขนาดใหญ่ที่มีโครงสร้างอย่างไรก็ตามและมีแนวโน้มที่จะสนับสนุนรหัสสปาเก็ตตี้ ยังคงความพร้อมใช้งานและความเรียบง่ายทำให้มันเป็นตัวเลือกที่ยอดเยี่ยมสำหรับการแนะนำการเขียนโปรแกรม

QuickBasic อัพเดตไวยากรณ์เพื่ออนุญาตให้โปรแกรมที่มีโครงสร้างมากขึ้นขนาดใหญ่และเพิ่มการรวบรวมเพื่อการดำเนินการที่รวดเร็วยิ่งขึ้น

VisualBasic จัดทำเครื่องมือสร้างแบบฟอร์มที่มีประสิทธิภาพและใช้งานง่ายเพื่อให้สามารถสร้างแอปพลิเคชั่น GUI ได้อย่างรวดเร็วในขณะที่ใช้ไวยากรณ์ QB เพื่อใช้ในการเขียนสคริปต์ UIs เหล่านี้ มันทำงานได้ดีที่สุดเมื่อใช้เพื่อสร้าง UIs สำหรับตรรกะระดับต่ำที่ให้ไว้เป็นส่วนประกอบที่สร้างไว้ล่วงหน้า (มักเขียนด้วยภาษาอื่น) เมื่อเวลาผ่านไปไวยากรณ์ก็มีขนาดใหญ่ขึ้นเรื่อย ๆ และไม่สอดคล้องกันเมื่อคุณสมบัติใหม่ถูกยึดติด การมุ่งเน้นที่การวาด UI ขึ้นมาก่อนจากนั้นจึงเติมบิตของสคริปต์ให้ทำงานได้ดีสำหรับแอปขนาดเล็กที่มีศูนย์กลางเป็นศูนย์กลาง แต่มีแนวโน้มที่จะสนับสนุนการเขียนโปรแกรมคัดลอกวางและรูปแบบของรหัสสปาเก็ตตี้ แยกความกังวล ในใจของหลาย ๆ คน "รหัส VB" กลายเป็นคำพ้องความหมายกับ "ลูกบอลขนาดใหญ่ของโคลน"; "VB โปรแกรมเมอร์" กับ "แฮ็คที่ไม่มีประสบการณ์"

VB.NET เป็นภาษาที่คล้ายกับ VB บนแพลตฟอร์ม. NET ซึ่งเป็นความพยายาม (ไม่ประสบความสำเร็จทั้งหมด) ในการล้างข้อมูลและทำให้ไวยากรณ์ VB ที่รกเกินไปมีความทันสมัย มันไม่เข้ากันได้อย่างสมบูรณ์แบบกับรหัส VB ​​ที่มีอยู่และไม่พยายามที่จะให้ความเข้ากันได้กับรูปแบบ VB (เนื้อหาที่สำคัญที่สุดของ VB) ใด ๆ นี้ซ้ายเจ้าของสินค้า VB จำนวนมากที่มีทางเลือกที่ไม่พึงประสงค์ได้อย่างมีประสิทธิภาพอีกครั้งเขียนงานของพวกเขาใน VB.NET (การจัดการกับความไม่ลงรอยที่ลึกซึ้งในกิจวัตรประจำวันที่ไม่ได้ตรวจสอบอย่างรอบคอบทุกครั้ง) หรือจริงอีกครั้งการเขียนงานของพวกเขาใน C # (จัดการกับที่ไม่คุ้นเคย ไวยากรณ์เพิ่มเติมจากไลบรารีรันไทม์ใหม่และตัวออกแบบฟอร์ม) ผู้ใช้ VB.NET ส่วนใหญ่เป็นผู้ใช้ VB ที่ติดอยู่กับไวยากรณ์เพียงอย่างเดียวส่วนใหญ่ใช้เป็น crutch ในขณะที่เรียนรู้ C # เป็นผลให้มีชื่อเสียงในฐานะที่เป็นสวรรค์สำหรับโปรแกรมเมอร์ที่ติดอยู่ในหนทางของพวกเขาไม่เต็มใจหรือไม่สามารถขยายหรือพัฒนาทักษะของพวกเขาได้

ณ จุดนี้เวลา VB.NET ยังคงพัฒนาอย่างต่อเนื่องช้าสัมภาระในขณะที่หยิบไวยากรณ์ใหม่และน่าสนใจ (LINQ, XML ตัวอักษร) ถึงกระนั้นก็ยังคงไม่มีข้อได้เปรียบเดิมของ BASIC: มันเป็นภาษาที่มีขนาดใหญ่และซับซ้อนพร้อมกับช่วงการเรียนรู้ที่สูงชันและโอกาสที่ จำกัด สำหรับการทดลองเชิงโต้ตอบ

  • สำหรับโปรแกรมเมอร์เก่าที่ติดอยู่กับมันมานานกว่า 30 ปีที่ผ่านมามันไม่ใช่ตัวเลือกที่แย่เพราะพวกเขาไม่ จำกัด ตัวเอง
  • สำหรับโปรแกรมเมอร์ใหม่ความคล้ายคลึงกันที่คลุมเครือของโปรแกรม VB เป็นภาษาอังกฤษนั้นแทบจะไม่คุ้มกับความแปลกประหลาดในการเข้ากันได้และความอัปยศทางสังคม
  • สำหรับโครงการใหม่VB.NET เป็นตัวเลือกที่แปลกเว้นแต่โครงการจะมีส่วนเกี่ยวข้องอย่างมากกับหนึ่งในไม่กี่งานที่ภาษาได้รับการปรับให้เหมาะสม: การรวมเข้ากับคอมโพเนนต์ COM ที่พิมพ์ได้ไม่ดี (Office ... ) (แม้ว่า C # 4.0 จะลดข้อดีนี้ลงอย่างมาก ) หรือการสร้าง XML แบบอินไลน์

4
ด้วย C # 4 ฉันไม่เห็นประโยชน์ใด ๆ ที่ VB.Net ยังคงมีเกี่ยวกับการรวม COM ฉันคิดว่าการสร้าง XML แบบอินไลน์อาจเป็นคุณสมบัติที่มีประโยชน์ ฉันพยายามที่จะไม่ใช้ XML (และประสบความสำเร็จในช่วง 5 ปีที่ผ่านมา!) แต่ถ้าฉันมีโครงการ. net ที่ต้องการสร้าง XML จำนวนมากฉันอาจจะสร้างโครงการ VB สำหรับการสร้าง XML เพียงอย่างเดียว
กำหนดค่า

3
ฉันสนุกกับการอ่านคำตอบของคุณ แต่ดูเหมือนจะหยุดทันที คุณให้ประวัติพื้นฐานที่น่าสนใจและฉันคิดว่าถูกต้อง ฉันคาดหวังว่าจะพบว่าทำไมคุณถึงไม่ชอบ VB.NET และ / หรือทำไมคุณถึงชอบ C # "สำหรับโครงการใหม่ VB.NET เป็นตัวเลือกที่แปลก" เพราะอะไร
ทิมเมอร์ฟี

@ เวลา: ฉันไม่ชอบ VB [.NET] เพราะรหัสส่วนใหญ่ที่ฉันพบคือรหัสสปาเก็ตตี้ที่ไม่ได้พิมพ์เขียนโดยโปรแกรมเมอร์ที่หยิบมันขึ้นมาเมื่อหลายปีก่อน (หรือถูกสอนโดยผู้เขียนโค้ดดังกล่าว) นั่นไม่ใช่เหตุผลที่ดีสำหรับคนอื่นที่ไม่ชอบก็ตาม เหตุผลที่ดีกว่าก็คือภาษานั้นให้สัมปทานมากเกินกว่าที่จะรองรับความเข้ากันได้ของการย้อนกลับ ... ดังนั้นถ้าคุณไม่ต้องการเขียนโค้ดสปาเก็ตตี้ที่ยังไม่ได้พิมพ์ใหม่ ...
Shog9

20

ฉันคุ้นเคยกับทั้งสองอย่าง แต่ทำงานเขียนโปรแกรมเริ่มต้นของฉันเป็นจำนวนมากใน VB4, VB5 และ VB6 ตอนนี้ทั้งสองภาษาใน. NET ได้ผ่านการทำซ้ำสองสามครั้งและมาบรรจบกันในขีดความสามารถของพวกเขาฉันคิดว่าการถกเถียงกันอย่างเอาจริงเอาจัง

โดยส่วนตัวแล้วฉันชอบทั้งคู่ด้วยเหตุผลที่ต่างกัน

VB.NET
ผู้คนจำนวนมากพูดถึงว่าไวยากรณ์ C # นั้นใช้งานง่ายขึ้นได้อย่างไร แต่นั่นเป็นเรื่องส่วนตัวและขึ้นอยู่กับสิ่งที่คุณเริ่มรู้ ฉันจะยืนยันว่าถ้าคุณมีวัตถุประสงค์ VB.NET ไวยากรณ์อย่างสมบูรณ์อาจจะง่ายขึ้นถ้าคุณไม่สมมติความรู้เดิมในภาษาอื่น ตัวอย่างเช่นให้โปรแกรมเดียวกันใน C # และ VB.NET ซึ่งคุณคิดว่าจะสามารถถอดรหัสได้กับผู้ที่ไม่มีความรู้เกี่ยวกับการเขียนโปรแกรมมากขึ้น ดูเหมือนจะชัดเจนกับฉัน

อีกสิ่งหนึ่งที่ดีเกี่ยวกับไวยากรณ์นี้คือมันมีความชัดเจนมากขึ้นเกี่ยวกับโครงสร้างการปิด (END IF, END WHILE, NEXT X) เมื่อเทียบกับแบบจำลองการถ่ายคร่อม มันทำให้โค้ดอ่านได้ง่ายขึ้นและบ่อยครั้งที่ทำให้คอมไพเลอร์มีความแม่นยำมากขึ้นในสิ่งที่หมายเลขบรรทัดตรงทำให้เกิดข้อผิดพลาดในการรวบรวม หากคุณเคยไปในวงเล็บ / ล่ากึ่งโคลอนที่หายไปเนื่องจากข้อผิดพลาดคอมไพเลอร์ 50 บรรทัดจากปัญหาที่คุณรู้ว่าฉันหมายถึงอะไร

นอกจากนี้ในคอลัมน์ชนะ VB.NET ในความคิดของฉันคือการขาด == / = เป็นการเปรียบเทียบ / ผู้ประกอบการที่ได้รับมอบหมาย ประโยชน์ที่หาได้ยากจากการมีผู้ปฏิบัติงานที่แตกต่างกันสำหรับแต่ละคนจะไม่ชดเชยสิ่งที่หาได้ยาก (บางครั้ง) ทั้งหมดที่จะช่วยสร้าง

ในที่สุดฉันเกลียดการใช้ตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ในภาษา หนึ่งในข้อร้องเรียนเกี่ยวกับ VB ก็คือมันมีสัมภาระมาก แต่ C # ดำเนินการต่ออัลบาทรอสของความไวกรณี C ฉันไม่เคยอยู่ในสถานการณ์ที่ฉันต้องการตัวระบุสองตัวที่อยู่ในขอบเขตเดียวกันจะแตกต่างกันไปตาม แต่กรณี มันทำให้การทำงานยุ่งและทำให้ฉันช้าลง VB.NET ได้รับคะแนนมากกว่า C # ในเรื่องนี้กับฉัน


โปรแกรมเมอร์C #ชอบที่จะกระชับซึ่งเป็นเหตุผลที่ฉันคิดว่าพวกเขามักชอบไวยากรณ์นี้ มันมีเสน่ห์ที่น่าดึงดูด อย่างไรก็ตามจากมุมมองที่เป็นประโยชน์อย่างสมบูรณ์ฉันชอบมันเพราะมันคล้ายกับภาษาอย่าง Java, JavaScript, และ C ++

เนื่องจากฉันทำการพัฒนาเว็บไซต์จำนวนมากที่ต้องการทั้งการเขียนโปรแกรมฝั่งเซิร์ฟเวอร์และไคลเอนต์ฉันคิดว่ามันง่ายกว่าที่จะสลับไปมาระหว่าง C # และ JavaScript ทางจิตใจเนื่องจากฉันต้องทำบ่อย ๆ

นอกจากนี้ฉันชอบความจริงที่ว่าส่วนใหญ่ถ้าฉันต้องเปลี่ยนไปใช้การเขียนโปรแกรม Java หรือ C ++ ฉันจะเริ่มต้นเล็กน้อยถ้าฉันใช้ C # เป็นส่วนใหญ่


3
+1 สำหรับความคิดเห็นการพัฒนาเว็บ ฉันใช้ทั้ง VB.NET และ C # ขึ้นอยู่กับโครงการและพบว่าการกลับไปกลับมาระหว่าง C # และ Javascript ได้ง่ายกว่า VB.NET และ JS
Paperjam

2
'ฉันไม่เคยอยู่ในสถานการณ์ที่ฉันต้องการตัวระบุสองตัวในขอบเขตเดียวกันเพื่อให้แตกต่างกันไปตามกรณีเท่านั้น' เป็นอัตนัยบริสุทธิ์ นี่คือหนึ่งในเหตุผลที่ฉันชอบ C # เมื่อนำมาใช้อย่างถูกต้องและเป็นผลเนื่องก็อาจทำให้รู้สึกทั้งหมดไปยังโลกที่มีตัวอย่างเช่นพารามิเตอร์ในตัวสร้างที่มีชื่อnameและทรัพย์สินของประชาชนที่มีชื่อแล้วกำหนดมันผ่านName Name = name;ตราบใดที่คุณรักษามาตรฐานการเข้ารหัสไว้ฉันก็ยอมรับว่ามันอาจทำให้เกิดความสับสนได้
Aidiakapi

1
ต้องการมาตรฐานการเข้ารหัสเพื่อหลีกเลี่ยงข้อบกพร่องร้ายกาจเช่นนั้นสำหรับฉันมันเป็นเชิงลบ การปรากฏตัวของวิธีแก้ปัญหาไม่ได้แก้ตัว
JohnFx

มันยากที่จะเขียนโค้ดเลอะเทอะในภาษาการเขียนโปรแกรมใด ๆ case insensitivity เพียงกระตุ้นให้โค้ดเลอะเทอะ การพิจารณาตัวพิมพ์เล็กและตัวพิมพ์ใหญ่จะไม่ทำให้คุณช้าลงการโต้แย้งแบบนี้เป็นอย่างไร มันทำให้คุณช้าลงเมื่อคุณทำตัวพิมพ์ผิดจำนวนมากแล้วมันก็เป็นสิ่งที่ดีที่คุณกำลังทำอยู่
Falcon

มันเป็นรหัสเลอะเทอะเท่านั้นเพราะคอมไพเลอร์ไม่สามารถตีความได้ หากคอมไพเลอร์ทั้งหมดไม่คำนึงถึงขนาดตัวพิมพ์มันไม่สำคัญว่าจะเลีย งานของเราคือไม่ต้องเขียนรหัสสำหรับพิมพ์ในนิตยสารมันคือการเขียนรหัสที่ทำงาน กรณี "เลอะเทอะ" ไม่ยับยั้งหนึ่งบิต
JohnFx

19

ฉันชอบไวยากรณ์ของภาษา C-style มากกว่าไวยากรณ์ "verbose" ของภาษาสไตล์ BASIC

การแนะนำการเขียนโปรแกรมของฉันอยู่กับ Turbo Pascal (บิตของการเขียนโปรแกรมพื้นฐานที่ฉันทำใน Commodore 64 เป็นเด็กไม่นับจริง ๆ ) หลังจากเรียนรู้ Java ฉันไม่เคยมองย้อนกลับไปและมีไวยากรณ์แบบ C ที่ต้องการ


4
"" verbose "ไวยากรณ์ของภาษาสไตล์ BASIC" - ใช่ฉันไม่เคยดู VB อีกครั้งเมื่อฉันเห็นif something then code endif
TheLQ

1
เฮ้ฉันแปลกใจมากที่มีคนลงคะแนนในเรื่องนี้ (ฉันคาดว่ามันจะเป็นคำถามของ Emacs กับ Vim)
George Marian

3
@TheLQ: และ AndAlso!
เจอร์รี่

ฉันคิดถึงวัน Turbo Pascal ของฉัน มันสนุกมาก
MetalMikester

1
ฉันค้นหาไวยากรณ์ของวงเล็บปีกกาอ่านง่ายขึ้น สัญลักษณ์ทั่วไปหนึ่งตัวสำหรับบล็อกแทนที่จะเป็นคำเฉพาะหลายบริบท
Michael K

12

พวกเขาทำหน้าที่เหมือนกันไม่มีสิ่งใดที่คุณสามารถทำได้ในสิ่งที่คุณไม่สามารถทำได้และในอนาคต Microsoft ได้ให้คำมั่นว่าทีมภาษาจะพัฒนาทั้งสองอย่างสม่ำเสมอดังนั้นสิ่งนี้จึงไม่น่าจะเทียบเท่าได้

ความแตกต่างตอนนี้เป็นเรื่องของวัฒนธรรมและส่วนตัว บทความนี้น่าสนใจในการอ่านความแตกต่างระหว่างวัฒนธรรมของโปรแกรมเมอร์โดยใช้ C # และ VB.net

[หมายเหตุ: แม้ว่าฉันจะเป็น C # dev ตัวเองข้อสรุปของบทความที่เชื่อมโยงไม่จำเป็นต้องสะท้อนความเห็นส่วนตัวของฉัน แต่มันเป็นเพียงวิธีทางเลือกที่น่าสนใจในการอภิปราย]


8
มันไม่เป็นความจริงทั้งหมด: ตัวอย่างเช่น VB.NET ไม่มีตัววนซ้ำซึ่งเป็นคุณสมบัติ C # ที่ยอดเยี่ยม
Thomas Levesque

2
C # ไม่มีตัวอักษร XML ของ VB.NET: blogs.msdn.com/b/wriju/archive/2008/02/07/ … (แม้ว่าฉันไม่ใช่แฟนของคุณสมบัติด้วยเหตุผลทางสถาปัตยกรรมมันก็เจ๋ง)
สตีเวน Striga

@Thomas @WeekendWarrior: ตัวอย่างที่ดี แต่เพียงเพื่อชี้ให้เห็นฉันพูดว่า "Functionally เดียวกัน" ซึ่งพวกเขาเป็น พวกเขาทั้งสองคอมไพล์กับ IL ดังนั้นจึงสามารถใช้ชุดการทำงานเดียวกันได้ ตัวอย่างเหล่านี้เป็นเพียงแป้นพิมพ์ลัดภาษาสำหรับการใช้งานที่สามารถทำได้ในรูปแบบอื่น
Simon P Stevens

8

ฉันมาที่. NET จาก C และ C ++ (ด้วย Java, Ada และ Pascal ที่ส่งออกไป) ดังนั้น C # จึงเป็นความก้าวหน้าตามธรรมชาติสำหรับฉัน

หากงานมาพร้อมกับ VB.NET ที่ต้องการฉันจะไม่ทำให้ผิดหวังอย่างแน่นอน


6

ฉันทำงานกับ VB.NET เป็นจำนวนมาก แต่ฉันเข้าใจ C # มากพอที่จะเข้าใจว่าเกิดอะไรขึ้นกับโค้ด การตั้งค่าปัจจุบันของฉันคือ VB.NET เพราะฉันคุ้นเคยกับมันมากที่สุด (ชัด) แต่ฉันไม่ได้มีการกำหนดลักษณะระหว่างไวยากรณ์ BASIC verbose และไวยากรณ์สไตล์ C ทั้งสองมีความสามารถในการอ่านและเข้าใจฉันมาก

พื้นหลังการเขียนโปรแกรมผู้ร่วมงานของฉันส่วนใหญ่คือ COBOL และ VB6 ดังนั้น VB.NET จึงเป็นตัวเลือกภาษา. NET ที่สะดวกสบายยิ่งขึ้นสำหรับเราในฐานะทีม ไม่มีเหตุผลที่ชัดเจนสำหรับเราที่ทำให้การเรียนรู้ C # เป็นสิ่งที่จำเป็นเนื่องจากมันใช้งานได้เหมือนกัน

ที่กล่าวว่าการเรียนรู้ C # นั้นแน่นอนที่สุดในรายการสิ่งที่ต้องทำ


2
ฉันกำลังมีปัญหาเดียวกัน :) และฉันชอบ VB.NET ในแบบเดียวกับที่ฉันชอบโค้กไม่ใช่เป๊ปซี่ แต่ถ้าเราจะเริ่มโครงการใหม่ C # เป็นตัวเลือกที่ดีที่สุดเพราะเราจะหาโปรแกรมเมอร์ที่รู้จักและชอบ C # มากขึ้น ฉันเข้าใจว่ากลยุทธ์ MS สำหรับ VB คือการนำชุมชน VB มาสู่. NET plataform
Pagotti

5

ฉันชอบ C #

ฉันเริ่มเป็นโปรแกรมเมอร์ VB.NET แต่เมื่อเวลาผ่านไปมันก็เห็นได้ชัดว่ามีคุณสมบัติใหม่จำนวนมากที่มาก่อน C # และต่อมาถึง VB.NET (เช่นคุณสมบัติอัตโนมัติ) และชุมชนโดยรอบ C # นั้นมีชีวิตชีวามากกว่า VB.NETs หนึ่งมาก

นอกจากนี้หากคุณตั้งใจที่จะเรียนรู้ภาษาจาวาหรือภาษาที่คล้ายกัน C # นั้นเป็นจุดเริ่มต้นที่ดีกว่า - ไวยากรณ์เกือบจะเหมือนกันในทุกภาษาที่ได้จากภาษา C แม้ว่านี่จะไม่ใช่จุดเปลี่ยนสำหรับฉันเนื่องจากไวยากรณ์เป็นสิ่งที่คุณสามารถเรียนรู้ได้อย่างรวดเร็ว แต่อย่างใด


3
"คุณสมบัติที่มาถึง C # ก่อน" มันไม่ได้เป็นอย่างนั้นเสมอไป ดูstackoverflow.com/questions/181188/… (เพื่อโยนประแจอื่นในผลงาน)
หมายเหตุถึงตัวเอง - คิดชื่อ

นี่คือที่ฉันอยู่ ฉันยังคงชอบ VB เพราะมันเป็นจุดเริ่มต้นของฉัน แต่ในความคิดของฉัน C # มีไวยากรณ์ที่ดีขึ้นในสิ่งต่าง ๆ เช่นการแสดงออกแลมบ์ดา ในอีกทางหนึ่ง VB มีตัวอักษร XML ซึ่ง C # สามารถฝันถึงได้ ฉันคิดว่ามันคุ้มค่าที่จะแยกโครงการ VB แยกต่างหากสำหรับงานหนัก XML
Kyralessa

1
ด้วยเครื่องมือแต่ละรุ่นอาร์กิวเมนต์ "คุณสมบัติ" จะเปลี่ยนไปเล็กน้อย สิ่งเดียวที่ฉันสามารถนึกได้ว่า C # มีอะไรใน vs2010 ซึ่ง vb.net ขาดคือตัววนซ้ำ ในทางตรงกันข้าม vb.net เสนอตัวจัดทำดัชนีตัวกรองข้อยกเว้นตัวอักษร XML ตัวดำเนินการ "Is" ที่ดูดีกว่า 1000x การObject.ReferenceEqualsจัดการเหตุการณ์ที่เกือบจะถูกต้องและประสบการณ์ IDE ที่ราบรื่นกว่า VB.net ทำให้เป็นไปได้แม้ว่าจะอึดอัดเล็กน้อยที่จะให้ initializers ภาคสนามใช้พารามิเตอร์คอนสตรัคเตอร์หรือสร้างIDisposableวัตถุอย่างปลอดภัยโดยไม่ต้องใช้ThreadStaticตัวแปร C # ไม่ได้
supercat

5

นอกเหนือจากคำตอบอื่น ๆ ที่โพสต์ที่นี่ฉันจะเลือก C # มากกว่า VB เพราะโปรแกรมเมอร์ C # ได้รับเงินมากขึ้น ประสบการณ์มากขึ้นด้วย C # = เพิ่มเติม $$ :)

ฉันรู้ว่าทั้งสองภาษาเกือบจะเหมือนกันและง่ายต่อการสลับไปมาระหว่างสองภาษา แต่ฉันคิดว่าเมื่อผู้บริหารมองที่เครื่องหมายปีกกาและกึ่งทวิภาคพวกเขายอมรับความจริงที่ว่าเรากำลังทำสิ่งที่พวกเขาไม่สามารถทำได้ด้วย VB พวกเขาอาจจะมองมันและไปที่ "ไม่ต้องทำอะไรยากถ้าฉันเข้าใจ"


1
ฉันคิดว่าเป็นจุดที่ถูกต้องที่มักถูกมองข้ามโดยขึ้นอยู่กับอุตสาหกรรม / ภูมิภาค
ประเภทไม่ประสงค์ออกนาม

4

C # เพราะฉันสามารถสลับระหว่างมันและ Java ด้วยความพยายามน้อยที่สุด

VB.NET เป็นไวยากรณ์ที่แตกต่างอย่างสิ้นเชิง C # ซึ่งคล้ายกับ Java และภาษาอื่น ๆ ทำให้ฉันมีตำแหน่งที่ดีขึ้นในการปรับตัวเข้ากับสิ่งใหม่ ๆ ได้อย่างรวดเร็ว เนื่องจากเอาต์พุตของ C # และ VB.NET นั้นใช้แทนกันได้แทบจะไม่มีเหตุผลเลยที่จะใช้ C # นอกจากนี้หากรหัส บริษัท ของคุณอยู่ใน C # คุณจะมีโอกาสมากขึ้นที่จะสามารถฝึกอบรมผู้พัฒนา Java ถึงวิธีการโค้ด C # มากกว่า VB นักพัฒนา Java มีข้อดีเพียงเล็กน้อยเท่านั้น แต่บอบบางยังมีข้อดี


3

วางความชอบส่วนตัวของฉันไว้ ในฐานะที่เป็นคนที่กำลังรับสมัคร (และพยายามที่จะรับสมัคร) เมื่อเร็ว ๆ นี้เมื่อเรามีการถกเถียงกันในสำนักงานนี้ฉันทามติทั่วไปก็คือเราควรจะมองไปที่ C # จาก VB

ทำไม? เนื่องจาก C # แพร่หลายมากขึ้นในตลาด (รอบตัวเราอยู่แล้ว) ทำให้เราสามารถรับสมัครได้ง่ายขึ้นและรับสมัครได้ง่ายขึ้น

ดูเหมือนว่ามันจะเต็มไปหมดแล้ว ผู้คนเรียนรู้ C # เพราะนายหน้าต้องการเพราะมีผู้สมัครมากกว่า


3

การเป็นนักพัฒนารุ่นเก่า (อายุ 59 "ค่อนข้างเก่า") ฉันเรียนรู้พื้นฐานครั้งแรกใน Commodore VIC-20 สอนตัวเอง Turbo Pascal (v1!) ไปเรียนภาษาโคบอลที่วิทยาลัยและใช้เวลา 14 ปีในการพัฒนา IBM mainframes ที่มีนักดำน้ำสั้น ๆ เขียนแอพขนาดกลางใน Revelation BASIC (ตัวแปรของ PICK BASIC) และยูทิลิตี้บางอย่างใน Modula-2 ก่อนที่จะก้าวสู่ VB5 และ VB6 แล้ว. NET

เพราะของพื้นหลังพื้นฐานของฉันฉันคิดว่าฉันควรเริ่มต้นด้วย VB.NET เพียงเพื่อจะพบว่าผมเก็บไว้พยายามที่จะทำสิ่งที่ทาง "เก่า" และมันก็ขับรถฉันถั่ว (โอเคมากขึ้นถั่ว) เมื่อฉันได้ทำงานใน C ฉันคิดว่าฉันจะให้ C # วนเพื่อดูว่ามันไป และ OMG นั้นก็เหมือนกับการโผล่ออกมาจากอุโมงค์มืดสู่แสงสว่างในเวลากลางวัน! คาดไม่ถึงโดยสิ้นเชิง และฉันเคยทำให้เกิดเสียงดูถูกเกี่ยวกับ C เป็นภาษา "เขียนอย่างเดียว" - "ยากมากที่จะเข้าใจว่าโปรแกรมเมอร์ C ไม่สามารถรู้ได้ว่าโค้ดของตัวเองทำอะไรได้ 6 เดือนหลังจากที่เขาเขียน" การสังเกตโดย นักเขียนกึ่งมีชื่อเสียงที่ฉันคิดว่าฟังดูน่ารักในเวลานั้น

ดังนั้นโดยอาศัยอำนาจในการเป็นบิตที่ไม่คุ้นเคยกับ C, C # เป็นเรื่องง่ายสำหรับฉันที่จะเรียนรู้การเขียนโปรแกรม. NET ในกว่ากระบวนทัศน์พื้นฐานที่ควรจะคุ้นเคย ฉันยังคงชอบ VB6 แต่ได้รัก C # ภาษาโปรแกรมที่ดีที่สุดในโลก


1
คำตอบที่น่าสนใจฉันคิดว่าอย่างน้อยส่วนหนึ่งหักล้างความคิดที่ว่า "ฝูงชนที่มีอายุมากกว่า" มักจะติดกับ VB.NET ใน C #
ไม่ระบุตัวตนประเภท

3

ฉันพัฒนาใน Visual Basic .Net ตั้งแต่ปี 2001 และฉันรักมันและฉันเกลียดมัน !!!

ลำดับการนำเสนอของจุดเหล่านี้ขึ้นอยู่กับลำดับที่เขานึกถึง ...

ใน vb.net ด้วย visual studio จะมีการแบ่งบรรทัดระหว่างแต่ละวิธีคุณสมบัติ สำหรับหลาย ๆ คนมันไม่ได้เป็นเหตุผลที่ดีที่จะชอบ vb.net มากกว่า c # แต่ฉันไม่เข้าใจว่าทำไม c # ทีมที่ Microsoft ไม่ได้ใช้งาน มี Add-in ที่วาดบรรทัดนี้ใน c # แต่ thanx อีกครั้ง Microsoft เพื่อมีทีม ac # และทีม visual visual ที่ไม่ได้พูดคุยกัน

ใน vb.net เมื่อคุณสร้าง winform คุณมีคอมโบสองตัวในวิชวลสตูดิโอที่ด้านบนของโปรแกรมแก้ไขและคุณสามารถสร้างเหตุการณ์อัตโนมัติโดยอัตโนมัติเมื่อเลือกเหตุการณ์ในคอมโบขวา เมื่อคุณแนบหลายสิบเหตุการณ์ในแต่ละวันมันอาจเป็นเรื่องยุ่งยากมากที่ไม่มีคุณสมบัตินี้ ด้วย c # คุณมีปุ่มเล็ก ๆ ที่ด้านบนของกริดคุณสมบัติที่สามารถสร้างเหตุการณ์ แต่ไม่เร็วเหมือนใน vb.net เพิ่มเติมถ้าคุณแนบเหตุการณ์ของการควบคุมใน c # และลบการควบคุมในแบบฟอร์มผู้รับมอบสิทธิ์ที่สร้างขึ้นในรหัสที่สร้างขึ้นโดยอัตโนมัติเพื่อจัดการกับเหตุการณ์จะต้องถูกลบด้วยตนเอง ขอบคุณ Microsoft อีกครั้ง

ใน vb.net เมื่อคุณพยายามปรับเปลี่ยนวิธีการที่มีการสอบถาม linq โดยไม่ต้องแก้ไขการสอบถามตัวเองไม่มีปัญหา แต่ใน c # รหัสวิธีการทั้งหมดจะถูกล็อค หากคุณมีคำสั่ง linq หรือการแสดงออกแลมบ์ดาจำนวนมากคุณลักษณะการแก้ไขและดำเนินการต่อจะเป็นสิ่งเก่าที่ดีอย่างรวดเร็ว โอเคพูดเกินจริงเล็กน้อย ... แต่ :)

ใน vb.net เมื่อคุณสร้างชื่อเมธอดและแตะ Enter 'จุดสิ้นสุดย่อย' จะถูกสร้างขึ้นโดยอัตโนมัติ ใน c # ทำมันเอง ตกลงถ้าคุณติดตั้ง resharper หรือ devexpress ใหม่จะดีกว่า แต่ทำไมฟีเจอร์เล็ก ๆ น้อย ๆ เหล่านี้ไม่ได้ถูกนำมาใช้ใน c #

ใน vb.net เมื่อคุณมีข้อผิดพลาดในรหัสของคุณข้อผิดพลาดจะปรากฏขึ้นโดยอัตโนมัติและเมื่อคุณแก้ไขข้อผิดพลาดเหล่านี้จะถูกลบออกจากสแต็คในเวลาจริง ใน c # คุณต้องสร้างโครงการของคุณเพื่อรับรู้ว่าคุณได้แก้ไขเรียบร้อยแล้วหรือไม่ไม่ใช่ข้อผิดพลาดที่ระบุ ทำไม c # team ไม่มีตัวเลือกในการตรวจสอบข้อผิดพลาดแบบเรียลไทม์เช่นใน vb.net ด้วยโซลูชันขนาดใหญ่การตรวจสอบข้อผิดพลาดแบบเรียลไทม์ไม่สามารถเพิ่มประสิทธิภาพได้อย่างดีเยี่ยม แต่ฉันชอบที่จะเห็นข้อผิดพลาดหายไปในขณะที่ฉันแก้ไข

เช่นเดียวกับคนอื่น ๆ ที่ได้กล่าวถึงฉันคิดว่ามันเป็นเรื่องง่ายมากที่จะอ่านเงื่อนไข vb.net ถ้า .. สิ้นสุดถ้าเลือกตัวเลือก ... วางส่วนที่เลือก แต่ด้วยตัวยึดจิตรกรรม devexpress ลืมสิ่งที่ฉันพูด

ด้วย vb.net มีข้อบกพร่องมากมายใน Visual Studio เพียงพูดถึงหนึ่งใน Visual Studio 2010, Intellisens ไม่กรองการระบุอย่างถูกต้องหากคุณเปิดใช้งานโหมด "ทั่วไป" แทน "ทั้งหมด"

ด้วย vb.net คุณจะถูกมองว่าเป็นคนบ้า ๆ บอ ๆ เนื่องจากในปัจจุบันผู้เขียนโปรแกรมที่แย่กว่านั้นใช้ vb.net แทนที่จะเป็น c # เพราะ c # ยากต่อการเรียนรู้และส่งเสริมการเขียนโปรแกรมที่ดีขึ้น

เช่นเดียวกับคนอื่น ๆ กล่าวว่าโปรแกรมเมอร์ c # มีโอกาสที่ดีกว่าที่จะมีงานที่ดีและมีเงินมากขึ้น

ในหัวลูกค้า vb.net = คนที่เขียนโปรแกรมในห้องใต้ดินของเขาพร้อมกับปาเก็ตตี้ของรหัส c # = ว้าวคุณฉลาดมาก ความจริงก็คือไม่ใช่เพราะคุณเขียนโปรแกรมใน c # ว่าคุณสร้างโปรแกรมที่ดี แต่เป็นแบบสแตติกใช่

ด้วยจุดเหล่านี้ฉันเลือกที่จะแปลงรหัส vb ทั้งหมดของฉันใน c # ฉันเขียนโปรแกรมด้วยแนวปฏิบัติที่ดีที่สุดของ object oriented, รูปแบบการออกแบบ, clean code ที่มีมาตรฐานและไวยากรณ์ที่เข้มงวดและฉันสามารถเขียนโปรแกรมเช่นนั้นได้ 50 ปี แต่จากสายตาของชุมชนฉันไม่ใช่โปรแกรมเมอร์ที่ดี ฉันจะแปลงรหัสของฉันใน c # โดยไม่มีแนวปฏิบัติที่ดีอื่น ๆ และฉันจะเป็นบุคคลอื่น เป็นคนที่ยอดเยี่ยมที่คุณต้องเคารพ ..... :( เป็นเรื่องตลก ... !!! แต่มันคือความจริง


2

ต่อไปนี้เป็นวิธีการดู: ระหว่าง SO กับ CodePlex ภาษาใดที่ได้รับความนิยมมากขึ้น C # หรือ VB.Net

บางครั้งการติดตามฝูงสัตว์เป็นสิ่งที่ดีเพราะเป็นฝูงที่สามารถช่วยเหลือคุณได้เมื่อคุณต้องการ โดยค่าเริ่มต้น C # จะเร็วกว่า Vb.Net ฉันเชื่อว่าการใช้ตัวเลือกที่เข้มงวดอาจทำให้เท่ากัน ครั้งสุดท้ายที่ฉันเปรียบเทียบ IL ระหว่างสองสิ่งนี้ความปลอดภัยประเภท VB.Net สิ้นสุดลงแล้วบวกกับ IL เพิ่มขึ้นประมาณ 15% นี่แปลเป็นค่าใช้จ่ายพิเศษ และ ... ในภาษาที่ได้รับซึ่งทำสิ่งเดียวกันฉันจะได้เร็วขึ้น ความสะดวกของฉันไม่ควรแทนที่ประสบการณ์ของผู้ใช้โดยทั่วไป


2

ฉันอยากจะบอกว่าเหตุผลเดียวที่ BASIC ยังคงได้รับความนิยมก็คือมันเป็นผลิตภัณฑ์ตัวแรกของ Microsoft และพวกเขาได้ผลักมันลงไปในลำคอของเราในช่วง 35 ปีที่ผ่านมา มันน่าจะเสียชีวิตไปนานแล้ว

ด้วยที่กล่าวว่าฉันได้ทำงานในสองโครงการ. NET ขนาดใหญ่และทั้งสองทำกับ VB.Net - แม้ว่าจะมีบิตของ C # เพราะทั้งการแปลเป็นเลวหรือการก่อสร้างไม่ได้อยู่ใน VB.Net ข้อได้เปรียบเดียวที่ฉันเห็นด้วย VB.Net คือตัวแก้ไข Visual Studio นั้นเป็นมิตรกับมันมาก (จากประสบการณ์ของฉัน) มากกว่าด้วย C # - Intellisense ดูดีขึ้นและทำการจัดรูปแบบอัตโนมัติ (โปรดทราบว่าเนื่องจากฉันไม่ได้ใช้ C # เท่าที่ฉันอาจจะหายไปบางสิ่งบางอย่างในการกำหนดค่าของ IDE ... )

ข้อเสียเปรียบที่สำคัญใน VB.Net ก็คือพวกเขานำวิธี crap ยุค VB6 จำนวนมากกลับมาใน. NET 1.x เพื่อความสะดวกในการแปลงรหัส VB6 สิ่งนั้นยังอยู่ในนั้นและตัวเข้ารหัส VB6 กำลังเข้ารหัสรหัสใหม่โดยใช้ ... "ส่วนขยาย" แทนที่จะใช้คลาส / วิธีการ /. NET ที่เป็นกลางมากขึ้น ฉันไม่รู้กี่ครั้งที่ฉันถามเจ้านายของฉันว่าทำไมเขาถึงยังใช้อึนั้นอยู่ "แต่ ... มันได้ผล ... " ถูกต้อง เฮ้ฉันชอบผู้หญิงเลว

ในขณะที่กำลังมองหาความช่วยเหลือบนเว็บฉันพบว่าโซลูชันส่วนใหญ่อยู่ใน C # - ตรวจสอบฟอรัม MSDN บล็อกต่าง ๆ ฯลฯ ... หนังสือมีแนวโน้มที่จะมุ่งเน้นที่ C # และหากมีรุ่น VB มัน มักจะมาในอีกไม่กี่เดือนข้างหน้า (เช่น Pro LINQ .... จาก Apress)

มีหลายภาษาที่ใช้ตระกูล C ซึ่งทำให้การสลับระหว่าง C, C ++, C #, Java, PHP และอื่น ๆ ง่ายขึ้นมาก PHP ค่อนข้างยืดเยื้อ แต่มันมีโครงสร้าง C-like มากมาย VB? มันเป็นเรื่องเล็กน้อยของตัวเองและนั่นก็เป็นเช่นนั้น

ผู้นำโครงการในองค์กรของฉันเพิ่งบอกฉันว่าโครงการใหม่ ๆ กำลังพัฒนาโดยใช้ C # แทน VB - FINALLY เมื่อ. NET เปิดตัวในองค์กรของเราพวกเขาไปกับ VB.Net อย่างเป็นทางการมากขึ้นเพราะการเข้ารหัส VB6 ทั้งหมดที่เกิดขึ้นแล้ว พลังที่ฉันยอมรับในภายหลังว่านั่นไม่ใช่ท่าทีที่ดีที่สุดของพวกเขา

ดังที่คนอื่น ๆ ข้างต้นชี้ให้เห็นฉันจะไม่ปฏิเสธโครงการ VB.Net แต่ฉันก็ยังหวังว่ามันจะถูกกำจัดให้หมดไปจากการพัฒนาที่ใหม่กว่าในที่ทำงานของฉัน


1

ทีนี้วันนี้มันไม่มีเหตุผลจริงๆที่จะใช้ VB.net ในการเริ่มต้นมันเป็นเพียงวิธีการที่จะให้ไวยากรณ์โปรแกรมเมอร์ที่คุ้นเคยกับ VB แต่เป็นหลัก remapping เหมือนพื้นฐานของ C # ดังนั้นข้อได้เปรียบที่แท้จริงเพียงอย่างเดียวของมันคือไวยากรณ์ที่คุ้นเคยมากขึ้นและไวยากรณ์พื้นฐานของมันก็เป็นข้อ จำกัด ที่แท้จริงเช่นกัน

ในช่วงเวลาที่ทั้งสองภาษามีการพัฒนาควบคู่ไปกับความแตกต่างที่สำคัญเพียงอย่างเดียวคือmy เนมสเปซเทียม

ฉันจะแนะนำโปรแกรมเมอร์. net ทุกคนที่ไม่คุ้นเคยกับ C # เพื่อเรียนรู้เนื่องจากชุมชนมีขนาดค่อนข้างใหญ่และไวยากรณ์ C-like เป็นเรื่องปกติสำหรับภาษาที่ใช้มากที่สุด


การพิจารณาที่สำคัญอีกประการหนึ่งสำหรับสาเหตุที่ VB.NET มีอยู่คือทำเพื่อให้ง่ายต่อการอัพเกรดเส้นทางสำหรับโครงการที่อยู่ใน ASP "Classic" / VBScript หรือ VB6 มันทำงานน้อยกว่ามากในการพอร์ตแอปพลิเคชันที่มีขนาดใหญ่
JohnFx

1

VB ภาษานั้นง่ายต่อการอ่านสำหรับมือใหม่พวกเขามักจะเขียนแอปพลิเคชั่นที่หนึ่งที่สองและที่สามในนั้น

โปรแกรมเมอร์จาก C ++, Java และอื่น ๆ ได้ย้ายไปยัง C # ในขณะที่นักพัฒนา VB.NET มาจาก VBA, VB และพื้นหลังพื้นฐาน, โปรแกรมเมอร์ที่ไม่ใช่แบบดั้งเดิมที่จำเป็น


1

ดูเหมือนจะมีตัวอย่างโค้ด C # ทางออนไลน์มากกว่าตัวอย่าง VB.NET ไม่เหมือนทุกอย่างที่ยากที่จะแปลงหนึ่งเป็นอีก แต่ทำไมต้องรำคาญถ้าคุณไม่ต้อง


1

ฉันชอบ VB .Net มากกว่า C #

  • (97) ...
  • (98) เพราะฉันเรียนรู้ VB ก่อนที่ฉันจะรู้เกี่ยวกับ C #
  • (99) เพราะฉันซื้อ 10,000 หน้าหนังสือบน VB .Net แล้ว
  • (100) เพราะ VB ไม่มีเครื่องหมายปีกกา
  • (101) เพราะทุกคนเกลียด VB

0

ค#. เป็นเพราะฉันทำ C และ Java ดังนั้นฉันจึงรู้สึกว่า C # อ่านได้ง่ายกว่าสำหรับฉัน C # สำหรับฉันเป็น VB.NET สำหรับอดีตโปรแกรมเมอร์ VB

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.