نقل قول: C# vs. Delphi
نقل قول:
نوشته شده توسط
حسین شهریاری
بله. جالب بود.
به نظر من مقایسه ی زبان ها به اطلاعات آدم اضافه می کنه. به شرطی که به حاشیه کشیده نشه.
به نظر من هر زبانی نسبت به زبان دیگه یک سری برتری هایی داره. به هر حال #C هم برتری هایی نسبت به دلفی داره.
در اینجا چند تا مسئله را مطرح می کنم که امیدوارم کسی با تعصب باهاشون برخورد نکنه.
نقل قول:
C# can only access the default indexed properties. In Delphi Prism, you can define and use other indexed properties using their name.
این رو نفهمیدم. میشه بگید منظورش چیه؟
اگه درست یادم باشه Set ها از زمان پاسکال وجود داشتند و نه اینکه در دلفی ظهور کرده باشند. البته نمی دونم با توجه به داشتن کلاس های جنریک مثل List با امکانات کافی و همچنین قابلیت ارتقا چه نیازی به set ها هست.
جالب به نظر می رسه.
این جور که من برداشت کردم، برنامه را برای محاسبه ی چیزی متوقف نمی کنه مگر اینکه محاسبه ی اون تمام نشده باشه و ازش استفاده کنیم. درسته؟
این کار گاهی یک جور سر هم بندی به نظر می رسه.
نقل قول:
Inline Property Accessors
شما توی #C هم می تونی چند خط رو توی یک خط بنویسی که همون کار رو بکنه:
public int X {set; get;}
public int X {get{return L+R;}}
نقل قول:
Class References
دقیق متوجه نشدم.
نقل قول:
"implies" operator
اگه درست متوجه شده باشم منظورش اینه که در شرط ها عبارات بی تاثیر محاسبه نمی شوند. که خوب #C هم همین طور هست.
این یک تغییر در ظاهر هست و نه در اصول عملکرد.
نقل قول:
Property Notifications
این را هم متوجه نشدم.
نقل قول:
Enhanced Nullable Types
اغلب خوبه.
البته گاهی هم وضعیت را برای برنامه نویس سخت می کنه.
نقل قول:
improved 'for each' loop
انصافا قابلیت خوبیه.
خانواده های زبان C در for بی نظیر هستند ولی در foreach مثل یک زبان معمولی می شوند.
نقل قول:
'locked' directive
می دونم thread safe چیه. ولی خیلی از مکانیزمش اطلاع ندارم و نمی تونم نظر بدم.
نقل قول:
Extended Constructor Calls
این رو هم که خودش جواب خودش رو داد.
نقل قول:
Boolean Double Comparison
از همون روز های اول کار با زبان ++C با خودم می گفتم کاش چنین قابلیتی وجود می داشت. البته نمی دونم این قابلیت ابهامی در تفسیر کد می تونه به وجود بیاره یا نه.
نقل قول:
Iteration delegation
به نظر من این کار لزومی نداره. با کد نویسی درست کار حله. yield از کلمات بسیار نادر در #C هست. سالی یک بار باهاش برخورد می کنیم.
می تونی داخل متد چیزی ننویسی! خرجش یک کاراکت هست( دو کاراکتر ضرر سر {} و یک کاراکتر سود سر semicolon ی که نمی نویسیم).
نقل قول:
Exception Filters
تا حدودی موافقم. اما اگه هم از شرایط یک استثنا خوشت نیومد می تونی دوباره اون رو از داخل خود catch پرتاب کنی!
نقل قول:
raising/firing events
این کار اصولی به نظر نمیاد. همچنین به ندرت ممکنه این کار نیاز بشه. فوقش میشه یک متد داخل همون کلاس ساخت که با صدا زدن اون متد، رویداد را فعال کند.
البته اینها نظر شخص من هست. خواهشا دوباره یک عده عصبانی نشند.