آیا C # سخت تر از C ++ است
هیچ یک از پاسخ ها واقعا نمی تواند معنی دار باشد، زیرا این دو رویکرد کاملا متفاوت به مشکلات را نشان می دهد.
#C یک زبان نسبتا کوچک با یک کتابخانه بسیار بزرگ است. یادگیری زبان خود نسبتا سریع و آسان است، اما این تنها بخش کوچکی از آنچه که لازم است یاد بگیرد که چطور با آن برنامه خوبی داشته باشیم. بسیاری از یادگیری استفاده از #C به خوبی در واقع یادگیری دات نت است. اساسا، دات نت کتابخانه استاندارد شما با #C (و فروشگاه VB.NET و غیره) است. در حالی که برخی از معانی آن چگونگی مرتب سازی آن وجود دارد، بیشتر این موارد صرفا حفظ مقدار زیادی اطلاعات است.
++C بزرگتر است (اما بر خلاف باور عمومی، نه به شدت بزرگتر) زبان با یک کتابخانه بسیار کوچکتر است. کتابخانه نیز تقریبا بیشتر از هم متصل است، بنابراین بیشتر استفاده می شود شامل حفظ بسیار کمتر و قوانین بسیار بیشتر استفاده می شود. بله، بسیار شبیه به زبان انگلیسی، تقریبا تمام قوانین دارای حداقل یک استثناء هستند و حتی استثنائات نیز وجود دارد. با این حال، اغلب موارد استثنایی، مواردی هستند که در برنامه نویسی واقعی بوجود می آیند.
بخشی دیگر از این تفاوت این است که #C در مورد ابزار بسیار بیشتر است. بسیاری از افرادی که در ++C نوشتن می کنند، از چیزهایی مانند Vi و emac استفاده می کنند، اغلب با کم و یا هیچ کمکی به آنها برای نوشتن این زبان خاص متخصص نیستند. این موضوع فشار زیادی بر روی زبان ارائه می دهد تا ویژگی های لازم را فراهم کند تا بیشتر refactoring شود (و در کد که به خوبی نوشته شده * است *) محدود به چند بخش کوچکی از کد است.
تقریبا همه کسانی که از #C استفاده می کنند می دانند که در ویژوال استودیو می نویسند و بیشترین استفاده از حداقل یک (و اغلب چند) افزودنی ها را به VS نیز دارند (اگر شما از آن استفاده نکرده اید ReSharper به ویژه توصیه می شود).
با این حال، تفاوت های زیادی در مدیریت حافظه وجود دارد. ++C (به جای معروف / بدبختانه) از مدیریت دستی حافظه استفاده می کند، در حالی که #C مدیریت می شود (به عنوان مثال، از یک جمع کننده زباله استفاده می کند). حداقل در تجربه من، این تصویر نزدیک به واقعیت است. وقتی ++C را نوشتم، تقریبا هرگز درباره مدیریت حافظه * یا سایر منابع * فکر نمیکنم. وقتی که من #C (یا جاوا) را وارد می کنم، مدیریت حافظه کمی بیشتر از ++C است و مدیریت منابع دیگر نسبتا دردناک است. این جنبه نیز غالبا بیش از حد مورد تحسین قرار گرفته است: هرچند ++C(به طور خاص، RAII) مدیریت کلی منابع را به طور کلی ساده تر می کند، تفاوت به اندازه کافی برای ایجاد تفاوت بزرگی بین دو کل وجود ندارد.
حداقل به نظر من، اکثریت قریب به اتفاق مقایسه ها بین دو تا حدی اندکی و وحشتناک گمراه کننده است. به یک برنامه نویس ++C که به تکه های کوچک و با استفاده از چیزهایی مانند پارامترهای الگو قالب را با استفاده از الگوریتم کاملی از قطعات کوچک تر ترکیب می کند، #C به نظر می رسد یک ابزار بی نهایت در بهترین حالت (و به طور کلی ژنرال #C).
در عوض، به یک برنامه نویس #C که به داشتن یک انتخاب بین نیمی از ده ابزار مختلف برای انجام هر یک از چند صد اصلاح مجدد، عادت کرده است، نوشتن ++C به نظر می رسد به طور معمول به عنوان یک فرایند بسیار دستی، با ابزار لبه پاره شده بین primitive و کاملا غیر قابل استفاده .
هر کدام تمایل به نگاه کاملا دوری از دیگری دارند. زمان و تلاش زیادی برای جدا کردن ابزارها از ذهن خود به اندازه کافی برای مقایسه دو عنصر در تمام طول می کشد.