PDA

View Full Version : دلفی یا #C برای Desktop Application



babak_delphi
چهارشنبه 04 اردیبهشت 1387, 01:26 صبح
با سلام
نمی خوام بحث مقایسه دلفی و #C یا در کل win32 و NET. رو دوباره شروع کنم
چون در این مورد بخصوص مورد دوم قبلا خیلی بحث شده
ولی مساله ای که هست خیلی ها که دلفی کار می کنند و حرفه ای هم هستند ، باز با اینکه تو همچین بحثهایی دلفی رو برای windows application بهتر از #C می دونند ولی باز رفتن سراغ #C
مساله اینه که رفتن سراغ یک زبان جدید و قوی اصلا بد نیست ، موضوع اینه که همین افراد حرفه ای و صاحب نظر که دلفی رو برای win32 بهتر از #C می دونند ، بعضا و شاید اکثرا برنامه های windows application جدیدشون رو با #C می نویسند
چرا؟
لطفا حرفه ای ها و صاحب نظر ها مثل آقای کشاورز ، آقای وکیلی Inprise و بقیه اساتید هم همراه بقیه دوستان جواب بدند و سوالم رو بی جواب نگذارند.
ضمنا آیا سوییچ به #C رو لازم می دونید؟
منظورم برای .Windows App است.

خیلی ممنون

vcldeveloper
چهارشنبه 04 اردیبهشت 1387, 10:40 صبح
برای Win32 App که اصلا امکان استفاده از #C وجود نداره. #C فقط کد دات نت تولید میکنه!

babak_delphi
چهارشنبه 04 اردیبهشت 1387, 11:33 صبح
ببخشید اصلاح می کنم
منظورم Windows application بود
با اجازه پست قبلی را هم اصلاح می کنم تا کسانی که می خونند منظورم رو متوجه شوند
منظورم نوشتن برنامه های Windows forms (در مقابل Web application) بود

nouri2015
چهارشنبه 04 اردیبهشت 1387, 13:42 عصر
از نظر امنیت، exe های دات نت به راحتی trace می شوند، این از یک لحاظ.exe protector های دات نت زیاد قابل اعتماد نیستند

babak_delphi
چهارشنبه 04 اردیبهشت 1387, 13:58 عصر
ممنون از نظرتان
در مورد امکانات و خوانا بودن کد چطور؟
یا در مورد امکانات Debuger

B-Vedadian
چهارشنبه 04 اردیبهشت 1387, 16:08 عصر
یک واقعیت غیر قابل انکار اینه که تا چند وقت دیگه باید بریم سراغ ویستا و ... و تمام برنامه ها مون رو هم به سمت Net FrameWork. ببریم. به قول نویسنده کتاب Windows Internals برنامه های Net. نسل بعدی برنامه های ویندوز هستند. برای همین مساله امنیت چیزی نیست که بتونه مانع بشه. در ضمن برای تامین امنیت نرم افزارهای Net. هم پیش بینی هایی شده. خود میکروسافت داره نرم افزارهاش رو روی همین چارچوب پیاده سازی می کنه.

در حال حاضر که بعضی از محافظت کننده ها کدها میانی (MSIL) رو به برنامه های اجرایی محلی (همان کد ویندوز 32 بیتی) تبدیل می کنند و لذا (به جز metadata) فرقی با کدهای ویندوز 32 بیتی ندارند.

بعضی دیگه هم که کد را شدیدا obfuscate می کنند. علاوه بر رمزکننده هم برای Net. وجود داره که باعث میشه کدها زمان اجرا دیکد بشن.

روی هم رفته به لحاظ امنیت نمیشه خیلی ایراد گرفت و از این جهت که میکروسافت داره به سمت اجباری کردن استفاده از این چارچوب میره، باید کم کم ما هم سراغ همین روش بریم.

برای مثال از تبدیل کننده های زبان میانی به ویندوز 32 بیتی RemoteSoft Protector رو ببینید.:چشمک:

مهدی کرامتی
چهارشنبه 04 اردیبهشت 1387, 18:27 عصر
این مسئله از چند دیدگاه قابل بررسیه:

توسعه Win32 تا حدود زیادی متوقف شده و اگر هم صورت بگیره مایکروسافت API ارتباط با سرویس های جدید رو بندرت برای زبانهای مبتنی بر Win32 ارائه میده، اما اون API ها حتما برای دات نت ارائه میشه.

دات نت دیگه فقط یک Class Library نیست، بلکه کتابخانه های توسعه محصولات جدید مایکروسافت (مانند Sharepoint، SQL Server، Windows Servers و ...) همگی بر اساس دات نت کار میکنند، و ابزارهای برنامه نویسی و محیط های توسعه سازگار با این کتابخانه ها همزمان با ارائه اونها توسط مایکروسافت ارائه میشه.
این همزمانی ارائه و سازگاری کامل، فاکتورهایی هستند که معادل شون به سختی در محصولات برنامه نویسی شرکتهای دیگه (مثل CodeGear)یافت میشه، و اگر قرار باشد که ارائه شود ارائه اونها با حداقل 6 ماه تاخیر همراه خواهد بود، اونهم نه با کیفیت محصول معادل ارائه شده توسط مایکروسافت.
شرکت CodeGear داره سعی میکنه ابزارهایی رو به محیط های توسعه مبتنی بر Win32 اش اضافه کنه که اکثرا از قبل در محصولات توسعه تولید شده توسط مایکروسافت موجوده، اونهم با کیفیت غیرقابل مقایسه.

در مقام مقایسه، محصولات توسعه ارائه شده توسط CodeGear برای توسعه محصولات بر روی سکوهای مایکروسافت تقریبا هیچ حرف بیشتری از اونچه که مایکروسافت قبلا ارائه کرده نداره. زمانی که CodeGear هنوز بعنوان بخشی از Borland کار میکرد تلاش کرد این خلاء رو با ارائه راه کارهایی مانند محصولاتی برای افزایش کارایی Application Lifecycle Management در توسعه مبتنی بر محصولات و سکوهای مایکروسافت پر کنه (اشاره به Toghether و محصولات مرتبط با اون)، اما این حرکت ناتمام موند و توسط CodeGear هم دنبال نشد.

یکی دیگر از فاکتورهایی که زمانی بورلند رو از بقیه تولید کنندگان محصولات ویژه برنامه نویسان و توسعه گران متفاوت میکرد و باعث جلب مخاطب میشد خلاقیت بود که متاسفانه این روزها بندرت در کارهای بازماندگانش دیده میشه. افت کیفیت محصولات تولیدی و تاخیر در تطبیق محصولات با تکنولوژی های جدید هم از جمله عوامل دیگر کم شدن مخاطبین محصولات CodeGear محسوب میشن.

babak_delphi
چهارشنبه 04 اردیبهشت 1387, 18:57 عصر
بسیار خب
پس با این حساب ظاهرا شما محصولات مایکروسافت رو قویتر می دونید و مثل اینکه باید کسانی که هنور در قافلهء CodeGear و Borland هستند کم کم بند و بساط مهاجرت رو آماده کنند و منطقا NET. مقصد ما خواهد بود و فکر می کنم #C بهترین انتخاب باشه
حالا مساله اینه که آیا مستقیما بریم سراغ C# .NET یا در گذار از C# Builder به C# .NET برسیم؟
منظورم اینه که سوئیچ مستقیم از دلفی به #C زمانبره ؟
آیا بهتر نیست اول با C# Builder کار کنیم که در حقیقت حد واسط بیت #C و دلفیه (زبان #C در محیط بورلند) و بعد کلا بریم سراغ Micro$oft C#.NET یا اینکه این کار موجب هدر شدن زمان میشه و مستقیما C#.NET رو شروع کنیم؟

vcldeveloper
چهارشنبه 04 اردیبهشت 1387, 19:11 عصر
آیا مستقیما بریم سراغ C# .NET یا در گذار از C# Builder به C# .NET برسیم؟
اینها هر دو یه چیز هستند، فقط IDEشون فرق میکنه. یعنی وقتی شما با #C در IDE دلفی کار می کنید، اسمش میشه C# Builder. وگرنه از نظر Syntax فرقی با هم ندارند.

babak_delphi
چهارشنبه 04 اردیبهشت 1387, 19:25 عصر
من قبلا C# Builder را نصب کرده بودم
پس با این حساب فکر میکنم نیازی به C# Builder نباشه و باید Microsoft C#.NET رو شروع کرد
من چند وقط پیش یک کتاب آموزشی C# Express گرفته بودم که همراهش یک CD بود که نرم افزار Microsoft Visual C# 2005 Express Edition رو داشت
میرم سراغ اون
ممنون از راهنماییتون

babak_delphi
چهارشنبه 04 اردیبهشت 1387, 19:29 عصر
ضمنا من یک تاپیک در بخش ارتباط با مدیران داده بودم و نحوه اصلاح عنوان تاپیک در بخش مربوطه رو سوال کرده بودم که به من گفتند با مدیر بخش مطرح کنم
آقای کشاورز من گفتم که با شما درمیون میگذارم
می خواستم از شما درخواست کنم که دیدم اصلاح شده
اگر شما انجام دادید یا هر کس دیگه ممنون
چون مطلب مربوط به عنوان این تاپیک بود اینجا مطرح کردم
با تشکر

مهدی کرامتی
چهارشنبه 04 اردیبهشت 1387, 19:30 عصر
کسانی که هنور در قافلهء CodeGear و Borland هستند کم کم بند و بساط مهاجرت رو آماده کنند
این امر در مورد پروژه هایی که از قبل شروع شده اند تا حدود زیادی ممکن نیست، اما برای پروژه های جدید انتخاب خوبیه.


سوئیچ مستقیم از دلفی به #C زمانبره ؟
خیلی نه، سینتکس سی شارپ به دلفی شباهت زیادی داره، مثل .Net Framework که شباهت زیادی به ساختار VCL داره.

C# Builder هم همون محدودیت های IDE های CodeGear رو داره.

Cave_Man
چهارشنبه 04 اردیبهشت 1387, 19:36 عصر
این وسط اگر یه محصول بخاد روی Win32 باقی بمونه محکوم به نابودی هست؟

babak_delphi
چهارشنبه 04 اردیبهشت 1387, 19:58 عصر
این طور که از شرایط به چشم میخوره احتمالا اگر هم محکوم به فنا نباشه (حتی بعد از ویندوز 2012) رفتن سراغ NET. به صلاحه
من که از این بحث و مطالعه هایی که قبلا نیز در همین سایت کردم به این نتیجه رسیدم

1- پروژه های فعلی رو با Delphi ادامه بدیم
2- برای پروژه های جدید بریم سراغ NET.
در مورد NET. هم من که #C رو به VB ترجیح میدم

Cave_Man
چهارشنبه 04 اردیبهشت 1387, 21:56 عصر
اینم یه نتیجه گیریه واسه خودش.در جای خودش نتیجه گیری خوبیه.
در جواب پست اول شما :من فکر نمیکنم لازم باشه به دات نت برید چون مایکروسافت اونقدر احمق نیست که پروژه هایی رو که طول عمر خیلی زیادی دارن رو نادیده بگیره و توسعه APP رو یه جوری منحصر به دات نت کنه.
در اینکه دات نت امکانات زیادی رو فراهم کرده و فلسفه جالبی داره و توسعه رو روز به روز ساده تر میکنه شکی نیست ولی این مایکروسافت رو نمیتونه مجبور به حذف Win32 کنه من نگرانی از این بابت احساس نمیکنم که بخاید به این دلیل مهاجرت کنید.
احتمالا دلیل شما برای مهاجرت چیز دیگه ای هست.
اگه دلیل شما امکانات و به روز بودن هست که درش شکی نیست.

babak_delphi
چهارشنبه 04 اردیبهشت 1387, 22:07 عصر
ویندوز برای مایکروسافته و ما هم در این محیط کار می کنیم
حالا مایکروسافت تکنولوژی NET. رو بوجود آورده و به شدت حمایت میکنه
من نمیگم که win32 رو حتما کنار خواهد گذاشت (هرچند بعضی از دوستان همچین نظری دارند) ولی چون ویندوز و NET. متعلق به مایکروسافت هستند ، مسلما بیشتر از بقیه در تعیین مسیر میتونه موثر باشه و مسیر فعلی (و ظاهرا مسیر آینده) هم چیزی نیست جزNET.
پس برای اینکه از یک طرف بتونیم با مسیر و آینده همسو بشیم و از طرف دیگه از امکانات قویتر بهره مند بشیم NET. انتخاب مناسبی میتونه باشه

vcldeveloper
پنج شنبه 05 اردیبهشت 1387, 02:01 صبح
می خواستم از شما درخواست کنم که دیدم اصلاح شده
اگر شما انجام دادید یا هر کس دیگه ممنون
آقای کرامتی زحمتش رو کشیدند.


این وسط اگر یه محصول بخاد روی Win32 باقی بمونه محکوم به نابودی هست؟
نه. دات نت روی هوا بنا نشده، روی همین Win32 ساخته شده، پس اینطور نیست که Win32 محو و نابود بشه. به نظر من، موقعی برای ویندوز دو نوع برنامه وجود داشت؛ kernel mode و user mode، الان خود user mode داره به دو بخش managed code و native code تقسیم میشه. الان به جز یکسری برنامه های خاص (مثل داریورهای سخت افزاری)، مابقی نرم افزارها در user mode اجرا میشند. در آینده بخش عمده ایی از این نرم افزارها بصورت managed code خواهند بود و فقط نرم افزارهای خاصی بصورت native code نوشته میشند. پس هر چند دات نت برای سکوی ویندوز هر روز قدرتمندتر و گسترده تر میشه، اما Win32 هنوز به حیات خودش به عنوان زیرساخت دات نت ادامه میده و علاوه بر اون، در پروژه های خاصی هم بطور مستقل استفاده میشه.
به این نکته هم توجه داشته باشید که شناخت شما از Win32 موجب میشه که درک بهتری از دات نت و شزایط و امکاناتش و نحوه عملکردش داشته باشید.

nouri2015
پنج شنبه 05 اردیبهشت 1387, 07:37 صبح
با این تفاسیر به زودی CodeGear و Borland ورشکست می شند و باید بستنی فروش بشند

Valadi
پنج شنبه 05 اردیبهشت 1387, 08:04 صبح
باید بستنی فروش بشند
نیازی به بستنی فروشی نیست چون 3 یا 4 سال پیش شرکت بورلند 800 برنامه نویس حرفه ای را استخدام کرده و روی یک پروژه تحقیقاتی کار می کنند که بمحض به پایان رسیدن این پروژه دنیای برنامه نویسی می ترکونه
ضمنا محصول دانت نت مایکروسافت پروژه تحقیقاتی شرکت بزرگ بورلند بوده اما اون مسئله پیش اومد و .....
ای کاش این طور نمی شد .....

موفق موید باشید

Roya Rayane
پنج شنبه 05 اردیبهشت 1387, 08:59 صبح
سلام.
با عرض پوزش از اساتید گرامی .اگر اجازه بدهید من شاگرد هم یک مطلبی رو در این باره بنویسم.
من خودم 6 ماه میشه که به سی شارپ دات نت سوئیچ کردم. تو این این 6 ماه که دارم با سی شارپ کار می کنم به یک سری امکانات و سادگی های رسیدم که در دلفی برام این کارها خیلی سخت بود. اون اوایل سخت بود که از دلفی دل بکنم البته هنوز هم عشق دلفی رو دارم ولی باز سی شارپ دات نت چیز دیگه ای هست. الان اگه من یک برنامه با دلفی بخوام بنویسم به نظرم می یاد که سرعت برنامه نویسی در دلفی کم هست امکانات کمی در اختیارم وجود و ...
به نظر من یکی از دلایل مهمی که ما دلفی کارها به سی شارپ دات نت داریم میریم همین امکاناتی هست دات نت در اختیار ما قرار میده.
ممنون از توجه شما.

nouri2015
پنج شنبه 05 اردیبهشت 1387, 10:12 صبح
همین امکاناتی هست دات نت در اختیار ما قرار میده
اگه ممکنه چندتای اونها رو بگید

vcldeveloper
پنج شنبه 05 اردیبهشت 1387, 12:02 عصر
اگه ممکنه چندتای اونها رو بگید
امکاناتش برای ساده کردن کارها خیلی زیاد هست، مثلا همه چیز، حتی نوع داده های پایه مثل int بصورت کلاس تعریف شدند که کاربردهای زیادی میتونه داشته باشه. برای خیلی از مباحث ساختمان داده و همچنین الگوریتم ها کلاس ها و روش های بهینه ایی ایجاد شدند که برنامه نویس می تونه با کمک اونها بدون اینکه با اون مباحث آشنایی خاصی داشته باشه، کار خودش رو انجام بده. مثلا برای مرتب کردن یک آرایه کافیه بنویسه Array.Sort() و لازم نیست نگران نگران چگونگی مرتب کردن آرایه باشه، خود دات نت این کار رو براش انجام میده. برای کارهای Multi-thread در دات نت 3.5 کتابخونه Parallel Performance ارائه شده که درگیری مستقیم برنامه نویس با مسائل و مشکلات multi-threading رو به شدت کاهش میده، از طرفی امکانات فوق العاده ایی برای استفاده از توان CPUهای چند هسته ایی ارائه میده؛ یعنی برنامه نویس فقط درگیر تقسیم کار به Task های کوچکتر میشه، کارهای فنی مربوط به Thread ها، تعداد اونها و کنترل همزمانی بین اونها بصورت خودکار انجام میشه. Garbage Collection تا حدود زیادی مدیریت حافظه رو آسون میکنه. WPF به برنامه نویس این امکان رو میده که به شکل ساده ایی از امکانات DirectX برای ساخت رابط کاربر گرافیکی کاملا سفارشی استفاده کنه. اینها فقط بعضی از امکانات ارائه شده بود که به صورت رندم به ذهنم رسید و مطرح کردم.

در ضمن، دقت داشته باشید که نیازی نیست کسی بخواد بستنی فروشی یا آب نبات فروشی باز کنه. پروژه های فعلی Win32 اونقدر زیاد هستند که حتی مایکروسافت رو هم وسوسه کنند با عرضه Visual C++ 2008 در این عرصه فعالیت کنه. مسلما مایکروسافت نمیاد مثلا 10 سال کد Office رو دور بریزه و اونو با دات نت پیاده سازی کنه! حتی اگر دوره نگه داری برنامه های Win32 فعلی هم به اتمام برسه، باز هم پروژه های جدیدی خواهند بود که نیاز داشته باشند از Native Code استفاده کنند. مگه الان شرکت هایی که محصولات مرتبط با توسعه نرم افزار در Kernel Mode می فروشند، در حال توزیع بستنی هستند که CodeGear و دیگران هم بخاطر پشتیبانی از Win32 به اون کار مشغول بشند؟! البته دلفی تنها محصول CodeGear نیست. CodeGear هم برای دات نت محصولاتی داره که در جای خودشون برای افراد خاصی می تونند خیلی مفید باشند، هم امکان اینو داره که پشتیبانی دلفی از سکوهای دیگه مثل لینوکس رو در آینده افزایش بده، هم میتونه روی محصولات دیگه مثل JBuilder و Delphi for PHP و... مانور بده.

nouri2015
پنج شنبه 05 اردیبهشت 1387, 12:35 عصر
ببینید استاد اگه مزایای سی شارپ آسون کردن کد نویسی هست VC++ بدترین زبان است بنده برنامه کنترل رباط را با سی شارپ نوشتم حدود 1.5 طول کشید متاسفانه مجبور شدم به دلفی تبدیل کنم 2 ماه وقتم رو صرف convert کردن اون گذاشتم.
به خاطر اینکه برای این زبان برای برنامه نویسی low level نیست و بسیار کند است دوست عزیز ، سورس برنامه من رو جلوی خودم باز کردند.
اگر امنیت .net قرار است درست شود شرکت سان برای جاوا چرا کاری نکرده؟

vcldeveloper
پنج شنبه 05 اردیبهشت 1387, 20:17 عصر
ببینید استاد اگه مزایای سی شارپ آسون کردن کد نویسی هست VC++ بدترین زبان است بنده برنامه کنترل رباط را با سی شارپ نوشتم حدود 1.5 طول کشید متاسفانه مجبور شدم به دلفی تبدیل کنم 2 ماه وقتم رو صرف convert کردن اون گذاشتم.روی مباحث پرش نکنید! کاربری از سادگی و امکانات بالای دات نت صحبت کرد، شما هم تقاضای مصادیق آن را کردید که جواب داده شد.
بحث اینکه کدوم Low Level هست، کدوم Performance اش بالاتر هست، ربطی به روند برنامه نویسی در سکوی ویندوز نداره. در این زمینه قبلا بحث شده و برای همچین چیزی نیاز به تاپیک جدید نبود!


بسیار کند استکیفیت و کارایی JIT مرتبا افزایش پیدا میکنه. سرعتش برای کاربردهایی که براش در نظر گرفته شده خوب هست.

سورس برنامه من رو جلوی خودم باز کردند. دات نت ادعا نکرده بود که حفاظت از کدهای شما رو هم برعهده میگیره! هر کسی مدتی دات نت کار کرده باشه و باهاش آشنا باشه، میدونه چطور باید از کدهاش محافظت کنه.


اگر امنیت .net قرار است درست شود شرکت سان برای جاوا چرا کاری نکرده؟اینها قرار هست ربطی هم به هم داشته باشند؟!

دقت کنید که اگه قرار باشه این تاپیک به محلی برای بیان درد دل و یا بالا بردن دات نت به عرش اعلی، یا کوبیدن آن به زمین سفت تبدیل بشه، تاپیک قفل میشه.

موضوع تاپیک اینه، آیا مهاجرت به دات نت برای برنامه نویس ویندوز ضرورت داره، و آیا Win32 برچیده خواهد شد؟

Mahdi-563
جمعه 06 اردیبهشت 1387, 14:51 عصر
از اساتید عزیز مخصوصا آقای علی کشاورز که لطف کردن و مطالب مفید قرار دادان متشکرم.

دوستان منم حدود دو یا سه ساله که دارم با دلفی کار می‌کنم طبیعا در این مدت تجربیات جالب و قشنگی توی این زبان داشتم و دل کندن ازش خیلی واسم شخت بود.
ولی خوب از همون اول هم قرار نبود ما تا آخر عمرمون با یه زبان همه کارامون را انجام بدیم و آن زبان تا همیشه باشه.
حدود یکسال پیش بود که از یه نفر که فقط با دلفی 7 کار کرده بود شندیم که دلفی دیگه داره منسوخ میشه، این جمله خیلی واسم مضحک بود ولی خوب اعلان دیگه یه جورایی شاید در آینده‌ای نچندان دور شاهد این موضوع باشیم.

منم مثل بقه دوستان حدود چند ماهیه که سی شارپ رو شروع کردن و به این نتیجه رسیدم که آی کاش زود تر با این زبان بسیار جالب آشنا می‌شدم. و در حین کار متوجه شدم که این تجربه و اطلاعاتی که از دلفی داشتم تویه این زبان هم یه جورایی کاربرد داره. واقعا که ماکروسافت سنگ تموم گذاشته.

من به دوستان دلفی کار پشنهاد می‌کنم که هم زمان در حین کار #C رو هم شروع کنن. و برای منبع هم میتونن از کتاب جامع و کامل استاد هاشمیان استفاده کنند و اگه هم با زبان مشکل ندارید از کتاب های زیادی تسط انشارت اپرس هست که بسیار مفیده