ฉันควรเลือก C # บน Java และ C ++ ด้วยเหตุผลใดบ้าง [ปิด]


46

C # ดูเหมือนว่าจะเป็นที่นิยมในวันนี้ ฉันได้ยินมาว่าวากยสัมพันธ์มันเกือบจะเหมือนกับจาวา Java และ C ++ มีอยู่เป็นเวลานาน ฉันควรเลือก C # บน Java และ C ++ ด้วยเหตุผลใดบ้าง


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

ให้ฉันเพิ่มรายการ edgier .NET มี DOM ที่กำหนดไว้อย่างดี ( เช่น CodeDOM ) สำหรับภาษาและการสร้างสิ่งต่าง ๆ แบบไดนามิกที่รันไทม์นั้นง่ายขึ้นและมีประสิทธิภาพมากขึ้น สิ่งนี้สามารถเป็นประโยชน์ในฐานะความสามารถในโครงสร้างพื้นฐาน นอกจากนี้ระบบการพิมพ์ยังมีการจับคู่แบบ 1 ต่อ 1 กับ W3 แบบดั้งเดิมทั้งหมด ที่แกนกลางของมัน W3 และการทำงานร่วมกันอื่น ๆ ถูกอบเป็นภาษาตั้งแต่เริ่มต้น สำหรับภาษาอื่นความกังวลเหล่านี้เพิ่งถูกปิดและนำเสนอความท้าทายมากมายสำหรับพวกเขา นอกจากนี้หากคุณจะได้สัมผัสกับภาษาและ / หรือโปรโตคอลจำนวนมากดังนั้น. NET ก็มีความแข็งแกร่งเช่นกัน
JoeGeeky

5
สวัสดี JoeGeeky เพิ่มความคิดเห็นของคุณเป็นคำตอบสำหรับคำถาม
Anthony Mastrean

1
คำถามที่แท้จริงคือ: ฉันควรเลือกด้วยเหตุผลอะไร Nemerle, F * และ F # มากกว่า C # (กล่าวคือทั้งสามภาษาจาก MS และทั้งสามจะดีกว่า)
mrsteve

ฉันไม่คิดว่าคำแถลงประเภท "ภาษา / แพลตฟอร์ม X ใด ๆ เมื่อเทียบกับภาษา / แพลตฟอร์ม Y นั้นดีกว่าเสมอ" ใช้ได้และฉันคิดว่าสำหรับ X และ Y ใด ๆ ก็สามารถทำให้เป็นโมฆะได้อย่างง่ายดายสำหรับบริบทบางอย่าง ประเด็นของคำถามนี้คืออะไร?
Shivan Dragon

คำตอบ:


76

คำถามควรเป็น "ภาษาใดที่เหมาะกับการพัฒนาแอพพลิเคชั่นทั่วไปที่ทันสมัยกว่า"

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

ดังนั้นปิดส่วนหัวของฉัน (ข้อโต้แย้งบางอย่างใช้กับทั้งสองภาษา) ...

C # ดีกว่า C ++ ในเรื่องนั้น:

  • แต่ก็มีชาวพื้นเมือง ชุดเก็บรวบรวมขยะ
  • ช่วยให้คุณสามารถรักษาลายเซ็นของคลาสวิธีการเป็นฟังก์ชั่นฟรี (เช่นการละเว้นthisอาร์กิวเมนต์ตัวพิมพ์แบบคงที่) และดังนั้นจึงสร้างความสัมพันธ์แบบไดนามิกและมีความยืดหยุ่นมากขึ้นระหว่างชั้นเรียน แก้ไขหากคุณไม่ทราบความหมายของสิ่งนี้จากนั้นลองกำหนดวิธีสมาชิกให้เป็นโมฆะและยอมรับโมฆะเป็นvoid (*ptr)()ตัวแปร ผู้ได้รับมอบหมาย C # พกthisตัวชี้ไปด้วย แต่ผู้ใช้ไม่จำเป็นต้องสนใจสิ่งนั้นเสมอไป พวกเขาสามารถกำหนดvoid()วิธีการเรียนให้void()ผู้แทนคนอื่น ๆ
  • มันมีห้องสมุดมาตรฐานขนาดใหญ่พร้อมสิ่งที่มีประโยชน์มากมายที่ใช้งานได้ดีและใช้งานง่าย
  • จะช่วยให้การจัดการรหัสบล็อกทั้งในและพื้นเมือง
  • การกำหนดเวอร์ชันของแอสเซมบลีแก้ไขปัญหานรกของ DLL ได้อย่างง่ายดาย
  • คุณสามารถตั้งค่าคลาสเมธอดและฟิลด์ให้เป็นแอสเซมบลีภายใน (ซึ่งหมายความว่าพวกเขาสามารถเข้าถึงได้จากทุกที่ภายใน DLL ที่พวกเขาประกาศ แต่ไม่ใช่จากแอสเซมบลีอื่น)

C # ดีกว่า Java ใน:

  • แทนที่จะเป็นเสียงรบกวน (EJB, การใช้คลาสส่วนตัวแบบสแตติก, ฯลฯ ) คุณจะได้รับโครงสร้างพื้นฐานที่สวยงามและเป็นมิตรเช่นคุณสมบัติและกิจกรรม
  • คุณมียาชื่อสามัญจริง ๆ (ไม่ใช่เรื่องตลกที่ไม่ดีนักที่ Java เรียกว่าชื่อสามัญ) และคุณสามารถทำการไตร่ตรองได้
  • สนับสนุนสำนวนการจัดการทรัพยากรดั้งเดิม ( usingคำสั่ง) Java 7 จะให้การสนับสนุนเช่นนี้ แต่ C # มีมาเป็นเวลานาน
  • ไม่ได้ตรวจสอบข้อยกเว้น :) (เป็นที่ถกเถียงกันว่าสิ่งนี้ดีหรือไม่ดี)
  • มันรวมเข้ากับ Windows อย่างลึกซึ้งหากนั่นคือสิ่งที่คุณต้องการ
  • มันมี Lambdas และ LINQ ดังนั้นจึงรองรับการเขียนโปรแกรมการทำงานเล็กน้อย
  • จะช่วยให้ทั้งความแปรปรวนร่วมทั่วไปและ contravariance อย่างชัดเจน
  • มันมีตัวแปรแบบไดนามิกถ้าคุณต้องการ
  • รองรับการแจงนับที่ดีกว่าพร้อมyieldข้อความ
  • ช่วยให้คุณสามารถกำหนดค่าใหม่ (หรือประเภทที่ไม่ใช่การอ้างอิง)

แก้ไข - ที่อยู่ความคิดเห็น

  • ฉันไม่ได้บอกว่า C ++ ไม่รองรับ Native RAII ฉันบอกว่า Java ไม่มี (คุณต้องลอง / ในที่สุด) C ++ มีพอยน์เตอร์อัตโนมัติที่เหมาะสำหรับ RAII และ (ถ้าคุณรู้ว่าคุณกำลังทำอะไรอยู่) ก็สามารถทดแทนคอลเลกชันขยะได้เช่นกัน
  • ฉันไม่ได้พูดอะไรเกี่ยวกับการเลียนแบบฟังก์ชั่นฟรี แต่ตัวอย่างเช่นถ้าคุณต้องการเข้าถึงเขตข้อมูลโดยthisตัวชี้และผูกวิธีที่ทำกับตัวชี้ฟังก์ชันทั่วไป (เช่นไม่ได้อยู่ในคลาสเดียวกัน) นั่นหมายความว่าไม่มีวิธีดั้งเดิมที่จะทำ ใน C # คุณจะได้รับฟรี คุณไม่จำเป็นต้องรู้ว่ามันทำงานอย่างไร
  • โดย "การปฏิบัติต่อสมาชิกวิธีการเป็นฟังก์ชั่นฟรี" ฉันหมายความว่าคุณไม่สามารถเช่นผูกวิธีการสมาชิกเพื่อลายเซ็นฟังก์ชั่นฟรีเพราะวิธีสมาชิก "ลับ" ต้องการthisตัวชี้
  • usingคำสั่งอย่างเห็นได้ชัดพร้อมกับห่อ IDisposable เป็นตัวอย่างที่ดีของ RAII ดูลิงค์นี้ พิจารณาว่าคุณไม่ต้องการ RAII มากเท่า C # เหมือนกับ C ++ เพราะคุณมี GC สำหรับเวลาที่คุณต้องการคุณสามารถใช้usingคำสั่งได้อย่างชัดเจน เตือนความทรงจำอีกเล็กน้อย: การเพิ่มหน่วยความจำเป็นกระบวนการราคาแพง GC มีข้อได้เปรียบด้านประสิทธิภาพในหลายกรณี (โดยเฉพาะเมื่อคุณมีหน่วยความจำมาก) หน่วยความจำจะไม่รั่วไหลออกมาและคุณจะไม่ต้องเสียเวลากับการจัดสรรคืนมากนัก ยิ่งกว่านั้นการจัดสรรก็เร็วขึ้นเช่นกันเนื่องจากคุณไม่ได้จัดสรรหน่วยความจำทุกครั้งเพียงครั้งเดียว การเรียกnewเป็นเพียงการเพิ่มตัวสุดท้ายวัตถุตัวชี้
  • "C # แย่ลงเพราะมันมีการเก็บขยะ" นี่เป็นเรื่องส่วนตัว แต่ตามที่ฉันได้กล่าวไว้ด้านบนสำหรับการพัฒนาแอพพลิเคชั่นทั่วไปที่ทันสมัยที่สุดการเก็บขยะเป็นประโยชน์อย่างหนึ่ง
    ใน C ++ ตัวเลือกของคุณจะจัดการหน่วยความจำด้วยตนเองโดยใช้newและdeleteซึ่งมักจะนำไปสู่ข้อผิดพลาดที่นี่และที่นั่นหรือ (ด้วย C ++ 11) คุณสามารถใช้ตัวชี้อัตโนมัติได้ แต่อย่าลืมว่าพวกเขาเพิ่มจำนวนมาก ของเสียงเพื่อรหัส ดังนั้น GC ยังคงมีขอบตรงนั้น
  • "Generics นั้นอ่อนแอกว่าเทมเพลต" - ฉันไม่รู้ว่าคุณได้รับจากที่ใด เทมเพลตอาจมีข้อดีของพวกเขา แต่ในข้อ จำกัด ประสบการณ์ของฉันการตรวจสอบชนิดพารามิเตอร์ทั่วไปความแตกต่างและความแปรปรวนร่วมเป็นเครื่องมือที่แข็งแกร่งและสง่างามมาก จุดแข็งของเทมเพลตคือพวกมันให้คุณเล่นกับภาษาได้เล็กน้อยซึ่งอาจเท่ห์ แต่ก็ทำให้ปวดหัวมากเมื่อคุณต้องการที่จะแก้ไขข้อบกพร่อง เทมเพลตมีคุณสมบัติที่ดี แต่ฉันพบว่าข้อมูลทั่วไปมีประโยชน์และสะอาด

5
และถ้าคุณยังต้องการ Garbage Collector สำหรับ C ++ คุณสามารถดาวน์โหลดได้
fredoverflow


6
คุณสมบัติที่สำคัญอีกประการหนึ่งใน C # เมื่อเทียบกับ Java สำหรับเหตุผลด้านประสิทธิภาพคือ "struct" ซึ่งเป็นประเภทของวัตถุที่สามารถเก็บไว้ในสแต็ก (หรือในการลงทะเบียน CPU ในกรณีพิเศษ) หรือฝังอยู่ภายในวัตถุฮีปอื่น ๆ พวกเขามักจะใช้สำหรับวัตถุขนาดเล็กที่มีเขต 1-4 เช่นคู่พิกัด X, Y
Qwertie

2
@LokiAstari Mind อธิบายหรือไม่ ตราบใดที่คุณจำไม่ได้ถอนการลงทะเบียนตัวจัดการเหตุการณ์และใช้รูปแบบการกำจัดในคลาสที่มีโปรแกรมเสริมดั้งเดิมคุณจะไม่เป็นไร นั่นเป็นสิ่งที่รู้และจดจำได้น้อยกว่าการจัดการหน่วยความจำใน C ++
Yam Marcovic

2
-1 เนื่องจากฉันไม่มีส่วน "C ++ ดีกว่า C # ในที่ ... " และ "Java ดีกว่า C # ... " ฉันไม่คิดว่า C # นั้นเหนือกว่าในทุกด้านดังนั้นคำตอบที่ไม่มีสองส่วนนี้อาจขาดข้อมูลสำคัญบางอย่าง
Giorgio

30

สิ่งแวดล้อม

. NET Framework และไคลเอนต์ Windows

Windows เป็นระบบปฏิบัติการที่มีอำนาจเหนือคอมพิวเตอร์ไคลเอนต์ ที่ดีที่สุดของกรอบ GUI สำหรับการใช้งาน Windows เป็น Winforms และ WPF ร่วมกับ.NET Framework การเขียนโปรแกรมภาษาที่ดีที่สุดในการทำงานกับ.NET Frameworkและ API มันคือC # Java ไม่ใช่ทางเลือกสำหรับสิ่งนี้ และ C ++ เป็นภาษาที่เก่ากว่าโดยไม่มีการจัดการหน่วยความจำอัตโนมัติ C # คล้ายกับ C ++ แต่มีการจัดการหน่วยความจำอัตโนมัติและคุณไม่ต้องทำงานกับพอยน์เตอร์ซึ่งทำให้คุณมีประสิทธิผลมากขึ้น C ++ ยังคงเป็นตัวเลือกที่ดีที่สุดสำหรับบางกรณี แต่ไม่ใช่สำหรับแอปพลิเคชันฐานข้อมูลที่มีรูปแบบเข้มข้นซึ่งเป็นเรื่องปกติในธุรกิจ

IIS และ Windows Server

หากคุณคุ้นเคยกับการทำงานในสภาพแวดล้อม Windows และด้วย C # คุณจะต้องลงทุนน้อยที่สุดเพื่อเรียนรู้ IIS สำหรับการเขียนโปรแกรมเซิร์ฟเวอร์และ Windows Server สำหรับการดูแลขั้นพื้นฐาน

Active Directory และ Windows Server

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

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

ใช่C #เป็นภาษาที่ดีขึ้นด้วยคุณสมบัติที่ทันสมัยมากขึ้นกว่า C ++ และ Java แต่ที่ไม่ได้สิ่งที่สำคัญที่สุดสำหรับการเลือกC #

สรุป

สภาพแวดล้อมสำหรับซอฟต์แวร์ของคุณเป็นสิ่งสำคัญที่สุดสำหรับการเลือกC # ถ้าคุณทำงานในสภาพแวดล้อมที่มีลูกค้าของ Windows, Windows เซิร์ฟเวอร์ Active Directory, IISและอาจSQL Serverแล้วC #เป็นภาษาไกลที่ดีที่สุดกับ.NET Framework

หากคุณทำงานในสภาพแวดล้อม Unix ด้วยเช่นบริการเว็บ Java จะเป็นทางเลือกของฉัน และถ้าคุณทำงานกับระบบฝังตัวหรือต้องรวมเข้ากับอุปกรณ์ฮาร์ดแวร์C ++จะเป็นตัวเลือกที่ดี


3
อย่างแน่นอน - นี่คือเหตุผลที่ฉันใช้ C # ไม่ได้ด้วยเหตุผลอื่นใด
Murph

แน่นอนคุณสามารถใช้. NET บนแพลตฟอร์มอื่น ๆ ผ่านทาง Mono, MonoTouch และ MonoDroid แต่มาตรฐานของฉันพบว่า Mono ช้ากว่า .NET สำหรับ Windows อย่างมากและ Compact Framework ของ Microsoft นั้นช้ามากใน Windows CE: codeproject.com/KB/cross -platform / BenchmarkCppVsDotNet.aspx ... แน่นอน WPF มีเฉพาะใน Windows (แต่ฉันไม่ชอบมันเลย)
Qwertie

คุณหมายถึงการพึ่งพาใดซึ่งหมายถึง "ฉันจะเลือก C ++ สำหรับระบบฝังตัวเนื่องจากฉันไม่ได้พึ่งพาหลายคน" คุณหมายถึงห้องสมุด java หรือไม่
Puckl

@ พัลล์ใช่ แต่ส่วนใหญ่คือ jvm / jre
Jonas

"ถ้าคุณทำงานในสภาพแวดล้อม Unix ด้วยเช่นบริการบนเว็บ" มีภาษาและกรอบการทำงานอื่น ๆ ที่อาจพิจารณาได้: ruby, Python, node.js และอื่น ๆ
MarkJ

15

C # และ Java

C # เป็นภาษาที่ดีมากถ้า:

  • คุณต้องการพัฒนาวัตถุประสงค์เชิงวัตถุทั่วไป มันเป็นภาษา OOP ที่คลาสสิคและคงที่
  • คุณกำลังกำหนดเป้าหมายแพลตฟอร์มของ Microsoft เท่านั้น (ควรจำไว้ว่า Microsoft ได้โคลน Java อย่างมีประสิทธิภาพในการสร้าง C # เพราะพวกเขาต้องการภาษาที่เหมือน Java ที่จะล็อคคนเข้าสู่ Windows พวกเขาสามารถใช้ Java ได้ แต่นั่นจะทำให้ผู้คน แพลตฟอร์มอื่น ๆ .... )

C # เป็นภาษาที่ดีกว่า Java ในรูปแบบต่างๆ (ไวยากรณ์ที่ดีขึ้นสำหรับคุณสมบัติประเภทค่า Generic reified ฯลฯ ) ฉันชอบ C # เป็นภาษาจาวา แต่ในรูปแบบที่ยิ่งใหญ่ของสิ่งที่พวกเขาเป็นภาษาที่ค่อนข้างคล้ายกันและเหมาะสำหรับการใช้งานที่คล้ายกัน

ในทางกลับกัน Java มีข้อได้เปรียบที่สำคัญเช่นกัน:

  • ระบบนิเวศแหล่งที่มาเปิดใหญ่ - ห้องสมุดสำหรับ Java ที่คุณจะได้รับฟรีโดยไกลที่ดีที่สุดของภาษาใด ๆ เป็นการยากที่จะกล่าวเกินความสำคัญของสิ่งนี้ - จากจุดที่ทำสิ่งต่าง ๆ เสร็จสิ้น Java มีประสิทธิภาพมาก
  • เครื่องมือ - เครื่องมือ Java อยู่ในมุมมองของฉันดีกว่าสิ่งที่คุณจะได้รับโลก. Net เช่น Maven (เมื่อคุณเชี่ยวชาญ!) เป็นสิ่งที่น่าประทับใจเป็นพิเศษ
  • การบำรุงรักษา - Java ได้รับในขณะที่และประสบความสำเร็จใน บริษัท ขนาดใหญ่ได้อย่างแม่นยำเพราะมันค่อนข้างมีเสถียรภาพและมีความพยายามมากใส่ลงไปในความเข้ากันได้ย้อนหลัง ไวยากรณ์ที่เรียบง่ายและ verbose เล็กน้อยยังช่วย Java ที่นี่ - ง่ายต่อการอ่านและบำรุงรักษารหัสถ้ารหัสชัดเจนและชัดเจน
  • ใหม่ภาษา - JVM มีภาษาใหม่ที่น่าทึ่ง (Scala, Clojure, Groovy ฯลฯ ) ที่เป็นอนาคตของแพลตฟอร์ม Java นี่คือสิ่งที่นวัตกรรมด้านภาษากำลังเกิดขึ้นและกำลังเกิดขึ้นเร็วกว่าใน Java หรือ C #

ดังนั้น Java vs. C # เป็นสายที่ค่อนข้างใกล้เคียงและจริงๆมันลงมาไม่ว่าคุณต้องการอยู่ในค่าย Microsoft หรือค่าย Open Source / cross-platform

ส่วนตัวฉันชอบ Java เพราะ:

  • ระบบนิเวศของห้องสมุดในมุมมองของฉันสำคัญกว่าความจริงที่ว่า C # มีไวยากรณ์ที่ดีกว่า Java
  • ในระยะยาวฉันต้องการให้รหัสทั้งหมดของฉันเป็นแพลตฟอร์มข้ามที่ถูกต้องและสามารถทำงานบนกลุ่มใหญ่ของเครื่อง linux ราคาถูกบนคลาวด์
  • Clojure เป็น IMHO ภาษาที่มีแนวโน้มมากที่สุดในโลกในขณะนี้และถ้าฉันยึดติดกับแพลตฟอร์ม JVM ฉันจะสามารถเปลี่ยนรหัสและทักษะของฉันเป็น Clojure ได้อย่างง่ายดายตลอดเวลา

C / C ++

C / C ++ นั้นเป็นสัตว์ที่แตกต่างกันโดยสิ้นเชิง ฉันจะไม่แนะนำสำหรับการพัฒนาแอพพลิเคชั่นวัตถุประสงค์ทั่วไปในปัจจุบันด้วยเหตุผลดังต่อไปนี้:

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

อย่างไรก็ตามมันเป็นตัวเลือกที่ยอดเยี่ยมในโดเมนพิเศษจำนวน จำกัด โดยเฉพาะอย่างยิ่ง:

  • ระบบปฏิบัติการ - คุณอาจต้องการใช้ C / C ++ หากคุณกำลังเขียนระบบปฏิบัติการ
  • การพัฒนาเกม - เอ็นจิ้นเกมเชิงพาณิชย์ที่ดีที่สุดเกือบทั้งหมดคือ C / C ++ ยังคงเป็นตัวเลือกที่ดีที่สุดหากคุณกำลังพัฒนาชื่อ AAA ที่ต้องการ (C # และ Java นั้นสมบูรณ์แบบสำหรับเกมที่มีความต้องการ / ไม่เป็นทางการ)
  • การคำนวณประสิทธิภาพสูง - C / C ++ ที่ได้รับการปรับปรุงให้ดีที่สุดน่าจะเป็นวิธีที่ดีที่สุดในการสร้างรหัสประสิทธิภาพสูง สำหรับแอปพลิเคชันส่วนใหญ่ที่ใช้การเพิ่มประสิทธิภาพระดับนี้จะไม่คุ้มค่ากับความพยายาม แต่ในบางโดเมนอาจมีค่ามาก (เช่นการซื้อขายที่มีความถี่สูง)
  • การเข้าถึงฮาร์ดแวร์ - คุณต้องเข้าถึงฮาร์ดแวร์โดยตรง (เช่นสำหรับระบบฝังตัว)

ดังนั้นโดยทั่วไป C / C ++ เป็นตัวเลือกที่ดีถ้าหากคุณให้ความสำคัญกับโดเมนใดโดเมนหนึ่งที่เหมาะสมอย่างยิ่ง


1
คุณพูดถึง maven เป็นตัวอย่างของเครื่องมือที่ดีกว่าสำหรับ java ฉันไม่ใช่ famialr โดยเฉพาะอย่างยิ่งกับมัน แต่ดูที่เอกสาร Maven ดู srather คล้ายกับ. สุทธิสร้างเครื่องมือ MSBuild อะไรทำให้ Maven ดีกว่า MSBuild
Kevin Cathcart

1
+! (เพราะฉันมีเพียงหนึ่งเสียง): คุณอธิบายได้ดีมากว่าทำไมระบบนิเวศของ Java จึงดีกว่าและทำไมเราไม่ควรเปรียบเทียบเฉพาะไวยากรณ์ของ C # กับ Java Java มีไลบรารีและเครื่องมือมากขึ้นและดีขึ้น ไม่ค่อยมีอะไรเกิดขึ้นในภาษาจาวา แต่ภาษาที่น่าสนใจใหม่ ๆ ปรากฏขึ้นสำหรับ JVM ที่น่าสนใจกว่า C # (IMO) ฉันไม่รู้จัก Clojure แต่ฉันพบว่า Scala น่าสนใจมาก: ออกแบบมาเพื่อ OOP + FP ตั้งแต่เริ่มต้น
จอร์โจ

2
ทำไมทุกคนคิดว่ารหัส C ++ เต็มไปด้วยการจัดการหน่วยความจำด้วยตนเอง ไม่ใช่ C ที่คุณรู้จัก RAII หมายความว่าคุณแทบจะไม่ต้องจัดสรร / หน่วยความจำฟรีด้วยตนเอง (เวลาที่คุณทำคือภาษาที่ C # จะไร้ประโยชน์กับคุณ)
gbjbaanb

3
@gbjbaanb - อาจเป็นเพราะ RAII ไม่เพียงพอสำหรับการจัดการหน่วยความจำวัตถุประสงค์ทั่วไป มันไม่มีทางเทียบเท่ากับความยืดหยุ่นในระบบ GC แบบเต็มอย่างที่คุณเห็นใน Java หรือ C # ทันทีที่คุณก้าวข้ามขอบเขตของ RAII คุณจะกลับมาอยู่ในขอบเขตการจัดการหน่วยความจำด้วยตนเอง
mikera

3
@mikera เพียงแค่ต้องการชี้ให้เห็นว่ามีการพัฒนาภาษาค่อนข้างน้อยบนแพลตฟอร์ม. NET เช่นกัน เช่น F # เป็นภาษาที่ใช้งานได้ดีซึ่งรวมส่วนที่เหลือของ. NET ได้อย่างราบรื่นและ Python ได้รับการโอนย้ายไปยัง. NET เป็น Iron Python เมื่อเร็ว ๆ นี้ (และมีIDE ที่ดีเช่นกัน!)
ikh

13
I heard that syntactically they are almost the same.

syntactically? ใครให้ลิงบินเกี่ยวกับวากยสัมพันธ์ ไวยากรณ์เป็นสิ่งที่ดีเพียงสิ่งเดียว: ช่วยให้การโยกย้ายเร็วขึ้นจากภาษาที่คล้ายกัน syntactically แค่นั้นแหละ.

C # ดีกว่า Java อย่างมากมาย พิจารณาการสนับสนุนการเขียนโปรแกรมทั่วไปและการทำงานของพวกเขา - C # เป็นวิธีล่วงหน้าของ Java ไม่พูดถึงตัวดำเนินการมากเกินไปและสิ่งที่ดีอื่น ๆ - C # เป็นคุณลักษณะที่ดีกว่าอย่างมากมาย ไม่มีทางที่ Java จะถือว่าดีกว่า C # ได้

C ++ และ C # เป็นมากกว่าการแข่งขัน C ++ มีรูปแบบการรวบรวมแบบโบราณที่น่ารำคาญอย่างมากและโรคที่สืบทอดจาก C แต่เทมเพลตนั้นมีประสิทธิภาพมากกว่า generics อย่างมากและวิธีการจัดการทรัพยากรนั้นมีความยืดหยุ่นและทรงพลังมากขึ้นโดยทั่วไปเช่นเดียวusingกับความล้มเหลวโดยสมบูรณ์ ได้เร็วขึ้น


6
ฉันคิดว่าควรเปรียบเทียบทั้งคุณลักษณะภาษาและความพร้อมใช้งานของภาษาบนแพลตฟอร์มที่แตกต่างกัน ด้วย C # one นั้นถูกล็อกด้วย Microsoft โดย Java one ไม่ใช่: นั่นเป็นข้อได้เปรียบที่ยิ่งใหญ่อย่างน้อยสำหรับนักพัฒนา UNIX / Linux OOP + FP เป็นคุณสมบัติเจ๋ง ๆ แต่ทำไมต้องกังวลเกี่ยวกับ C # ถ้าคุณสามารถใช้ Scala ซึ่งทำงานบน JVM และสามารถเชื่อมต่อกับโค้ด Java ดั้งเดิมได้? ฉันจะไม่เรียนรู้ภาษาเฉพาะแพลตฟอร์มเว้นแต่ฉันจะถูกบังคับให้ทำ
จอร์โจ

2
@Giorgio: โครงการโมโนไม่มีอยู่จริง แต่ประการที่สอง Microsoft ดูแลแพลตฟอร์มของพวกเขาจริง ๆ - พวกเขาให้การอัพเกรดขนาดใหญ่เป็นประจำ Java แทบจะไม่มีอะไรใหม่ คำถามนี้เกี่ยวกับ C # กับ Java ไม่ใช่ CLR กับ JVM
DeadMG

4
@DeadMG: เท่าที่ฉันรู้ฉันไม่สามารถใช้โปรแกรม C # ใด ๆ ที่พัฒนาบน Windows และสร้างด้วย Mono ได้ ไม่ใช่ CLR กับ JVM ใช่ไหม คำถามคือทำไมคนใช้ C # หรือ Java เพื่อให้คนใช้ภาษาพวกเขาต้องการรันไทม์และระบบปฏิบัติการ ฉันไม่ได้พูดคุยเกี่ยวกับความจริงที่ว่า C # มีคุณสมบัติมากกว่า Java แต่ Java นั้นพกพาได้มากกว่า: นี่เป็นปัจจัยที่มีอิทธิพลต่อการยอมรับภาษา ในความเป็นจริง Java ยังคงใช้บ่อยกว่า C # ถึงแม้ว่าจะไม่มีคุณสมบัติขั้นสูงบางอย่าง
จอร์โจ

3
@Giorgio คุณสามารถใช้โปรแกรม C # และสร้างมันด้วย Mono คุณไม่สามารถใช้ไลบรารีบางอย่าง (ซึ่งไม่ใช่ส่วนหนึ่งของภาษา C #) และจาวาไม่ได้เป็น "พกพามากขึ้น" คุณสามารถโค้ดสำหรับ iOS ใน C # แต่ไม่ใช่ใน Java เช่น
SK-logic

2
@Giogio Mono อย่างน้อยก็พกพาได้เหมือนกับ JVM
SK-logic

7

ดีC#มีที่ดีบางอย่างในตัวคุณสมบัติเช่นLINQและผู้แทน มันจะได้รับที่ดีที่สุดจากทั้งสองโลก - และJava C++ดูที่นี่เพื่อเปรียบเทียบแบบเต็ม

แต่ฉันชอบJavaโลกที่ดีกว่า - กรอบโอเพนซอร์ซมากขึ้นและทำงานบนทุกแพลตฟอร์ม และอย่าบอกฉันเกี่ยวกับMonoมันไม่ใช่ตัวเลือกที่เชื่อถือได้


9
+1: "แต่ฉันชอบโลกของ Java ที่ดีขึ้น - กรอบโอเพ่นซอร์สที่มากขึ้นและมันทำงานบนทุกแพลตฟอร์ม" หวังว่า Oracle จะไม่เปลี่ยนแปลงสิ่งนี้!
จอร์โจ

15
ใจอธิบายว่าอะไรคือ "ความน่าเชื่อถือ" ในโมโน
SK-logic

2
@ Petar Minchev มันเป็นเพียงความผิดของคุณเอง คุณต้องปฏิบัติตามแนวทางการพกพาและคุณไม่ควรใช้ไลบรารี่ที่ไม่สามารถพกพาได้และด้วยวิธีนี้แอพพลิเคชั่นที่ซับซ้อนใด ๆ ก็สามารถทำงานกับโมโนได้อย่างน่าเชื่อถือ สิ่งต่าง ๆ เช่น WPF จะไม่มีการจัดเรียง
SK-logic

2
@Petar Minchev มีไลบรารี Java ที่ไม่สามารถพกพาได้จำนวนมาก คุณจะต้องระมัดระวังเกี่ยวกับการพกพาเสมอไม่ว่าคุณจะใช้ภาษาใด และคำถามก็เกี่ยวกับภาษาไม่ใช่ห้องสมุดของบุคคลที่สาม
SK-logic

3
@Petar Minchev, GTK # เป็นอุปกรณ์พกพา ใช้มันแทน
SK-logic

3

ตามแหล่งข้อมูลบางแหล่ง (ดูเช่นhttp://www.indeed.com/jobtrends ) C # ยังคงเป็นที่นิยมน้อยกว่า Java และเป็นที่นิยมเช่น C ++

C # มีคุณสมบัติที่ Java ขาดเช่นการสนับสนุนโดยตรงสำหรับสำนวนการเขียนโปรแกรมบางอย่างเช่นคุณสมบัติรูปแบบการเขียนโปรแกรมการทำงานและอื่น ๆ C # มีระดับนามธรรมสูงกว่า C ++ ซึ่งเป็นข้อได้เปรียบเมื่อเวลาในการพัฒนาสำคัญกว่าความเร็วของโปรแกรม

ส่วนตัวแล้วฉันยังคงชอบโลกของ Java / C ++ ดังที่ Petar Minchev กล่าวว่า Java มีเฟรมเวิร์กโอเพนซอร์สและแอปพลิเคชั่นมากกว่านั้นมันทำงานได้ทุกที่โดยผูกติดอยู่กับผู้ขายและระบบปฏิบัติการเฉพาะ C ++ มีข้อได้เปรียบที่คล้ายคลึงกันแม้ว่ารหัสมักจะต้องการการปรับเปลี่ยนจากแพลตฟอร์มหนึ่งไปอีกแพลตฟอร์มหนึ่ง เนื่องจากฉันต้องการพัฒนาบน Linux และเพื่อความรู้ของฉันฉันไม่สามารถเต็มที่ C # บน Linux ฉันไม่เคยได้รับความสนใจอย่างแท้จริงใน C # เพราะความต้องการเขียนโปรแกรมของฉันครอบคลุมโดย C, C ++, Java, Scala

ในทางกลับกันสำหรับนักพัฒนาจำนวนมากที่ถูกผูกติดอยู่กับผู้ขายรายใดรายหนึ่งไม่ใช่ปัญหา: Microsoft มีตำแหน่งที่โดดเด่นในตลาดระบบปฏิบัติการและ C # ให้โอกาสในการทำงานมากมาย ดังนั้นนักพัฒนา IMO หลายคนใช้ C # เพราะนอกจากจะเป็นภาษาที่มีคุณลักษณะหลากหลายแล้วมันยังเป็นการลงทุนที่ดี


"ฉันไม่สามารถใช้ C # บน Linux อย่างสมบูรณ์" - คุณช่วยอธิบายเรื่องนี้ได้ไหม? คุณหมายความว่าเฟรมเวิร์ก. Net แบบเต็มไม่พร้อมใช้งานเพราะฉันไม่ได้พบปัญหากับภาษา C # เอง (หรือ F # สำหรับเรื่องนั้น) บน Linux
Wesley Wiser

@wawa: ตามความรู้ของฉัน. Net framework สอดคล้องกับ JDK และ. Net framework นั้นพร้อมใช้งานสำหรับ Windows เท่านั้นในขณะที่ JDK นั้นพร้อมใช้งานสำหรับ OS หลายระบบ หากสิ่งนี้ไม่ถูกต้องฉันสามารถแก้ไขคำตอบของฉันได้ (และเปลี่ยนความคิดเห็นของฉันด้วย)
Giorgio

1
ฉันคิดว่าการเปรียบเทียบที่ใกล้เคียงยิ่งขึ้นคือ Base Class Library ไปยัง JDK BCL มีชิ้นส่วนที่ได้มาตรฐานและไม่ได้มาตรฐาน โครงการโมโนดำเนินการตามมาตรฐานเช่นเดียวกับชิ้นส่วนที่ไม่ได้มาตรฐาน
Wesley Wiser

@wawa: ขอบคุณสำหรับข้อมูล ฉันกำลังพิจารณาให้ลองใช้ C # กับโมโน ถึงกระนั้นฉันก็ยังมีความรู้สึกที่แข็งแกร่งที่ C # เชื่อมโยงกับ Microsoft ได้ดีกว่า Java มากกว่าคือ Oracle (หรือ Sun ในอดีต)
จอร์โจ

3

สิ่งที่เกี่ยวกับ "กรอบการพัฒนาซอฟต์แวร์ใดที่มีภาษาการเขียนโปรแกรม" ดีกว่า

คุณลืมที่จะรวมสิ่งอื่น ๆ เช่น "สภาพแวดล้อม" ที่คุณจะทำงานด้วย

  1. คุณกำลังจะทำงานเฉพาะสำหรับ Windows OS แต่ไม่จำเป็นต้องอยู่ในระดับต่ำและมีหน่วยความจำและทรัพยากรอื่น ๆ มากมายหรือไม่?

    เลือก. NET เป็นเฟรมเวิร์กบน Windows และใช้ C #

  2. คุณกำลังจะทำงานเฉพาะสำหรับ Windows แต่ไม่จำเป็นต้องอยู่ในระดับต่ำ แต่มีทรัพยากรไม่มาก?

    เลือก Delphi Framework (และภาษาการเขียนโปรแกรม Object Pascal Delphi หรือภาษาการเขียนโปรแกรม Lazarus Object Pascal)

  3. เป็นแอปของคุณ ต้องการการสนับสนุนหลายแพลตฟอร์มเช่นเกมในโทรศัพท์มือถือที่แตกต่างกันหรือไม่?

    เลือก Java Framework และภาษาการเขียนโปรแกรม Java

  4. Linux กับ KDE เป็นส่วนต่อประสานกราฟิกหรือไม่

    เลือกเฟรมเวิร์ก QT ด้วย C ++

  5. Linux กับ Gnome เป็นส่วนต่อประสานกราฟิกหรือไม่

    เลือก GObject / GLib framework ด้วย C ++

  6. คุณจะทำงานกับการทำงานระดับต่ำมากมายเช่นการพัฒนาไดรเวอร์หรือไม่?

    Plain C หรือ C ++ มันใช้สำหรับระบบปฏิบัติการหลายระบบที่มีไลบรารี่มาตรฐานเป็นเฟรมเวิร์ก

แค่ 2 เซ็นต์ของฉัน


1
ฉันไม่แน่ใจเกี่ยวกับ 3. สมาร์ทโฟนได้รับความนิยมมากในวันนี้และ AFAIK ทั้งหมดนี้รองรับ C # ในบางรูปแบบ แต่ Android เท่านั้นที่รองรับ Java
svick

Delphi ไม่ตายเหรอ? :)
šljaker

@ šljakerไม่ แต่ไม่เป็นที่นิยมมากในวันนี้
umlcat

1
@svick: นั่นเป็นเรื่องโกหก นอกเหนือจาก Android แล้ว Java ยังมีอยู่ในบางรูปแบบบน iOS, Symbian, WinMo, Blackberry, Maemo และ WebOS (เช่นทุกอย่างที่สำคัญหรือยังมีความสำคัญอย่าให้ฉันเริ่มต้นด้วยแพลตฟอร์มที่เล็กกว่า) Android, Blackberry และ Symbian สนับสนุน Java เป็นทางเลือกในการพัฒนาอย่างเป็นทางการ Sun เคยให้การสนับสนุน Java บน iOS แม้ในขณะที่ Apple ไม่ได้คาดหวัง Java เป็นภาษาพัฒนาหลักในโทรศัพท์ Android และ Blackberry ฉันไม่สามารถพูดแบบเดียวกันกับ C # ได้ AFAICT รองรับ WinMo อย่างเป็นทางการเท่านั้น
Lie Ryan

1

หากคุณค้นหาคุณมีแนวโน้มที่จะสะดุดเมื่อการสนทนาในภาษาโปรแกรมด้านบน นี่คือหนึ่งในผลการค้นหา - http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html - Java ยังคงเป็นภาษาที่ได้รับความนิยมมากที่สุด

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


1

สองสิ่งที่ยังไม่ได้กล่าวถึง:

C # ดีกว่า C ++ เพราะ:

มันจะไปกับไฟล์ส่วนหัวซึ่งแปลว่าเรียบง่ายมาก

C # ดีกว่า Java เพราะ:

สนับสนุนทั้งชนิดการอ้างอิง (คลาส) และประเภทค่ากำหนด (struct) ที่ผู้ใช้กำหนดซึ่งหากคุณรู้ว่าคุณกำลังทำอะไรสามารถให้ประโยชน์ด้านประสิทธิภาพที่สำคัญ

สนับสนุนผู้ได้รับมอบหมายซึ่งเป็นเหมือนอินเทอร์เฟซวิธีการเดียวจึงทำให้การเข้ารหัสของโครงสร้างที่เกิดขึ้นบ่อยครั้งง่ายขึ้นซึ่งเกี่ยวข้องกับวัตถุวิธีการเดียว


คุณสามารถอธิบายได้ว่าการมีทั้งชนิดการอ้างอิงและประเภทค่าสามารถให้ประโยชน์ด้านประสิทธิภาพใน C # ได้หรือไม่?
Giorgio

ตัวอย่างเช่นถ้าคุณต้องการมีอาร์เรย์ของเรคคอร์ดใน Java คุณไม่มีทางเลือกนอกจากอธิบายเร็กคอร์ดของคุณโดยใช้คลาสดังนั้นอาร์เรย์ของคุณจะเป็นอาเรย์ของการอ้างอิงไปยังวัตถุที่จัดสรรแยกกันจำนวนมาก ใน C # คุณสามารถอธิบายบันทึกของคุณโดยใช้ struct ดังนั้นอาเรย์ของคุณจะเป็นเพียงพื้นที่เดียวของหน่วยความจำต่อเนื่องที่มีโครงสร้างของคุณหนึ่งต่อเนื่องเช่นเดียวกับใน C
Mike Nakis

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

ฉันเข้าใจ. ดังนั้นเรียน instantiated บนกองและเข้าถึงได้ผ่านการอ้างอิงในขณะที่ structs จะ instantiated ในกอง (?)
Giorgio

เกือบถูกต้องแล้ว ความไม่ถูกต้องเพียงอย่างเดียวในคำสั่งนี้คือโครงสร้างจะพบได้ในฮีปถ้ามันถูกฝังอยู่ภายในวัตถุอื่นหรือถ้ามันอยู่ในอาร์เรย์ของโครงสร้าง และจะพบได้ใน heap หากได้รับชนิดบรรจุกล่องในลักษณะเดียวกับชนิดของค่าที่บรรจุใน Java
Mike Nakis

1

คุณควรเลือกภาษาที่ดีที่สุดสำหรับสภาพแวดล้อมที่คาดหวังและความเชี่ยวชาญของคุณ

เลือก C # หากคุณทำงานในสภาพแวดล้อม Microsoft เท่านั้น ในขณะที่ C # ได้มาตรฐานภายใต้ ISO / IEC 23270: 2003, เวอร์ชั่นของ Microsoft ยังคงใช้งานได้อย่างสมบูรณ์เท่านั้น ส่วนสำคัญของภาษาไม่ได้อยู่ในมาตรฐานและอยู่ภายใต้สิทธิบัตรของ Microsoft ไม่มีใครจะใช้ภาษาที่เข้ากันได้อย่างสมบูรณ์กับระบบอื่น ๆ ดังนั้นคุณจึงเป็นผู้ขายที่ถูกล็อคไว้ที่ Microsoft Windows และ. Net ตราบใดที่คุณใช้ภาษา หากคุณกำลังมองหาทักษะที่จะใช้ในตลาดอุปกรณ์พกพาควรมองหาภาษาอื่น

Java ใช้งานได้ แต่มีค่าใช้จ่ายจำนวนมากส่วนหนึ่งเป็นเพราะคุณสมบัติเช่นการรวบรวมขยะ Java ยังไม่ได้มาตรฐานโดย ISO / IEC ดังนั้นคุณจึงไม่รับประกันหากคุณเปลี่ยนแพลตฟอร์มและเวอร์ชันของ Java มีเพียงความตั้งใจที่ดีที่สุดของ Sun / Oracle หากคุณวางแผนที่จะทำงานกับ Android ในที่สุดนี่คือหนทางที่แน่นอน การเขียนโปรแกรมของ Android นั้นเป็นจาวาโดยมีการเปลี่ยนแปลงเล็กน้อย

C ++ เป็นมาตรฐานและคอมไพเลอร์เกือบทั้งหมดเป็นไปตามมาตรฐานสากลดังนั้นคุณจึงรับประกันพฤติกรรม แต่ภาษาไม่ได้ปกป้องคุณจากตัวคุณเอง คุณต้องทำการล้างข้อมูลและตรวจสอบด้วยตัวเอง อันนี้ไม่ยาก โปรแกรมเมอร์ C / C ++ ทำสิ่งเหล่านี้มาหลายปีแล้ว Apple ใช้ Objective C สำหรับทุกสิ่งดังนั้นหากคุณต้องการตั้งเป้าหมายสำหรับ Apple ฉันแนะนำให้คุณลองทำเช่นนี้แทน

หากคุณเห็นว่าตัวเองกำลังทิ้ง Windows ไว้บ้างฉันขอแนะนำให้เรียนรู้ทั้ง C / C ++ และ Java ซึ่งทั้งสองอย่างนี้เป็นที่ต้องการของตลาด


0

ในความสัมพันธ์กับ C ++ vs C # (เพราะฉันไม่ค่อยเชี่ยวชาญใน Java) สิ่งที่ฉันขาดไปคือความสามารถในการเข้าถึงข้อมูลระดับล่างใน Windows ตัวอย่างเช่นคุณไม่สามารถพัฒนาไดรเวอร์การแสดงผลดั้งเดิมใน C # (ยัง) แต่คุณสามารถใช้ C ++ สิ่งนี้ไม่ทำให้ C ++ ดีขึ้น ฉันเห็น C ++ กับ C # เป็นชุดประกอบกับ C

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

ห้องสมุด CLR ที่มีฟังก์ชั่นการใช้งานทั้งหมดของเขานั้นมีประโยชน์มากมาย เมื่อฉันฝึกอบรมผู้พัฒนาระดับจูเนียร์ C # ส่วนใหญ่บอกว่าชอบการตั้งชื่อแบบตรรกะของคลาสสมาชิกและเนมสเปซ การค้นหาคุณลักษณะของเมธอดนั้นสมเหตุสมผลบน SDK สิ่งที่ Visual Basic 5 นั้นมีข้อบกพร่องอย่างจริงจัง สิ่งนี้ช่วยให้พวกเขาใช้ห้องสมุดอย่างมากมาย หลังจากเรียนรู้ไวยากรณ์ของภาษาการเรียนรู้ห้องสมุดใหม่มีความสำคัญต่อการเข้าใจ SDK ที่ดี มันช่วยให้คุณประหยัดจากการพลิกโฉมพวงมาลัย

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