Answers.Body: <p>I would suggest you this course on Udemy. A quick, easy and less costly way to learn GUI in C++. There is the link <a href="https://www.udemy.com/course/visualcpp/" rel="nofollow noreferrer">https://www.udemy.com/course/visualcpp/</a> (<a href="https://www.udemy.com/course/visualcpp/" rel="nofollow noreferrer">https://www.udemy.com/course/visualcpp/</a>)</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2024-02-24T11:49:18.873Z
Answers.LastActivityDate: 2024-02-24T11:49:18.873Z
Answers.UserDisplayName: Bill H
Answers.Body: <p>To call now popular microservices you need libjson-c and libcurl. It may be any other json library or framework, i believe for C++ rapidjson will be better, but curl has no options (libwebsockets?).
  Also librdkafka (librdkafka++ for C++) to connect to Apache Kafka and libavro to describe data.
  To understand how microservices work in general, you may wish to look into event libraries like libevent, libev, libuv. Some xml handling may be needed, this is done by libxml2 (if you are using oracle you can use oracle xdk).</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2022-03-03T05:39:51.383Z
Answers.LastActivityDate: 2022-03-03T05:39:51.383Z
Answers.UserDisplayName: Ivan Borsuk
Answers.Body: <p>I think it depends on the domain that you are using C++ for. There are a lot of libraries that you can learn how to use and then never use them in your life, but when you know exactly what you need then it is easier to find libraries that would help you.</p>
  <p>In general, I think it is a good idea to learn the standard template library (STL), it provides four components called algorithms, containers, functions, and iterators. I think most C++ programmers have used it at some point.</p>
  <p>You can also check the BOOST libraries, check their website <a href="https://www.boost.org/" rel="noreferrer">here</a>.</p>
  <p>For other domains there are tons of libraries that you can learn, for various computer vision utilities you can learn opencv for example, for developing machine learning models you can learn tensorflow for example.</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2022-03-02T14:33:19.903Z
Answers.Text: i will accept your answer but i have question : almost every programmer can use stl ok but i want to develop something live gui program or something which appears on screen .. then what can i do ?
Answers.UserDisplayName: Hamza
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2022-03-02T14:57:01.543Z
Answers.Text: @Hamza learn different GUI libraries
Answers.UserDisplayName: bb1950328
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2022-03-02T15:05:23.743Z
Answers.Text: @bb1950328 : but i don't know which lib , and   how to ?
Answers.UserDisplayName: Hamza
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2022-03-02T20:47:36.910Z
Answers.Text: GTK, Wx, and Qt are all solid choices for GUI. Personally, I've found Tk (that's different than GTK, by the way) to be very simple and easy-to-learn, at the cost of not being as powerful.
Answers.UserDisplayName: Silvio Mayolo
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2022-03-03T02:46:25.140Z
Answers.Text: You probably mean the C++ standard library. STL is a distinct and previous library and searching for it online will give you out of date results that only diverge further as C++ adds more features. https://stackoverflow.com/questions/5205491/whats-the-difference-between-stl-and-c-standard-library
Answers.UserDisplayName: qwr
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2022-03-02T09:02:41.793Z
Answers.LastActivityDate: 2022-03-02T10:26:01.683Z
Answers.LastEditDate: 2022-03-02T10:26:01.683Z
Answers.UserDisplayName: subspring
Answers.Body: <p>As others said learning stl and getting a look at boost is probably a good idea. For Gui / rich clients, Gtk/QT/wx. But you asked for something to see on screen, you could look for graphics library, often used to make games. opengl/DirectX for low level, a bit more high sdl/sfml or go for full engines ogre3d...</p>
  <p>There is a lot of c++ libraries and as a self learning person, you will be guided by tutorials, you'll find on internet, so choose something you are interested in, something that you can run on the target and development device (portability), and something widely supported.</p>
  <p>In each case, you must compare each libraries to see wich one is the easiest to fullfill your goal, there is no global answer. In the case of Gui widget for example, i advise you to try at least 2 and see wich one better fill your need. try to do a demo application with Qt and gtk for example, see how thoses library are differents and weight your needs.</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2022-03-03T16:44:26.863Z
Answers.Text: [For you too](https://cseducators.stackexchange.com/questions/7307/which-c-libraries-and-frameworks-should-i-learn#comment19443_7308): You probably mean the C++ standard library. STL is a distinct and previous library and searching for it online will give you out of date results that only diverge further as C++ adds more features. https://stackoverflow.com/questions/5205491/whats-the-difference-between-stl-and-c-standard-library
Answers.UserDisplayName: Deduplicator
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2022-03-02T20:09:57.210Z
Answers.LastActivityDate: 2022-03-02T20:17:56.450Z
Answers.LastEditDate: 2022-03-02T20:17:56.450Z
Answers.UserDisplayName: jolrael
Answers.Body: <p>That's a very long list, and as others have said, you could burn a load of time and not ever use the knowledge. Also the list is 7 years since the last update, so it's hardly current. Quite a few of the things listed are niche - I haven't encountered them in 20 years working with C++ - or dead (broken links).</p>
  <p>As far as choosing a GUI toolkit goes, the objective advice is:</p>
  <ul>
  <li>Pick something that runs in the environment you need to work in (don't learn Microsoft Foundation Classes if you want to run on a Mac).</li>
  <li>Pick something current and well supported (don't learn Microsoft Foundation Classes).</li>
  <li>Pick something well-known that you are likely to be able to use in the future.
  Subjectively, I would suggest that QT, GTK+ or possibly WxWidgets are the three libraries likely to meet these requirements - but depending on the environment and licensing model that you want, you may disagree.</li>
  </ul>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2022-03-02T18:20:50.863Z
Answers.Text: can u tell me how to learn these GUI libraries  . and what about other C++ libraries ? std2 etc ...
Answers.UserDisplayName: Hamza
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2022-03-03T02:25:45.317Z
Answers.Text: @Hamza you spend a lot of time here asking about way too manythings. May I suggest that you first learn one thing before you go on to the next?
Answers.UserDisplayName: Victor Eijkhout
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2022-03-03T10:02:19.893Z
Answers.Text: @Hamza, To actually learn it, you need to use it. When you have a goal (it doesn't need to be a complicated one; break it it up into tiny chunks if it is), you'll keep on asking yourself "how do I do this particular thing", and that's when you'll have to read documentation or find already answered questions on forums. I spend my time trying to find the best practice for a particular task, or figuring out what a particular function does. Task -> code draft -> Question(s) -> documentation/forums -> THEN code. Start by writing ANYTHING to avoid the blank page then fill in the blanks.
Answers.UserDisplayName: J. Quick
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2022-03-03T10:04:45.287Z
Answers.Text: Also, don't forget to compile regularly to see a small list of errors and warnings before you get drowned in problems.
Answers.UserDisplayName: J. Quick
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2022-03-02T18:09:06.973Z
Answers.LastActivityDate: 2022-03-02T18:09:06.973Z
Answers.UserDisplayName: RichardAshAudacity
Body: <p>Today I saw a lot of C++ libraries and frameworks on <a href="https://gitee.com/leslie_lee/awesome-cpp#awesome-cc" rel="nofollow noreferrer">Awesome C/C++</a>. Now I am confused as to which should I learn, or does it depends upon my choice?</p>
  <p>I want to learn C++ libraries and frameworks, for GUI development, but I don't know which is beginner friendly.</p>
  
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2022-03-03T10:49:33.110Z
Comments.Text: Quite the broad question. You'd get better answers if you mention why you're learning C++ and what your hobbies are.
Comments.UserDisplayName: Navin
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2022-03-03T14:00:48.480Z
Comments.Text: @Navin: i want to start gui development!
Comments.UserDisplayName: Hamza
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2022-03-03T17:04:44.653Z
Comments.Text: @Hamza QT is a quite popular and portable framework for GUI programming. If you want to combine it with 3D you can look at Unity or OpenGL or DirectX..
Comments.UserDisplayName: mathreadler
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2022-03-03T17:46:24.300Z
Comments.Text: @mathreadler : yes i am learning qt!
Comments.UserDisplayName: Hamza
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2022-03-21T02:21:17.457Z
Comments.Text: I will argue that C++ GUI is probably not a good idea. Non modern OSs choose C++ as GUI development.
Comments.UserDisplayName: Qiulang 邱朗
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2022-03-22T16:07:09.033Z
Comments.Text: @Qiulang邱朗 :i am also thing/reading   about that but ... i want to learn any cpp framework ! can you suggest ?
Comments.UserDisplayName: Hamza
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2022-03-23T02:12:37.987Z
Comments.Text: @Hamza sorry I don't have any suggestion I have been trying to avoid c++ for years.
Comments.UserDisplayName: Qiulang 邱朗
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2022-03-31T13:39:14.147Z
Comments.Text: Interestingly, I haven't used any C++ libraries or frameworks for GUI development as far as I can remember. The latest big thing in my area is SwiftUI - based on Swift, with libraries written in a style that makes it almost look like a different language.
Comments.UserDisplayName: gnasher729
Tags: <self-learning><secondary-education><c++>
Title: Which C++ libraries and frameworks should I learn for GUI development?
ThreadText: # Which C++ libraries and frameworks should I learn for GUI development?
  
  (Asked by: username_0 on 2022-03-02)
  
  Today I saw a lot of C++ libraries and frameworks on [Awesome C/C++](https://gitee.com/leslie_lee/awesome-cpp#awesome-cc). Now I am confused as to which should I learn, or does it depends upon my choice?
  
  I want to learn C++ libraries and frameworks, for GUI development, but I don't know which is beginner friendly.
  
  **Tags:** self-learning, secondary-education, c++
  
  > **Comments:**
  > **username_1**: Quite the broad question. You'd get better answers if you mention why you're learning C++ and what your hobbies are.  
  > **username_0**: @username_1: i want to start gui development!  
  > **username_2**: @username_0 QT is a quite popular and portable framework for GUI programming. If you want to combine it with 3D you can look at Unity or OpenGL or DirectX..  
  > **username_0**: @username_2 : yes i am learning qt!  
  > **username_3**: I will argue that C++ GUI is probably not a good idea. Non modern OSs choose C++ as GUI development.  
  > **username_0**: @username_3 :i am also thing/reading   about that but ... i want to learn any cpp framework ! can you suggest ?  
  > **username_3**: @username_0 sorry I don't have any suggestion I have been trying to avoid c++ for years.  
  > **username_4**: Interestingly, I haven't used any C++ libraries or frameworks for GUI development as far as I can remember. The latest big thing in my area is SwiftUI - based on Swift, with libraries written in a style that makes it almost look like a different language.  
  
  ---
  
  ## 5 answers
  
  ### Answer by username_7 on 2022-03-02. Score: 9
  
  I think it depends on the domain that you are using C++ for. There are a lot of libraries that you can learn how to use and then never use them in your life, but when you know exactly what you need then it is easier to find libraries that would help you.
  
  In general, I think it is a good idea to learn the standard template library (STL), it provides four components called algorithms, containers, functions, and iterators. I think most C++ programmers have used it at some point.
  
  You can also check the BOOST libraries, check their website [here](https://www.boost.org/).
  
  For other domains there are tons of libraries that you can learn, for various computer vision utilities you can learn opencv for example, for developing machine learning models you can learn tensorflow for example.
  
  > **Comments:**
  > **username_0**: i will accept your answer but i have question : almost every programmer can use stl ok but i want to develop something live gui program or something which appears on screen .. then what can i do ?  
  > **username_8**: @username_0 learn different GUI libraries  
  > **username_0**: @username_8 : but i don't know which lib , and   how to ?  
  > **username_9**: GTK, Wx, and Qt are all solid choices for GUI. Personally, I've found Tk (that's different than GTK, by the way) to be very simple and easy-to-learn, at the cost of not being as powerful.  
  > **username_10**: You probably mean the C++ standard library. STL is a distinct and previous library and searching for it online will give you out of date results that only diverge further as C++ adds more features. https://stackoverflow.com/questions/5205491/whats-the-difference-between-stl-and-c-standard-library  
  
  ---
  
  ### Answer by username_11 on 2022-03-02. Score: 5
  
  As others said learning stl and getting a look at boost is probably a good idea. For Gui / rich clients, Gtk/QT/wx. But you asked for something to see on screen, you could look for graphics library, often used to make games. opengl/DirectX for low level, a bit more high sdl/sfml or go for full engines ogre3d...
  
  There is a lot of c++ libraries and as a self learning person, you will be guided by tutorials, you'll find on internet, so choose something you are interested in, something that you can run on the target and development device (portability), and something widely supported.
  
  In each case, you must compare each libraries to see wich one is the easiest to fullfill your goal, there is no global answer. In the case of Gui widget for example, i advise you to try at least 2 and see wich one better fill your need. try to do a demo application with Qt and gtk for example, see how thoses library are differents and weight your needs.
  
  > **Comments:**
  > **username_12**: [For you too](https://cseducators.stackexchange.com/questions/7307/which-c-libraries-and-frameworks-should-i-learn#comment19443_7308): You probably mean the C++ standard library. STL is a distinct and previous library and searching for it online will give you out of date results that only diverge further as C++ adds more features. https://stackoverflow.com/questions/5205491/whats-the-difference-between-stl-and-c-standard-library  
  
  ---
  
  ### Answer by username_13 on 2022-03-02. Score: 5
  
  That's a very long list, and as others have said, you could burn a load of time and not ever use the knowledge. Also the list is 7 years since the last update, so it's hardly current. Quite a few of the things listed are niche - I haven't encountered them in 20 years working with C++ - or dead (broken links).
  
  As far as choosing a GUI toolkit goes, the objective advice is:
  
  * Pick something that runs in the environment you need to work in (don't learn Microsoft Foundation Classes if you want to run on a Mac).
  * Pick something current and well supported (don't learn Microsoft Foundation Classes).
  * Pick something well-known that you are likely to be able to use in the future.
    Subjectively, I would suggest that QT, GTK+ or possibly WxWidgets are the three libraries likely to meet these requirements - but depending on the environment and licensing model that you want, you may disagree.
  
  > **Comments:**
  > **username_0**: can u tell me how to learn these GUI libraries  . and what about other C++ libraries ? std2 etc ...  
  > **username_14**: @username_0 you spend a lot of time here asking about way too manythings. May I suggest that you first learn one thing before you go on to the next?  
  > **username_15**: @username_0, To actually learn it, you need to use it. When you have a goal (it doesn't need to be a complicated one; break it it up into tiny chunks if it is), you'll keep on asking yourself "how do I do this particular thing", and that's when you'll have to read documentation or find already answered questions on forums. I spend my time trying to find the best practice for a particular task, or figuring out what a particular function does. Task -> code draft -> Question(s) -> documentation/forums -> THEN code. Start by writing ANYTHING to avoid the blank page then fill in the blanks.  
  > **username_15**: Also, don't forget to compile regularly to see a small list of errors and warnings before you get drowned in problems.  
  
  ---
  
  ### Answer by username_5 on 2024-02-24. Score: 1
  
  I would suggest you this course on Udemy. A username_15, easy and less costly way to learn GUI in C++. There is the link <https://www.udemy.com/course/visualcpp/> (<https://www.udemy.com/course/visualcpp/>)
  
  
  ---
  
  ### Answer by username_6 on 2022-03-03. Score: 1
  
  To call now popular microservices you need libjson-c and libcurl. It may be any other json library or framework, i believe for C++ rapidjson will be better, but curl has no options (libwebsockets?).
  Also librdkafka (librdkafka++ for C++) to connect to Apache Kafka and libavro to describe data.
  To understand how microservices work in general, you may wish to look into event libraries like libevent, libev, libuv. Some xml handling may be needed, this is done by libxml2 (if you are using oracle you can use oracle xdk).
  
  
  ---
  
  