PDA

View Full Version : کوچ از Delphi 7 به Delphi 8 ؟؟؟



miladnoori67
سه شنبه 06 اسفند 1387, 13:44 عصر
سلام
من میدونم که دلفی 8 روی بستر net. کار میکنه
و میخوام از این به بعد با ورژن 8 کار بکنم. چون فکر میکنم چند تا مزیت داره.
1 . فایل نهایی به سادگی دی اسمبل نمیشود.
2 . برنامه نویسی روی بستر net. است که اینطور که من فهمیدم تکنولوژی اون شبیه به جاوا هستش و روی همه پلتفورمها برنامه اجرا میشه. درسته؟
حالا شما بگید که آیا این کارو بکنم یا نه؟

Developer Programmer
سه شنبه 06 اسفند 1387, 14:15 عصر
این چه سئوالیه که میپرسی؟ ما باید بگیم کوچ کنی یا نکنی؟
دلفی 8 رو استفاده کن ببین به دردت میخوره یا نه... دلت خواست استفاده کن... دلت خواست استفاده نکن

miladnoori67
سه شنبه 06 اسفند 1387, 15:43 عصر
منظورم این بود که چیزهایی که گفتم درسته یا نه؟

Nima NT
سه شنبه 06 اسفند 1387, 15:56 عصر
فایل نهایی به سادگی دی اسمبل نمیشود.
برعکس به سادگی هم دی اسمبل میشود و عوض کد اسمبلی دقیقا" سورس کد شما رو تحویل میده :لبخند:

Nima NT
سه شنبه 06 اسفند 1387, 15:59 عصر
به نظر من اگر میخوای کوچ کنی , به RAD Studio 2009 کوچ کن , البته نسخه WIN32 اون.
درمورد دات نت هم بهترین ها متعلق به مایکروسافت هست , بهتره برای دات نت از #C شروع کنی.

Delphi-Man
سه شنبه 06 اسفند 1387, 18:40 عصر
برعکس به سادگی هم دی اسمبل میشود و عوض کد اسمبلی دقیقا" سورس کد شما رو تحویل میده :لبخند:
ببخشید میشه بگین چطوری این کار انجام میشه :متفکر: و آیا در دلفی 7 هم این امکان وجود داره؟ :افسرده:

Nima NT
سه شنبه 06 اسفند 1387, 20:11 عصر
ببخشید میشه بگین چطوری این کار انجام میشه :متفکر: و آیا در دلفی 7 هم این امکان وجود داره؟ :افسرده:

برای اینکار ابزاری به اسم Reflector وجود داره , این کار فقط رو برنامه های کامپایل شده تحت دات نت امکان پذیره , یعنی اگر شما با دلفی مخصوص دات نت برنامه خودت رو کامپایل کنی جواب سوال دوم مثبت هست ولی اگر با دلفی مخصوص Win32 , جواب منفی هست و فقط میشه کد های اسمبلی برنامه رو استخراج کرد.
تمامی برنامه های دات نتی این مشکل رو دارن , در بازگشت سورس کد هم درصد خطا تقریبا" صفر هست.

Mehdi Asgari
سه شنبه 06 اسفند 1387, 20:46 عصر
تمامی برنامه های دات نتی این مشکل رو دارن
چطور به این نتیجه رسیدی که قابلیت مشاهده ی متادیتا و سورس کد برنامه های کامپایل شده به MSIL ، یک عیب محسوب میشه ؟
این مشکل! مربوط به برنامه های دات نت نیست ، کلا دات نت فریم ورک by design اینطوره، یعنی با هر ابزاری (از IL تا C# و وی بی) اگه کد برای پلتفرم دات نت بنویسی ، چون متادیتا ذخیره میشه و نیز فرمت فایل های اجرایی IL هست نه X86 ، پس قادر به مشاهدۀ کد خواهی بود (تا حالا جاوا کار نکردم ، ولی فکر کنم جاوا هم همینطوره). اصلا System.Reflection چیه ؟

برای اینکار ابزاری به اسم Reflector وجود داره
درسته. البته بهتر بود ILdasm (http://msdn.microsoft.com/en-us/library/f7dy01k1(VS.80).aspx) (IL disassembler )h رو هم می گفتی (چون همراه ویژوال استودیو نصب میشه و مثل رفلکتور نیاز به دانلود جداگانه و نصب نیست)

در بازگشت سورس کد هم درصد خطا تقریبا" صفر هست.
Obfuscation (http://en.wikipedia.org/wiki/Obfuscated_code)
قبل از دات نت هم میشد کد رو دید ، فقط به کد اسمبلی بود (سخت تر بود ، ولی امکانش بود. چرا اون موقع نمی گفتید مشکل ؟)
همین قابلیت یا به قول شما مشکل ، می دونی چقدر کارایی مثل static analysis رو راحت تر کرده ؟ (چون می دونم به اینطور چیزا علاقه داری ، از این مثال زدم وگرنه مثال های زیادی میشه زد که متادیتا کار نوشتن ابزار های جانبی رو راحتتر می کنه)

توجه: برای ادامۀ این بحث لطفا یک تاپیک جدا درست کنید. چون ربطی به سوال دوستمون (مهاجرت به دلفی 8) نداره

Nima NT
سه شنبه 06 اسفند 1387, 21:35 عصر
چطور به این نتیجه رسیدی که قابلیت مشاهده ی متادیتا و سورس کد برنامه های کامپایل شده به MSIL ، یک عیب محسوب میشه ؟این مساله اگر از دید مهندسان ماکروسافت یک تکنولوژی باشه , برای برنامه نویس یک مشکل محسوب میشه , چون امنیت برنامه رو به شدت تهدید میکنه , و هر چیزی که تهدید کننده باشه مشکل به حساب میاد.

قبل از دات نت هم میشد کد رو دید ، فقط به کد اسمبلی بود (سخت تر بود ، ولی امکانش بود. چرا اون موقع نمی گفتید مشکل ؟)به این خاطر که اون موقع سورس کد منتشر نمیشد , یعنی فرقی نمیکنه شما با دلفی یا وی بی برنامه نویسی , کدی که من می بینم اسمبلی هست ولی در مورد دات نت مساله کاملا" فرق میکنه.
برنامه IL disassembler فقط سورس IL رو بیرون میکشه و قدرتی در بازگرداندن Syntax نداره ولی Reflector میتونه این کار رو انجام بده.


تا حالا جاوا کار نکردم ، ولی فکر کنم جاوا هم همینطوره
بله دقیقا" جاوا هم همین طوره.

استفاده از برنامه Obfuscate هم نمیتونه 100% جلوی بازگشت رو بگیره , چون کراکر ها میتونن حتی بعد از اعمال این لایه امنیت باز به سورس اصلی دسترسی پیدا کنن.
البته در مواردی

Nima NT
چهارشنبه 07 اسفند 1387, 01:29 صبح
نه آقا این چه حرفیه , هرکسی نظری داره و نظرش هم محترمه.
آقا مهدی استاد بنده هستن.

----
این پست 24 ساعت بعد حذف خواهد شد.

Mehdi Asgari
چهارشنبه 07 اسفند 1387, 02:38 صبح
البته اینجا بحث نظر شخصی نیست ، داریم بحث علمی می کنیم (و چه بهتر بعضی از دوستان ، بحث های کوچه بازاریشون رو بذارن برای جاهایی غیر از این فروم)
ببین ، در برنامه نویسی (و کلا دنیای کامپیوتر) واژه ای هست به نام tradeoff که معمولا بین دو چیز مطرح میشه. مثلا بین میزان حافظۀ مصرفی و سرعت برنامه ؛ یا حجم فایل و سرعت اجرا ؛ یا امنیت و سرعت ....
طراحان دات نت هم مجبور بودن عطای برخی از امکانات رو به لقاشون ببخشن (در عوض به دست آوردن مزایای دیگر. به این میگن design consideration )
در مورد امنیت شبکه گفتی. میخوام بدونم این که ما یک رانتایم بر اساس یک IL مشترک داشته باشیم چه تهدیدی برای امنیت شبکه محسوب میشه ؟ (فرض می کنم که در مورد CAS و Code signing و CLR و AppDomain و .... اطلاعات داری)
هیچ وقت نمیشه جلوی یک کراکر رو کاملا گرفت . ابزار obfuscation (مخصوصا تجاری هاش) خیلی می تونن کار کراکر رو سخت کنن.
بحثمون از اینجا شروع شد که گفتی این یک مشکله.
اگه می شد همین قابلیت ها رو روی x86 (یا هر معماری دیگه ای) پیاده سازی کرد ، احتمالا همون کار رو می کردن ، ولی نیاز به ساختار های سطح بالاتری داشتن که مجبور شدن یک پلتفرم ایجاد کنن (که خیلی ویژگی ها داره از جمله GC)

vcldeveloper
چهارشنبه 07 اسفند 1387, 04:00 صبح
دلفی 8 مربوط به عهد عتیق هست! اگر میخواید دات نت کار کنید، باید برید سراغ Delphi Prism که نسخه دات نتی دلفی هست، و از تمام قابلیت های دات نت پشتیبانی میکنه. البته روی Visual Studio نصب میشه.
اگر می خواید دات نت کار کنید، ولی نمیخواید با Visual Studio کار کنید، یا می خواید یک پروژه موجود را از Win32 به دات نت منتقل کنید، یا میخواید همچنان روی دات نت از VCL برای تولید رابط کاربر استفاده کنید (بجای WinForms یا WPF)، می تونید از Delphi.Net استفاده کنید. Delphi.Net از Delphi Prism قدیمی تر هست و در دلفی 2005 تا 2009 موجود هست. با IDE دلفی کار میکنه، ولی فقط دات نت 2.0 را پشتیبانی میکنه.


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


برنامه نویسی روی بستر net. است که اینطور که من فهمیدم تکنولوژی اون شبیه به جاوا هستش و روی همه پلتفورمها برنامه اجرا میشه. درسته؟
بطور تئوری میشه که کدهای دات نت را روی هر بستری که CLR دات نت روی آن پیاده سازی شده باشه، اجرا کرد. اما رسما مایکروسافت فقط از دات نت روی ویندوز پشتیبانی میکنه. پروژه های اوپن سورسی برای فراهم کردن امکان اجرای برنامه های دات نت روی بسترهای دیگه مثل لینوکس یا Mac OS در جریان هستند، و برخی از آنها مثل MONO هم موفقیت هایی بدست آورند، ولی همچنان از پیاده سازی مایکروسافت برای ویندوز بسیار عقب تر هستند، و نمیشه به همه بخش های آنها کاملا اطمینان کرد.
در واقع شعار دات نت با شعار جاوا کاملا فرق میکنه؛ مایکروسافت چون خودش بزرگترین تولید کننده سیستم عامل هست، برای دات نت امکان برنامه نویسی با زبان های مختلف تحت یک پلت فرم (ویندوز) را تبلیغ می کند، برای همین هم می بینیم که زبان های مختلف نسخه ایی هم مخصوص دات نت ارائه می کنند. Sun برای جاوا شعار یک زبان برنامه نویسی برای چند پلت فرم را تبلیغ می کند، یعنی شما فقط با زبان جاوا برنامه می نویسید، ولی می توانید برنامه تولید شده را روی هر پلت فرمی که جاوا را پشتیبانی کند، اجرا کنید.
هر دو تکنولوژی تا حدودی در حوزه تبلیغ یکدیگر حرف هایی برای گفتن دارند، مثلا دات نت در تئوری امکان اجرا شدن روی پلت فرم های مختلف را دارد، و برای جاوا هم این امکان هست که کد سایر زبان (غیر از جاوا) را به بایت کد جاوا تبدیل کرد، مثل پروژه MIDletPascal که با آن به زبان پاسکال برنامه نویسی می کنید، ولی برنامه خروجی بایت کد جاوا می دهد، و میتوانید برنامه را روی هر گوشی موبایلی که از جاوا پشتیبانی می کند، اجرا کنید.
هر دو تکنولوژی جاوا و دات نت برای اجرا نیاز به یک کتابخانه زمان اجرا دارند که باید روی سیستم کاربر نصب باشد، وگرنه برنامه اجرا نمی شود. در این زمینه، کدهای Native نیازی به کتابخانه های خارجی برای اجرا بر روی یک سیستم ندارند.

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

miladnoori67
چهارشنبه 07 اسفند 1387, 15:55 عصر
آقای کشاورز مزیتهای net. چه چیزایی هستند؟
و دقیقا جه فرقی با نسخه معمولی دارند؟
یا net. چیست؟

vcldeveloper
چهارشنبه 07 اسفند 1387, 17:50 عصر
مزیتهای net. چه چیزایی هستند؟
و دقیقا جه فرقی با نسخه معمولی دارند؟
یا net. چیست؟
در همین تالار و تالارهای دات نت تاپیک های متعددی برای جواب دادن به این سوال وجود دارند.