The iterator based approach of STL works very elegantly for 1 dimensional data structures but fails to generalize cleanly for higher dimensional structures. For example, there is no easily defined way of iterating over a 2d array or a graph. Also, the notion of regular types, discussed in your book Elements of Programming, also fails to generalize for 2 or higher dimensional types, like complex numbers and matrices. They lack the total ordering property.
Of course, you can artificially define an ordering, say force a row-by-row iteration over a 2D-Array or a breadth-first iterator over a tree or an artificial ordering on complex numbers, but such constructs feel artificial. Do you think this limitation is fundamental to the iterator based design approach?
As we all know, C++ is far from perfect. There are several features which you discuss in your books and papers, like concepts and UNDERLYING_TYPE, which C++ is currently missing but proposed for C++17 (e.g. destructive move). However there are things you have criticized before, like the memory allocation interface, which are still as they were 25 years back.
What do you dislike the most about C++? What would you change or add to the language to make it better?
In you book "Elements of Programming", you spend a lot of time on concepts. The paper "A Concept Design for the STL", the basis of the latest concept design for C++, references your book extensively. You of course co-authored that paper. I am therefore quite keen to hear your views on C++ Concepts.
Do you think that language support for concepts (or equivalent constructs like Haskell typeclasses) is important for writing generic code? How deeply are you involved in the effort to get concepts into the C++ standard?
STL has been wildly successful and has pretty much completely changed the way libraries are designed not just in C++ but also in in other languages. Most mainstream languages have added facilities to write generic code.
When designing and proposing STL for inclusion into the standard, did you expect it to be this successful? Why do you think it has been this successful?
STL was a pretty radical departure from the way classes and libraries were designed pre-STL. I am very keen to know a bit about the history of STL’s inclusion into the standard.
When you originally proposed STL for adoption into the C ++ standard, how receptive / enthusiastic was the C++ committee towards STL? What design decisions / compromises did you have to make to get it accepted? How much resistance did you face?
For example, you have noted that it took a major effort to convince the committee that vector must be contiguous. Was such instances common?
STL is actually object-based, rather than object oriented. STL uses classes for encapsulation, but doesn't really use inheritance, and and definitely doesn't use virtual functions, which is what classically means object-oriented. Whatever inheritance is used are more for refinement of concepts rather than object oriented programming.
There is absolutely no difference between an interface and an abstract class with all virtual functions, no default implementations and no data members. Multiple inheritance is strictly a superset of interface inheritance.
Besides, unless you need to store the base class pointer in an array, you will in most cases be better off using templates instead of inheritance anyways
Link to Original Source
The best way MS can increase the number of apps available on their platform is to allow Sideloading. Right now the biggest problem for a hobbyist developer is not the lack of dev tools (VS is one of the best dev platforms), but the fact that I cannot run an app I make on my phone without paying MS an annual fee.
Allow hobbyists to write and run apps on their phones, and they might create something which they feel can be sold on the app store, at which point you can start charging them for a dev license. But not many hobbyists will pay upfront to tinker with their phones which they already own.
Basically, make it easy for people to run apps on Windows phone, and you will automatically increase the number of available apps.
I am actually glad the Surface RT failed. I also wish the Windows Phone to fail, even though I own a Lumia and find it much better than similarly priced Android phones. I hate that I cannot write or run my own programs on a machine I own without paying MS 100 USD per year. That's beyond stupid.
MS has probably the best dev tools in the industry; they even give it away for free. But if you want to actually run the program you wrote using these tools, you have to pay. What's the logic in that ?!
I actually like the hardware, both RT and the Lumia. I just hate the walled garden crap. Let us write code for our own machines and you will definitely make a lot more sells.
Besides, anybody who is okay with a walled garden already owns an iPad.
Fundamentally, a currency is backed by the resources of a country. The US Dollar is backed by the US GDP, the CNY by Chinese GDP, and so on. If US GDP increases, your USDs go up in value. Bitcoin however is backed by nothing. It has no intrinsic value per se, unlike currencies or stocks. It is valuable only because others think it is valuable. If tomorrow everybody thinks 1 Bitcoin is worth 100 USD, they are worth 100 USD. If everybody thinks they are worthless, they are worthless. It is the ultimate derivative, whose worth is derived from people’s perception of its value. Bitcoin is entirely unlike any currency or stock or bond known so far. The closest I can think of is precious metals.
However it is also unlike precious metals. Precious metals have a strong consumption demand. Gold for example has several industrial uses in addition to its demand in jewellery. Bitcoins have no intrinsic demand. Just limiting the supply of Bitcoins does nothing, as they have no intrinsic value. It is meaningless to talk about deflation or inflation of Bitcoins because nothing is produced in terms of Bitcoins.
Basically, Bitcoin is the ultimate fiat currency, whose value exists only because other people find it valuable. That makes Bitcoin an asset bubble. Forget stock market bubble, forget real estate bubble, at least those assets produced something of value. Bitcoin has no utility. It is the ultimate bubble since the Dutch tulip bubble. And one thing common to all bubbles is that they burst.