مروری بر Delphi 2009 و مهاجرت به آن

۱۳۸۷/۱۲/۰۶ ۱۵:۴۷ Salar https://www.blogger.com/profile/08261083424775464146 منتشر شده در تاریخ : ۱۳۸۷/۱۲/۰۶ دسته بندی : ، ، 11

Delphi 2009

بعد از Delphi 7 که در زمان خودش (2001) کم نظیر بود نسخه های بعدی اون بسیار ضعیف ظاهر شدند. مخصوصا که شرکت Borland قصد داشت تا به سمت دات نت حرکت کند و این مورد به علت سیاست های ماکروسافت موفقیت پیدا نکرد. به هر حال پس از قضایای شرکت زیر مجموعه CodeGear و خریده شدن آن توسط Embarcadero سیاست دلفی تغییر کرد و مانند گذشته بر روی برنامه های سرویس دهنده و سرویس گیرنده تحت دسکتاپ تمرکز کرد.

اما اونچه که مد نظر من هست بررسی نسخه 2009 و ارزش مهاجرت به این زبان هست. برای همین باید اولین مورد یعنی به بررسی امکانات بپردازیم.

IDE
محیط توسعه دلفی در زمان نسخه 7 کامل بود ولی گذشت زمان نیازهای جدیدی رو مطرح می کرد که به تدریج به اون اضافه کرد. اما نسخه های مختلف عرضه شده بعد از اون بسیار ناپایدار بودند.
Delphi 7 بسیار پایدار است. تا حدی که به شخصه در مدت چهار سال استفاده کمتر از چند مورد با کرش مواجه شده بودم.
Delphi 8 بر روی توسعه دات نت تمرکز داشت
Delphi 2005 بسیار ناپایدار تا حدی که در برخی مواقع در کامپایل کردن هم باز می ماند.
Delphi 2006 همچنان ناپایدار ولی بهبودهایی حاصل شده بود.
Delphi 2007 همراه با ایجاد شرکت CodeGear بود و پایداری قابل قبولی داشت
Delphi 2009 نسخه فعلی که پس از خریده شدن CodeGear توسط embarcadero عرضه شده و پایداری خوب و قابل قبولی دارد دارد.

بررسی تعدادی از ویژگی ها Delphi 2009

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

Resource Compiler
امکان اضافه کردن انواع فایل را به Resource مانند فایل یا تصویر به پروژه می دهد. پس از آن میتوان به این منابع از طریق کد دسترسی پیدا کرد. اگرچه این امکان قبلا نیز با تنظیم فایل های .res وجود داشت ولی هیچ ابزار UI برای آن در نظر گرفته نشده بود.

Refactor
این ویژگی بر میگردد به دو نسخه قبلی از دلفی ولی با این حال بسیار قابل توجه است. امکانات استاندارد Refactoring در این قسمت در نظر گرفته شده است. همچنین امکان Find Unit که در صورتیکه به دنبال تابعی هستید که نمی دانید در کدام Unit معرفی شده است می توانید از این مورد استفاده کنید.

پشتیبانی از Unicode
تمامی کنترل ها و محیط ویرایشگر دلفی از یونیکد پشتیبانی می کنند.

نتیجه
با توجه به پیشرفت های ذکر شده، با این حال محیط توسعه دلفی در مقایسه با محیط هایی مانند Visual Studio و Netbeans بسیار ضعیف عمل می کند و آنطور که انتظار می رود به خود کارسازی کارها کمک نمی کند.

زبان دلفی

زبان دلفی سه ارتقاع مهم داشته است. پیتیبانی از Unicode و Generic ها و پشتبانی از Anonymous متد ها یا متد های بی نام.

Generic ها این امکان را می دهند تا کلاس یا نوعی خاص بتواند در هنگام تعریف ورودی از هر نوعی را بپذیرد تا بتوان در هنگام استفاده نوع مورد نظر را تعریف کرد. یک نمونه مثال مانند زیر خواهد بود:
type
TPair<TKey,TValue>= class
private
FKey: TKey;
FValue: TValue;
public
function GetKey: TKey;
procedure SetKey(Key: TKey);
function GetValue: TValue;
procedure SetValue(Value: TValue);
property Key: TKey read GetKey write SetKey;
property Value: TValue read GetValue write SetValue;
end;

type
TSIPair = TPair<String,Integer>;
TSSPair = TPair<String,String>;
TISPair = TPair<Integer,String>;
TIIPair = TPair<Integer,Integer>;

متد های Anonymous
این نوع متدها بی نام تعریف می شوند و امکان ارجاع آنها به عنوان ورودی تابع با متغیری از نوع تابع وجود دارد. در این حالت امکان تعریف تابع درون کد تابع دیگر وجود خواهد داشت. برای مثال می توان به جای تعریف متدی جدید و سپس ارجاع آن به عنوان ورودی یک تابع دیگر، در همانجا تابع بی نام را تعریف کرده و به ورودی پاس کنیم.
این نمونه مثال از راهنمای دلفی است که به ویژگی MyEvent یک تابع بی نام اختصاص می دهد:
type
TProc = reference to procedure;
TMyComponent = class(TComponent)
private
FMyEvent: TProc;
public
property MyEvent: TProc read FMyEvent write FMyEvent;
end;

// function declaration
// http://salarblog.wordpress.com

var
c: TMyComponent;
begin
c := TMyComponent.Create(Self);
c.MyEvent := procedure
begin
ShowMessage('Hello World!');
end;

end;

پشتیبانی از Unicode
پشتیانی از Unicode مقداری برای دلفی سخت بود، چرا که شیوه ای که ذخیره کردن رشته ها در دلفی مورد استفاده قرار می گیرد، اگرچه سریع است ولی انعطاف کمی دارد. به هر حال این تغییر اعمال شده است. کامپوننت هایی که از رشته ها به عنوان بافر استفاده می کنند مطمئنن دچار مشکل خواهند شد چرا که روش ذخیره بافر مورد استفاده برای رشته در دلفی 2009 متغیر است و بستگی به نوع رشته دارد.

برای پشتیبانی از Unicode چند کلاس و نوع جدید ایجاد شده اند. کلاس TEncoding که شامل انواع تبدیلات است و نوع جدید UnicodeString که به طبع آن انواع مشابه و وابسته شامل WideString, AnsiString, ShortString,UTF8String و انواع اشاره گرهای آنها با پیشوند P.

دو Unit جدید WideStrUtils و WideStrings نیز برای کار و تبدیلات انواع رشته های یونیکد در نظر گرفته شده است. همچنین برای سازگاری با نسخه های قبلی دلفی نیز دستور کامپایلر UNICODE تعریف شده که استفاده از آن مانند زیر است:
{$IFDEF UNICODE}

اگر راهنمای دلفی را نصب کرده اید اینجا را برای انتقال پروژه خود به Unicode مطالعه کنید:
ms-help://embarcadero.rs2009/devcommon/enablingunicode_xml.html

کلاسهای افزوده شده:
در این میان چند کلاس کاربردی برای کار با Stream ها همانند TStringReader ، TStringWriter ، TStreamReader و TStreamWriter اضافه شده اند.
کنترل TButtonedEdit که کاربردی هم هست به همراه کنترل های زیر اضافه شده اند:
TButtonedEdit and TCategoryPanel (TPanel with a header to collapse and expand the panel) added to the ExtCtrls namespace
TCategoryPanelGroup, a container control that contains one or more collapsible panels
TCharacter class added to new Character namespace
TLinkLabel to add HTML links to a text label
TTListGroup, TListGroups to support groups on a list view
TEncoding and TStringBuilder added to SysUtils namespace (see A. Lanusse's Blog about TStringBuilder)
TCustomHint added to Controls namespace; added TBalloonHint inheriting from TCustomHint
TStringReader and TStringWriter added to Classes namespace to read and write strings using TTextReader/Writer interface
TStreamReader and TStreamWriter added to Classes namespace to read and write streams using TTextReader/Writer interface
http://salarblog.wordpress.com

اما مهمترین کنترل که به چشم میاد کنترل Ribbon با استفاده از کلاس TRibbon هست. این کنترل که ظاهر Office 2007 را شبیه سازی می کنند به راحتی و بدون نیاز به سایر کنترل های افزودنی قابل استفاده است.

راهنما
در این مورد دلفی بسیار بد عمل می کند. گرچه نسبت به نسخه های قبلی موارد بیشتری را پوشش می دهد  و راهنمای دلفی برای موارد اساسی خوب است ولی بیشتر مواقع که نیاز به مثال است هیچ مثالی ذکر نشده است.
در بیشتر مواقع نیز توضیحات بسیار ناقص هستند و در بخی مواقع اصلا توضیح وجود ندارد و فقط با جمله ای مانند This is SQLState, a member of class SQLException مواجه می شوید.

آیا از نسخه های قبلی مهاجرت کنیم
تجربه تلخ نسخه های مشکل دار قبلی کاربران را در امر مهاجرت با تردید مواجه کرده ولی ورژن 2009 از دلفی واقعا می تواند دلفی 7 دیگری باشد. همانطور که آمار نیز نشان می دهد درصد حرکت به Delphi از زمان عرضع نسخه 2009 بیشتر شده است.

موانع ارتقاء به 2009
مهمترین مانع پشتیبانی از یونیکد است. ممکن است در پروژه خود از ابزاری استفاده کرده باشید که مربوط به نسخه های قبلی دلفی باشد در این ممکن است که آن ابزار به خاطر عدم پشتیبانی از یونیکد در دلفی 2009 با مشکل مواجه شود.
در اینگونه مواقع باید منتظر باشید تا نسخه سازگار عرضه شود.

مهاجرت از سایر پلتفرم ها
بلی این مورد واقعا امکانپذیر است. شاید فکر کنید که دلفی در مقابل مجموعه عظیم امکانات و ابزارهای dotNET Framework و یا مجموعه Java کم خواهد آورد. ولی واقعا این طور نیست.
اگرچه دلفی در برخی مقوله های مانند برنامه نویس برای وب همانند مورد مشابه ASP.NET و JSP و برنامه نویسی فریم ورک هایی مانند WPF به طور جدی وارد نشده است اما اگر این موارد را در نظر نگیریم در برنامه نویسی تحت ویندوز دلفی تمامی موارد مورد نیاز را دارا می باشد.
دلفی تمامی موارد مورد نیاز را از پایه دارا می باشد و تنها نکته مهم در مورد ان این است که در فریم ورک هایی مانند dotNET مجموعه کلاسها و توابع به طور منسجم و یکپارچه تحت عنوان فریم ورک جمع اوری شده است. این درحالی است که مجوعه بسیار زیادی از ابزارهای کاربردی رایگان و پولی در سراسر برای دلفی وجود دارد.

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

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

همچنان دلفی می تواند قدرت Cpp را همراه با سادگی زبانهای سطح بالا در اختیارتان قرار دهد.

نوشته های سایر وبلاگ نویسان در مورد Delphi 2009
آیا دلفی 2009 می تواند دلفی 7 دیگری باشد!؟

Delphi و سیر نزولی آن در مقابل محصولات Microsoft

مروری بر Delphi 2009 و مهاجرت به آن

کتابهایی برای Delphi 2009
Delphi 2009 Handbook

 

11 بازخورد برای “مروری بر Delphi 2009 و مهاجرت به آن”

  1. عالی بود، حیف که یک کم دیر بود. به هر حال مشکل بزرگ دلفی IDE بسیار ضعیف اون هست و داره قربانی همین مشکل هم میشه. چون در این چند سال بقیه برنامه نویسان به محیط های ویژوال استادیو و اکلیپس روی آورده بودن. حالا براشون خیلی سخته با این IDE واقعاً ضعیف کار کنن.
    در هر صورت همونطور که گفتی، الان دلفی 2007 و 2009 نسخه های پایداری هستن و گزینه های مناسبی برای توسعه برنامه های کاربردی مبتنی بر ویندوز خواهند بود. من الان دو تا پروژه خوب با این دو نسخه دارم توسعه میدم. فقط مشکلات IDE اذیتم میکنه که اونم به عشق دلفی نادیده میگیرم.
    -------------------
    ممنون. دیر شد چون می خواستم که در عمل کارایش رو ببینم که البته نمره قبولی گرفت.
    در مورد IDE هم مطمئنن نویسندگانش بی کار نخواهند نشت.

    پاسخحذف
  2. بی نقص بود ، لذب بردم........

    ممنون

    پاسخحذف
  3. سلام
    خداقوت دوست عزیز
    خسته نباشی
    انشاءالله همیشه وبت پروپیمون باشه
    لطفابه وبلاگ منم یه سری بزن
    من کلکسیونی دارم که بیش از1300مقاله وتحقیق رایگان روگردآوری کردم
    منتظرحضورت هستم
    یاعلی

    پاسخحذف
  4. مرسی از مطلبت،
    ای كاش از ضعفهای IDEدلفی هم می‌نوشتی كه البته فكر نمی‌كنم به شدت ضعيف باشه!

    پاسخحذف
  5. من هم برنامه هاي زيادي در دلفي 7 نوشتم ولي براي ادامه راه هنوز نمي دانم بايد چكار كنم
    عشق به دلفي نمي گذارد به چيز ديگري فكر كنم. ولي ترس كمي هم دارم كه نكند در 2009 به مشكل بخورم و نتوانم حل كنم .دو دلم .
    --------------------
    اگه از رشته ها به صورت بافر استفاده نکرده باشید، مشکلی نخواهید داشت. کتاب Delphi and Unicode رو هم از آدرس زیر دریافت و مطالعه کنید:
    http://edn.embarcadero.com/article/38980

    پاسخحذف
  6. سلام
    نقد و بررسی بسیار خوبی بود. ممنون. امیدوارم که دلفی 2009 واقعا بتونه جای دلفی 7 رو بگیره. من هنوز از دلفی 7 استفاده می کنم و به تازگی یک نسخه از دلفی 2009 رو خریداری کردم. اما از کرکی که داخل پکیج قرار دادن خوشم نمی یاد. فکر می کنم که مشکل داره. آیا شما راهی برای فعال کردن دلفی 2009 که موثر باشه دارین؟ اگه کمک کنید ممنون می شم.
    اگر راه مناسبی دارین از طریق sajad.b@gmail.com بام تماس بگیرید.
    بازم ممنون.

    پاسخحذف
  7. سلام
    خسته نباشيد
    عالي بود

    پاسخحذف
  8. دستتون درد نکنه ما که عشق دلفی هستیم این اشکالات کوچیک دلفی 2009 رو ندیده میگیریم

    پاسخحذف
  9. سلام من مي خواهم از دلفي 2009 استفاده كنم ولي در سورس هاي قبلي از ريپورت بيلدر استفاده كردم و اكنون نياز به رپپورت بيلدر رجيستر شده ه دلفي 2009 دارم اگه كسي مي تونه لينك شرو برام بزاره يا فايلشرو برام ايميل كنه

    متشكرم ايميل من mahdy.asia@gmail.com

    پاسخحذف