Delphi vs C # สำหรับการเขียนโปรแกรม GUI [ปิด]


20

ฉันมาจากพื้นหลัง PHP และ Python ที่มีความรู้น้อยเกี่ยวกับ C ฉันได้ทำแอพพลิเคชั่นบนเว็บมากมายตอนนี้ฉันกำลังคิดถึงแอพพลิเคชั่น Desktop สำหรับแพลตฟอร์ม windows

เพื่อนบอกให้ฉันไปหา Delphi และคนอื่นบอกว่า C # นั้นดีที่สุดแล้วสิ่งที่ฉันกำลังมองหาคือ

  1. ความง่าย
  2. ผลผลิต
  3. เอกสาร API ที่ดี
  4. ความเร็ว
  5. ลากแล้ววาง
  6. Multi เธรด & Good Network API

ขอบคุณ

คำตอบ:


20

Delphi แน่นอน:

  1. ซิมพลิซิตี้ - ไวยากรณ์ของ Delphi นั้นอิงจาก Pascal ซึ่งได้รับการออกแบบมาอย่างชัดเจนเพื่อให้ง่ายต่อการเรียนรู้และสามารถมอบตามสัญญานั้นได้ C # 's อยู่บนพื้นฐานของครอบครัวซีซึ่ง ... ดี ... ก็ไม่ได้
  2. ผลผลิต - Delphi เป็นผู้สืบทอดของ Turbo Pascal และยังมีคอมไพเลอร์ที่เร็วที่สุดที่มนุษย์รู้จักซึ่งจะช่วยเพิ่มผลผลิตของคุณอย่างมหาศาล นอกจากนี้ยังมีตัวดีบัก Visual Studio ที่ต้องการดีบักเกอร์ของมันจะเป็นเหมือนเมื่อมันโตขึ้น โดยเฉพาะอย่างยิ่งใน Delphi รุ่นล่าสุดการดีบักนั้นง่ายกว่ามาก
  3. เอกสาร API ที่ดี - "API" เป็นคำที่คลุมเครือทุกวันนี้ซึ่งครอบคลุมทุกสิ่ง ฉันถือว่าคุณหมายถึงไลบรารี่และนี่เป็น tossup ทั้ง. NET Framework และไลบรารีมาตรฐาน Delphi มีเอกสารออนไลน์ที่ดีและเอกสารออฟไลน์ปานกลางที่ยากต่อการใช้งาน (เป็นผลมาจากทีม Delphi ที่เลือกใช้ระบบช่วยเหลือที่น่ากลัวเช่นเดียวกับ Visual Studio ซึ่งหวังว่าพวกเขาจะย้ายออกจากเวอร์ชั่นถัดไป)
  4. ความเร็ว - Delphi ชนะอย่างง่ายดาย มันประกอบไปด้วยรหัสเนทีฟ (การดำเนินการที่เร็วขึ้นและการเริ่มต้นที่เร็วกว่ามากเนื่องจากไม่มีช่วง JIT) และมันไม่ได้ใช้พอยน์เตอร์ที่มีการจัดการเพื่อให้การเข้าถึงออบเจกต์นั้นเร็วขึ้น
  5. ลากและวาง - คุณสมบัติในตัวของ VCL
  6. มัลติเธรด - Delphi มีคลาสเธรดในตัว แต่ถ้าคุณต้องการทำสิ่งที่ซับซ้อนพร้อมกันมีตัวเลือกที่ดีกว่า Primoz Gabrijelcic สมาชิกชุมชน Delphi ได้ทำงานกับไลบรารี่ที่เกิดขึ้นพร้อมกันที่ฉันได้ช่วย มันให้การสนับสนุนระดับสูงสำหรับเป้าหมายเธรดทั่วไปเช่นการรวมกลุ่มงาน, การขนานลูปสำหรับลูปและกระบวนการไปป์ไลน์แบบหลายขั้นตอน
  7. Good Network API - Delphi มาพร้อมกับ Indy ซึ่งเป็นไลบรารี่โอเพ่นซอร์สที่ทำให้การเชื่อมต่ออินเทอร์เน็ตนั้นง่ายต่อการติดตั้งและจัดการ เราใช้มันในที่ทำงานเพื่อมอบเลเยอร์การสื่อสารสำหรับแอพชั้นนำในอุตสาหกรรมที่คุณอาจไม่เคยได้ยินมาก่อนเว้นแต่คุณจะทำงานในสื่อกระจายเสียง
  8. การปรับใช้ - นี่ไม่ได้อยู่ในรายการของคุณ แต่มันก็คุ้มค่าที่จะกล่าวถึง ยังมีระบบออกมาที่ไม่มี. NET Framework ติดตั้งไว้ล่วงหน้า ตามค่าเริ่มต้น Delphi จะรวบรวมไลบรารีมาตรฐานของมันลงใน EXE จากนั้นใช้ smartlinker เพื่อลบส่วนที่คุณไม่ได้ใช้ทำให้ EXE ขนาดเล็กที่ไม่มีการพึ่งพาไลบรารีรันไทม์ขนาดใหญ่ที่มีอยู่หลายร้อย MB ที่ผู้ใช้ของคุณจะมี เพื่อดาวน์โหลดและติดตั้งแยกต่างหาก

2
@Elf: อาจมีงาน C # มากขึ้น แต่ก็มีคนจำนวนมากที่แข่งขันกันเพื่องานนี้ นักพัฒนา Delphi ที่มีทักษะไม่มีปัญหาในการหางานทำ
Mason Wheeler

5
C # ไม่ได้ขึ้นอยู่กับ C ++ เท่านั้น แต่ยังรวมถึง Delphi และ Java ด้วย ฉันก็เรียนรู้การเขียนโปรแกรมใน Pascal ด้วยและฉันก็เห็นว่ามันเป็นปรัชญาใน C # เกี่ยวกับพอยน์เตอร์ที่ได้รับการจัดการที่คุณได้รับมานั้นไม่มีการเข้าถึงข้อมูลผ่านพอยน์เตอร์ที่ได้รับการจัดการและการเปลี่ยนจะเร็วกว่าในระบบโดยใช้การนับการอ้างอิง
Guffa

12
ไวยากรณ์ Delphi เป็นเรื่องง่ายที่จะเรียนรู้เป็นคำอัตนัยสมบูรณ์ ฉันโกรธด้วยไวยากรณ์ Delphi และตัดสินใจต่อต้านการเรียนรู้ด้วยเหตุผลนั้น
Tjaart

8
-1: คำตอบนี้มีอคติอย่างบ้าคลั่ง ดีบักเกอร์ Visual Studio นั้นอย่างน้อยก็ดีถ้าไม่ดีไปกว่า Delphi เอกสาร Delphi นั้นไม่มีความทนทานเมื่อเทียบกับ MSDN ซึ่งเป็นเอกสารที่ดีที่สุดเท่าที่เคยมีมา
marco-fiset

4
การปรับใช้ - ล้มเหลวทั้งหมด Deplhi ต้องการ Windows ดังนั้นจึงเป็นขั้นตอนย้อนหลังจาก C # C # สามารถพกพาได้และใช้งานได้หลากหลายด้วยโมโน เดลฟายไม่ได้ คุณไม่จำเป็นต้องซื้อ Windows เพื่อใช้งานโปรแกรมที่เขียนใน C # ซึ่งไม่ได้ใช้ไลบรารี Win32 อย่างชัดเจน ความเรียบง่าย - นอกจากนี้ยังล้มเหลว ไวยากรณ์ของ C # นั้นง่ายต่อการอ่านกระชับและง่ายต่อการเขียน เดลฟายไม่ได้ เอกสาร API - ไม่เลย! ถ้าฉันเขียน "web service C #" ฉันจะได้ผลลัพธ์ที่เกี่ยวข้องมากมาย ไม่มีสิ่งเช่นนี้สำหรับ Delphi ความเร็วเธรดโดยเฉพาะตัวดีบัก - ก็เป็นเท็จเช่นกัน
TheLonelyCoder

15

โดยทั่วไป C # จะมีฐานผู้ใช้ที่ใหญ่ขึ้นการพัฒนาเพิ่มเติมในอนาคตและเครื่องมือสำหรับการพัฒนา RAD ผ่าน Visual Studio นั้นไม่น่าเชื่อ

  1. ไวยากรณ์จะคล้ายกับที่คุณใช้ใน PHP และ C
  2. Visual Studio พร้อมเครื่องมือและ IntelliSense มีประสิทธิภาพอย่างมาก
  3. MSDN
  4. อีกครั้งเครื่องมือ VS + Intellisense แต่ความเร็วมาจากความคุ้นเคยในภาษาและคุณลักษณะของมัน
  5. นักออกแบบ VS สำหรับ WinForms, WPF
  6. ระบบ. เธรดและ System.Net

ฉันไม่ค่อยมีประสบการณ์กับ Delphi มากนักและฉันแค่พูดถึงประสบการณ์ของฉันกับ C # โดยทั่วไป ที่ที่ฉันทำงานอยู่ฉันมีกำหนดเวลาที่แน่นหนาอย่างมากที่ผู้เขียนโปรแกรมไม่ใช่และฉันสามารถปั๊มแอพพลิเคชั่นเดสก์ท็อปธุรกิจออกมาได้อย่างรวดเร็ว ในช่วงสามสัปดาห์ที่ผ่านมาฉันเปลี่ยนจากข้อมูลจำเพาะไปเป็นการปรับใช้กับแอปพลิเคชัน LOB winforms สองรายการ ผลผลิตสำหรับการพัฒนา GUI ใน C # กับ VS นั้นบ้ามาก


4
ขอบคุณตามการโพสต์ที่daniweb.com/forums/thread54305.html การรวม Win32 API และความสมบูรณ์ใน Delphi เกินกว่า C
elf1984

2
คุณควรพิจารณา Delphi จริงๆถ้าคุณคิดว่า C # เป็นสภาพแวดล้อมการพัฒนาขั้นสูงสุดสำหรับการสร้างแอปพลิเคชันเดสก์ท็อปอย่างรวดเร็ว ฉันเกลียดเมื่อฉันต้องสร้างสิ่งต่าง ๆ บนเดสก์ท็อปด้วย Visual Studio แต่ทุกวันนี้ฉันไม่มีทางเลือกเสมอ (น่าเสียดาย)
Wouter van Nifterick

1
เครื่องมือ RAD (ออกแบบรูปแบบ) ของ Visual Studio ดูดตรงไปตรงมา
Warren P

1
@WarrenP คุณช่วยอธิบายเพิ่มเติมได้ไหม?
Tjaart

1
สร้างแอปพลิเคชั่นเซิร์ฟเวอร์ใน C # และสร้างแอปพลิเคชันเดสก์ท็อปใน Delphi เนื่องจาก Delphi ผลิตรหัสภาษาซึ่งยากต่อการถอดรหัส!
justyy

14

ทั้งคู่มี 6 คะแนนที่คุณต้องการ แต่ฉันรู้สึกว่า C # มีความได้เปรียบที่สุดหากไม่ใช่ทั้งหมด

หากต้องการผ่านจุด:

  1. Delphi ต้องการการจัดการหน่วยความจำดังนั้นคุณสามารถยืนยันได้ว่าการทำให้ C # นั้นง่ายขึ้น คำตอบที่ได้รับการยอมรับกล่าวถึงไวยากรณ์ที่นี่ไวยากรณ์ของ C # นั้นคล้ายกับทั้ง PHP และ Java ดังนั้นหากคุณต้องการเริ่มต้นใช้งานได้เร็วขึ้นจากพื้นหลังใดก็ตาม C # ก็มีขอบ
  2. ผลผลิตฉันคิดว่าคุณทำงานได้เร็วขึ้นใน C # ห้องสมุด. net ให้คุณมากมายในสมัยก่อนฉันจะต้องหาส่วนประกอบเดลฟายของบุคคลที่สามเพื่อให้
  3. เอกสารของ Delphi นั้นดีเสมอ MSDN นั้นดีกว่าและคุณจะพบชุมชนขนาดใหญ่ที่ให้การสนับสนุนโปรดดูที่ Stack Overflow anaylsis ของฉันด้านล่าง
  4. ความเร็วเดลฟีอาจมีข้อได้เปรียบในเรื่องนี้ แต่การชุมนุมสำคัญกว่าทั้งหมดดังนั้นจึงไม่ใช่เหตุผลที่ดีที่จะเลือกภาษา สิ่งหนึ่งที่ฉันจะชี้ให้เห็นก็คือว่าฉันได้ยินคนอ้างว่า C # ถูกตีความ มันไม่เคยไม่เคยมี JIT มาก่อนเสมอ
  5. ลากและวางทั้งสองแบบ
  6. Multithreading, Delphi เป็นสิ่งที่ดี แต่ C # เป็นที่ยอดเยี่ยมกับการสร้างในโครงสร้างเช่นนามสกุลขนานและใหม่lock(){}await

จุดพิเศษ, ชื่อคำถามคือการเขียนโปรแกรม GUI สำหรับสิ่งนี้ฉันเป็นแฟนตัวยงของ. NET WPF ซึ่งสิ่งเดียวที่เดลฟี่มีเพียงอย่างเดียวที่อยู่ใกล้เพียงครึ่งทางคือตัวหนาซึ่งเป็นเรื่องยากที่จะเชื่องและตายไปแล้ว

ขนาดชุมชนเปรียบเทียบจำนวนคำถามในเรื่องนี้กับ Stack Overflow บนแท็ก Delphi และ C # คุณจะเห็นว่าขนาดของชุมชน C # นั้นใหญ่กว่ามาก

กองล้น:

  • Delphi 17K
  • C # 367K
  • Java 312K
  • c 73K

ฉันได้เพิ่มcเพื่อแสดงว่าไม่มีปัญหากับอายุภาษาและJavaเพื่อเปรียบเทียบ

ฉันไม่ใช่ C # หรือ Java fan boy ฉันเป็นแฟนตัวยง Delphi นักพัฒนา Delphi มืออาชีพที่แท้จริงมา 7 ปีแล้ว แต่พวกเขาก็เข่นฆ่ามันตั้งแต่ปี 2005 เป็นต้นมาด้วยการโจมตีที่ไม่มั่นคงของพวกเขาเป็น. net ซึ่งทำให้ความมั่นคงของ IDE สำหรับการคอมไพล์ 32 บิตแบบเนทีฟ Delphi 7 เป็นจุดสูงสุดของภาษาในมุมมองของฉัน


วิธีการเกี่ยวกับการตอบด้วย downvote นั้น
weston

1
ฉันไม่ใช่ผู้ลงคะแนน แต่ฉันจะบอกว่าคุณไม่ตอบคำถาม คุณเพียงแค่ประเมินความนิยมของ Delphi ใน stackoverflow คุณแน่ใจว่าทำประเด็น แต่มัน IMHO ค่อนข้างน้อย การเป็นคนเดียวที่ใช้เทคโนโลยีไม่ได้เลวร้ายเสมอไป
Simon Bergot

@Simon fair point ตอนนี้ฉันได้ตอบทุกประเด็นและบูรณาการการวิเคราะห์จำนวนคำถามเป็นจุดที่กว้างขึ้นเกี่ยวกับขนาดชุมชน
weston

อาจเป็นที่ถกเถียงกันว่าภาษาที่ทำให้เกิดคำถามมากขึ้นนั้นซับซ้อนกว่าการใช้ ;-) Bold คล้ายกับ WPF อย่างไร ฉันใช้ WPF และไม่เห็นสิ่งใดที่คล้ายคลึงกัน
Jim McKeeth

@JimMcKeeth ทั้ง Bold และ WPF จัดเตรียมเฟรมเวิร์กในการผูกข้อมูลกับการควบคุม UI เพื่อที่ว่าเมื่อข้อมูลมีการเปลี่ยนแปลง UI จะอัปเดตและในทางกลับกันหากจำเป็น
weston

8

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

ฉันชอบ OO มากกว่ากับการทำงานของ C # มากกว่าขั้นตอนการทำงานกับ OO leanings ของ Delphi คุณควรพิจารณาว่าคุณต้องการรหัสอย่างไรเมื่อเลือกระหว่างพวกเขา ฉันไม่คิดว่าจะมีอะไรมากมายในเรื่องของความเรียบง่าย แต่เป็นสิ่งที่คุณหาได้ง่ายขึ้น เช่นเดียวกันไปสำหรับการผลิต

ในแง่ของ RAD (การพัฒนาแอพพลิเคชั่นอย่างรวดเร็ว) มีไม่มากระหว่าง winforms และการออกแบบ Delphi GUI พวกเขาเตือนฉันซึ่งกันและกัน

ในทางกลับกัน WPF เป็นสิ่งที่ฉันชอบมากกว่าทั้งสองสำหรับสไตล์การประกาศของ

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

ฉันไม่ต้องทำโปรแกรมแบบเธรดกับ Delphi และระบบเครือข่ายใด ๆ ที่ฉันทำเมื่อหลายปีก่อนและจำไม่ได้

ไลบรารี. NET สำหรับการประมวลผลแบบขนานเหตุการณ์และงานเธรดอื่น ๆ นั้นดี ดังนั้นคุณจะไม่พลาด มีการสนับสนุนอย่างมากเมื่อพูดถึงเครือข่ายดังนั้นจึงขอแนะนำอีกครั้ง

โดยรวมแล้วฉันจะไปกับ C # /. NET ส่วนหนึ่งเป็นเพราะ WPF แต่ฉันชอบรหัสที่ฉันเขียนใน C # เท่าที่ฉันรู้เดลฟายไม่ได้มีอะไรเหมือน Linq ซึ่งฉันพบว่ามีค่า


ขอบคุณสำหรับการตอบกลับที่ยอดเยี่ยมของคุณ คุณอ่านหนังสือเล่มใดในฐานะผู้เริ่มต้น ตอนนี้ฉันจะเริ่มต้น C # 4 และ. NET 4 ใน VS 2010
elf1984

4
ระวังการพอร์ตแอพ Delphi ไปยัง C # ทุกครั้งที่ฉันได้ยินว่ามี บริษัท พยายามทดลองใช้พวกเขาได้ตรวจสอบทุกจุดที่โจเอลทำใน "สิ่งที่คุณไม่ควรทำตอนที่ 1" และจบลงด้วยความหายนะสำหรับผลิตภัณฑ์และ บริษัท ที่เป็นเจ้าของ
Mason Wheeler

ขออภัยฉันไม่สามารถให้คำแนะนำคุณในหนังสือผู้เริ่มต้นสำหรับ c # 4 ฉันไม่แน่ใจว่าฉันมีหนึ่งเมื่อฉันเริ่ม c # (ย้อนกลับไปใน 1.1 วันฉันแน่ใจว่ามีบางอย่าง แต่ฉันไม่ได้อ่าน) เมื่อฉันเริ่มฉันคิดว่าหนังสือเล่มแรกที่ฉันใช้คือ Teach Yourself C ++ ใน 21 วันโดย Jesse Liberty ซึ่งฉันอ่านก่อนที่ฉันจะเริ่มเรียน ฉันใช้เวลานานมากในการผ่านมัน แต่ฉันได้เรียนรู้มากมาย อีกหนังสือที่ดีที่ฉันมีคือ Discover Delphi นั่นคือหนังสือสำหรับหลักสูตร หนังสือที่ฉันแนะนำคือ Object Thinking by David West เพราะมันทำให้คุณคิดถึง OOP และ OOD จริง ๆ แล้วยังมีผลกับ C # โดย Bill Wagner ...
Matt Ellen

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

BTW หากคุณกำลังมองหา LINQ ใน Delphi ลองดูห้องสมุด DeHL ของ Alexandru Ciobanu มันมีคอลเลกชันและตัวดำเนินการสไตล์ LINQ ไวยากรณ์ LINQ (สิ่งหลอก SQL) ยังไม่ได้อยู่ใน Delphi แต่เห็นได้ชัดว่าทีมคอมไพเลอร์กำลังทำงานกับมันสำหรับการเปิดตัวในอนาคต
Mason Wheeler
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.