# Native Code > برنامه نویسی با C > برنامه نویسی در محیط QT و هم خانواده هایش >  قدرت Qt در بازی سازی

## کامبیز اسدزاده

سلام

امروز من حال و حوصلم سر رفته بود گفتم یه بازی نصب کنیم بازی کنیم .... دیدیم Q ها همه جای بازیرو گرفته  :قهقهه:  جالب اینجاست بازی که دیدم چیز کوچیکی نبود ! تصویر رو ببینید اسمش مشهوره :ی 

به نظر من همینکه جدیدترین بازی ها رو با استفاده از این فریم ورک مینویسن خودش نشانگر آینده خوبی از Qt هست.

خودتون ببینید طبق تصویر من که کلی حال کردم !  :متعجب:  :لبخند گشاده!:

----------


## pswin.pooya

آینده Qt که خوبه. اما به شرط اینکه به applicationهای کاربردی مثل نرم افزارهای دیتابیس و ... بیشتر توجه کنه. مثلا من هنوز نتونستم یه ریپورتر درست و حسابی مثل stimul در سی شارپ براش پیدا کنم. یا همنوز کامپوننتهای جامعی مثل دانت بار و یا تلریک رو نداره.. تیم توسعه حتما باید این موارد رو در نظر بگیرن. 

در حال حاضر واقعا Qt خوب عمل کرده. امکانات جالبی داره. qml به تمام معنا فوقالعاده است. تنها مونده کامپوننتها جانبی و ... که اگر اونها هم بیان من خودم شخصا فورا سی شارپ رو کنار میذارم. راستش همین امروز سفارش یه پروژه گرفتم. و الان چند ساعتی هست درگیر این قضیه هستم که با Qt اون رو کار کنم یا سی شارپ.

----------


## 9128783

من ميخوام بازی bombermanرو با کیوت بنویسم.ولی نمیدونم باید چیکار کنم.اصلا نمیدونم باید کارهای گرافیکی ش رو چطور انجام بدم.لطفا راهنماییم کنید

----------


## کامبیز اسدزاده

در رابطه با دیتابیس منم پدرم در اومد به زور MySQL رو کانکت کردم ولی ریپورت گیری و اینجور چیزا خیلی سخته در حالی که با C#‎‎‎‎‎‎‎ یه برنامه سنگین دارای دیتابیس رو در عرض چند ساعت میشه نوشت... ولی چاره ای نیست من خودم بدجوری زوم کردم رو کیوت...

ولی من پیشنهاد میکنم اینکه تو بازار کار ایران C#‎‎‎‎‎‎‎ جا افتاده و مشتری اصلا فرق C#‎‎‎‎‎‎‎ رو با C++‎‎‎‎‎‎‎ نمیدونه حالا بر فرض اینکه با C++‎‎‎‎‎‎‎ نوشته باشیم مشتری قانع نمیشه و هیچوقت حاضر به درک فرق سرعت و عملکرد این گزینه

----------


## کامبیز اسدزاده

> من ميخوام بازی bombermanرو با کیوت بنویسم.ولی نمیدونم باید چیکار کنم.اصلا نمیدونم باید کارهای گرافیکی ش رو چطور انجام بدم.لطفا راهنماییم کنید


دوست عزیز شما میتونید از OpenGl استفاده کنید. فقط نوشتن بازی و گرافیک های 3 بعدی نسبت به App نویسی سخت تر هستند.

اینم منبع رسمی  برای شروع : http://qt-project.org/videos#c-90

----------


## pswin.pooya

> ولی من پیشنهاد میکنم اینکه تو بازار کار ایران C#‎‎‎‎‎ جا افتاده و مشتری  اصلا فرق C#‎‎‎‎‎ رو با C++‎‎‎‎‎ نمیدونه حالا بر فرض اینکه با C++‎‎‎‎‎ نوشته  باشیم مشتری قانع نمیشه و هیچوقت حاظر به درک فرق سرعت و عملکرد این گزینه


نه اتفاقا

خیلی از مشتری ها از سرعت پایین سی شارپ به شدت شاکی هستن و مثلا برنامه هایی رو که با دلفی نوشته شده رو ترجیح میدن ( اکثر مشتری ها سیستم های ضعیف و قدیمی دارن. من برنامه خودم رو مشتری رو یه سیستم با رم ۲۵۶ زده بود‌). از طرف دیگه خیلی راحت میشه دل و روده برنامه های سی شارپ رو بیرون ریخت که خودش یه خطر دیگه به حساب میره برای بازار.

اما در مقابلش Qt هم ضعف های خودش رو داره:
۱. همین کامپوننتها ( حالا سرعت توسعه رو میشه با ORM و اینها بالا برد)
۲. مساله جدی تر هندل نشدن overload ها و خطاهای اعشاری هست. که میتونه توی برنامه ها خیلی خیلی جدی باشه ( مخصوصا حسابداری )

اما در کل هرکه طاوس خواهد جر هندوستان کشد. باید قبول کنیم که از نظر امکانات، سرعت و انعطاف پذیری C++‎ حرف اول رو میزنه اما در مقابلش این مشکلات هم وجود دارن.

----------


## کامبیز اسدزاده

> نه اتفاقا
> 
> خیلی از مشتری ها از سرعت پایین سی شارپ به شدت شاکی هستن و مثلا برنامه هایی رو که با دلفی نوشته شده رو ترجیح میدن ( اکثر مشتری ها سیستم های ضعیف و قدیمی دارن. من برنامه خودم رو مشتری رو یه سیستم با رم ۲۵۶ زده بود‌). از طرف دیگه خیلی راحت میشه دل و روده برنامه های سی شارپ رو بیرون ریخت که خودش یه خطر دیگه به حساب میره برای بازار.
> 
> اما در مقابلش Qt هم ضعف های خودش رو داره:
> ۱. همین کامپوننتها ( حالا سرعت توسعه رو میشه با ORM و اینها بالا برد)
> ۲. مساله جدی تر هندل نشدن overload ها و خطاهای اعشاری هست. که میتونه توی برنامه ها خیلی خیلی جدی باشه ( مخصوصا حسابداری )
> 
> اما در کل هرکه طاوس خواهد جر هندوستان کشد. باید قبول کنیم که از نظر امکانات، سرعت و انعطاف پذیری C++‎‎ حرف اول رو میزنه اما در مقابلش این مشکلات هم وجود دارن.


مطمئنان هیچ زبانی پیش C++‎‎ نمی تواند ادعا کند زیرا این زبان به تنهایی یک زبان قدرتمند بشمار میاد و وابستگی به هیچ نوع زبان دیگری رو هم نداره خودش زبان تولید میکنه که نتایج یکی از بهترین زبان های همین PHP روی وب هست که به کمک C++‎‎ روز به روز سرعت و کیفیتش رو تو درنیای وب به رخ زبان هایی مثل ASP میکشه.

البته نباید گفت C++‎‎ بدون مشکل هست بزرگترین مشکلی که داره سطح پایین بودن و سخت بودن درک این زبان هست که این موجب شده برنامه نویسان زبان های دیگه ای رو ترجیح بدن و این به این معنی نیست و از نظر من هیچ عیبی به شمار نمیادچون سخت بودن در نتیجش کیفیت و سرعت خارق العاده خروجی برنامه توسط این زبان است.

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

والا یه نمونه ساده : من هر بار رفتم یه برنامه تو C++‎‎ با ویژوال استدیو بنویسم هر کاری کردم دیدم در نهایت متکی فرم ورک ویندوزی هست :| آخه یعنی چی الانم ورداشته روی Modern UI با CLI قاطیش کرده که چی بشه ؟ مثل این میمونه که ++ هاشو ورداری :| در این صورت همون C#‎‎ تو دنیای ویندوز بهتر جواب خواهد داد... و باز برای این خوشحال باید باشیم که این زبان دوباره داره به سوی جایگاه اصلیه خودش حرکت میکنه مثل قدیم ندیما که همه چیز در انحصارش بود :D

----------


## pswin.pooya

> البته نباید گفت C++‎‎‎‎ بدون مشکل هست بزرگترین مشکلی که داره سطح پایین  بودن و سخت بودن درک این زبان هست که این موجب شده برنامه نویسان زبان های  دیگه ای رو ترجیح بدن و این به این معنی نیست و از نظر من هیچ عیبی به شمار  نمیادچون سخت بودن در نتیجش کیفیت و سرعت خارق العاده خروجی برنامه توسط  این زبان است.


البته سر سطح زبان درگیریهای جدی وجود داره. بعضی از متخصصین معماری مثل پروفسور پیترسون معتقد هستند که زبانهای یا سطح بالا و یا سطح پایین هستن و همچین تعریفی رو اراپه میکنن:

سطح پایین: هر دستور دقیقا به یک دستور ماشین ( صفر و یک ) تبدیل میشه
سطح بالا: هر دستور می تونه به چند دستور ماشین تبدیل شه.

طبق این تعریف C/C++‎‎ از نظر سطح در رده زبانهایی مثل سی شارپ ( یعنی سطح بالا قرار می گیرن). البته باید اشاره کنم که از نظر رده بندی و نسل شناسی توی رده های متفاوت قرار میگیرن. 

من فکر می کنم این تعریف درسته و میشه به درستی زبانها رو باهاش دسته بندی کرد. (هیج جای ابهامی نمی ذاره‌).

درسته کار با C/C++‎‎ سختر از سی شارپ هست. اما این نه بخاطر سطح زبان بلکه برعکس بخاطر الگوی استفاده است. C++‎‎ هیچ الگویی نداره و شما برای الگو رو تعیین میکنید که در نتیجه باعث میشه خیلی از برنامه نویسها گیج بشن. اما برعکس سی شارپ از الگوی برنامه های کامپوننت گرا تبعیت میکنه که باعث آسونی اون میشه. اگر از Qt استفاده کنید تقریبا سختی این دو زبان در یک سطح قرار می گیره.




> ولی من فکر میکنم شرکت های مثل Nokia یکی از دوستداران این زبان بوده و در  حالی که میدیدن قدرت و اصالت این زبان داره توسط دستکاری های مایکروسافت از  بین میره و یواش یواش جاشو میده به زبان های مثل دات نت که اصلا من یکی  نمیپسندممممممم اقدام به توسعه این زبان و خارج کردن انحصار مایکروسافت در  این دوره زمونه هست...و باید به این کار Digia گفت احسنت !


یکی از استاید خیلی معروف ایران دکتر پارسا است که من یکسری رفتم سر کلاسش. اون هم مثل من معتقد بود که خیلی زود دوران زبانهای CLI مثل جاوا و سی شارپ تموم میشه. علت این امر اینه که محدودیتهای سخت افزاری و فیزیکی به زودی آشکار میشن از طرف دیگه نیاز و انتظار از برنامه ها بالا میره که در نتیجه اینجور زبانها دیگه جوابگو نخواهند بود.

جالب اینه که دز چند ساله اخیر نرخ پیشرفت کامپیوترها بشدت کاهش پیدا کرده و از 52 درصد در سالهای 1980 تا 2004 در هر ۱۸ ماه به 20 درصد رسیده و بازهم کاهش از ۲۰۰۸ به بعد هم بیشتر بوده. اگر دقت کنید الان چند ساله که corei7 توی صدر جدول میکرو پردازنده های خانواده x86 است. دلیل این امر بیشتر وجود محدودیت های فیزیکی است. در سالهای اخیر بجای اینکه سرعت پردازنده ها افزایش پیدا کنه. تعداد هسته افزایش پیدا کرده که به تنهایی فقط به معنای افزایش گذردهی است. البته تعداد هسته هم بعد از مدتی دیگه نمی تونه افزایش پیدا کنه و دلیل اون بزرگتر شدن سیلیکون دای است که اگر از یک حد خاص بزرگتر بشه نتها قیمت تمام شده پردازنده افزایش چشم گیر پیدا میکنه. بلکه عملا ساختش غیر ممکن میشه. 

در حال حاضر تحقیقات زیادی داره انجام میشه. در آینده نه چندان دور یا ما یک انقلاب نرم افزاری ( مثلا برای قدوم اول اون حذف CLI) و یا یک انقلاب سخت افزاری رو تجربه خواهیم کرد. مثلا امکان داره در ساخت ترانزیستورها تکنولوژی جدیدتری مثل ترازیستورهای نوری ( تغییرات سازمانی بزرگ ) و یا اینکه متدهای جدیدتری در چیپ ها مثل شبکه بر روی تراشه یا مدارات برگشت پذیر رو تجربه کنیم ( تغییرات معماری بزرگ )

به هر حال با توجه به محدودیتهای موجود که خیلی هم جدی هستن. اگر از تغییرات سخت افزاری خبری نباشه در آینده خیلی نزدیک از معماری هایی مثل x86 ( که CISC هستن ) خبری نخواهد بود. خیلی از نرم افزارهای امروزی ( مثلا شاید ویندوز ) هم نخواهند بود و ... .

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

----------


## کامبیز اسدزاده

دقیقا بله حرف آخر رو زدین اینکه با پیشرفت علم در شاخه سخت افزار مخصوصا پردازنده ها و مدارات الکتریکی مدیریت اینها نیازمند زبان های مادر و واقعا سطح پایین که قدرت مدیریت سریع و نزدیک رو با سخت افزار داشته باشند که در این میان مسلما زبان هایی مثل C#‎‎ و Java قادر به مدیریت چنین چیزی رو نخواهند بود.

مخصوصا با این سرعتی که علم سخت افزار و هوش مصنوعی داره پیشرفت میکنه در کنارش اگه دقت کنید زبان C++‎‎ واقعا پیشرفت های خوبی داشته و همگام با پیشرفت سخت افزاری این زبان در هر نسخه ای که توسعه پیدا میکنه پیشرفت های بسیار جالبی رو داشته مثل نسخه های اخیر مثل C++‎‎11 و 12 که ابهامات و نواقص بسیار زیادی در این نسخه ها رفع شده است و حال اینکه چهارچوبی قدرتمند مثل Qt با این زبان همکاری کنه دیگه باید 100% آینده بسیار خوبی رو داشته باشه.

در رابطه با مایکروسافت هم به نظر من داره به صورت 1 دندگی عمل میکنه نمیخواد از خر شیطون بیاد پایین ولی من مطمئنم بعد از شکستی که روی ویندوز 8 و مخصوصا رو PC خواهد خورد اونوقت نظرش رو عوض و حد اقل نسخه استاندارد C++‎‎ رو روی IDE خودش یعنی VS تعبیه خواهد کرد یعنی چاره ای نداره اگه این کارو نکنه مایکروسافت میشه ارباب بچه ها :) من خودم یه عمر برنامه نوشتم حالا رفتم رو زبان سطح پایین که اصلا در حیته مایکروسافت نیست هدف اول روی سیستم عامل های X11 و بعد در نهایت حال کردیم رو ویندوز کار خواهیم کرد. یجورایی باید گفت مثل ASP که اعتراف کرد پیش PHP حرفی برای گفتن نداره این ضعفش رو هم در CLI قبول خواهد کرد.

در کل با دیدن چنین صحنه ها و خبر هایی از پیشرفت این زبان همراه با چهارچوب Qt باید خیلی خوشحال و امیدوار باشیم.

----------


## کامبیز اسدزاده

یه چند ماه پیش من یه استادی داشتم که از دوره دبیرستان میشناختمش اون زمان ها بهم میگفت برید دنبال زبان های مثل C++‎‎ و PHP بعد از مدتی چند روز پیش در رابطه با یه پروژه ای باهاش مشورت کردم گفتم استاد نظرت چیه با C++‎‎ کار کنم هرچند سخت هست و شاید سرعت تولید و توسعه پروژه پایین باشه ولی من موندم که با چه زبانی بنویسم... این استاد برگشت یه حرفی زد و رفت تو مخم همونجا بود که برای همیشه این زبان رو انتخاب کردم.

*حرفش این بود : زبان C++‎‎ یک زبان مادر هست تنها زبانی هست که متکی به هیچ زبانی نبوده و به تنهایی توانایی ارتباط با سخت افزار رو دارد و تنها از نظر من برنامه نویس یعنی C++‎ کار زیرا تنها زبانی هستش که اجازه تفکر به برنامه نویس میده / یعنی محدودیت نداریم ! قانون چهارچوب نداریم ! درگیری با سیستم عامل نداریم !* 

در حالی که زبان های مثل جاوا و C#‎‎ متکی به چهارچوب هستند.... حالا به اینم اشاره کنم شاید دوستان فکر کنند C++‎‎ با استفاده از Qt متکی شده یا وابسته به چهارچوب شده ! در این مورد واقعا فرق میکنه زیرا C++‎‎ یک زبان هست و Qt یک چهار چوبی هست که با استفاده از قدرت C++‎‎ مانور میده ولی C#‎‎ و غیره... به تنهایی قادر به نوشتن حتی یک خروجی ساده نیستند.

در کل میشه گفت با وارد شدن Qt به این دوره زمونه مانور دادن با C++‎‎ خیلی بهتر شده یعنی میشه گفت Qt تنها چیزی بود که میتونست نگرانی و ناراحتی های بسیاری از برنامه نویسان را در رابطه با سخت بودن در طراحی و تولید فرم ها و کار با گرافیک داشتند و حال خوشبختانه با داشتن Qt این نگرانی ها داره از بین میره.

----------


## کامبیز اسدزاده

حالا اینا به کنار حتما این NFS Rivals رو نصب کنید لذت ببرید :)) واقعا من یکی هنوزم متعجبا یعنی این Qt اینهمه پیشرفت کرد که در صنعت بازی سازی انحصاری بازی هایی مثل NFS رو در دست گرفت... تازه این با Qt نسخه 4 نوشته شده !!!

----------


## omidshaman

به نظر من چند سال دیگه (10-20 یا بیشتر ) با پیشرفت AI  دیگه اصلا نیازی به زبان های برنامه نویسی وجود نخواهد داشت مگر کارهایی که خاص هستن و نیاز به تخصص ویژه ای دارن .
یکی از  گفت و گو هایی که به نظرم جالب بود : 
http://www.linkedin.com/groups/AI-sh...ck=.gmp_127447

----------


## کامبیز اسدزاده

> به نظر من چند سال دیگه (10-20 یا بیشتر ) با پیشرفت AI  دیگه اصلا نیازی به زبان های برنامه نویسی وجود نخواهد داشت مگر کارهایی که خاص هستن و نیاز به تخصص ویژه ای دارن .
> یکی از  گفت و گو هایی که به نظرم جالب بود : 
> http://www.linkedin.com/groups/AI-sh...ck=.gmp_127447


هر چیزی که توسط بشر برنامه ریزی می شود وابسته به زبان ماشین و زبان هایی همچون C++‎‎ هستش ... 
مثالی میزنم : مثل این که یک وب سایت لازمه طراحی کنی ولی به جای برنامه نویسی و کد نویسی میای از CMS استفاده میکنی ! در این صورت یک کاربر ساده هم میتونه وب سایت رو نصب و راه اندازی کنه ... این نکته ای که شما اشاره کردی یه چیزی در این مایه هاست که در آینده توسط چنین پروژه هایی می توان اپلیکیشن هایی رو در کمترین زمان تولید کرد.

ولی به این نکته هم اشاره کنم که برنامه نویس و کد نویسی در جای خود باقی و همیشه نیاز به برنامه نویسی و توسعه در پشت بزرگترین پروژه ها وجود خواهد داشت ! چون هر پروژه ای که بشر بهش میرسه توسط زبان های برنامه نویسی برنامه ریزی میشود ...

----------


## omidshaman

> هر چیزی که توسط بشر برنامه ریزی می شود وابسته به زبان ماشین و زبان هایی همچون C++‎‎‎‎ هستش ... 
> مثالی میزنم : مثل این که یک وب سایت لازمه طراحی کنی ولی به جای برنامه نویسی و کد نویسی میای از CMS استفاده میکنی ! در این صورت یک کاربر ساده هم میتونه وب سایت رو نصب و راه اندازی کنه ... این نکته ای که شما اشاره کردی یه چیزی در این مایه هاست که در آینده توسط چنین پروژه هایی می توان اپلیکیشن هایی رو در کمترین زمان تولید کرد.
> 
> ولی به این نکته هم اشاره کنم که برنامه نویس و کد نویسی در جای خود باقی و همیشه نیاز به برنامه نویسی و توسعه در پشت بزرگترین پروژه ها وجود خواهد داشت ! چون هر پروژه ای که بشر بهش میرسه توسط زبان های برنامه نویسی برنامه ریزی میشود ...


توی نیاز به برنامه نویس و c/C++‎  که شکی نیست
البته منظور من از AI با اون چیزی که شما فکر می کنی کاملا متفاوته  CMS اصلا چیزی نداره !
شما فرض کن وقتی کامپیوتر می خری بر اساس علایقت یک سیستم عامل طراحی می کنه برنامه هایی که می خوای رو خودش تشخیص میده 
  برای گرفتن ورودی دیگه نیاز به کیبرد موس نباشه با حرف زدن منظورتو بفهمه  این موردش تقریبا ساخته شده ولی هنوز خیلی جای کار دارن siri- google voice ...
بتونه بر اساس شرایط یک برنامه جدید خودش بسازه  
من منظورم از نیاز نداشتن به برنامه نویس یک همچین چیزایی بود برای همین گفتم 10-20 سال دیگه 
احتمالا سخت افزار هم با گسترش اینترنت در سال های آینده به شکل شبکه های سخت افزاری که با اینترنت قابل استفاده هستن در میاد که باز هم نمونه هایی ازش برای بازی ساخته شده 
http://www.onlive.co.uk/
http://en.wikipedia.org/wiki/Cloud_gaming

دنیا سمت چی میره ما سمت چی میریم هنوز اندر خم ساختن برنامه حساب داری   موندیم جدیدا هم که زدن تو کار ملی سازی- مرورگر ملی انتی ویروس ملی ... :)

----------


## کامبیز اسدزاده

خب این هر چقدرم پیشرفته و هوشمند باشه بازم خودش تکیه به برنامه نویس و زبان های برنامه نویسی داره :)
ولی به هر حال پیشرفته خیلی خوبی میتونه بشمار بیاد.

----------


## کامبیز اسدزاده

به یه نکته ای خوب اشاره کردین اینکه دنیا دنبال چی میره و ما داریم نرم افزار های حسابداری مینویسیم !
میدونید مشکل کجاست ؟ مشکل اینجاست که مردم وعضشون توپ نیست ! هرکس رو میبینی میگه آقا برو تو کار پر درآمد چیزی بنویس که مردم بخرن !!! الان اگه بخوای بشماری نمیشه آمار درست حسابی گرفت ازبس که نرم افزار های حسابداری خزو خیل پر شده هر کی یه دات نت یاد میگیره میفته زود یه حسابداری مینویسه که بفروشه و پول دراره ! حقم میدم چون پول در آوردن سخته و تو مملکت ما برای اینکه بخوای زنده بمونی باید با کارای مزخرف عمرتو تموم کنی ! ولی اینم راهش نیست در کنار همه مشکلات باید هدفی داشته باشید و در کنار این هدف کاراتونم انجام بدین.

در رابطه با مشکل موندن تو نرم افزار های حسابداری و فقط تو این مسیر قدم برداشتن فکر میکنم دلیلش همین چشم به هم چشمی بازاره کار در داخل کشور باشه... که متاسفانه هر کسی رو صدا میزنی میگه نرم افزار حسابداری نوشتم ! با دلفی با سی شارپ ! من خودم چند بار سوال هم پرسیدم از بعضیا که آیا نرم افزارتون در محیط به جز ویندوزی کار میکند ؟ یعنی در لینوکس؟ مکینتاش کار میکند ! سازنده ها متاسافنه و متاسفانه دهنشونو باز و به دمو دیوار نگاه میکنن طوری که اصلا برنامه نویس نیستند. دلیلشم فقط و فقط فکر کردن به پول هست اونم رسیدن در 2 روز که مسلما دلیل بزرگی برای جلوگیری از پیشرفت خواهد بود.

----------


## pswin.pooya

> به نظر من چند سال دیگه (10-20 یا بیشتر ) با پیشرفت AI  دیگه اصلا  نیازی به زبان های برنامه نویسی وجود نخواهد داشت مگر کارهایی که خاص هستن و  نیاز به تخصص ویژه ای دارن .


خیلی چیزها امکان داره تفاوت کنه. مثلا همون ورودی هایی که شما می گید. ۱۰۰ درصد برنامه ها به مراتب هوشمندتر میشن. اما باز هم برنامه نویسهایی لازمن تا اون برنامه ها رو بنویسند.




> احتمالا سخت افزار هم با گسترش اینترنت در سال های آینده به شکل شبکه های  سخت افزاری که با اینترنت قابل استفاده هستن در میاد که باز هم نمونه هایی  ازش برای بازی ساخته شده


احتمالش هست. چیپ هایی برای اینکار در آینده عرضه بشن. اما واقعا چقدر میشه از اونها استفاده کرد. و یا چه قدر کاربرد داشته باشن خودش جاس سواله. الان سالانه حدود ۳ میلیارد دستگاه توکار ساخته میشه که اکثر چیپهای اونها ( به غیز از موبایل ها  و تبلتها ) به نت دسترسی ندارن. در مقابل فقط سالیه چیزی حدود ۳۰۰ میلیون دستگاه های رومیزی مثل لپ تاپ و pc ساخته میشه. خود این رقم نشون دهنده اینه که این ایده فعلا جایی نداره. بسیاری از دستگاه هایی توکار اصلا نباید به چیز غیر استیبلی مثل نت وصل بشن.


به هر حال ایده های سخت افزارهای شبکه ای نه تنهاخوب نیست. (به نظر من) میتونه بسیار هم مشکل ساز باشه. مثلا فرض کنید. شما سخت افزارتون از طریق نت بوت میشه. حالا با اولین هک مثلا سایت میکروسافت یک دنیا تعطیل میشه. یا اینکه مثلا چند نسل میگذره و باز هم مثلا میکروسافت مجموعه دستورات رو بر اساس نسل جدید میذاره. این شکلی مثلا یهو ۱۰۰ میلیون تا سیستم تو دنیا کرش میکنن. یا مثلا همین تحریم ها و ... . بگذریم از اینکه سرویس دهنده ها باید خیلی قوی باشن و ... 

بارها تا حالا سعی شده که اینجور موارد شبکه ای مطرح بشه که نتیجه اون همیشه منفی بوده. دلایل فنی زیادی هم وجود داره. شبکه ها اصلا stable نیستن. مثلا ممکنه سرور وایسته. روتر قطع شه یا حتی کابل خونه مشکل پیدا کنه. ممکنه یه مسیر خراب شه و جایگزینش یه مسیر فوقالعاده دورتر بشه. ( تاخیر زیاد ) و ... . الان حتی سر مسیرهای کوچیک مثلا باس خود سیستم هم مهندسین سخت افزار مشکل دارن (حتی داخل خود میکرو پردازنده‌) و کلی باگ اینا تولید میشه. چه برسه به مسیرهای طولانی. زمانی که فرکانس کار بالا باشه. مطمن باشید که نمیشه از این ایده استفاده کرد. 

یه مورد دیگه میمونه خود فروشنده ها. یادم یکی از بازهای کامپیوتری خیلی معروف مرتبا با سرورش سینک میشد. نتیجه این بود که کسی نتونست کرک کنه. جالب اینه که با اینکار نه تنها فروش شرکت بیشر نشد. حتی با افت فروش هم رو به رو شد. ۱۰۰ درصد اگر برای جماعت دو گزینه بدون و با نت رو بذارید. بدون نت رو ترجیح میدن. که دلایل خیلی زیادی داره. (مثلا حجم نت، سرعت کار، استیبل بودن‌)


عقیده ای که من دارم اینه که فکر کردن در مورد آینده ای با هوش مصنوعی کامل، یا کاملا نت و ... خیلی خیلی رویایی هست. همونطور که تو پست بالا هم اشاره کردم. همین الانش تو نیازهای نرم افزاری روز مهندسین سخت افزار گیر کردن. چه برسه به اینکه این نیازها بخواد تا اون حد جلو بره که شما با مثلا ۱۰۰۰ دلار بتونید نیازهای آنچنانی رو فراهم کنید.

----------


## eshpilen

> یکی از بهترین زبان های همین PHP روی وب هست که به کمک C++‎‎‎‎ روز به روز سرعت و کیفیتش رو تو درنیای وب به رخ زبان هایی مثل ASP میکشه.


PHP با زبان سی نوشته شده نه سی++.

----------


## حامد مصافی

هیچ دلیلی وجود نداره که یک بازی با کیوت نوشته بشه!!!
بازی‌ها بر مبنای شتاب‌دهنده‌های گرافیکی ساخته می‌شوند. و در از همین جهت نیازی به اشیاء دیداری یا شایر امکانات یک چهارچوب برنامه‌نویسی دسکتاپ ندارند. ماژول OpenGL کیوت هم برای انجام کار‌های ساده تعبیه شده است، وگرنه در صنعت بازی‌سازی به جار یک ماژول محدود از یک موتور قدرتمند که علاوه بر پردازش امکاناتی مانند شبیه‌سازی فیزیک و حتی در برخی موارد جلوه‌های صوتی را در اختیار قرار می‌دهد، استفاده می‌شود.
در شکل پست اول هم اگر توجه کنید این فایل‌ها کنار برنامه فعال‌ساز قرار گرفته‌اند. یعنی فقط فقط برای ساخت فعال‌ساز و از کیوت استفاده شده است. مسلماً برنامه‌نویس(ان) مربوطه امکان استفاده از MFC یا VCL یا غیره را داشتند که تاثیر چندانی که در نتیجه نداشت، اما در یک تصمیم معقول کیوت را انتخاب کردند.

----------


## eshpilen

> یه چند ماه پیش من یه استادی داشتم که از دوره دبیرستان میشناختمش اون زمان ها بهم میگفت برید دنبال زبان های مثل C++‎‎‎‎ و PHP بعد از مدتی چند روز پیش در رابطه با یه پروژه ای باهاش مشورت کردم گفتم استاد نظرت چیه با C++‎‎‎‎ کار کنم هرچند سخت هست و شاید سرعت تولید و توسعه پروژه پایین باشه ولی من موندم که با چه زبانی بنویسم... این استاد برگشت یه حرفی زد و رفت تو مخم همونجا بود که برای همیشه این زبان رو انتخاب کردم.
> 
> *حرفش این بود : زبان C++‎‎‎‎ یک زبان مادر هست تنها زبانی هست که متکی به هیچ زبانی نبوده و به تنهایی توانایی ارتباط با سخت افزار رو دارد و تنها از نظر من برنامه نویس یعنی C++‎‎‎ کار زیرا تنها زبانی هستش که اجازه تفکر به برنامه نویس میده / یعنی محدودیت نداریم ! قانون چهارچوب نداریم ! درگیری با سیستم عامل نداریم !* 
> 
> در حالی که زبان های مثل جاوا و C#‎‎‎‎ متکی به چهارچوب هستند.... حالا به اینم اشاره کنم شاید دوستان فکر کنند C++‎‎‎‎ با استفاده از Qt متکی شده یا وابسته به چهارچوب شده ! در این مورد واقعا فرق میکنه زیرا C++‎‎‎‎ یک زبان هست و Qt یک چهار چوبی هست که با استفاده از قدرت C++‎‎‎‎ مانور میده ولی C#‎‎‎‎ و غیره... به تنهایی قادر به نوشتن حتی یک خروجی ساده نیستند.
> 
> در کل میشه گفت با وارد شدن Qt به این دوره زمونه مانور دادن با C++‎‎‎‎ خیلی بهتر شده یعنی میشه گفت Qt تنها چیزی بود که میتونست نگرانی و ناراحتی های بسیاری از برنامه نویسان را در رابطه با سخت بودن در طراحی و تولید فرم ها و کار با گرافیک داشتند و حال خوشبختانه با داشتن Qt این نگرانی ها داره از بین میره.


متکی نیست و این حرفا یعنی چیزی!
خب که چی حالا ما دلمون باشه متکی نیست؟
هدف اینه که برنامه نوشته بشه و کار کنه. همین. حالا از هر راهی بشه سریعتر و راحتتر به این هدف رسید، به نفع برنامه نویس و بقیه است.
همون سی++ و سی و اسمبلی هم اگر غیر از چند برنامهء ساده و کوچک رو درنظر بگیریم، بدون استفاده از کتابخانه ها و سرویس های سیستم عامل و خیلی کتابخانه ها و ابزارهای جانبی دیگر که مستقیم و غیرمستقیم، بدونید یا ندونید، پشت پرده دارن خیلی کارها رو انجام میدن، قابل استفاده نیستن. یعنی میتونید سعی کنید برنامهء مستقلی بنویسید که اصلا همه چیز رو خودش هندل کنه اصلا از بوت خودش بیاد بالا و همهء درایورها همهء شناسایی سخت افزارها همهء سرویسهای سطح پایین و میانی و بالا رو خودش پیاده سازی کنه، ولی روشنه که این کار بسیار سخت و طولانی میشه و کار یک نفر بنظر نمیاد و دست آخر هم هیچ ارزشی نداره که پاسخگوی این همه هزینه و زمان باشه؛ توجیهی نداره؛ شما خودتون رفتید انگار سیستم عامل نوشتید و کتابخانه های سطح پایین و سرویسهای پایه رو، اونم بخاطر یک برنامه و فقط قابل استفاده از یک برنامه. خب سیستم عامل و زبانها و کتابخانه ها و لایه های سرویس و انتزاع امروزی همین چیزها رو راحت و سریع و رایگان در اختیار شما گذاشتن دیگه.
در بحث زبانهای اسکریپتی و دات نت و جاوا و اینها هم باز چیز خیلی غیرعادی و جدیدی غیر از همین بحث درکار نیست و فقط یک لایه و سطح دیگه به لایه ها و سطوح دیگر، و تعدادی سرویس و امکانات و کتابخانه های سطح بالاتر به قبلی ها اضافه شده. حالا چطور میشه که این بار اینا به دردی نمیخورن و بخاطر استقلال (که البته توهمی بیش نیست و نسبی است) زبان و دسترسی مستقیم به همه چیز باید بریم سراغ زبانهای یک لایه پایین تر، و این چه مزیت عملی ای داره جز شعار استقلال آزادی عزت برنامه نویسی؟  :لبخند گشاده!:  
تازه امکانات سخت افزار هرچی هم که میاد، سطح پایینش که بصورت هوشمند توی نرم افزارها و سرویسهای سیستمی پیاده میشه، و در سطوح بالاتر هم اگر نیاز باشن بازم اکثرا میشه بصورت انتزاع و API های سطح بالاتر در قالب کتابخانه و ساختارهای برنامه نویسی، در همون زبانهای جاوا و سی شارپ و حتی زبانهای تفسیری/اسکریپتی مثل PHP و Python اونا رو در دسترس برنامه نویس قرار داد احتمالا در یک قالب سطح بالاتر و راحتتر و سریعتر برای استفاده.

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

بنده هیچ تضادی میان وجود و استفادهء همزمان تمام این زبانها نمیبینم.
من سی هم زیاد کار کردم و بلدم و با سی++ هم بقدر کافی آشنا هستم، ولی الان وقتی با php یا پایتون یا دات نت میشه یک برنامه ای رو خیلی راحتتر و سریعتر نوشت، واسه چی باید برم با سختی و زمان بیشتر با سی++ بنویسم؟
مگر اینکه برنامش و شرایط و هدف خاصتر باشه از نوشتن چندتا برنامهء عادی و کلیشه ای. یا مثلا از نظر پرفورمنس مشکل جدی دیده بشه.
حالا این کندی برنامه ها رو هم بنظر من در آینده با افزایش قدرت رایانه ها و یکسری تطبیق ها و بهینه سازیها هم در سمت این فریمورک ها و هم در سمت بقیهء اجزا از سیستم عامل و سرویسهای پایه ای بگیر تا سخت افزار (تاجاییکه میدونم گاهی حتی میشه ساپورت و بهینه سازیهای اختصاصی برای این زبانها و فریمورک های سطح بالا در سخت افزار هم ایجاد کرد) احتمالا تاحد زیادی رفع میکنن.
کمتر بودن پرفورمنس که به خودی خودش عامل رد یک زبان نیست. بطور مثال php سرعتش از سی++ کمتره ولی وب رو به تسخیر خودش درآورده، چون برای خیلی کاربردها و سایتها پرفورمنس کافی داره و در ازای اون مقدار کاهش پرفورمنسی هم که ایجاد میکنه و در عمل خیلی مهم نیست مقدار خیلی بیشتر مزایای برنامه نویسی ایجاد میکنه.

----------


## eshpilen

> هیچ دلیلی وجود نداره که یک بازی با کیوت نوشته بشه!!!
> بازی‌ها بر مبنای شتاب‌دهنده‌های گرافیکی ساخته می‌شوند. و در از همین جهت نیازی به اشیاء دیداری یا شایر امکانات یک چهارچوب برنامه‌نویسی دسکتاپ ندارند. ماژول OpenGL کیوت هم برای انجام کار‌های ساده تعبیه شده است، وگرنه در صنعت بازی‌سازی به جار یک ماژول محدود از یک موتور قدرتمند که علاوه بر پردازش امکاناتی مانند شبیه‌سازی فیزیک و حتی در برخی موارد جلوه‌های صوتی را در اختیار قرار می‌دهد، استفاده می‌شود.
> در شکل پست اول هم اگر توجه کنید این فایل‌ها کنار برنامه فعال‌ساز قرار گرفته‌اند. یعنی فقط فقط برای ساخت فعال‌ساز و از کیوت استفاده شده است. مسلماً برنامه‌نویس(ان) مربوطه امکان استفاده از MFC یا VCL یا غیره را داشتند که تاثیر چندانی که در نتیجه نداشت، اما در یک تصمیم معقول کیوت را انتخاب کردند.


فکر کنم بنده هم گاهی اینطور برنامه ها/بازیهایی دیدم که ظاهرا درشون از Qt استفاده شده بوده، ولی اینطور که فهمیدم (و البته قابل حدس هم بود از اول) دقیقا همینطوره و Qt برای اصل خود بازی یا اون برنامهء خاص استفاده نشده و نقشش در همون قسمتهایی بوده که GUI استاندارد داشتن و یکسری اجزاء و سرویسهای جانبی اون پکیج بازی.

راستی این خودش نشون میده که حتی یک برنامه/پکیج خاص لزومی نداره همه چیزش با یک زبان نوشته بشه و میتونه از ترکیبی از چند زبان (یا حداقل فریمورک) استفاده کنه.
اینقدر که ملت ما گیر میدن به زبان طوریکه انگار باید همه نابود بشن و یکی باقی بمونه یا یک برنامه نویسی باید فقط با یک زبان برنامه بنویسه یا اینکه فلان زبان مستقله و اون یکی نیست و اینها، در واقعیت خود این فرض بی پایه است و خارجیها و برنامه نویسان زبده همیشه ازش پیروی نمیکنن.
برنامه نویسی واقعی اینه که بر اساس نیاز واقعی پیش میره و هدف فقط درست کردن واقعی برنامهء مورد نظره با کمترین زبان و سختی و باگ. بنابراین توی یک برنامه یا سیستم پیچیده و بزرگ ممکنه یجایی که مثلا نیازی به پرفورمنس بالا نداره بیان با پایتون هم درست کنن، و اصل و هستهء برنامه خودش با سی++ باشه. چه مشکلی داره واقعا؟ فقط بحث یادگیری و استفاده همزمان از چند زبان هست که اونم در تیم ها میتونن به افراد متخصص خودشون بدن (اما اگر کسی تنهایی بخواد انجام بده خب باید به همهء این زبانها کم و بیش احاطه داشته باشه و همزمان کار کنه که کار مشکل تر میشه طبیعتا). البته ترجیح در واقعیت اینه که زبان یکسان باشه یا حداقل نزدیک (مثل Qt و سی++)، چون از نظر قابلیت نگهداری و تغییرات و گسترش در آینده اینطوری احتمالا بهتره. ولی در واقعیت ممکنه حتی بصورت موقتی هم که شده و در یکسری نسخه ها بیان و بخاطر اولویت های گذرا و شرایط حاضر هم که شده، از ترکیب چند زبان استفاده کنن. واقعیت اینه، نه اینکه ایدئال گرایی اونم بصورت تصوری و تخیلی داشته باشیم نسبت به این زبانها و ابزارها و بگیم فقط از سی++ استفاده میکنیم چون یک زبان مادر و مستقله و این حرفا!

گذشته از خود زبان، چیزهایی که در انتخاب یک زبان مهم هستن بنظر بنده شامل ایناست: انحصاری نبودن (یعنی وابسته به یک شرکت و گروه معدود نبودن)، بازمتن بودن و سازگاری و پذیرش و استفادهء گسترده در دنیای نرم افزارهای آزاد/بازمتن، ساپورت تعداد هرچه بیشتری پلتفرم (سخت افزار+سیستم عامل) بخصوص محیطهای بازمتن اصلی که عمدتا منظور لینوکس است - ساپورت ویندوز هم بخاطر نیاز عملی مهمه ولی اگر فرد/پروژه فقط با لینوکس و دنیای بازمتن کار کنه و اینطوری کارش راه بیفته، نیازی نیست (ولی ساپورت ویندوز بازم اکثرا یک مزیت مهمه از نظر آینده نگری و احتمالات حداقل).

----------


## asdasd123123

مشکل اصلی علاقه ی بی مورد برنامه نویس های ایرانی به دات نت هستش. درحالی که دنیا داره به سمت متن باز و مستقل از سکو حرکت می کنه، تو ایران طرف برمیگرده میگه از سی پلاس پلاس به سی شارپ مهاجرت کنید! در ضمن دوست عزیز استفاده از کتابخونه به اندازه ی ماشین مجازی و بدتر از اون مفسر پرفورمنس رو پایین نمیاره. و با توجه به اینکه سی native کامپایل میشه بالاترین پرفرمنس رو داره. ولی مثلا شما می بینی تو زمینه ای خاص واسه java یه کتابخونه تپل نوشته شده میریم با جاوا می زنیم. این یه موضوعه و پرفورمنس یه موضوع دیگه.

----------


## کامبیز اسدزاده

> متکی نیست و این حرفا یعنی چیزی!
> خب که چی حالا ما دلمون باشه متکی نیست؟
> هدف اینه که برنامه نوشته بشه و کار کنه. همین. حالا از هر راهی بشه سریعتر و راحتتر به این هدف رسید، به نفع برنامه نویس و بقیه است.
> همون سی++ و سی و اسمبلی هم اگر غیر از چند برنامهء ساده و کوچک رو درنظر بگیریم، بدون استفاده از کتابخانه ها و سرویس های سیستم عامل و خیلی کتابخانه ها و ابزارهای جانبی دیگر که مستقیم و غیرمستقیم، بدونید یا ندونید، پشت پرده دارن خیلی کارها رو انجام میدن، قابل استفاده نیستن. یعنی میتونید سعی کنید برنامهء مستقلی بنویسید که اصلا همه چیز رو خودش هندل کنه اصلا از بوت خودش بیاد بالا و همهء درایورها همهء شناسایی سخت افزارها همهء سرویسهای سطح پایین و میانی و بالا رو خودش پیاده سازی کنه، ولی روشنه که این کار بسیار سخت و طولانی میشه و کار یک نفر بنظر نمیاد و دست آخر هم هیچ ارزشی نداره که پاسخگوی این همه هزینه و زمان باشه؛ توجیهی نداره؛ شما خودتون رفتید انگار سیستم عامل نوشتید و کتابخانه های سطح پایین و سرویسهای پایه رو، اونم بخاطر یک برنامه و فقط قابل استفاده از یک برنامه. خب سیستم عامل و زبانها و کتابخانه ها و لایه های سرویس و انتزاع امروزی همین چیزها رو راحت و سریع و رایگان در اختیار شما گذاشتن دیگه.
> در بحث زبانهای اسکریپتی و دات نت و جاوا و اینها هم باز چیز خیلی غیرعادی و جدیدی غیر از همین بحث درکار نیست و فقط یک لایه و سطح دیگه به لایه ها و سطوح دیگر، و تعدادی سرویس و امکانات و کتابخانه های سطح بالاتر به قبلی ها اضافه شده. حالا چطور میشه که این بار اینا به دردی نمیخورن و بخاطر استقلال (که البته توهمی بیش نیست و نسبی است) زبان و دسترسی مستقیم به همه چیز باید بریم سراغ زبانهای یک لایه پایین تر، و این چه مزیت عملی ای داره جز شعار استقلال آزادی عزت برنامه نویسی؟


در رابطه با این مخالفم و نظرم منفی هست ! شما وقتی برنامه ای رو روی یک چهارچوب خاصی مثل دات نت پیاده میکنید 100% یه وابستگی کامل ایجاد کردین که به جز ویندوز هیج پلتفرمی قادر به اجرای آن نخواهد بود ! که برای اطلاعات بیشتر پیشنهاد میکنم یک برنامه ساده Hello world رو تو دات نت و یکیشم رو C++‎‎‎‎‎‎‎‎‎‎ در حالت Native بنویسید و سعی کنید روی همه پلتفرم ها اجراش کنید نتیجه رو خودتون خواهید دید :)




> بنده هیچ تضادی میان وجود و استفادهء همزمان تمام این زبانها نمیبینم.
> من سی هم زیاد کار کردم و بلدم و با سی++ هم بقدر کافی آشنا هستم، ولی الان وقتی با php یا پایتون یا دات نت میشه یک برنامه ای رو خیلی راحتتر و سریعتر نوشت، واسه چی باید برم با سختی و زمان بیشتر با سی++ بنویسم؟


شما یک بازی یا یک نرم فزار درست حسابی رو با PHP یا Py مینویسی ؟ کدوم نرم افزار یا بازی معروفی که الان رو سیستم هامون نصبه با PHP یا Py یا حتی دانت نت نوشته شده ؟ بهتر تحقیقی کنید که موتور همه موارد 3 بعدی به زبان C/C++‎‎‎‎‎‎‎‎‎‎ هستش ! و در ضمن این زبان های که شما فرمودین بیشتر رو محیط وب بدرد میخودن البته به جز دات نت که روی محیط ویندوز هم مانور میده.




> مگر اینکه برنامش و شرایط و هدف خاصتر باشه از نوشتن چندتا برنامهء عادی و کلیشه ای. یا مثلا از نظر پرفورمنس مشکل جدی دیده بشه.
> حالا این کندی برنامه ها رو هم بنظر من در آینده با افزایش قدرت رایانه ها و یکسری تطبیق ها و بهینه سازیها هم در سمت این فریمورک ها و هم در سمت بقیهء اجزا از سیستم عامل و سرویسهای پایه ای بگیر تا سخت افزار (تاجاییکه میدونم گاهی حتی میشه ساپورت و بهینه سازیهای اختصاصی برای این زبانها و فریمورک های سطح بالا در سخت افزار هم ایجاد کرد) احتمالا تاحد زیادی رفع میکنن.
> کمتر بودن پرفورمنس که به خودی خودش عامل رد یک زبان نیست. بطور مثال php سرعتش از سی++ کمتره ولی وب رو به تسخیر خودش درآورده، چون برای خیلی کاربردها و سایتها پرفورمنس کافی داره و در ازای اون مقدار کاهش پرفورمنسی هم که ایجاد میکنه و در عمل خیلی مهم نیست مقدار خیلی بیشتر مزایای برنامه نویسی ایجاد میکنه.


برای این مورد هم قرار نیست یک وب سایت رو با C++‎‎‎‎‎‎‎‎‎‎ نوشت ! PHP رو اختراع کردن برای اینکه سریعتر به جواب و طرح مورد نظر برسید. و در ضمن بحث ما بر روی بازی سازی و موارد 3 بعدی و ... بود که هیچ ربطی به دات نت و PHP یا Py و اینجور چیزا نداره نکنه شما بازی مینویسی با PHP اونم به صورت 3 بعدی  !!!!

----------

