In the beginning, there was a collaborative project between IBM and MS to produce a 32-bit, client server OS. Client server in the sense that it would support the concept of a "native" API, and adapter/wrapper APIs that resembled standards, such as POSIX, that brokered requests to the native API. It featured an advanced (for the time) filesystem with metadata features and a binary tree implementation of the file lookup table/cluster map. Eventually, IBM and MS parted ways. IBM sold the product as OS/2; Microsoft as Windows NT. Yes, there are a TON of differences between the 2. But they began life as one.
I couldn't find abit dual celeron motherboards anywhere on the microsoft hardware compatability list. I do know that my Compaq laptop running XP (which IS on the list, go figure) has never BSOD, with me banging away at development and running various server apps on it. Install did not take seven reboots. Not that XP reboots take that long anyway. Many installation/setup programs dont know any better, and suggest/force a reboot regardless of whether it is necessary, but that's a different story...
But a JIT (or a VM) is in a MUCH better position to analyze the current operating environment, level of SMP, processor stepping, available physical ram etc and leverage that information for a better executable. And instead of redistributing a recompiled app when compiler technology improves, the customer is responsible for obtaining the best JIT or VM available that suits her needs.
Hmmm... Fewer projectionists, faster turn-aound, more showings per day, as many screens showing whatever you got 1 copy of as you want...
Yeah, quality is less than film - or, it is less than film CAN BE (but often isn't)
Have you actually done any development in Java? The core class libraries are probably the best thing that happened to me in the last five years, apart from Linux. Their design is for the most part very sound. Can't say anything about.Net, but their libraries probably have a way to go before they grow as stable and functional as Java's.
I have done development in both. I can definitively say that the.Net class libraries are in fact stable and full featured.
And more than a few brand-new mistakes along the way. Hierarchical namespaces a la C++ (gack! - flame away if you want) I'll bite. how is this more evil than the filesystem hierarchy imposed by java?
nothing similar to inner classes (very powerful feature in Java but easily misused) yet i could say the same for operator overloading.
no classloaders (and no, assembly loading is not the equivalent) How is it not the equivalent?
event handling integrated into language (gack! twice) why gack?
metadata attributes inside source code (gack! three times). Do you know how elegant metadata would make JUnit?
The point that I failed to get across in the car analogy was that there is a certain amount of resonsibility that resides with the administrator of a system that she ensure that she knows how to secure the systems in her perview. The OS developer is responsible for providing a product that can be secured. Microsoft failed miserably with this in their consumer OSs up until XP. The NT line was securable, but you did have a learning curve to get up to speed.
I understand your statement Well acutally both. Since the language is reflective of the infrastructure but when you're talking about.Net, most of that responsibility/functionlity really has been abstracted out to the runtime.
The reality is that 28 days is not enought time to focus on security [...] You are right. It is not enough. Who said they were only spending 28 days on security? I thought it was bugfixes.
[...] and Microsoft does not have a good track record when it comes to security. True, but a bit disingenuous: if you sold cars to people who largely had no notion of how to operate a door lock nor inclination to learn, your customers would suffer a lot of security problems, too. Now, I'll be the first to admit that the locks dont always work, but the larger problem is, IMHO, user responsibility for security.
While it may be possible to start building in security into the existing system. Security is a continuous effort that must be thought of as part of the design. When a programmer creates a new language they must start to think security right off the bat. Amen.
This was done with Java, Very true.
but not C#. Also true. The security responsibility lies with the infrastructure, NOT the language. But since the term Java refers to both language and infrastructure, your previous statement is misleading.
Your attempt to bash C# fails. Security WAS a key design consideration of the infrastructure, from the start. Any MSIL (.Net Byte Code) is still subject to security verification.
hmmm... beginning to suspect you have no idea what you're talking about. it was hard getting past the hard-as-nails part. i have a new computer in my lab right now that won't install win2k and is locked up in the (default) install process where it thinks it's already installed but it really isn't.
Anecdotal points about specific hardware combinations failing to install/run a specific OS that fail to mention that the combination is in fact supported by the OS developer are rather worthless. For example, I have a particular model of IBM destop pc that signal 7s every time I try to install Redhat or Suse, but then, I never bothered to see if all the hardware in those pcs was supported by either distro. The same machines run Win2k just fine. So what? It proves nothing. My anecdotal experience with our servers is that Win2k on supported, properly configured hardware will typically have very little if any unplanned downtime.
dominant in marketshare only... i find it endless frustrating and difficult to use. Macs are infinitely easier to use and as far as I'm concerned, so is KDE. I used to use Win9x/NT before I found linux.
I'm glad you have a choice to make. I do to, and I happen to find Win2k/XP the easiest to use.
Java - multi-platform
C# - windows only (you don't think MS is going to extend C# like they tried to extend Java for windows?)
Now, you'd have to be insane to use windows as a production-level server. Lots of insane people make their living off of windows as a production-level server Unix is the only way to go... thus, Java. What happened to choice? I thought GNU was about choices? What if I gasp> don't like to code in Java? Heck, what happened to OS/400 or BSD? You can have your choices. If you are more comfortable with Unix environments, then they will typically be cheaper for you to operate. But if you don't understand how to acquire quality hardware for Windows, and you dont know how to administer it, then you hardly have any room to cast stones.
Bill makes a lot of sniping little attacks on C# that really amount to very little. So what if C# looks a lot like Java? That's what all the C++ people said about Java back in the day.
Then, he confuses the C language and it's inherent propensity for buffer overruns and various other pointer-math related problems with the C syntax - which is about all C# really inherits from C.
C# executes in a runtime context, just like Java does. You have several means for controlling things like "do I let downloaded code execute file I/O?" or "do I allow unverified code to execute?"
The crucial point here is the term unverified. The C# compiler can, and by default does, generate verifiably type-safe code. It has a compiler switch (oddly enough, "/unsafe") that enables unsafe code generation that includes unverifiable code. You have to use this switch when you use a unsafe directive in your code, and you have to use that directive to employ the pointer methods that Joy references. You might even take this a step further and think that, in an config file somewhere, there is a setting to disallow unsafe code that originated from the internet.
Bill even hints at this, and I hate to think that he is disingenuous to the point that he's failed to actually follow up and look at the mechanisms.Net uses for code access security, but he plays it off with the FUD statement that the security was tacked on to the framework after the C# language was built. That statement utterly fragments once you have taken a close look at the security infrastructure in the.Net framework. It isn't perfect, but from what I've seen, the tools are there to allow the clueful to secure the box with a fine degree of granularity.
Well, I've been working with various 'betas' of Visual Studio.Net for several months, and installed the RTM 2 days after it was released to MSDN subscribers.
All of the code that I've built - standard GUIs, console apps, web applications, SOAP Web services, and services (Windows daemons) have performed on a par with similiarly structured code compiled in VC++ or Delphi. Course, it's pretty shocking to see a full fledged.exe weighing in at 15kb ( + the 18MB.Net runtime redistributable, of course;)
A common complaint of people writing in a language that lacks feature x is to declare feature x useless or dangerous. Operator overloading makes sense in certain situations, especially where math semantics are being modeled.
Are operator overloads misused? Sure. So are knives, but that doesn't mean that cooks shouldn't use knives.
But you wanna talk about language features that Java lacks? How about enums? Why leave those out? And whats with this whole "bean" concept? Why can't that be a first class concept with real syntactical support instead of this asinine get___ set___ crap?
but is this saying that any program or class compiled in C# becomes, in effect, a SOAP server?
Not quite, but that step is an insanely easy one:
You preface the methods that you wish exposed as web services with a declarative like this
[WebMethod]
like
public class Foo {
private void NotSeen {}
public void NotAService {}
[WebMethod]
public string imaWebService
{ return "Hello Dave"; }
}
If you want access to the http server context and stuff, you inherit from System.Web.Services.WebService
That's funny. MS introduced the scatter/gather IO APIs in NT 4 just to make SQL Server faster. But, if you're still running NT3.51, you're probably still on MSSQL 6.5 too, so no worries.
Interesting assertion, and I'll not challenge it. But I'd be curious to know what the relative inventory levels are. You have to have double the in stock to sell double the units, and I havent seen an Xbox (or a GameCube) in stock.
Nintendo made more....costs less to make in that little form factor....costs less to ship in that little form factor...costs less in warehouse space to store that little form factor.
Here's an example Object Pascal class with some properties. You can see how the declaration maps the properties to their getter/setter or private variable with the read and write directives.
Cryptography/Countercryptography, it is all a neodarwinian game, an arms race, a cold war, call it what you will the key fact is that the decryptors are never very far behind the encryptors, the nature of technology is that the ability to encrypt blesses one with an equivalent ability to decrypt, the knowledge and techniques that improve encryption also improve decryption.
Ok, sure. I can agree with that.
The problem is the competitive nature of modern business. Despite what the hackers and libertarians may say, the home user has no real need of encryption - encryption is the technology of big government and big business. The home user does not need it for his emails to Aunt Beth and porn downloading, but Big Government and Megacorp(TM) most certainly do, for their official secrets and industrial espionage.
Hmmmm. Nope.
The development of encryption is rather like the development of weapons - it is at it's fastest in a cuthroat society of vicious competition.
So, the common folk have no right to protect themselves or their communication? Just the bigwigs of CorporateSociety and those in high places of power within the governments of the world? Huh-uh. Government exists to serve us, and neither would the Corporations of the world exist without consumers to fleece.
1. Build as in compile or build as in code it? You have to compile it in Kylix for it to run on Linux, but the two are source compatable, to an extent.
2. Yes, using the Indy HTTP server component, for example, it is possible to build a self contained SOAP server running on any port you like.
3. Yes, really, you can use http as a data transport layer. I think there is an option to use SOAP as the transport layer, as well, for those not capable of hosting httpsrv.dll
Isn't Windows a piece of shit on servers?
No.
In the beginning, there was a collaborative project between IBM and MS to produce a 32-bit, client server OS. Client server in the sense that it would support the concept of a "native" API, and adapter/wrapper APIs that resembled standards, such as POSIX, that brokered requests to the native API. It featured an advanced (for the time) filesystem with metadata features and a binary tree implementation of the file lookup table/cluster map. Eventually, IBM and MS parted ways. IBM sold the product as OS/2; Microsoft as Windows NT.
Yes, there are a TON of differences between the 2. But they began life as one.
I've never heard of this, and I've d@mn sure never experienced it. Can you cite examples? Links? Proofs that it aint just FUD?
I couldn't find abit dual celeron motherboards anywhere on the microsoft hardware compatability list. I do know that my Compaq laptop running XP (which IS on the list, go figure) has never BSOD, with me banging away at development and running various server apps on it. Install did not take seven reboots. Not that XP reboots take that long anyway. Many installation/setup programs dont know any better, and suggest/force a reboot regardless of whether it is necessary, but that's a different story...
But a JIT (or a VM) is in a MUCH better position to analyze the current operating environment, level of SMP, processor stepping, available physical ram etc and leverage that information for a better executable. And instead of redistributing a recompiled app when compiler technology improves, the customer is responsible for obtaining the best JIT or VM available that suits her needs.
Hmmm... Fewer projectionists, faster turn-aound, more showings per day, as many screens showing whatever you got 1 copy of as you want...
Yeah, quality is less than film - or, it is less than film CAN BE (but often isn't)
Have you actually done any development in Java? The core class libraries are probably the best thing that happened to me in the last five years, apart from Linux. Their design is for the most part very sound. Can't say anything about .Net, but their libraries probably have a way to go before they grow as stable and functional as Java's.
.Net class libraries are in fact stable and full featured.
I have done development in both. I can definitively say that the
And more than a few brand-new mistakes along the way. Hierarchical namespaces a la C++ (gack! - flame away if you want)
I'll bite. how is this more evil than the filesystem hierarchy imposed by java?
nothing similar to inner classes (very powerful feature in Java but easily misused)
yet i could say the same for operator overloading.
no classloaders (and no, assembly loading is not the equivalent)
How is it not the equivalent?
event handling integrated into language (gack! twice)
why gack?
metadata attributes inside source code (gack! three times).
Do you know how elegant metadata would make JUnit?
The point that I failed to get across in the car analogy was that there is a certain amount of resonsibility that resides with the administrator of a system that she ensure that she knows how to secure the systems in her perview. The OS developer is responsible for providing a product that can be secured. Microsoft failed miserably with this in their consumer OSs up until XP. The NT line was securable, but you did have a learning curve to get up to speed.
.Net, most of that responsibility/functionlity really has been abstracted out to the runtime.
I understand your statement Well acutally both. Since the language is reflective of the infrastructure but when you're talking about
The reality is that 28 days is not enought time to focus on security [...]
You are right. It is not enough. Who said they were only spending 28 days on security? I thought it was bugfixes.
[...] and Microsoft does not have a good track record when it comes to security.
True, but a bit disingenuous: if you sold cars to people who largely had no notion of how to operate a door lock nor inclination to learn, your customers would suffer a lot of security problems, too. Now, I'll be the first to admit that the locks dont always work, but the larger problem is, IMHO, user responsibility for security.
While it may be possible to start building in security into the existing system. Security is a continuous effort that must be thought of as part of the design. When a programmer creates a new language they must start to think security right off the bat.
Amen.
This was done with Java,
Very true.
but not C#.
Also true. The security responsibility lies with the infrastructure, NOT the language. But since the term Java refers to both language and infrastructure, your previous statement is misleading.
Your attempt to bash C# fails. Security WAS a key design consideration of the infrastructure, from the start. Any MSIL (.Net Byte Code) is still subject to security verification.
An Overview of Security in the .NET Framework
hmmm... beginning to suspect you have no idea what you're talking about. it was hard getting past the hard-as-nails part. i have a new computer in my lab right now that won't install win2k and is locked up in the (default) install process where it thinks it's already installed but it really isn't.
Anecdotal points about specific hardware combinations failing to install/run a specific OS that fail to mention that the combination is in fact supported by the OS developer are rather worthless. For example, I have a particular model of IBM destop pc that signal 7s every time I try to install Redhat or Suse, but then, I never bothered to see if all the hardware in those pcs was supported by either distro. The same machines run Win2k just fine. So what? It proves nothing. My anecdotal experience with our servers is that Win2k on supported, properly configured hardware will typically have very little if any unplanned downtime.
dominant in marketshare only... i find it endless frustrating and difficult to use. Macs are infinitely easier to use and as far as I'm concerned, so is KDE. I used to use Win9x/NT before I found linux.
I'm glad you have a choice to make. I do to, and I happen to find Win2k/XP the easiest to use.
Java - multi-platform
C# - windows only (you don't think MS is going to extend C# like they tried to extend Java for windows?)
Huh?
Now, you'd have to be insane to use windows as a production-level server.
Lots of insane people make their living off of windows as a production-level server
Unix is the only way to go... thus, Java.
What happened to choice? I thought GNU was about choices? What if I gasp> don't like to code in Java? Heck, what happened to OS/400 or BSD? You can have your choices. If you are more comfortable with Unix environments, then they will typically be cheaper for you to operate. But if you don't understand how to acquire quality hardware for Windows, and you dont know how to administer it, then you hardly have any room to cast stones.
Bill makes a lot of sniping little attacks on C# that really amount to very little. So what if C# looks a lot like Java? That's what all the C++ people said about Java back in the day.
.Net uses for code access security, but he plays it off with the FUD statement that the security was tacked on to the framework after the C# language was built. That statement utterly fragments once you have taken a close look at the security infrastructure in the .Net framework. It isn't perfect, but from what I've seen, the tools are there to allow the clueful to secure the box with a fine degree of granularity.
Then, he confuses the C language and it's inherent propensity for buffer overruns and various other pointer-math related problems with the C syntax - which is about all C# really inherits from C.
C# executes in a runtime context, just like Java does. You have several means for controlling things like "do I let downloaded code execute file I/O?" or "do I allow unverified code to execute?"
The crucial point here is the term unverified. The C# compiler can, and by default does, generate verifiably type-safe code. It has a compiler switch (oddly enough, "/unsafe") that enables unsafe code generation that includes unverifiable code. You have to use this switch when you use a unsafe directive in your code, and you have to use that directive to employ the pointer methods that Joy references. You might even take this a step further and think that, in an config file somewhere, there is a setting to disallow unsafe code that originated from the internet.
Bill even hints at this, and I hate to think that he is disingenuous to the point that he's failed to actually follow up and look at the mechanisms
Well, I've been working with various 'betas' of Visual Studio .Net for several months, and installed the RTM 2 days after it was released to MSDN subscribers.
.exe weighing in at 15kb ( + the 18MB .Net runtime redistributable, of course ;)
All of the code that I've built - standard GUIs, console apps, web applications, SOAP Web services, and services (Windows daemons) have performed on a par with similiarly structured code compiled in VC++ or Delphi. Course, it's pretty shocking to see a full fledged
A common complaint of people writing in a language that lacks feature x is to declare feature x useless or dangerous. Operator overloading makes sense in certain situations, especially where math semantics are being modeled.
Are operator overloads misused? Sure. So are knives, but that doesn't mean that cooks shouldn't use knives.
But you wanna talk about language features that Java lacks? How about enums? Why leave those out? And whats with this whole "bean" concept? Why can't that be a first class concept with real syntactical support instead of this asinine get___ set___ crap?
I could be biased, though.
but is this saying that any program or class compiled in C# becomes, in effect, a SOAP server?
Not quite, but that step is an insanely easy one:
You preface the methods that you wish exposed as web services with a declarative like this
[WebMethod]
like
public class Foo {
private void NotSeen {}
public void NotAService {}
[WebMethod]
public string imaWebService
{ return "Hello Dave"; }
}
If you want access to the http server context and stuff, you inherit from System.Web.Services.WebService
No, it wasn't, you moron. He said you couldnt assume that it was installed, which is correct. DirectX is not a part of the base OS install for NT4.
That's funny. MS introduced the scatter/gather IO APIs in NT 4 just to make SQL Server faster. But, if you're still running NT3.51, you're probably still on MSSQL 6.5 too, so no worries.
Dwarfed? Huh? The population of the United States is more than double that of Japan.
japan has about 125 million people
The US has about 281 million people
Interesting assertion, and I'll not challenge it. But I'd be curious to know what the relative inventory levels are. You have to have double the in stock to sell double the units, and I havent seen an Xbox (or a GameCube) in stock.
Nintendo made more....costs less to make in that little form factor....costs less to ship in that little form factor...costs less in warehouse space to store that little form factor.
Smart guys, Nintendo.
What ID10T modded me up? I WAS WRONG! Meta-mod! Meta-mod!
Ahh. I would appear to have referenced the wrong story (that bashes VA and /.)
But at least they slam VA Software and /.
Cryptography/Countercryptography, it is all a neodarwinian game, an arms race, a cold war, call it what you will the key fact is that the decryptors are never very far behind the encryptors, the nature of technology is that the ability to encrypt blesses one with an equivalent ability to decrypt, the knowledge and techniques that improve encryption also improve decryption.
Ok, sure. I can agree with that.
The problem is the competitive nature of modern business. Despite what the hackers and libertarians may say, the home user has no real need of encryption - encryption is the technology of big government and big business. The home user does not need it for his emails to Aunt Beth and porn downloading, but Big Government and Megacorp(TM) most certainly do, for their official secrets and industrial espionage.
Hmmmm. Nope.
The development of encryption is rather like the development of weapons - it is at it's fastest in a cuthroat society of vicious competition.
So, the common folk have no right to protect themselves or their communication? Just the bigwigs of CorporateSociety and those in high places of power within the governments of the world? Huh-uh. Government exists to serve us, and neither would the Corporations of the world exist without consumers to fleece.
1. Build as in compile or build as in code it? You have to compile it in Kylix for it to run on Linux, but the two are source compatable, to an extent.
2. Yes, using the Indy HTTP server component, for example, it is possible to build a self contained SOAP server running on any port you like.
3. Yes, really, you can use http as a data transport layer. I think there is an option to use SOAP as the transport layer, as well, for those not capable of hosting httpsrv.dll