Fud, fud, fud. Please name some problems MI causes.
The original intention for MI was to combine components. I think it's a valid approach for component composition, given that it is rare that one component usually depends on only one other component.
As for requesting an example for where MI is superior to multiple interfaces, there are plenty. For example, in Qt, QPopupMenu and QMenuBar inherit from QFrame and QMenuData. It saves a lot of effort to have the menu data in a separate class, since both QPopupMenu and QMenuBar automatically obtain the interface of a menu.
I have worked in the enterprise, with no problems stemming from this. I made a short text and a seminar to get the ball rolling, and that pretty much eliminated that problem. On the other hand, I have been in Java projects where resource management was truly problematic.
Having been in both environments, with projects of similar complexity, Java projects had fewer resource management problems and were easier to detect bugs and resource-management issues.
Perhaps your team is more competent than mine. This only proves the higher barrier for entry into C++. Unfortunately, having C++ programmers that are so experienced as to solve *any* memory management issue is very difficult, if downright impossible.
And let's not forget each language's ability to scale. Java projects scale much more easily than C++ in complexity. Because for each additional degree of complexity in C++, memory management becomes twice as more complex as in the previous step.
I ended up solving that with Javas pitiful excuse for functional support. The syntax sucked, but it worked.
Functional support has nothing to do with resource management. Both languages don't have any functional support, but it can be faked in both languages (with different machine and programmer performance results) more or less in the same way (i.e. by exploiting the constructs of each language).
But of course, gc might solve *your* problem, which of course makes it important to you:) Personally, I think it is of little consequence --- gc is the last memory management method I would pick.
Mine and the problems of a lot of others, including my manager, my client's manager, my client's developers, my client's customers, etc. And a whole other people that prefer not to have to spend time on memory management.
Of course, there are always a bunch of people that don't want the easy way out, so that's why I said it should be optional. Nevertheless, it's missing.
KDevelop 4 (alpha) does completion in realtime, including type information etc.
So does Visual Studio 2008, but in practice, it's not instant. It's realtime though, in the sense that it happens when you type. You have to wait for it for good results to come up.
I wish KDevelop4 succeeds in it, but this is 2008 and I am still waiting for many things regarding C++, including GC, lambdas and decent intellisense.
And of course parsing is easier in Java, which cannot do as much as C++.
You can do anything in Java, just like you can do anything in C++. Both are Turing complete and very similar in concepts and layout.
My point is that I believe you can retain the power of C++ and still make the parsing a lot easier for tools, but that on the other hands, the tools are getting more powerful and the problem might be solved that way around.
Yes, in 2020, maybe. But, by that time, I would be retired.
...eh, no. You can easily make a functor object that takes two other functor objects and combines them. The syntax sucks, the error message would be worse and so on... but there is no boilerplate code.
...eh, yes. Having to write the combined function outside of the point of interest is much more time consuming, and it disturbs the thinking flow seriously.
In fact, I think you would be able to use boost::lambda to do this directly today.
Aha, someone else wrote the boilerplate code! you see, it's needed.
Of course, if you check out boost lambda, it has some serious gotchas and limitations, which can not be avoided, due to the nature of C++. You can't have blocks of statements as lambda, for example.
As I thought. The library tries to prevent you from making that mistake, but you overrode it with an explicit cast, and the code does something you didn't
It is on the way, but (apparently like Bjarne, wow!) I find this to be of little matter. I very seldom have memory resource problems.
On the other hand, our team of programmers have had quite a lot of issues, especially when different programmers have different ideas about how to manage memory. I definitely prefer to have garbage collection so as that this particular problem (which can become seriously nasty) is solved.
Perhaps a programmer going solo does not have a problem, but for projects in the enterprise, where programmers come and go, it's very serious.
True, but newer and better parsers are getting there. But I agree that the syntax is the worst bit about C++. KDevelop 4.0 is looking good, though, once they get the memory consumption under control:D
Newer and better parsers? I have Visual Studio 2008, and Intellisense still lags a lot behind me. On the other hand, in the Java world, for example, by the time I have finished writing an identifier, the environment already knows what I am talking about and has already pointed out the errors.
None is a bit rich, but the syntax is very bothersome at best. Lambdas will land in the next standard (as the article also mentions)
None is a short of an understatement. You can't combine functions in the way ML or Haskell does. You need a lot of boilerplate code and a lot of hacking to get the same results.
I've seen the proposal about lambdas, and I wasn't impressed. There are many redundant declarations, for example you have to declare your enclosed variables twice.
.... you will get a compile error?! shared_ptr's one-parameter constructor that takes a pointer is declared explicit. Were you hit by a bad implementation, or a bad compiler perhaps?
Try the following code:
#include <boost/shared_ptr.hpp> using namespace boost;
...and see your program die a horrible death...!
It does not matter that the shared_ptr constructor is explicit. When you have a precompiled library that accepts shared_ptrs and you want to use 'this', you are basically screwed.
That critique is a bit weak. There are pro's and cons to either approach.
There are no advantages in manually coding module interfaces.
Yeah, I dream about this:) Be sure to shout it from the mountaintops if you make it or find it someday!
Someone will make it. D is a step forward (and a step back in the same time).
1. no *optional* (I repeat: optional) garbage collection.
2. many syntax problems: not context-free grammar (great problem for tools), various semicolons that are reduntant etc.
3. no functional programming(no lambdas, etc).
4. shared_ptr sucks (just try to pass 'this' to a function that requires a shared ptr and deletes the current object).
5. no consistency: primitives are not classes, although I could program classes that behave as primitives.
6. no import statements; still using old boring header files.
7. many others, too numerous or small to mention.
C++ is built on some excellent ideas, it's just the execution of those ideas that sucks. There can be another C++ like language with none of the problems of C++ and all its benefits.
You did not use collections? nothing from the STL?
I don't understand what kind of application can have 1 MLOC and not use templates at all. You didn't even need the STL once? what kind of app was that? where did you store your data in memory? didn't you use lists, vectors, maps etc?
I really doubt your statement is true. I can't imagine a C++ program without at least one template in use.
To become self-aware, a computer needs to build a model of the universe with it in the center. Humans do not become self-aware until they are of certain age (at around 5 years old), when the brain has been expanded enough so as that it can hold some sort of a model.
Self-awareness does not mean self-determination though. Motivation is purely because of emotions: it's emotions that drive our life, even if there is a facade of logic on top. Machines don't have any sort of motivation built in them.
The real reason Microsoft succeeded is piracy: they let everyone copy their operating systems (Windows 3.0/3.1, 95, NT 3.1/4.0). If they had been strict about piracy, they would never succeed. In fact, during the 90s, Microsoft O/Ses where circulating like open source software today: you could get a copy anywhere. People learned Windows and Office (also 'free'), and here we are, talking about Microsoft's domination...
...is motivation. Whatever humans and animals do, it's because they are motivated to do it. Something pushes them to do what they do. But machines don't have that, unless we build it in them. So any machine, no matter how high it's intelligence is, it will not move unless we give it a command.
In almost every discussion, most people automatically connect AI with motivation. Motivation in humans comes from physical, emotional and mental needs. But I don't see how a machine with even the highest AI could do anything if not given an order, unless it is programmed to move by itself.
You bring up an important point. Actually, the most important! it's good that there is no AI yet, because if it was, it would mean humans need not work any more...all the jobs could be done by machines.
How would a society be structured if humans were unnecessary? how would we get fed? paid? how would we spend our days? how would we feel, if we had no jobs and nobody wanted us? (unemployed people may know of what I am speaking about).
On one hand, AI would mean that a perfect communistic society could be made a reality: all labor is performed by machines, and all people are equally rewarded with the results of this labor. But this is not realistic, and does not correspond to human nature, so it seems to me highly unlikely...
Given that Chinese hackers defeated Windows XP activation the very next day Windows XP were out, the probability of being able to hack their way through any electronic defense approaches 1 quickly. And since all the communication protocols and operating systems used in the west are available to them as well as all the knowledge around them, I don't see how they can't do it.
Very impressive! since we now know so much for our galaxy, can we get a new Star Trek series that sets things straight in relation to reality? it would be impressive to have a starship travel those massive distances and see all these stars up close.
The problem is the O/S design. Most, if not all, operating systems have an all or nothing approach: either you are an administrator or you are a user. This forces programs to run in the context of the user (so as that the user contexts are manipulated) or if a user program is running with administrator rights, it allows the malware to get control of the system.
A much better approach would be the one similar to Intel CPUs: a system of software protection rings, with the outermost ring being the least privileged ring and the innermost ring being the most privileged ring. Rings would communicate with special gates provided by the operating system kernel living in the most privileged ring.
Untrusted software should be run within a protection ring less privileged than of trusted software...then malware could not do any harm, because it could not touch anything else, even the user's files.
The only problem that then remains is buffer overflows/wild pointers, but this is solved by the operating system hardening a process by not allowing execution in data pages (a functionality already existing in operating systems, but being optional).
Ballmer seems a very uninspiring person, especially for the position of Microsoft CEO. I long for the days where Gates was the CEO...his geeky looks played well with the idea that Microsoft creates technology. Ballmer looks like a used cars salesman.
And that's why the Enterprise E does not look as believable as the Enterprise D: the E is CGI, the D is a model.
Computer graphics can be realistic, but movie producers will not pay for the top-notch graphics packages and artists, making some CGI effects totally unbelievable.
One such movie was Airforce One. The CGI plane looked worse than the ones in Crysis...
Fud, fud, fud. Please name some problems MI causes.
The original intention for MI was to combine components. I think it's a valid approach for component composition, given that it is rare that one component usually depends on only one other component.
As for requesting an example for where MI is superior to multiple interfaces, there are plenty. For example, in Qt, QPopupMenu and QMenuBar inherit from QFrame and QMenuData. It saves a lot of effort to have the menu data in a separate class, since both QPopupMenu and QMenuBar automatically obtain the interface of a menu.
Having been in both environments, with projects of similar complexity, Java projects had fewer resource management problems and were easier to detect bugs and resource-management issues.
Perhaps your team is more competent than mine. This only proves the higher barrier for entry into C++. Unfortunately, having C++ programmers that are so experienced as to solve *any* memory management issue is very difficult, if downright impossible.
And let's not forget each language's ability to scale. Java projects scale much more easily than C++ in complexity. Because for each additional degree of complexity in C++, memory management becomes twice as more complex as in the previous step.
Functional support has nothing to do with resource management. Both languages don't have any functional support, but it can be faked in both languages (with different machine and programmer performance results) more or less in the same way (i.e. by exploiting the constructs of each language).
Mine and the problems of a lot of others, including my manager, my client's manager, my client's developers, my client's customers, etc. And a whole other people that prefer not to have to spend time on memory management.
Of course, there are always a bunch of people that don't want the easy way out, so that's why I said it should be optional. Nevertheless, it's missing.
So does Visual Studio 2008, but in practice, it's not instant. It's realtime though, in the sense that it happens when you type. You have to wait for it for good results to come up.
I wish KDevelop4 succeeds in it, but this is 2008 and I am still waiting for many things regarding C++, including GC, lambdas and decent intellisense.
You can do anything in Java, just like you can do anything in C++. Both are Turing complete and very similar in concepts and layout.
Yes, in 2020, maybe. But, by that time, I would be retired.
Aha, someone else wrote the boilerplate code! you see, it's needed.
Of course, if you check out boost lambda, it has some serious gotchas and limitations, which can not be avoided, due to the nature of C++. You can't have blocks of statements as lambda, for example.
Perhaps a programmer going solo does not have a problem, but for projects in the enterprise, where programmers come and go, it's very serious. Newer and better parsers? I have Visual Studio 2008, and Intellisense still lags a lot behind me. On the other hand, in the Java world, for example, by the time I have finished writing an identifier, the environment already knows what I am talking about and has already pointed out the errors. None is a short of an understatement. You can't combine functions in the way ML or Haskell does. You need a lot of boilerplate code and a lot of hacking to get the same results.
I've seen the proposal about lambdas, and I wasn't impressed. There are many redundant declarations, for example you have to declare your enclosed variables twice. Try the following code: ...and see your program die a horrible death...! It does not matter that the shared_ptr constructor is explicit. When you have a precompiled library that accepts shared_ptrs and you want to use 'this', you are basically screwed. There are no advantages in manually coding module interfaces. Someone will make it. D is a step forward (and a step back in the same time).
That's one of the reason I don't like wxWidgets. Macro hell? not for me!
1. no *optional* (I repeat: optional) garbage collection.
2. many syntax problems: not context-free grammar (great problem for tools), various semicolons that are reduntant etc.
3. no functional programming(no lambdas, etc).
4. shared_ptr sucks (just try to pass 'this' to a function that requires a shared ptr and deletes the current object).
5. no consistency: primitives are not classes, although I could program classes that behave as primitives.
6. no import statements; still using old boring header files.
7. many others, too numerous or small to mention.
C++ is built on some excellent ideas, it's just the execution of those ideas that sucks. There can be another C++ like language with none of the problems of C++ and all its benefits.
1 million LOC and you did not use templates?
You did not use collections? nothing from the STL?
I don't understand what kind of application can have 1 MLOC and not use templates at all. You didn't even need the STL once? what kind of app was that? where did you store your data in memory? didn't you use lists, vectors, maps etc?
I really doubt your statement is true. I can't imagine a C++ program without at least one template in use.
Seeing how much doctors are corrupted (in my country at least), I would call the oath Hypocritical, not Hippocratic...
To become self-aware, a computer needs to build a model of the universe with it in the center. Humans do not become self-aware until they are of certain age (at around 5 years old), when the brain has been expanded enough so as that it can hold some sort of a model.
Self-awareness does not mean self-determination though. Motivation is purely because of emotions: it's emotions that drive our life, even if there is a facade of logic on top. Machines don't have any sort of motivation built in them.
The real reason Microsoft succeeded is piracy: they let everyone copy their operating systems (Windows 3.0/3.1, 95, NT 3.1/4.0). If they had been strict about piracy, they would never succeed. In fact, during the 90s, Microsoft O/Ses where circulating like open source software today: you could get a copy anywhere. People learned Windows and Office (also 'free'), and here we are, talking about Microsoft's domination...
And let's not forget the country with the 200 nuclear warheads that officially does not have nukes...
...is motivation. Whatever humans and animals do, it's because they are motivated to do it. Something pushes them to do what they do. But machines don't have that, unless we build it in them. So any machine, no matter how high it's intelligence is, it will not move unless we give it a command.
In almost every discussion, most people automatically connect AI with motivation. Motivation in humans comes from physical, emotional and mental needs. But I don't see how a machine with even the highest AI could do anything if not given an order, unless it is programmed to move by itself.
You bring up an important point. Actually, the most important! it's good that there is no AI yet, because if it was, it would mean humans need not work any more...all the jobs could be done by machines.
How would a society be structured if humans were unnecessary? how would we get fed? paid? how would we spend our days? how would we feel, if we had no jobs and nobody wanted us? (unemployed people may know of what I am speaking about).
On one hand, AI would mean that a perfect communistic society could be made a reality: all labor is performed by machines, and all people are equally rewarded with the results of this labor. But this is not realistic, and does not correspond to human nature, so it seems to me highly unlikely...
Given that Chinese hackers defeated Windows XP activation the very next day Windows XP were out, the probability of being able to hack their way through any electronic defense approaches 1 quickly. And since all the communication protocols and operating systems used in the west are available to them as well as all the knowledge around them, I don't see how they can't do it.
KDEs, not Gnomes.
35, but the moment this game is released, I am upgrading!!!
Very impressive! since we now know so much for our galaxy, can we get a new Star Trek series that sets things straight in relation to reality? it would be impressive to have a starship travel those massive distances and see all these stars up close.
Bill Gates has never posted to Slashdot, has he?
/. member.
He should be a
I just don't see any purpose in saving config files online. Even for backup purposes, a USB key is more than enough.
Since the article is available on pay only, could someone please explain why the universe may not be a hall of mirrors, even if it wraps around?
"Lock-free" does not mean no locking at all, it means waiting threads spin instead of entering the blocked threads queue.
How is Revolution different than Visual Basic? it seems the two products are very similar.
Indeed. Look at Microsoft Windows, for example. One catastrophic failure after the other, yet the boys at Redmond don't give up. Now that's science!!!
The problem is the O/S design. Most, if not all, operating systems have an all or nothing approach: either you are an administrator or you are a user. This forces programs to run in the context of the user (so as that the user contexts are manipulated) or if a user program is running with administrator rights, it allows the malware to get control of the system.
A much better approach would be the one similar to Intel CPUs: a system of software protection rings, with the outermost ring being the least privileged ring and the innermost ring being the most privileged ring. Rings would communicate with special gates provided by the operating system kernel living in the most privileged ring.
Untrusted software should be run within a protection ring less privileged than of trusted software...then malware could not do any harm, because it could not touch anything else, even the user's files.
The only problem that then remains is buffer overflows/wild pointers, but this is solved by the operating system hardening a process by not allowing execution in data pages (a functionality already existing in operating systems, but being optional).
Ballmer seems a very uninspiring person, especially for the position of Microsoft CEO. I long for the days where Gates was the CEO...his geeky looks played well with the idea that Microsoft creates technology. Ballmer looks like a used cars salesman.
And that's why the Enterprise E does not look as believable as the Enterprise D: the E is CGI, the D is a model.
Computer graphics can be realistic, but movie producers will not pay for the top-notch graphics packages and artists, making some CGI effects totally unbelievable.
One such movie was Airforce One. The CGI plane looked worse than the ones in Crysis...