In defense of c++ _ hacker news


That you have to compile anything yourself is a byproduct of the fact that different platforms have different ABIs, combined with the lack of proper package management on platforms like Windows.
Instead of a build system based on solid principles we got a “hack your own build” starter kit in which you have to look for dependencies yourself ^1 combined with a build script language that is worse than the languages it set out to replace.

First, there are containers that do have a find() method, std::map, for example (although not on a condition). Exchange rate for indian rupee to us dollar It could be a wrong impression, but to me this tells something.

Us dollar to british pound chart Perhaps, if I intend to do a search, I might be better off using a different structure (rather than a list) that is more suitable for searching, or maybe a different – more efficient – algorithm (such as binary_search(), if applicable).
I have no doubt that there are other, more technical reasons for the standard library being the way it is, for example, the idea of separation of algorithms from containers by means of iterators.
The new way has the small virtue of eliminating one more place where you ever need to call new. Gender spectrum quiz However, it also offers the library writer more possibilities in the internal implementation. How the futures market works For instance, they can nest your type in another struct for accounting purposes without copying or additional dereferencing. Gbp usd etf However the second advantage is more relevant to shared_ptr, which is probably why C++11 had make_shared, but not make_unique (added in C++14).
Yeah, if you’re using unique_ptr, the pointer is uniquely owned in at most one place at a time. Binary picture For your situation, I think the vector should probably own the objects, and you borrow them with references, iterators, or pointers (via the get() method). Stock connector Be wary of holding on to those references though (the Rust fans will be quick to point out the dangers here).
A fourth option, which you should consider unless your objects are expensive to copy, is to make your objects copyable and not use unique_ptr or shared_ptr at all. Msn news canada I think it’s much simpler to reason about objects as values than it is to reason about objects as smart pointers or (dumb) references.
Go with what works for you, but shared_ptr makes additional promises about thread safety and interactions with weak_ptr that increase its runtime costs. Usd in inr I wish shared_ptr was simple by default and that there was yet another smart pointer type for when you need those additional features.
Notice how new important growing languages like Swift and Rust don’t have garbage collection and programmers don’t miss it. Aud to usd news GC is more and more restricted to low performance languages like Python, Javascript, and Ruby and a few specialized highly tuned and expensively engineered exceptions like the JVM and obscure LISP engines.
And if you’ve ever tried to program responsive, interactive, predictable, or time-critical systems, you know that GC is ruinous and awful for those applications. The millionaire matchmaker Meanwhile languages like Rust, Swift, and C++ can be used for everything from systems programming to games to low power mobile apps to scripting.
The point about templates being easy to optimize compared to other generics systems is simply wrong. Hex editor download Other generics systems provide more information to the compiler, so in addition to compiling faster and providing better error messages the compiler can use knowledge of specific type classes, interfaces, modules to optimize the implementation of. What is usd currency For instance, Rust can optimize `type NonZeroOption = Option` to just the size of `T` because it knows that the `None` sentinel value is not used by `T`. Usd rub You can also have nice features like GHC’s rewrite rules which allow you to effectively tell the compiler how to optimize your types.
Most of the fast binary parts of templates is from stuff like specialization, which can be added to just about any generics system. Dollar pound exchange rate forecast Rust and Haskell both have it.
This creates a feedback cycle where people are using C++ to get high performance, and that drives the language evolution towards confusing “features” (and idiosyncrasies) that are done in the name of making it possible to generate more highly optimized code.
You can replace C++ with and you can replace “language” with entire programming stacks. Binary to hex converter Large numbers of programming software toolsmiths have been laboring towards the wrong goals for the past few decades. Live charts uk We programmers are like old school computer hardware manufacturers hell-bent on delivering the highest spec numbers at the highest margins, while consumers were beset with poor quality, poor reliability, and experience degrading bloatware.
We programmers are particularly prone to inflicting ourselves with experience degrading bloatware, while ignoring our own particular human interface design needs. Future of marketing 2016 We need to stop emphasizing “sexy” things like raw performance and mathematically provable semantic guarantees and start looking at how we impact our experience while reading and debugging code. Euro fx We need to start calling out toolsmiths who give us “power” at the cost of long startup penalties, and unresponsive, unwieldy software tools.
C++ is an insanely versatile language, and since you can use any C library with “extern C”, it has a huge amount of high-quality libraries available for it. Python tutorial google ffmpeg, openSSL, webkit, Qt. Usd to inr forecast 2016 the problem is there is not a cross platform package manager to manage these libraries, and manually downloading and compiling libraries is a hugely painful and error-prone process. Usa today puzzles it’s so bad that big C++ projects like Firefox and Chromium basically write their own scripts that download and build dependencies, and simply commit the source code of the libraries they use directly into their own tree.
I believe there is some thought being put into making a C++ package standard [0], which would do wonders for the language. Euro to aud conversion in my opinion half of the reason Node took off is because npm is so easy to use, and people are getting excited about Rust partially because Cargo is so well thought out. 45 usd Now I might be wrong here, but I think if you took modern C++ (no raw pointer manipulation) and combined it with a good package manager, I think you would pretty much erase any advantages Rust offers.

Note that Rust’s system is a generics system, and there’s less metaprogramming that can be done by it. Cny to usd chart Namely, the property mentioned in the post where “So if I try to use this template with the wrong type, after a bunch of template and macro expansion the compiler will print out a cryptic error showing the templated code and the failed type substitution.” does not exist in Rust, since you specify bounds in the API itself.
This is both a blessing and a curse. Usd cad forecast today As a blessing, it leads to very neat, clean, APIs and you never have to worry about such template expansion errors. Us stock market futures As a curse, some of the more complex bits of C++ metaprogramming (check out what people achieve with SFINAE) are not possible. Usd to sar converter I personally think the pros outweigh the cons, but many people from the C++ world really like the power of template metaprogramming in C++. Usd chf exchange rate Rust is planning on offering procedural macros which address some of the use cases, but not all.