Delphi vs C # для програмування GUI [закрито]


20

Я приходжу з PHP та Python фону з невеликим знанням C, я зробив багато веб-додатків, зараз я думаю про Desktop для Windows платформи.

Друг сказав мені поїхати за Delphi, а інші кажуть, що C # - найкраще, що я шукаю

  1. Простота
  2. Продуктивність
  3. Гарна документація API
  4. Швидкість
  5. Перетягнути і кинути
  6. Багатопотоковий та хороший мережевий API

Спасибі

Відповіді:


20

Delphi, безумовно:

  1. Простота - синтаксис Delphi заснований на Паскалі, який був чітко розроблений, щоб його було легко вивчити, і він може виконати цю обіцянку. C # 's заснований на сім'ї C, яка ... ну ... не була .
  2. Продуктивність - Delphi є нащадком Turbo Pascal, і він все ще має найшвидший відомий людині компілятор, який значно підвищить вашу продуктивність. Плюс у цьому є налагоджувач Visual Studio бажає, щоб його налагоджувач був таким, як підросте. Особливо в останній версії Delphi налагодження набагато простіше.
  3. Хороша документація API - «API» - це досить розпливчасте слово в наші дні, яке охоплює всілякі речі. Я припускаю, що ви маєте на увазі бібліотеки, і ось це щось на зразок обмацування. Як рамки .NET, так і стандартні бібліотеки Delphi мають хорошу онлайн-документацію та посередню, складну документацію в режимі офлайн. (Наслідок того, що команда Delphi вирішила використовувати ту саму жахливу довідкову систему, що і Visual Studio, від якої вони, сподіваємось, відійдуть у наступній версії.)
  4. Швидкість - Delphi перемагає легко. Він компілюється в нативний код (швидше виконання та набагато швидший запуск, оскільки немає фази JIT), і він не використовує керовані покажчики, тому доступ до об’єктів швидший і менш кероване.
  5. Перетягування - вбудована функція VCL.
  6. Багатопоточна нитка - Delphi має вбудований клас потоку, але якщо ви хочете робити складні речі з одночасністю, є кращі варіанти. Прімоз Габрієльчич, член спільноти Delphi, працював над чудовою бібліотекою одночасності, до якої я допоміг. Він забезпечує підтримку на високому рівні для загальних цілей різьблення, таких як об'єднання завдань, паралельні петлі FOR та багатоступеневі процеси трубопроводу.
  7. Хороший мережевий API - Delphi постачається разом з Інді, зрілою бібліотекою з відкритим кодом, яка дозволяє легко встановити та керувати Інтернет-з'єднаннями. Ми використовуємо це на роботі, щоб забезпечити рівень комунікацій для провідного в галузі додатка, про який ви, мабуть, ніколи не чули, якщо ви не працюєте в широкомовних ЗМІ.
  8. Розгортання - цього не було у вашому списку, але варто згадати. Там все ще є системи, у яких не встановлена ​​.NET рамка. За замовчуванням Delphi збирає свою стандартну бібліотеку в EXE, а потім використовує smartlinker для видалення деталей, які ви не використовуєте, в результаті чого невеликі EXE, які не мають залежностей від масивних бібліотек виконання, вагою в сотні МБ, які матимуть ваші користувачі завантажувати та встановлювати окремо.

2
@Elf: Можливо, буде доступно більше робочих місць на C #, але за них також конкурує набагато більше людей. У кваліфікованих розробників Delphi не виникає проблем з пошуком роботи.
Мейсон Уілер

5
C # базується не лише на C ++, а й на Delphi та Java. Я теж навчився програмуванню в Паскалі, і дуже багато його філософії бачу в C #. Щодо керованих покажчиків, які ви отримали на зворотному напрямку, то немає керованого доступу до даних через керовані вказівники, а їх зміна відбувається швидше, ніж у системі, що використовує підрахунок посилань.
Гуффа

12
Легкий у вивченні синтаксис Delphi - це абсолютно суб'єктивне твердження. Я був обурений синтаксисом Delphi, і вирішив не вивчати його з цієї причини.
Тярт

8
-1: Ця відповідь упереджена, як божевільна. Відладчик Visual Studio принаймні такий же хороший, якщо не кращий, ніж Delphi. Документація Delphi є невимогливою порівняно з тим, що MSDN є найкращою документацією коли-небудь.
marco-fiset

4
Розгортання - повний збій. Deplhi вимагає Windows, так що це крок назад від C #. C # - портативний та багатоплатформенний завдяки Mono. Delphi - ні. Вам не потрібно купувати Windows для запуску програми, написаної на C #, яка не використовує явно бібліотек Win32. Простота - теж невдача. Синтаксис C # дуже легко читати, дуже стисло та легко писати. Delphi - ні. Документація API - пекло ні! Якщо я напишу "веб-сервіс 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.Threading та System.Net

Я не маю великого досвіду роботи з Delphi, і я просто говорю про свій досвід роботи з C # загалом. Там, де я працюю, у мене надзвичайно жорсткі терміни, передбачені непрограмістами, і я в змозі надзвичайно швидко викачати лінійку бізнес-настільних додатків. В останні три тижні я перейшов від специфікації до розгортання на двох програмах LOB winforms. Продуктивність для розробки графічного інтерфейсу в C # з VS просто божевільна.


4
Дякуємо, згідно з публікацією на daniweb.com/forums/thread54305.html , інтеграція API Win32 та повнота в Delphi перевершує навіть C
elf1984

2
ви дійсно повинні заглянути в Delphi, якщо ви думаєте, що C # - це найкраща середовище розробки для швидкого створення настільних додатків. Я особисто ненавиджу це, коли мені доводиться створювати настільні речі з візуальною студією, але в наші дні у мене не завжди вибору (на жаль).
Wouter van Nifterick

1
Інструменти RAD (форма дизайну) Visual Studio відсмоктують, відверто кажучи.
Warren P

1
@WarrenP Чи можете ви, будь ласка, детальніше розглянути?
Тіарт

1
Створіть серверну програму в C # та створіть настільний додаток у Delphi, оскільки delphi створює нативний код, який важче зламати!
justyy

14

В обох є всі 6 балів, які ви хочете, але я думаю, що C # має перевагу у більшості, якщо не у всіх.

Щоб пройти пункти:

  1. Delphi вимагає управління пам'яттю, тому ви можете стверджувати, що одне лише робить C # простішим. Прийнята відповідь тут згадує синтаксис, добре, що синтаксис C # схожий як на PHP, так і на Java, тому якщо ви хочете швидше вставати та працювати з будь-якого з цих фонів, тоді C # має перевагу.
  2. Продуктивність, я думаю, ви швидше зробите роботу на C #. Бібліотека .net дає вам стільки, що в погані старі часи я повинен був би звернутися до сторонніх компонентів delphi, щоб надати.
  3. Документація, Delphi завжди була хорошою, MSDN - кращою, плюс ви знайдете більшу спільноту для підтримки, дивіться мою аналогію переповнення стека нижче.
  4. Швидкість, Delphi може мати перевагу в цьому, але збірка козиряє все, тому це, як правило, не є вагомим приводом для вибору мови. Я хотів би зазначити одне, що я чув, що люди цитують, що C # інтерпретується. Це не так, ніколи не було, у нього завжди був JIT.
  5. Перетягування, доступне для обох.
  6. Багатопотоковість, Delphi хороша, але C # відмінна тим, що створює такі конструкції, як lock(){}паралельні розширення та нові await.

Додатковою точкою, назвою питання є програмування графічного інтерфейсу, тому що я є великим шанувальником .nets WPF, який, єдине, що було у Delphi, було на півдорозі - Bold , що боліло приручити і тепер мертве.

Розмір спільноти, порівнюючи кількість запитань щодо цього та переповнення стека на тегах Delphi та C #, ви побачите, що розмір спільноти C # набагато більший.

Переповнення стеку:

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

Я додав c, щоб показати, що це не проблема з віком мов, а Javaпросто для порівняння.

Я не фанат C # або Java, я був великим шанувальником Delphi, професійним розробником чистих Delphi протягом 7 років, але вони насправді накрутили його з 2005 року, з тим, що їх невдало нападало. IDE для навіть рідної 32-бітної компіляції. На мою думку, Delphi 7 була піком мови.


Як щодо відповіді з цією головою?
Вестон

1
Я не прихильник, але я б сказав, що ви не відповідаєте на питання. Ви щойно оцінюєте популярність Delphi на stackoverflow. Ви впевнені, зазначаєте, але це ІМХО зовсім другорядне. Бути єдиним, хто використовує технологію, не завжди є поганою справою.
Саймон Берго

@ Справедливий момент Сімона, я зараз відповів на всі питання та інтегрував аналіз кількості запитань у більш широкий пункт про розмір громади.
Вестон

Можна стверджувати, що мова, в результаті якої виникає більше запитань, є складнішою у використанні. ;-) Як Bold схожий на WPF? Я використовував WPF і не бачив подібності.
Джим Маккіт

@JimMcKeeth І Bold і WPF забезпечують основу для прив'язки даних до елементів управління інтерфейсом, щоб при зміні даних інтерфейс користувача оновлювався і навпаки, якщо потрібно.
weston

8

Коли я був в університеті, мене навчали програмуванню з Delphi. Я трохи іржавий, але зараз читаю багато коду Delphi, щоб перенести його на додаток C #.

Я дуже віддаю перевагу OO з функціональними нахилами C # над процедурними з OO нахилами Delphi. Ви повинні врахувати, як ви віддаєте перевагу кодування, обираючи між ними. Я не думаю, що в цьому є багато чого, коли мова йде про простоту - просто те, що вам легше. Те саме стосується продуктивності.

Що стосується RAD (швидка розробка додатків), між winforms та дизайном GUI Delphi не так вже й багато. Вони нагадують мені один про одного.

З іншого боку, WPF - це те, що я віддаю перевагу над обома своїм декларативним стилем.

Я не думаю, що між якістю та охопленням наданої постачальниками документації для C # або Delphi немає великої різниці. Я думаю, що ви знайдете більше інформації про постачальника про C #, але це могло бути просто тому, що я не дуже багато шукав на шляху Delphi.

Мені не доводилося робити жодного потокового програмування з Delphi, і будь-яка мережа, яку я робила, була років тому, і я не можу згадати.

Хороші бібліотеки .NET для паралельної обробки, подій та інших потокових робіт. Таким чином, ви там не пропустите. Існує велика підтримка, коли справа стосується мереж, тому знову настійно рекомендується.

Загалом, я б пішов з C # /. NET. Частково це пов’язано з WPF, але також я віддаю перевагу коду, який пишу в C #. Наскільки я знаю, дельфі не має нічого подібного до Linq, що я вважаю безцінним.


Дякую за чудову відповідь. яку книгу ви читали як початківець? тепер я буду починати C # 4 і .NET 4 на VS 2010
elf1984

4
Обережно намагайтеся перенести додаток Delphi на C #. Кожного разу, коли я чула про те, щоб будь-яка компанія намагалася це зробити, вони закінчували перевірку кожної точки, яку Джоел робив у "Речах, яких ти ніколи не повинен робити, частина 1", і це закінчилося катастрофою для продукту та компанії, яка йому належить.
Мейсон Уілер

Вибачте, я справді не можу порадити вам книгу для початківців для c # 4. Я не впевнений, що в мене був такий, коли я починав с # (ще за 1,1 дня. Я впевнений, що були такі, але я не читав). Коли я почав, я вважаю, що першою книгою, яку я використав, було "Навчи себе С ++" за 21 день Джессі Ліберті, яку я прочитав ще до того, як запустив універсал. Щоб пережити це, мені знадобилися віки, але я багато чому навчився. Ще одна гарна книга, яку я мав, була «Дізнайся Дельфі», це була книга для курсу. Книга, яку я рекомендую, - «Об’єктне мислення» Девіда Веста, оскільки це насправді змушує задуматися про OOP та OOD, а також про ефективний C # від Білла Вагнера ...
Метт Еллен

... Вони насправді не книжки для початківців, але коли ви маєте основи, вони мають чудові поради та поради щодо того, як стати кращим програмістом.
Метт Еллен

До речі, якщо ви шукаєте LINQ в Delphi, перегляньте бібліотеку DeHL Олександру Чобану. Він пропонує колекції та оператори в стилі LINQ. Синтаксис LINQ (псевдо-SQL) ще не знаходиться в Delphi, але, очевидно, команда компілятора працює над цим для майбутнього випуску.
Мейсон Уілер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.