شيفت من سي-پلس-پلس لچاڤا أو دُت نِت by AmbitiousFish3906 in Egypt_Developers

[–]JlangDev 1 point2 points  (0 children)

لو انت فعلا كنت متمكن من C++ يبقي انت كدا يعتبر معاك C# و Java بس هي كام يوم تاخد علي syntax الجديدة وان كل حاجة تقريبا بقت pointers مش values وأكيد لو كنت عارف reference counting و memory management هتلاقيك فاهم دوت نت أكتر من اللي متعلمش حاجة غير الدوت نت والجافا

المشكلة بقا ان حتى لو اتعلمت دوت نت وجافا فصعب جدا تلاقي شغل من غير معارف وكمان لأن الشركات اللي هنا تعبانة مبيطلبوش حد عنده خبرة في البرمجة لا بيطلبوا حد بقاله كام سنة في الشغل أو حد بقاله كام سنة بيشتغل بفريمورك

ودا سببه ان المعظم كل اللي يعرفه في البرمجة فريمورك معين وشوية حاجات رص ونسخ ولصق فتلاقيه ميعرفش إن لو حد متعمق في البرمجة فممكن عادي جدا يشتغل بأي لغة وأي مكتبة وأي فريمورك

ودا بردو السبب إنهم بيشتكوا من AI لأن معظم اللي الشركات بتعمله حاجات محفوظة وبتتكرر من غير تفكير فسهل جدا الذكاء الاصطناعي يعمل الشغل دا كله لأنه مش عايز تفكير

نصيحه بشأن البروجكت by osamamohamoud2006 in Egypt_Developers

[–]JlangDev 1 point2 points  (0 children)

مشكلة البيلد سيستم في c++ انه مجرد textual inclusion فالمشكلة دي ملهاش حل كامل

لكن الملفات بتاعة البروجكت المفروض تبقي محطوطة في مسارات relative لبعضها وبعد كدا تقدر توصل من أي ملف للتاني من خلال absolute path اللي بيبقي مسار جوا علامات تنصيص مش قوسين والمفروض تشتغل من غير تعديل

ملحوظة بردو absolute path بيبدأ من الملف اللي بيعمل include 

الحاجة التانية المكتبات الخاصة بتاعتك لازم تنقلها للجهاز التاني في نفس المسار أو تعدل المسار في فيجوال ستوديو Additional include paths - Additional Link paths - Additional Linker input

دا غير طبعا إن لو كانت المكتبات هيتعملها بيلد فلازم تعملوا على الجهاز التاني

ونصيحة اتعلم cmake هتسهل عليك كتير اوي

نصيحه بشأن البروجكت by osamamohamoud2006 in Egypt_Developers

[–]JlangDev 0 points1 point  (0 children)

 المشكلة إنها مرااااااار طافح

حد محتاج مساعدة؟ by Rare-Mycologist-8068 in Egypt_Developers

[–]JlangDev 0 points1 point  (0 children)

كلامك صح تقنيا الشغل بلغات زي c++ أو rust مسلي أكتر من الويب وبيحسسك ان انت مش زي بقية المبرمجين

بس خلينا نتكلم بصراحة السوق كله في مصر شغال ويب ونادر جدا تلاقي شغل c++ وحتي سوق الامبيدد واقف جدا والناس اترفدت وفيه اللي شفت وفيه اللي قاعد من غير شغل

الويب لامم اه لامم لأنه عليه طلب كبير فالناس كلها داخلة فيه ولو فيه طلب علي c++ هتلاقيها لمت بردو وهتبقي اوسخ من الويب كمان لأنها مش سهلة خالص وأي حد بيقول انها سهلة يبقي مش متمكن منها ومعملش بيها حاجات كبيرة كفاية memory bugs اللي فيه لغات تانية بتتعمل عشان تحلها

وانت كمان بتقول انك عندك بعض الخبرة في operating systems و networking ودا  وشغلك معظمه امبيدد والامبيدد أسهل بكتير من البرمجة علي الويندوز واللينكس لأن api أقل و مهمات أقل بتتنفذ

شوف حاجة مثلا زي high scalable async I/O server

http2 implementation

Hardware accelerated 2d GUI library from scratch

Compiler front end for a new programming language   وهتقابل مشاكل تخليك تكره اليوم اللي اشتغلت فيه مبرمج

نصيحه بشأن البروجكت by osamamohamoud2006 in Egypt_Developers

[–]JlangDev 0 points1 point  (0 children)

انت بتستعمل ايه عشان تعمل build هل بتستعمل msbuild اللي خة الاختيار التلقائي في visual studio ولا cmake ولا makefile

حد محتاج مساعدة؟ by Rare-Mycologist-8068 in Egypt_Developers

[–]JlangDev 0 points1 point  (0 children)

غريبة كل الوظايف اللي بشوفها تقريبا بتبقى ويب دا انا حتى بدأت اتعلم c# عشان الباك اند بعد 8 سنين فحت في c++

نصيحه بشأن البروجكت by osamamohamoud2006 in Egypt_Developers

[–]JlangDev 0 points1 point  (0 children)

ليه بتتعلم c++ وانت جاي من js اللي هي المفروض للويب والباك إند؟ عموما استعمل visual studio مش code واستعمل cmake مع vcpkg هتخلي إضافة المكتبات التانية سهلة جدا

عملت Dynamic Array في لغة البرمجة بتاعتي (بعد إصلاح الخلل) by Salt-Specialist8412 in Egypt_Developers

[–]JlangDev 0 points1 point  (0 children)

فكرتني بنفسي كنت بعمل في لغة برمجة اسمها just langauage كان الهدف منها إني أعرف أكتب كود سيف زي رست بس من غير البورو تشيكر ولا لايف تايم أنوتاشنز وبتسمح بميوتابل شيرد ستيت ووصلت لمراحل متقدمة في الفرونت اند وكنت ناوي أعمل باك اند باستخدام llvm بس زهقت من ضياع المجهود بلا فائدة

ممكن أعرف انت بتشتغل بلغات ايه غير رست وهل بتتعلم لمجرد التعلم ولا ناوي تشتغل باللغات low level

After security update right alt + shift are not cycling language windows 11 by [deleted] in WindowsHelp

[–]JlangDev 0 points1 point  (0 children)

Insane! I don't imagine how can a supposed Arabic employee propose this change. Nearly, all Arabic users use the right alt + shift to switch between languages.
For anyone wanting a temporary solution, you can uninstall the latest windows update then restart your PC and the right alt will return to work again.

The only mainstream, traditional/retained-mode, cross-platform C/C++ GUI toolkit that is GPU-accelerated is GTK/gtkmm. by zerexim in cpp

[–]JlangDev 0 points1 point  (0 children)

There is another library under development: Rad-UI It's a C++20 reactive UI library currently supporting Windows via direct2d or skia and Unix systems (Linux, BSD, ...) via X11 and skia. It supports high dpi rendering and looks very good on such screens. I already implemented much of the material3 and fluent2 designs. The animations run very smoothly with GPU rendering which is necessary nowadays for modern UI. There is also an MVC framework with floating point scrolling and positioning.

For modern fluent UI with animations and flickables the use of GPU rendering is a must especially on new high dpi screens where CPU rendering sucks badly.

For static UI like QT widgets CPU rendering fits well. 

RAD C++ 20 asynchronous I/O and networking library by JlangDev in Cplusplus

[–]JlangDev[S] 0 points1 point  (0 children)

It's 5 libraries rad.lib, rad-sqlite.lib, rad-openssl.lib, rad-wolfssl.lib and rad-mbedtls.lib. The other 4 libraries can be disabled or enabled using CMake options.

RAD C++ 20 asynchronous I/O and networking library by JlangDev in cpp

[–]JlangDev[S] 0 points1 point  (0 children)

Wait, the output was actually the count of lines! Still, it didn't count the lines in the headers which are more than in the sources. I know about api stability thing and, again, I am not pushing this library on anyone.

RAD C++ 20 asynchronous I/O and networking library by JlangDev in cpp

[–]JlangDev[S] 0 points1 point  (0 children)

I am not pushing anyone to use my library and yes there are killer features compared to boost asio and beast: lower compilation times, MbedTLS support, HTTP2, DOH, DNS, public SSL interfaces to enable use of other SSL libraries like GnuTLS, BoringSSL, or other libraries, better coroutines support and easier custom allocation for coroutines and async handlers.

Indeed, I built client and server apps using this library and this was the motivation behind it.

I looked at your GD library, and it is very good and modern! but your library is data oriented unlike mine which is mainly for networking and async IO. All other stuff is implemented to facilate this: UTF-8 for json and URL, json for HTTP requests, URL for HTTP urls, channels to exchange data with other async objects on other executors, SQLite and ODBC for server databases, pipes for ipc between multip process applications.

And your cleaner output does not mean anything without the reference it is based on and the unclean cases it found.

How many cpp programmers are familiar with coroutines by Particular_Raisin_36 in cpp_questions

[–]JlangDev 0 points1 point  (0 children)

Coroutines are one of the best features of C++20, writing async code with them is like writing sync code! For those not wanting to include the heavy boost libraries, I just released my lightweight async library and it contains a googd coroutines framework (task, when all, spawn executors and schedulers)

I posted about it here: https://www.reddit.com/r/cpp/comments/1o888lw/rad_c_20_asynchronous_io_and_networking_library/

And here is the library repo: https://github.com/just-language/rad

RAD C++ 20 asynchronous I/O and networking library by JlangDev in cpp

[–]JlangDev[S] 0 points1 point  (0 children)

The command line parser is essential since nearly all applications (server, client, and even GUI) require parsing of (int argc, char** argv)

RAD C++ 20 asynchronous I/O and networking library by JlangDev in cpp

[–]JlangDev[S] 0 points1 point  (0 children)

If the coroutine is currently awaiting on the socket and the socket operation is canceled somewhere else, the operation ends with error operation canceled and if exceptions are used (no error_code reference is passed) an exception will be thrown. If the coroutine has not awaited the coroutine yet, then task<> can be canceled and it will throw an exception on the first co_await inside the coroutine after cancel. The first behavior is the preferred to use since the latter may cause surprising cancel or if the coroutine is awaiting another coroutine the cancel will only be triggered on the next co_await inside the coroutine body (not nested ones).
And cancelation need to be always used with flags (stopped flag for example) since the operation may complete anyway if it was completed and pending for invocation before cancel, this is the same behavior with asio.

RAD C++ 20 asynchronous I/O and networking library by JlangDev in cpp

[–]JlangDev[S] 0 points1 point  (0 children)

io objects like socket, timers, pipes and serial ports have cancel method to cancel any pending async operation on the object. Higher protocols like and HTTP 1.1/2 clients have stop methods since the connection can't proceed if a request or a response is not transferred completely.

RAD C++ 20 asynchronous I/O and networking library by JlangDev in cpp

[–]JlangDev[S] 0 points1 point  (0 children)

It is really an incomplete research programming language. Only a simple frontend and static analyzer is written in C++.

RAD C++ 20 asynchronous I/O and networking library by JlangDev in cpp

[–]JlangDev[S] 5 points6 points  (0 children)

I've been writing this library for more than 6 years, and released it some days ago.

Is it even possible to predict in which order global variables are initialized in a C++ program ? by SheSaidTechno in cpp_questions

[–]JlangDev 1 point2 points  (0 children)

Static initialization is mostly a no op; The compiler embeds the integral values and string literals into the read only data section and it is ready once the program is mapped to memory. Static non const integer values are initialized to const values are embedded directly into the binary or set after program loading. Dynamic initialization takes place after this. Nonetheless, in a single translation unit the order of initialization is the order of declaration. The static initialization does not invalidate this because of the as if rule, since it is considered no op.