Repeat after me: "HTML is document description language. It's not supposed to be used for formatting."
Wishful thinking. It was supposed to be document description language, but in reality it is not. Unfortunately, HTML is something in between document description and presentation description. Not this nor that.
And to test Internet explorer they needed 15 computers because no Windows can have two different versions of IE installed simultaneously. Much less fun.
You're absolutely correct:) Fortunately, we had to test much less than 15 versions of IE, something like 3-4, as they were much more consistent in their bugs than Netscape versions.
I believe, that's the problem with different rendering by Word 97 and Word 2000, not the different.doc formats. I agree, it's still bad; however, the problem is not with the file format.
Similarly, the IE and Netscape show pages differently, even if the HTML follows the standard... Not that it makes life easier for programmers: at my previous company, all programmers and testers had 15 versions of Netscape installed. Not much fun.
1. As I said, they shouldn't. But even id they do - you don't need hex editor to apply them, right? The installer will do that for you (think car mechanic)
2. It's exactly my point. We're not discussing SQL server or some other server software here, but just word processors. For server software, the original RMS analogy with cars is valid.
3. It is important, because car internals degrade with time and people need to be able to open the hood to see the actual condition for themselves. Not the case with Word Processors (or any other shrink-wrapped applications).
About the coffee maker... If your cat chews the power cord or deletes one of the program DLLs, you can easily restore the original condition of the program by reinstalling. With software like word processor, you can easily return to the original condition if needed. Try this with cars.
How many people are thinking: "Wish I had the MS Word source code, I would do this and that..."? Not many. That's the point.
There's some difference between 1 year and 365 days. First one has 1 significant digit and second one has 3 significant digits. It means you're much more vague in first case, so you don't really have a very good idea about the time needed. But if you give estimate in days, you probably planned the process more precisely.
For bigger projects sometimes it's better to use MFC. It's is based on the Model-View-Controller pattern, which makes it easier to decompose complex systems. Plus, it has some small convenient features, like object serialization.
From the other hand, MFC is very fat and quite inefficient in some areas. As a result, not many of the successful client-side applications are written using MFC. Even Microsoft programmers usually dont use it for production code, with the notable exception of WordPad. Well, it's not a surprise, of course. They don't even use the normal Visual C++ neither and use the frozen stable "internal" version of the compiler.
1) Your schema works, theoretically, but...
2) there's no reason to assume you gain anything by doing these transforms. On average, you will have 1:1 compression ratio. Unless...
3) your functions are not just generic CRC, MD5, etc. but rather some smart functions that allow to describe some patterns in the original file in a compact way. I this case, what you described is just another way of modelling of your original data.
JFYI, most of the current compressor algorithms work logically in 2 steps:
a) find the optimal way to model the original data; transform the original data using the new "alphabet" (in other words, map it into the new parametric space)
b) apply one of the entropy coding schemes (Huffman, arithmetic, range-coding, etc.)
The (b) part is easily presented/solved mathematically (btw, the arithmetic coding is the optimal one). However, the (a) part is complex. Most importantly, modelling it context-dependent. IMHO, the standard hash functions will not work well:)
At present, the only States that require an SSN for a driver's license are:
Illinois
Iowa
Kentucky
Mississippi
Pennsylvania
West Virginia
All other States do not require an SSN, but will usually ask for one. If an alien does not qualify for an SSN, usually a statement from the Social Security Administration indicating the alien is not eligible will suffice. Source: link
I've met some virus authors at the end of 80-s. All of them were driven by "because I can" reason only. It was just a challenge; not many of them were thinking about the possible damages, etc. BTW, Scientific American had an article about viruses in the under the "Mathematical Recreations" topic, because it was a recreation.
I'm sure most of the virus authors nowadays still have the same mentality. I don't think they do it for some pragmatic reason. Just because they can. It's the stupidity in its pure form.
Of course, you may use your own different definition of OOP. However, traditionally the inheritance and polymorphism are considered to be the essential parts of OOP.
What you're referring to is an "object-based" programming language, something like Modula-2. It supports object encapsulation, but it's not an OOP language yet.
Please read the comp.object.FAQ:
1.15) What Is The Difference Between Object-Based And Object-Oriented?
Object-Based Programming usually refers to objects without inheritance
[Cardelli 85] and hence without polymorphism, as in '83 Ada and Modula-2.
These languages support abstract data types (Adts) and not classes, which
provide inheritance and polymorphism. Ada95 and Modula-3; however, support
both inheritance and polymorphism and are object-oriented. [Cardelli 85, p481]
state "that a language is object-oriented if and only if it satisfies the
following requirements:
- It supports objects that are data abstractions with an interface of named
operations and a hidden local state.
- Objects have an associated type.
- Types may inherit attributes from supertypes.
STL is not object oriented. I think that object orientedness is almost as much of a hoax as Artificial Intelligence. I have yet to see an interesting piece of code that comes from these OO people... I find OOP technically unsound. It attempts to decompose the world in terms of interfaces that vary on a single type. To deal with the real problems you need multisorted algebras - families of interfaces that span multiple types. I find OOP philosophically unsound. It claims that everything is an object. Even if it is true it is not very interesting - saying that everything is an object is saying nothing at all. I find OOP methodologically wrong. It starts with classes. It is as if mathematicians would start with axioms. You do not start with axioms - you start with proofs. Only when you have found a bunch of related proofs, can you come up with axioms. You end with axioms. The same thing is true in programming: you have to start with interesting algorithms. Only when you understand them well, can you come up with an interface that will let them work.
Interesting, but I disagree with some of your points. One by one:
1) OOP != encapsulation, by definition.
Hint: you missed inheritance and polymorphism:)
2) Unfortuantely, not every program is combination of OO and procedural code. Sometimes OOP-ness is enforced.
Hint: Java.
3) Unfortunately, OOP is not helping to package code and data togethter. On the contrary, because of the inheritance it's often more difficult to trace what are the properties and methods of an object.
Hint: read "Patterns of Software" by Richard Richard P. Gabriel. He has an exellent chapter on compression and reuse. By compression he means dependency on the context. For OOP it's non-localized dependency, which is usually bad.
4) Your argument about NULL pointer checking is irrelevant. Before calling object methods, you have to make sure is's initialized. No difference with passing the pointer as an argument.
5) There's more than just applying a function to a structure. Here it is: applying a function to two structure of diferent type. Where do you put this function? In OOP, it's a source of many arbitrary decisions on early stage. Projects evolve, but it's difficult to change such a decision once it's done.
Example: LinkPictureToAlbum( Picture, Album ). Is it Album object method or Picture object method?
In practice, another problem is need for multiple dispatch, but that's rather implementation problem. C++ and Java are popular OOP languages and they provide single dipatch only. It's not an inherent OOP problem - see CLOS for an example of successful multiple dispatch in OOP.
6) Templates is non-OO feature of C++!
I agree with your conclusion, though. The OOP is not a panacea, but it's definitely useful.
The STL is NOT based on OO paradigm. It's called generic programming. And Alexander Stepanov, the STL author, is not happy with OOP at all. There were some problems with mapping STL concepts into the C++ language. Bjarne Stroustrup even added some non-OO features to the language in order to support STL.
Originally I'm from Ukraine and have somehow mixed feelings about the piracy issue. Just some comments:
1) Yes, the piracy level is really insane there in Ukirane. The price of "a software" is $2 per CD. No matter what it is - Windows, Oracle, any games, etc. Just $2, and you can buy it in kiosks at any shopping mall, near almost every bus stop, etc. The situation with music and video is similar. Most of the music now is in MP3 format, so 1-2 disc set covers all the albums of an artist. The discs also contain an MP3 player (Winamp usually) plus album lyrics, pictures, etc. The same $2 per disc.
2) I talked to some people selling the pirated stuff. From what they told me, almost all the software CDs are made in China. The video and audio discs usually come from Russia, China and Bulgaria. Not Ukraine.
3) Average monthly salary there is about $50-100; individuals could not buy the licensed software anyway. It's not an excuse, of course; JFYI.
4) Ukrainian companies is different story. They do buy licensed software. I'd say, the piracy level in corporations there is on about the same level as here in the US.
There are several programs allowing to use your DV camcorder for backups. For example:
http://dvbackup.sourceforge.net
Re:Together
on
Java IDEs?
·
· Score: 5, Informative
Together is nice, but last time I checked it was very expensive. Something like $7000 for single-user/single-computer license or $11000 for floating license.
I don't mind paying for good software, but 4-5 digit figures... it's too much, IMHO.
Yes, Georg Cantor proclaimed the freedom to be the essence of Mathematics. That means - it's enough for a mathematical entity to conform to mathematical rules and not to the rules of the physical world, religion, whatever.
What's ironic - in the same time, Cantor himself spent a lot of energy to justify his Set Theory from non-mathematical positions. He considered all kinds of natural science, metaphysical, philosophical and teological arguments.
I'm glad someone mentioned him. For me, Lem is the number one in XX century Science Fiction. Some of his works sound rather naive now, but that's inevitable, probably.
BTW, I prefer his short novels. Solaris, Mask are OK, but nothing special, IMHO. But The Lymphater Formula, Star Diaries, Pirx the Pilot stories are just brilliant.
Sad thing, though... I read his recent interviews and they are very disappointing to me. Well, it's my problem, probably:)
Repeat after me: "HTML is document description language. It's not supposed to be used for formatting."
:) Fortunately, we had to test much less than 15 versions of IE, something like 3-4, as they were much more consistent in their bugs than Netscape versions.
Wishful thinking. It was supposed to be document description language, but in reality it is not. Unfortunately, HTML is something in between document description and presentation description. Not this nor that.
And to test Internet explorer they needed 15 computers because no Windows can have two different versions of IE installed simultaneously. Much less fun.
You're absolutely correct
I believe, that's the problem with different rendering by Word 97 and Word 2000, not the different .doc formats. I agree, it's still bad; however, the problem is not with the file format.
Similarly, the IE and Netscape show pages differently, even if the HTML follows the standard... Not that it makes life easier for programmers: at my previous company, all programmers and testers had 15 versions of Netscape installed. Not much fun.
1. As I said, they shouldn't. But even id they do - you don't need hex editor to apply them, right? The installer will do that for you (think car mechanic)
2. It's exactly my point. We're not discussing SQL server or some other server software here, but just word processors. For server software, the original RMS analogy with cars is valid.
3. It is important, because car internals degrade with time and people need to be able to open the hood to see the actual condition for themselves. Not the case with Word Processors (or any other shrink-wrapped applications).
About the coffee maker... If your cat chews the power cord or deletes one of the program DLLs, you can easily restore the original condition of the program by reinstalling. With software like word processor, you can easily return to the original condition if needed. Try this with cars.
How many people are thinking: "Wish I had the MS Word source code, I would do this and that..."? Not many. That's the point.
Well, it still makes sence.
There's some difference between 1 year and 365 days. First one has 1 significant digit and second one has 3 significant digits. It means you're much more vague in first case, so you don't really have a very good idea about the time needed. But if you give estimate in days, you probably planned the process more precisely.
Nice argument, but it doesn't work here, because:
1) Cars require regular maintenance. Word processors don't (or shouldn't).
2) Cars cost hundred times more than word processors.
3) Amortization and used car sale.
More appropriate comparison would be with something like your coffee maker. Many of us use things every day, but we don't care what's inside.
For simple programs, VB will do just fine.
For bigger projects sometimes it's better to use MFC. It's is based on the Model-View-Controller pattern, which makes it easier to decompose complex systems. Plus, it has some small convenient features, like object serialization.
From the other hand, MFC is very fat and quite inefficient in some areas. As a result, not many of the successful client-side applications are written using MFC. Even Microsoft programmers usually dont use it for production code, with the notable exception of WordPad. Well, it's not a surprise, of course. They don't even use the normal Visual C++ neither and use the frozen stable "internal" version of the compiler.
1) Your schema works, theoretically, but...
:)
2) there's no reason to assume you gain anything by doing these transforms. On average, you will have 1:1 compression ratio. Unless...
3) your functions are not just generic CRC, MD5, etc. but rather some smart functions that allow to describe some patterns in the original file in a compact way. I this case, what you described is just another way of modelling of your original data.
JFYI, most of the current compressor algorithms work logically in 2 steps:
a) find the optimal way to model the original data; transform the original data using the new "alphabet" (in other words, map it into the new parametric space)
b) apply one of the entropy coding schemes (Huffman, arithmetic, range-coding, etc.)
The (b) part is easily presented/solved mathematically (btw, the arithmetic coding is the optimal one). However, the (a) part is complex. Most importantly, modelling it context-dependent. IMHO, the standard hash functions will not work well
At present, the only States that require an SSN for a driver's license are:
Illinois
Iowa
Kentucky
Mississippi
Pennsylvania
West Virginia
All other States do not require an SSN, but will usually ask for one. If an alien does not qualify for an SSN, usually a statement from the Social Security Administration indicating the alien is not eligible will suffice. Source: link
I've met some virus authors at the end of 80-s. All of them were driven by "because I can" reason only. It was just a challenge; not many of them were thinking about the possible damages, etc. BTW, Scientific American had an article about viruses in the under the "Mathematical Recreations" topic, because it was a recreation.
I'm sure most of the virus authors nowadays still have the same mentality. I don't think they do it for some pragmatic reason. Just because they can. It's the stupidity in its pure form.
Build it; if it becomes popular enough, they will write a virus for it.
It reminds me of Larry Wall quote:
"Usenet is essentially Letters to the Editor without the editor. Editors don't appreciate this, for some reason."
JFYI:
Country/film produced in 1999:
India 764
US 628
Japan 270
Philippines 220
France 181
etc.
Source: Screen Digest
Of course, you may use your own different definition of OOP. However, traditionally the inheritance and polymorphism are considered to be the essential parts of OOP.
What you're referring to is an "object-based" programming language, something like Modula-2. It supports object encapsulation, but it's not an OOP language yet.
Please read the comp.object.FAQ:
1.15) What Is The Difference Between Object-Based And Object-Oriented?
Object-Based Programming usually refers to objects without inheritance
[Cardelli 85] and hence without polymorphism, as in '83 Ada and Modula-2.
These languages support abstract data types (Adts) and not classes, which
provide inheritance and polymorphism. Ada95 and Modula-3; however, support
both inheritance and polymorphism and are object-oriented. [Cardelli 85, p481]
state "that a language is object-oriented if and only if it satisfies the
following requirements:
- It supports objects that are data abstractions with an interface of named
operations and a hidden local state.
- Objects have an associated type.
- Types may inherit attributes from supertypes.
Sure. Here's the quote from An Interview with A. Stepanov:
STL is not object oriented. I think that object orientedness is almost as much of a hoax as Artificial Intelligence. I have yet to see an interesting piece of code that comes from these OO people... I find OOP technically unsound. It attempts to decompose the world in terms of interfaces that vary on a single type. To deal with the real problems you need multisorted algebras - families of interfaces that span multiple types. I find OOP philosophically unsound. It claims that everything is an object. Even if it is true it is not very interesting - saying that everything is an object is saying nothing at all. I find OOP methodologically wrong. It starts with classes. It is as if mathematicians would start with axioms. You do not start with axioms - you start with proofs. Only when you have found a bunch of related proofs, can you come up with axioms. You end with axioms. The same thing is true in programming: you have to start with interesting algorithms. Only when you understand them well, can you come up with an interface that will let them work.
Interesting, but I disagree with some of your points. One by one:
:)
1) OOP != encapsulation, by definition.
Hint: you missed inheritance and polymorphism
2) Unfortuantely, not every program is combination of OO and procedural code. Sometimes OOP-ness is enforced.
Hint: Java.
3) Unfortunately, OOP is not helping to package code and data togethter. On the contrary, because of the inheritance it's often more difficult to trace what are the properties and methods of an object.
Hint: read "Patterns of Software" by Richard Richard P. Gabriel. He has an exellent chapter on compression and reuse. By compression he means dependency on the context. For OOP it's non-localized dependency, which is usually bad.
4) Your argument about NULL pointer checking is irrelevant. Before calling object methods, you have to make sure is's initialized. No difference with passing the pointer as an argument.
5) There's more than just applying a function to a structure. Here it is: applying a function to two structure of diferent type. Where do you put this function? In OOP, it's a source of many arbitrary decisions on early stage. Projects evolve, but it's difficult to change such a decision once it's done.
Example: LinkPictureToAlbum( Picture, Album ). Is it Album object method or Picture object method?
In practice, another problem is need for multiple dispatch, but that's rather implementation problem. C++ and Java are popular OOP languages and they provide single dipatch only. It's not an inherent OOP problem - see CLOS for an example of successful multiple dispatch in OOP.
6) Templates is non-OO feature of C++!
I agree with your conclusion, though. The OOP is not a panacea, but it's definitely useful.
The STL is NOT based on OO paradigm. It's called generic programming. And Alexander Stepanov, the STL author, is not happy with OOP at all. There were some problems with mapping STL concepts into the C++ language. Bjarne Stroustrup even added some non-OO features to the language in order to support STL.
Originally I'm from Ukraine and have somehow mixed feelings about the piracy issue. Just some comments:
1) Yes, the piracy level is really insane there in Ukirane. The price of "a software" is $2 per CD. No matter what it is - Windows, Oracle, any games, etc. Just $2, and you can buy it in kiosks at any shopping mall, near almost every bus stop, etc. The situation with music and video is similar. Most of the music now is in MP3 format, so 1-2 disc set covers all the albums of an artist. The discs also contain an MP3 player (Winamp usually) plus album lyrics, pictures, etc. The same $2 per disc.
2) I talked to some people selling the pirated stuff. From what they told me, almost all the software CDs are made in China. The video and audio discs usually come from Russia, China and Bulgaria. Not Ukraine.
3) Average monthly salary there is about $50-100; individuals could not buy the licensed software anyway. It's not an excuse, of course; JFYI.
4) Ukrainian companies is different story. They do buy licensed software. I'd say, the piracy level in corporations there is on about the same level as here in the US.
The main difference is that GetRight or others of the same type work on top of the TCP/IP, while the article talks about UDP-based protocol.
The idea is to get rid of TCP/IP overhead, as far as I understand.
There are several programs allowing to use your DV camcorder for backups. For example:
http://dvbackup.sourceforge.net
Together is nice, but last time I checked it was very expensive. Something like $7000 for single-user/single-computer license or $11000 for floating license.
I don't mind paying for good software, but 4-5 digit figures... it's too much, IMHO.
From Kill-a-byte to Tear-a-byte to Pet-a-byte.
The PCs are bulky. Those 3D games make sense on PC.
But PDA are small and flat. The PDA games should be 2D.
What we need now is 1D-game. If you know what I mean.
What's ironic - in the same time, Cantor himself spent a lot of energy to justify his Set Theory from non-mathematical positions. He considered all kinds of natural science, metaphysical, philosophical and teological arguments.
Mathematics is free. The mathematicians are not.
I'm glad someone mentioned him. For me, Lem is the number one in XX century Science Fiction. Some of his works sound rather naive now, but that's inevitable, probably.
:)
BTW, I prefer his short novels. Solaris, Mask are OK, but nothing special, IMHO. But The Lymphater Formula, Star Diaries, Pirx the Pilot stories are just brilliant.
Sad thing, though... I read his recent interviews and they are very disappointing to me. Well, it's my problem, probably
...minus warranty