سلام؛ اوّل اینکه اگر میخواید به یک دستهبندی عالی برای ابزارهای یک زبان برنامهنویسی دست پیدا کنید میتونید مخازن Awesome رو توی Github جستجو کنید. مثلاً برای سیپلاسپلاس :
https://github.com/fffaraz/awesome-cpp
و یا برای سی :
https://github.com/kozross/awesome-c
و اینکه هر شرکتی هم معمولاً بر اساس نیازهایی که داره، یک کتابخانهٔ کمکی هم برای خودش داره. بعضی از شرکتها هم این کتابخانهها رو بهصورت متنباز ارائه کردند، مثلاً :
https://github.com/Aseman-Land/QtAseman
و کتابخانهها، ابزارها و فریمورکهایی که من ازشون استفاده کردم و خوب بودند:
GUI
- فریمورک عمومی Qt
اگر نیاز به یک GUI کاملاً Cross-platform دارید میتونید از این کتابخانه استفاده کنید، البته گفتم «عمومی» به خاطر اینکه Qt کلاسهای بسیار زیادی برای تصریح بخشیدن به برنامهنویسی Cross-platform تعبیه کرده که میتونید تقریباً بیشتر کارهای یک رابط گرافیکی رو با استفاده از ابزارهای این فریمورک بنویسید.
- برای رسم Plot پیشنهاد میکنم که از QCustomPlot استفاده کنید.
- برای Multi-media هم پیشنهاد میکنم که از QtAV استفاده کنید.
- برای Deploy کردن برنامهها توی سیستمعاملهای لینوکسی هم پیشنهاد میکنم که از این ابزار استفاده کنید :
https://github.com/ShahriarSS/QLD
- کتابخانهٔ رابطکاربری Nuclear
امّا خب، همیشه نیاز به یک ابزار خیلی خفن نیست. بعضی مواقع شما نیاز به یک رابطگرافیکی خیلی ساده و سبک و بدون وابستگی هستید که میتونید از این کتابخانه استفاده کنید :
https://github.com/vurtun/nuklear
Comperssing and crypto
- کتابخانهٔ فشردهسازی Zlib
برای فشردهسازی، هم پیشنهاد میکنم که از کتابخانهٔ Zlib استفاده کنید چرا که به اندازهٔ کافی سبک و سریع هست.
- کتابخانهٔ رمزنگاری LibSodium
برای رمزنگاری هم اگر نیاز به یک کتابخانهٔ قابل اعتماد و سریع دارید پیشنهاد میکنم که از LibSodiom استفاده بکنید که برای زبانهای زیادی Binding داره.
Calendars
- کتابخانهٔ تقویم شمسی، میلادی و ...
اگر نیاز به یک کتابخانهٔ محاسبهٔ تقویم دارید، پیشنهاد میکنم که از این کتابخانه استفاده بکنید. به خاطر سرعت و دقّت محاسبات. اگر از نسخهٔ Qt 5.15 استفاده میکنید میتونید با کامپایل کردن Qt این تقویمها رو به اون اضافه کنید که بهصورت پیشفرض برای کامپایل در تنظیمات Qt فعال نیستند.
https://github.com/soroush/libcalendars
Database and document
- کتابخانهٔ Nlohmann json
اگر نیاز به استفاده از JSON در زبان سیپلاسپلاس رو دارید، از این کتابخانهٔ حتماً استفاده کنید.
- دیتابیس NoSQL و سبک و امبدد UnQLite
خب دیگه عنوانش همه چیز رو توضیح داد، پیشنهاد میکنم که اگر در برنامهاتون نیاز به یک دیتابیس خیلیخیلی کوچیک پیدا کردید UnQLite رو از دست ندید :
https://unqlite.org/
- اگر از زبان سیپلاسپلاس استفاده میکنید پیشنهاد میکنم که حتماً از این Wrapper استفاده کنید:
https://github.com/Mikhalevich/UnqliteWrapper
Data structuer
- پیادهسازی STL std::vector در سی
شده بعضی وقتها تنها کامپایل سی داشته باشید و نیاز به انجام یهسری عملیات پیدا بکنید که اگه دقیقاً std::vector خود STL رو داشتید کارتون شدیداً راحت میشد ؟ خب بازم پیشنهاد میکنم که از این پیادهسازی استفاده بکنید:
https://github.com/eteran/c-vector
-------------------------------------------------------------
خب دیگه چیزی به ذهنم نمیرسه.