How does JK Rowling sleep at night knowing how much money she has lost to piracy!
Through a year or two's work you can become as rich as many other talented people become in a lifetime by printing bits of paper. The reason: the government gives you excessive rights to prevent people, in the privacy of their home, from printing their own bits of paper. Isn't it obvious by now that these monopolistic powers are way excessive. If JK Rowling had been paid one tenth would her work suffer? Of course not. It's clear that these monopolistic powers are no longer serving the purpose of promoting creativity as they were intended to do. Up with piracy I say!
My first computer had 1024 bytes of RAM. That was for program, screen memory and system variables. (4K of ROM for programs) It booted faster than the TV. Those were the days. In fact, those days are still with us (...he says as he returns to playing with his Ateml AVR circuit...)
Re:Curiously showing the size of apps & OSs
on
Windows 95 in 4.47MB
·
· Score: 1
Yes but I bet that calculator can speak every language from Finnish to Korean. You can shrink many MacOS X apps a lot by removing the localizatioin data.
I was going to say: there are plenty of Windows based POS (and similar) systems out there. I know because they crash so often and you frequently get to see the familiar Windows error windows when you try to collect your ricket at movie theaters and airlines.
I'm not sure how old that suggestion is. Several centuries old I think. It falls apart the moment you try to do any kind of numerical computation with it. Try it and see.
I left it back in the future for you. While you're at it, could you collect some money from my bank account then - it has more money in it than my current one.
InterTrust aren't really a little guy. They're a stick in the hands of Sony and Philips, particularly Sony, used to bash MS. Sony have been fighting MS on many fronts for a long time now (going with PalmOS instead of PocketPC, PS2 vs X-Box, trying to push smart electronic applicances in the home rather than PCs).
And yes, I do understand the ramifications of diluting a trademark. The question I ask is the ethical one. Why shouldn't I dilute it? I ca see many advantages to doing so.
the competitive edge among young men to fight for glory and gain the attention of women
Nothing to do with that. Just try to do something creative while you have a wife working full time to sap your creative energies and redirecting them to massage her ego. "Am I really everything you want in the world?", "Don't you think about me all day long?", "Is your work more important than our marriage?", "Stop doing that and help me clean the house!". No doubt it's all familiar to many/.ers.
I don't care for programmers who are so caught up in their genius...
Metaprogramming has uses well beyond impressing friends and colleagues. An example: It just paid off for me big time because I was able to make the compiler do the hard work of building the code to differentiate some fairly complex mathematical expressions in order to write some optimization code. The code is compact. It's not too hard to read. As an API it's extremely easy to use and people who don't understand the innards are able to use it. The code is almost untranslateable to C because one line of C++, expands via templates, to a vast amount of code. But this isn't bloat, this is code that computes what I need.
If you take a look at many APIs built using template metaprogramming you'll find that the primary goal in almost every case is to present an intuitive interface for the end user. Check out Blitz++. It's horrible inside. But the end user gets to write code that looks like familiar mathematical notation.
However, aside from metaprogramming I agree with your "architecting a space station" comments. People like to build these gigantic hierarchies. The strategy often fails because the goal is to cover ever conceivable situation. Invariably the programmer fails and you're left with an even more complex morass that needs to be fixed to work in your situation. But that's different from metaprogramming and these problems are just as present in C.
PS In my spare time I'm working on an assembler project at the moment. I expect the final app to fit in under 8K, 4K with luck. I enjoy C++ but I haven't forgotten my roots!
Oh, it wasn't meant to be a practical suggestion, just food for thought. However there are ways to resolve the ambiguity implicit in your code. You solve globally for the entire expression to find an assignment of types consistent with the set of overloadings are defined.
I think we're talking about cross purposes! I'm talking about the inherent redundancy in the repeated use of 'int' in a statement like 'int *a = new int'. I'm proposing making that statement non-reduandant by actually having the first reference to 'int' being meaningful in that the right hand side is told that it is supposed to be returning an int. A few computer languages have this facility.
Incidentally, see >a href="http://www.cc.gatech.edu/~yannis/fc++/">this for just how close to having lambdas C++ is. That's Haskell code being ported straight to C++ including almost the entire standard prelude.
Tried that too as I was initially impressed with those benchmarks. I found the performance really started dropping when I started using more complex datastructures. Still, I might consider OCaml in some situations.
Yes, we have redundancy. There are two obvious ways to go to remove that redundancy. You propose one. The other is interesting too: allow overloading based on return type. Then int a = f(b,c), say, would actually be making non-redundant use of the type of a.
I haven't played with FORTRAN recently myself but there are figures and discussion published by Todd Veldhuizen that are certainly a lot more recent than '90.
No insult! Template metaprogramming is ugly as hell. But it does get the job done well sometimes. An alternative language might be something like Haskell which I think looks pretty beautiful. But outside of contrived benchmarks its performance seems to suck.
It's great to see some metaprogramming related...
on
Latest Proposals for C++0x
·
· Score: 4, Interesting
...proposals. Without metaprogramming C++ really is glorified C. But with metaprogramming C++ becomes an entirely new system. The template system is computationally complete (see here for what that means) and so important work can be shifted to compile time. That doesn't just mean computing the answer at compile time, that would be silly. It means procedurally building and optimizing code. For example we all know that C is slower than FORTRAN because pointers (lacking in FORTRAN) bring in variable aliasing problems that stop the compilers reliably optimizing. C++ metaprogramming allows us to claw back some of that loss by intelligently building optimized math routines at compile time. See Blitz++ for examples. The net effect is the speed of Fortran combined with readable high level references to array and vector objects.
Unfortunately metaprogramming is a pain in C++. One of the biggest problems is the lack of reflection in C++ that would allow template metaprograms to easily determine type information. Some of the new proposals would remedy that issue. Also the use of local classes in templates, that is sorely lacking in the current standard, would be a great boon for such techniques.
And maybe one day there will be many more C++ textbooks that don't just relegate templates to half a paragraph in the "advanced techniques" section. Templates are fundamental to C++. If you don't use the benefits of C++ then C++ really isn't that interesting a language. No wonder so many people propose using C rather than C++. It's like programming in Lisp but refusing to use list datastructures.
...I didn't realize I was buying a battlefield.
Oh, sorry. That was me. What else is there to do in Fry's but fiddle with the stuff they're selling.
Through a year or two's work you can become as rich as many other talented people become in a lifetime by printing bits of paper. The reason: the government gives you excessive rights to prevent people, in the privacy of their home, from printing their own bits of paper. Isn't it obvious by now that these monopolistic powers are way excessive. If JK Rowling had been paid one tenth would her work suffer? Of course not. It's clear that these monopolistic powers are no longer serving the purpose of promoting creativity as they were intended to do. Up with piracy I say!
My first computer had 1024 bytes of RAM. That was for program, screen memory and system variables. (4K of ROM for programs) It booted faster than the TV. Those were the days. In fact, those days are still with us (...he says as he returns to playing with his Ateml AVR circuit...)
Yes but I bet that calculator can speak every language from Finnish to Korean. You can shrink many MacOS X apps a lot by removing the localizatioin data.
I was going to say: there are plenty of Windows based POS (and similar) systems out there. I know because they crash so often and you frequently get to see the familiar Windows error windows when you try to collect your ricket at movie theaters and airlines.
I'm not sure how old that suggestion is. Several centuries old I think. It falls apart the moment you try to do any kind of numerical computation with it. Try it and see.
I left it back in the future for you. While you're at it, could you collect some money from my bank account then - it has more money in it than my current one.
$100 to the first person who responds to this if there are machines as smart as humans in 2040.
InterTrust aren't really a little guy. They're a stick in the hands of Sony and Philips, particularly Sony, used to bash MS. Sony have been fighting MS on many fronts for a long time now (going with PalmOS instead of PocketPC, PS2 vs X-Box, trying to push smart electronic applicances in the home rather than PCs).
That's a serious question by the way.
And yes, I do understand the ramifications of diluting a trademark. The question I ask is the ethical one. Why shouldn't I dilute it? I ca see many advantages to doing so.
But please, Lisp is no use to me. I have to work in the real word with pre-existing C++ software libraries and an expectation of high performance.
Poll:
That poll pisses me off because:
1. It's true and I didn't realize before marrying
2. It's false and I resent the spreading of untruths
Nice excuse, but not good enough.
I might just code that up myself. Not too hard actually!
If you take a look at many APIs built using template metaprogramming you'll find that the primary goal in almost every case is to present an intuitive interface for the end user. Check out Blitz++. It's horrible inside. But the end user gets to write code that looks like familiar mathematical notation.
However, aside from metaprogramming I agree with your "architecting a space station" comments. People like to build these gigantic hierarchies. The strategy often fails because the goal is to cover ever conceivable situation. Invariably the programmer fails and you're left with an even more complex morass that needs to be fixed to work in your situation. But that's different from metaprogramming and these problems are just as present in C.
PS In my spare time I'm working on an assembler project at the moment. I expect the final app to fit in under 8K, 4K with luck. I enjoy C++ but I haven't forgotten my roots!
Oh, it wasn't meant to be a practical suggestion, just food for thought. However there are ways to resolve the ambiguity implicit in your code. You solve globally for the entire expression to find an assignment of types consistent with the set of overloadings are defined.
Incidentally, see >a href="http://www.cc.gatech.edu/~yannis/fc++/">this for just how close to having lambdas C++ is. That's Haskell code being ported straight to C++ including almost the entire standard prelude.
Tried that too as I was initially impressed with those benchmarks. I found the performance really started dropping when I started using more complex datastructures. Still, I might consider OCaml in some situations.
I haven't played with FORTRAN recently myself but there are figures and discussion published by Todd Veldhuizen that are certainly a lot more recent than '90.
No insult! Template metaprogramming is ugly as hell. But it does get the job done well sometimes. An alternative language might be something like Haskell which I think looks pretty beautiful. But outside of contrived benchmarks its performance seems to suck.
Unfortunately metaprogramming is a pain in C++. One of the biggest problems is the lack of reflection in C++ that would allow template metaprograms to easily determine type information. Some of the new proposals would remedy that issue. Also the use of local classes in templates, that is sorely lacking in the current standard, would be a great boon for such techniques.
And maybe one day there will be many more C++ textbooks that don't just relegate templates to half a paragraph in the "advanced techniques" section. Templates are fundamental to C++. If you don't use the benefits of C++ then C++ really isn't that interesting a language. No wonder so many people propose using C rather than C++. It's like programming in Lisp but refusing to use list datastructures.