همه برنامه ها که حسابداری نيستن ببينيد شما مقايسه رو رو يک پروژه ديتابيسی قرار داديد که از لحاظ فنی پروژه ساده اي حساب ميشه که خيلی فرقی نميکنه با کيوت نوشته بشه يا دات نت اگر هدفتون فقط ساخت پروژه های مرتبط با ديتابيس و حساب داری هست دات نت به دليل سادگی و ابزارهای آماده اي که داره قرار داره بهتر هست
اما اما اگر هدفتون طيف وسيع تری از پروژه ها هست که در کتاب خونه های دات نت وجود ندارند C++ و کيوت مناسبتره يا در پروژه هايی که سرعت حرف اول رو ميزنه چند ثانيه يا چند ميلی ثانيه حياتی محسوب ميشه دات نت به دليل مصرف منابع بالا و بيهوده جوابگو نخواد بود
به نظر من يکی از مهمترين مزيت های کيوت سرعت اجرا و کيفيت بيشتر نسبت به دات نت هست برای مثال ميتونيد سرعت رمزنگاری يا کمپرس ديتا رو تو هر دو انجام بديد و نتيجه رو ببينيد يا ميتونيد ديگر کتاب خونه های مشابه در هر دو رو با هم مقايسه کنيد.
يا در ضمينه UI شما دمو هايی که از QML که تو کيوت کريتور قرار داده شده رو يک نگاه بياندزيد فرض کنيد اينها رو با WPF بخواهيد پياده سازی کنيد آيا به همين نرمی و کيفيت اجرا خواهند شد؟
يا در ضمينه بازی های ساده 2D باز هم مقايسه انجام بديد کيوت عملکردی بهتر داره.
در ضمينه امنيت هم دات نت هيچ حرفی برای گفتن نداره.
عامل ديگه به نظرم قابليت استفاده از کتاب خونه های ديگه تو Qt هست شما فرض کن بخواهيد از يک کدک صدا يا تصوير تو پروژه استفاده کنيد در کيوت به سادگی ميتونيد کتاب خونه اون رو به پروژه اضافه کنيد و از اون استفاده کنيد اما در دات نت بايد ببينيد برای کدک مورد نظر کامپوننت يا سورسی به زبان مورد نظرتون وجود داره يا نه اگر نداشت مجبوريد خودتون آستين بالا بزنيد
با توجه به امنیت خوبی که این زبان دارا هست ، آیا استفاده از اون به صرفه هست ؟ آیا به اندازه ی #c در پشتیبانی از دیتابیس ها و مولتی تردینگ قدرت داره ؟
برای مثال شما یک برنامه ی سوکت ساده که سورس یک صفحه ی html رو براتون توی یک فایل ذخیره کنه ، در #c با Http Request کلا میشه 10-11 خط
اما توی ++C این برنامه حدود 50-60 خط میشه !
پس چه سودی داره استفاده از ++C در این زمان و با توجه به شرایط بالایی که عرض کردم ؟
مطمئناً در ضمينه مالتی تريدينگ C++ و کيوت خيلی بهتر از دات نت هست
ما داريم درمورد کيوت صحبت ميکنيم پس بايد از کتاب خونه های سوکت کيوت استفاده کنيم استفاده از کلاس سوکت و کلاس HTTP کيوت ساده تر از دات نت هست.
مثال زير رو ببينيد:
void MainWindow::on_pushButton_clicked()
{
tcpSocket = new QTcpSocket(this);
connect(tcpSocket, SIGNAL(connected()), this, SLOT(OnConnected()));
connect(tcpSocket, SIGNAL(disconnected()), this, SLOT(OnDisconnected()));
connect(tcpSocket, SIGNAL(error(QAbstractSocket::SocketError)), SLOT(onError(QAbstractSocket::SocketError)));
connect(tcpSocket, SIGNAL(readyRead()), this, SLOT(OnGetData()));
tcpSocket->connectToHost("www.google.com", 80);
}
void MainWindow::OnConnected()
{
qDebug() << "Connected!";
tcpSocket->write("GET / HTTP/1.1 \n"
"Host: www.google.com \n"
"User-Agent: Mozilla/5.0 Qt/5.3 \n"
"Connection: keep-alive \n"
"\n");
}
void MainWindow::OnDisconnected()
{
qDebug() << "Disconnected!";
}
void MainWindow::onError(QAbstractSocket::SocketError err)
{
qDebug() << err << " socket error: " << tcpSocket->errorString();
}
void MainWindow::OnGetData()
{
qDebug() << "GetData!";
QByteArray text = tcpSocket->readAll();
// Buff += text;
ui->TexBox1->setPlainText(text);
}
حالا شما اين رو بخواهيد با سوکت دات نت (بدون استفده از کلاس HTTP Request)پياده سازی کنيد! ميبينيد که برای انجام اين کار بايد يک کلاس بسازيد و رويداد های سوکت هم خودتون تعريف کنيد و مديريت خطا های سوکت هم خودتون بنويسيد اما در کيوت همه اينها انجام شده هستند
منظورم بدون استفاده از کتابخانه های Qt بود ;)
متوجه نميشم چرا وقتی تو کيوت داريم کار ميکنيم نبايد از کتاب خونه خودش استفاده کنيم؟! در اين صورت شما هم بايد تو C# بدون استفاده از دات نت اين کار رو انجام بديد!
مورد آخر هم اگه برنامه های کوچيک و بزرگی که ازشون استفاده ميکنيم رو ملاک قرار بديم ميبينيد که برنامه های ساخته شده بيشتری هستند که با C++ و Qt نوشته شدن تا دات نت بيشتر شرکت های کوچيک و بزرگ مطرح ترجيح ميدن به جای دات نت از C++ و کيوت استفاده کنند