عدد 30 عدد مطلق و جالبی بود
خوشحال میشوم در ادامه، نظرات خود را با دلیل و برهان بیاورید.
امنیت یک برنامه به زبان برنامهنویسی آن وابسته نیست.
مهمترین دلیل برای داشتن یک برنامهٔ ایمن، طرز کار و روشهای بکاربردهشده در برنامه است.
اگر مخالف این مورد هستید تا هماکنون بر سر آن بحث کنیم
. نداشتن bound checking برای آرایهها در ++C یا نداشتن مدیریت حافظه، اینها به معنای ایجاد کنندهٔ مشکلات امنیتی
نیست به عبارتی یک برنامهنویس ++C یا C کارش را خوب بلد است (در واقع ++C و بخصوص C اینطور انتظار دارد)، کنترل اینها هم ساده است و تقریبا هیچوقت یک برنامهنویس باتجربه آنها را فراموش نمیکند. ضمن اینکه یک برنامهنویس باتجربهٔ ++C در اکثر مواقع از استفادهٔ مستقیم از اشارهگرها برحذر میکند. بنابراین شما هم از آنها استفاده
نکنید، چه کسی گفته که برای برنامهنویسی در ++C حتماُ باید کنترل مدیریت حافظه را بر عهده داشت (چرا باید بطور مستقیم از اشارهگر استفاده کنبد، لطفا قبل از اعتراض به این جملهٔ من، گوگل کنید
)؟
مدیریت خودکار حافظه، آرایههای دینامیک به همراه اندازهٔ مشخص، نوع جدید برای رشتهها، برنامهنویسی reflective (که در سیشارپ و پایتون و جاوا ممکنپذیر است)، وجود خصوصیات و eventها و غیره، ایجاد محیطی امن برای برنامهنویسی و جلوگیری از انجامدادن برنامهنویسی خطرناک، اینها خوب هستند ولی نه به معنای مطلق. همهٔ اینهایی که من نوشتم را میتوانید با ++C کسب کنید در ظاهری متفاوت از آنچه در ++C و جاوا و ... وجود دارند و به روشی متفاوت.
اما یک تفاوت وجود دارد، ++C اجازه میدهد شما بصورت خطرناک هم برنامه بنویسید چونکه شما میدانید چه دارید میکنید. آرایههای C امن نیست؟ از vector استفاده کنید. از array (در tr1) استفاده کنید. اشارهگرها خوب نیستند؟ از آنها بطور غیر مستقیم استفاده کنید (این نکتته بسیار مهم است). مدیر حافظه میخواهید؟ ۱) طوری در ++C برنامه بنویسید که نیازی به مدیریت مستقیم حافظه نباشد (نگویید که اینکار ممکن نیست). ۲) از روشهایی که برای مدیریت حافظه وجود دارد استفاده کنید. یا اینکه ۲) از کلاسهای shared_ptr و auto_ptr و ... یا از هر آنچه که میخواهید استفاده کنید یا اینکه خودتان یکی بنوسید. الان میدانم در ذهن خود میگویید «چطور بنویسم! این کار طاقتفرسایی است!» اما واقعیت این است که اگر بدانید چگونه اینکار امکان پذیر است، این حرف را نمیزنید.
متاسفانه خیلیها فکر میکنند روش برنامهنویسی در ++C دقیقا همان C است! به عنوان یک نکته، ++C کاملا به C وابسته نیست. آرایهها در ++C کلاس vector یا کلاس array یا list یا ... هستند. ++C روش برنامهنویسی مخصوص و خاص خود را دارد. نکته دیگر اینکه در ++C مدیریت حافظه بصورت خودکار نیست چون نیازی هم به آن نیست. شما از کلاسهای تعریف شدهٔ استاندارد استفاده کنید اگر از استفادهٔ مستقیم از اشارهگرها برحذر کنید. آن وقت هیچوقت به یک memory management نیاز نخواهید داشت (مگر در شرایطی که احتیاج به اشتراکگذاری یک مقدار از حافظهٔ heap را داشته باشد).
به غیر از بحث امنیت و مدیریت حافظه و ... که گفتم، برنامهنویسی ++C با استفاده از ابزارها و کتابخانههای آماده درست است به اندازه سیشارپ سریع نیست ولی به اندازهٔ کافی rapid است، خوشبختانه هم Gtk هم Qt دارای برنامهٔ designer هستند. فکر میکنم MFC در ویندوز هم یک طراح دارد. قابلیت auto completion هم که اکثر ویرایشگرهای جدید دارند.
این چیزهایی که من در بالا گفتم (روش برنامهنویسی در ++C و وجود ابزارها برای توسعهٔ سریعتر)، در رد طاقتفرسا بودن کار با ++C بود.