A real solid and comprehensive library for C++?
-
For the last ten years newcomers choose Java/C# over c++ is mainly because they both come with comprehensive libraries that can fulfill most of their requirements. In C++ we have std and boost, but in some point they are confusing and their functionalities are somehow overlapped, which introduced a much harder learning experience compared to other languages. The closest framework I know is Qt, but then Qt isn't open source.
.jpg wrote:
The closest framework I know is Qt, but then Qt isn't open source.
Since when? Qt - Download Open Source[^]
Jeremy Falcon
-
.jpg wrote:
The closest framework I know is Qt, but then Qt isn't open source.
Since when? Qt - Download Open Source[^]
Jeremy Falcon
-
For the last ten years newcomers choose Java/C# over c++ is mainly because they both come with comprehensive libraries that can fulfill most of their requirements. In C++ we have std and boost, but in some point they are confusing and their functionalities are somehow overlapped, which introduced a much harder learning experience compared to other languages. The closest framework I know is Qt, but then Qt isn't open source.
A good alternative to Qt is wxWidgets.
-
.jpg wrote:
In C++ we have std and boost
We, usually, also have access to the full platform API.
.jpg wrote:
but in some point they are confusing and their functionalities are somehow overlapped
It's not unheard of for something to start out as boost library; and then, at a later point in time, serving as the foundation for what makes it into the C++ standard library.
Espen Harlinn Chief Architect - Powel AS Projects promoting programming in "natural language" are intrinsically doomed to fail. Edsger W.Dijkstra
Yep...examples include boost::filesystem (a version of which will become std::filesystem in C++ 17), or boost::thread (which developed into std::thread in C++ 11).
Anna (@annajayne) Tech Blog | Visual Lint "Why would anyone prefer to wield a weapon that takes both hands at once, when they could use a lighter (and obviously superior) weapon that allows you to wield multiple ones at a time, and thus supports multi-paradigm carnage?"
-
For the last ten years newcomers choose Java/C# over c++ is mainly because they both come with comprehensive libraries that can fulfill most of their requirements. In C++ we have std and boost, but in some point they are confusing and their functionalities are somehow overlapped, which introduced a much harder learning experience compared to other languages. The closest framework I know is Qt, but then Qt isn't open source.
It does rather depend what type of functionality you are looking for. Aside from the usual suspects (Qt, WxWidgets etc.) there is no single "framework", but there are some amazing cross platform libraries. For example, in addition to the Standard library and Boost, I can recommend POCO[^], STLSoft[^] and Xerces[^]. The biggest challenge is building and deploying them as there's no unifying build/deployment mechanism for C++ libraries (we use a bunch of custom scripts). However, there are a few package managers (e.g. Conda[^], Conan[^] or Pacm[^]) which are trying to make this easier.
Anna (@annajayne) Tech Blog | Visual Lint "Why would anyone prefer to wield a weapon that takes both hands at once, when they could use a lighter (and obviously superior) weapon that allows you to wield multiple ones at a time, and thus supports multi-paradigm carnage?"
-
For the last ten years newcomers choose Java/C# over c++ is mainly because they both come with comprehensive libraries that can fulfill most of their requirements. In C++ we have std and boost, but in some point they are confusing and their functionalities are somehow overlapped, which introduced a much harder learning experience compared to other languages. The closest framework I know is Qt, but then Qt isn't open source.
What's wrong with just using C++/CLI to use .Net?
-
For the last ten years newcomers choose Java/C# over c++ is mainly because they both come with comprehensive libraries that can fulfill most of their requirements. In C++ we have std and boost, but in some point they are confusing and their functionalities are somehow overlapped, which introduced a much harder learning experience compared to other languages. The closest framework I know is Qt, but then Qt isn't open source.
I think looking for a single comprehensive library for C++ misses the point of C++. In fact, that is what spawned Java in the first place which captured popularity by offering automatic garbage collection which was not baked into C++. C# was merely a "me too" programming language to take on Java. But as Bjarne Stroustrup says in one of his books, there are a dozen such garbage collection libraries to be had in C++. The same goes for GUI libraries (eg, I use BCGSoft's GUI lib and not Qt). I also have an encryption lib I subscribe to. And for other parts of the code, I write my own managers that tend to look like library pre-cursors. But the main reason I use C++ exclusively is, I'm not beholden to a single corporation's fickleness. C++ is internationally standardized which means there are 100 Computer Science professors at any one time making dead sure the language is relevant, fast and correct. Each chosen library vendor I work with is chosen out of deep respect for their company's longevity and integrity of their product. The pennies I pay for their libs would have cost me dollars to write my self assuming I could.
-
.jpg wrote:
In C++ we have std and boost
We, usually, also have access to the full platform API.
.jpg wrote:
but in some point they are confusing and their functionalities are somehow overlapped
It's not unheard of for something to start out as boost library; and then, at a later point in time, serving as the foundation for what makes it into the C++ standard library.
Espen Harlinn Chief Architect - Powel AS Projects promoting programming in "natural language" are intrinsically doomed to fail. Edsger W.Dijkstra
Quote:
It's not unheard of for something to start out as boost library; and then, at a later point in time, serving as the foundation for what makes it into the C++ standard library.
That's because the original purpose of Boost was as a "proving ground" for features to be added to the Standard library.
Truth, James
-
I think looking for a single comprehensive library for C++ misses the point of C++. In fact, that is what spawned Java in the first place which captured popularity by offering automatic garbage collection which was not baked into C++. C# was merely a "me too" programming language to take on Java. But as Bjarne Stroustrup says in one of his books, there are a dozen such garbage collection libraries to be had in C++. The same goes for GUI libraries (eg, I use BCGSoft's GUI lib and not Qt). I also have an encryption lib I subscribe to. And for other parts of the code, I write my own managers that tend to look like library pre-cursors. But the main reason I use C++ exclusively is, I'm not beholden to a single corporation's fickleness. C++ is internationally standardized which means there are 100 Computer Science professors at any one time making dead sure the language is relevant, fast and correct. Each chosen library vendor I work with is chosen out of deep respect for their company's longevity and integrity of their product. The pennies I pay for their libs would have cost me dollars to write my self assuming I could.
Yeah. What he said. A cross-platform library (for instance Java Swing) is always limited because it becomes the least common denominator of all the platforms it covers. A native library (like .NET) is locked to a single platform, often by design. The success of the C++ standard library results from the very limited extent to which it depends on an underlying operating system. Most parts only require a memory allocator. A very comprehensive library would require much more support, making C++ less viable on embedded platforms. As it is now, you have a choice of several libraries, depending as you are willing to accept cross platform limitations or embrace a single target. Win32 is a real solid and comprehensive library for C++. There, problem solved. Oh wait, I bet you wanted free and open source too. Yeah, there's another reason why there is no library. Who's going to spend millions to write it for you?
-
For the last ten years newcomers choose Java/C# over c++ is mainly because they both come with comprehensive libraries that can fulfill most of their requirements. In C++ we have std and boost, but in some point they are confusing and their functionalities are somehow overlapped, which introduced a much harder learning experience compared to other languages. The closest framework I know is Qt, but then Qt isn't open source.
All the "comprehensive" libraries in other languages derive from c/c++ if not being just a wrapper around it. They do not offer anything beyond what c/c++ offers and sometimes offer less. The appeal of those languages stems from IDE that takes care of project management and often offer direct access to UI functionality. The problem arises if one needs platform/GPU computing access, anything more complex requiring native code or just plain control over code execution and memory management. In those instances native c/c++ shines.
-
For the last ten years newcomers choose Java/C# over c++ is mainly because they both come with comprehensive libraries that can fulfill most of their requirements. In C++ we have std and boost, but in some point they are confusing and their functionalities are somehow overlapped, which introduced a much harder learning experience compared to other languages. The closest framework I know is Qt, but then Qt isn't open source.