Programming .NET Components 327
Programming .NET Components | |
author | Juval Loewy |
pages | 460 |
publisher | O'Reilly |
rating | 7.5 |
reviewer | Gianluca Insolvibile |
ISBN | 0596003471 |
summary | An introduction to components-oriented development with the tools and services provided by the .NET framework |
One day, I stumbled upon the mono and Portable.NET projects, which are trying to bring all the .NET stuff to the penguin platform. This was the main reason that convinced me to learn more on .NET: open specs, a component-enabling technology, the cross-platform mirage, a completely new (well, sort of) set of concepts to be grasped, and something which I could use both on Linux and on Windows.
Armed with these expectations, I decided to look for a good introductory text on the .NET framework focused on components development. Among the plethora of publications on the subject, I decided to stick with a publisher having a long and respectable tradition in Open Source related books. Among the herd of funny beasts that populate O'Reilly's catalog, I picked out a "land hermit crab," aka Programming .NET Components, by Juval Loewy.
Overview
The book begins with a chapter giving a rationale behind component-oriented programming versus object-oriented programming, that is, interfaces versus inheritance. The second chapter shows how those concepts are reflected in the .NET Framework, briefly introducing the Common Language Runtime (CLR), the Intermediate Language (IL) and .NET Assemblies. The following three chapters deal with interface-based programming, objects lifecycle management and versioning, gradually introducing the underlying concepts and showing how they become concrete in the .NET framework (more specifically, by using the C# language). No formal introduction to C# language constructs is given, but if you are familiar with C++ or Java you will be able to follow the code snippets fairly easily.Events and asynchronous code execution are the subjects of Chapters 6 and 7, respectively. While the former is just a quick introduction to the C# approach to delegates and events (yet useful if you are new to the matter), the chapter on asynchronous calls is much more substantial. The mechanics behind async calls are explained, together with pros and cons of using callbacks, BeginInvoke() and EndInvoke() calls, one-way methods, and so on.
Chapter 8 is devoted to Multithreading and Concurrency. Commonplace concepts like threads application and usage are explained, as always dressed with a bit of C# syntax. While such concepts are easily found in any multithreaded programming tutorial on the Internet, explaining them from the basics never hurts -- and prepares the reader to the most insidious traps of multithreaded programming. Synchronization appropriately takes a fair part of Chapter 8: automatic and manual synchronization provided by the .NET runtime environment are explained, together with the concepts of contexts and synchronization domains. This part is quite interesting, since it delves into .NET specific concepts which are quite new to programmers who had a happy Microsoft-less childhood (though they might not be so new to people who speak COM fluently). Other .NET threading related services (such as timers) are presented at the end of the chapter.
Chapter 9, devoted to object serialization and persistence, describes how live objects can be transformed (formatted) into a stream of bytes to be sent over a network channel, or stored on a persistent storage medium. This chapter lays the grounds for the exacting chapter on remoting, which follows immediately. Chapter 10 is the longest and most content-rich chapter of the book: first, the entire story of native processes, .NET app domains and assemblies is told. After reading it here, it won't look so confusing as before. Then, objects marshaling, remote callbacks, synchronization and activation modes are described, including client and server activated, single-call and singleton modes. Afterwards, the author gets to a global overview of the .NET remoting architecture, its basic building blocks (like proxies, transport channels and call dispatchers) and working mechanisms (like type registration and environment configuration). A reprise on objects sponsorship and leasing closes the chapter and completes the discussion on objects' lifecycle left pending in Chapter 4. Chapter 10 offers a lot of interesting cues, but unfortunately cannot dig deeply enough in the subject (after all, this is not a book on remoting). Many people (including Juval himself) recommend Ingo Rammer's Advanced .NET Remoting (APress) to learn more on the topic, but I have yet to get my hands on it.
Chapter 11 reprises the description of contexts in .NET, this time focusing on calls interception. The whole interception architecture is described with a fair level of detail and, as always, in a clear and understandable way. Context-agile and context-bound objects are described, as well as .NET and custom component services. While reading this chapter, you start understanding that contexts, app domains, call interception and remoting are tightly interwoven and that their full understanding is the real key to the exploitation of the .NET platform potential. Unfortunately, this is where the book leaves you alone -- but I strongly suspect that a full coverage of these topics would have required an entire book on its own.
The last chapter of the book deals with the .NET Security architecture, introducing the concepts of permissions, code groups and policies. Security administration is explained, both from a system configuration and a programmatic point of view.
What's to like
What I liked most is the straightforward approach of the author in introducing the rationale behind components, components-based programming and their support in the .NET Framework: each concept is walked through step-by-step, instead of being presented in a complete working example with little or no explanation. Hence, you won't get working code on page 3 of the book -- instead, you will gradually learn how to write some.Indeed, I found the description of awkward concepts like asynchronous calls, multithreading and remoting very clear, even for someone with no previous experience with .NET and C#.
I also consider a plus the broad experience the author has in the field, which shines through the many programming hints given, and in lots of references to concepts in COM which have an homologous in .NET.
I finally found the book to have the right balance between printed code and text (that is: do not fill hundreds of pages with code, I'll look at it online).
What's to consider
Programming .NET Components is just an introductory book: it points you in the right direction toward components programming with .NET, but does not bring you very far. If you are really serious about learning .NET advanced topics, you will need a more specific tome to complement (or substitute for) this one.More specifically, the 70 pages which cover remoting are just an introduction to the matter. The same applies to some of the most important concepts revolving around .NET (app domains, contexts, and the like).
Finally, despite the subtitle ("Design and Build Maintainable Systems using Components-Oriented Programming"), be warned that this is not at all a book on software design (components oriented programming is covered in just 15 pages).
The summary
Reading the book goes without a glitch, thanks to a smooth writing style and a very structured approach to explaining concepts. Still, when I turned the last page of the book I felt that my understanding of components within the .NET platform was far from complete..NET Components Programming is quite fair to its title: it will teach you how to program components by using .NET constructs, but (apart from some quick notes here and there) it will not provide extensive coverage of components oriented design and development. If you are already familiar with .NET concepts and are looking for something shedding light on components programming, this book will not help you significantly. On the contrary, if you know something about components and want to start developing them into the .NET Framework, this will surely be an interesting read.
Table of Contents
Preface
Chapter 1. Introducing Component-oriented programming
Chapter 2. .NET Component-oriented Programming Essentials
Chapter 3. Interface-based Programming
Chapter 4. Lifecycle Management
Chapter 5. Version Control
Chapter 6. Events
Chapter 7. Asynchronous Calls
Chapter 8. Multithreading and Concurrency Management
Chapter 9. Serialization and Persistence
Chapter 10. Remoting
Chapter 11. Context and Interception
Chapter 12. Security
Appendix A. Interface-based Web-services
Appendix B. Custom Security Principal
Appendix C. Reflection and Attributes
You can purchase Programming .NET Components from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.
This is what this article is about. (Score:5, Insightful)
The lack of starndardized libraries. KParts, Bonbobo, XParts, DCOP, XUL, OpenOffice are all competing technologies. No one component model for linux. Wan't the KHTML part to display a webpage in your gnumeric spreadshit? No, you can't do it yet.
I just hope the proposed Xembed [freedesktop.org] standard gets implemented soon, or Linux will be screwed on the desktop for a while
Re:This is what this article is about. (Score:2)
And you never will be able to. And that's a good thing. To many people, it's questionable whether component models are ever a good thing, and there are big differences in how to implement them. By creating many different desktops and having them compete, good co
Re:This is what this article is about. (Score:3, Informative)
You make a good point, however, I just wanted to clarify what exactly XUL is, becuase it is definitely NOT a component framework.
Bryan
Re:This is what this article is about. (Score:3, Insightful)
Depending on other things is a REALLY stupid idea.
Thanks for enlightening me.
Re:This is what this article is about. (Score:2)
Re:This is what this article is about. (Score:2, Insightful)
Get a grip. Search engines are singular in purpose, they are transparent (gee a list of websites), and there are enou
Re:This is what this article is about. (Score:2)
No, because you haven't answered how embedding things other than numbers and formulas into a spreadsheet makes it more "complete". I'd rather they put that effort into making more functions, more stability, and better visualization tools. All embedding HTML objects does is increase the number of bullets in the marketing materials. Simply, there is no bullshit or doublespeak here except in Mi
What? (Score:5, Funny)
Why anyone would say DCOM is more graspable than J2EE is IUnknown
Re: (Score:2)
Re:What? (Score:3, Funny)
CORBA is cross-language.
J2EE is cross-platform.
DCOM is cross-yourfingers.
(j/k, I actually like DCOM, but it has a much simpler task)
Microsoft (Score:4, Insightful)
Nuttles
Christian and proud of it
Re:Microsoft (Score:5, Insightful)
Re:Godwins Law hereby INVOKED! (Score:2)
Re:Godwins Law hereby INVOKED! (Score:2)
While at times Slashdot can be rather hostile towards
No, no, no!
Slashdot is Fair And Balanced.
Re:Godwins Law hereby INVOKED! (Score:3, Insightful)
Yes, I have a sense of humor. No, this isn't funny.
Standard for what? (Score:5, Interesting)
Microsoft may be the defacto standard for client side apps. But on the server side it holds no such title, and enterprise development is supposed to be what DCOM is all about. Things like J2EE and CORBA have way more of a hold on enterprise development than anything that Microsoft has ever put out. There's a big difference between a single-user desktop operating system and a multi-user scalable enterprise platform. From what I've seen, Microsoft has only been sucessful with the former.
Re:Microsoft (Score:2)
That's because, if they weren't the de facto standard, they'd simply integrate it into their product line and force everyone to use it. Can you say Monopoly?
Re:Microsoft (Score:4, Insightful)
They control the desktop and have a majority of the browser market. How that makes them a "de facto standard" for server-side and/or OO programming languages I'm not certian.
Especially considering that .NET is an attempt to implement Java / JVM concepts within an MS-only environment
Re:You talk so tuff. (Score:2)
Right here. [netcraft.com]
Re:You talk so tuff. (Score:2)
I hate to bite, but here goes....
Lets have a little look at the latest monthly web server survey [netcraft.com] from netcraft. Now, I will quote:
[...]
Re:You talk so tuff. (Score:2)
Oops... I hate to make this a double-reply but I just had to :)
Hmmm.... they seem to be included in the netcraft.com survey, and yet Apache still handily beats MS. Oh, I see, right... quantitative information is much more useful than qualitative information.
Defacto where??? (Score:2, Insightful)
It maybe the defacto standard for mail servers (exchange) but thats all I've seen it used for.
It's defacto if you want to write video games.
Re:Defacto where??? (Score:2)
Re:Defacto where??? (Score:2)
Re:Microsoft (Score:4, Insightful)
Unless you count databases, web, mail, and print servers.
Sorry if I missed some.
Simplicity??? (Score:5, Interesting)
"Simplicity" is probably the one word you can't use to describe that nightmare called COM. COM makes programmers jump through hoops to achieve what plain vanilla C++ (mostly) already provides. Anyone who has ever tried to do a large project using COM (no, that little DirectX Tetris game doesn't count) can attest to the pain and suffering the architecture inflicts on those unlucky enough to have to use it.
Re:Simplicity??? (Score:3, Insightful)
Re:Simplicity??? (Score:2, Insightful)
There was nothing particularly wrong with the approach M$ took with only allowing one instance of a single version of a component to be installed. The problem was all the hackers out there who didn't understand the versioning schema - and hence failed to provide backwards compatibility for their components under the same GUID.
COM is complicated - but then again
Re:Simplicity??? (Score:3, Interesting)
MSDN includes access to all of the desktop and server versions of Windows, and you can have up to 10 machines running desktop Windows. They figured that a coder would have multiple machines and accomodated that.
Nice attempt at a troll, though. Not.
Re:Simplicity??? (Score:2)
You can do that. It's still an expense that you shouldn't HAVE to incur. There's also the expense of setting up and reconfiguring each VM installation. They don't configure themselves, so you have to spend annoying amounts of time doing it. If you could simply load different COM versions simulataneously, you'd have a much easier time. Take Java for example. Thanks to class loaders, I can load an inifinite number of JavaBean versions IN THE SAME JVM!
Call me when Windows gets past th
Re:Simplicity??? (Score:2, Informative)
No, but seriously, dotnet is all about versioning.. You could have as many different builds of the same software in the GAC as you wanted. Dotnet allows XCopy deployment without registering components, etc and a pretty darn decent versioning management system. Heck, with ASP.NET you can deploy a new version of your dll's for your
Re:Simplicity??? (Score:2)
Re:Simplicity??? (Score:5, Interesting)
M@
Re:Simplicity??? (Score:2)
Re:Simplicity??? (Score:4, Informative)
For vb.net, it is fully featured, and just as powerfull as c#
I personally prefer c# syntax, because it is more terse, and more strict. Its also closer to Java and C (obviously) so I dont have to do as much mind shifting about case sensitivity, semicolons, etc.
Re:Simplicity??? (Score:3, Insightful)
COM is pretty easy in C++ with the #import key word. Actually, it's very easy with that one as VC++ will generate wrapper classes for you to communicate with the component. The only difference from VB should be the syntax; you wouldn't write much more code to accomplish the same thing. Sure, #import is probably a VC++ specific key word, but as COM is an MS-specific technology and VC++ is the dominating IDE on Windows, I don't really see a problem with that.
Re:Simplicity??? (Score:2)
VB makes it pretty simple.
Re:Simplicity??? (Score:2)
Dr. GUI on Components, COM, and ATL [microsoft.com] helped me a lot by covering what happens behind the scenes.
Re:Simplicity??? (Score:5, Interesting)
COM can definitely be challenging sometimes when things don't work properly, but in my experience it makes my life easier much more often than it makes my life more difficult.
For example, I'd say it's MUCH easier to use the COM-reliant WSH (Windows Scripting Host) to add scripting capabilities to my application than it is to write my own interpreters for all those languages, or make my own scripting language. I've done both, and using WSH takes almost no time or effort, whereas writing my own backend and/or language compiler/interpreter can take days.
If I want to integrate my application with other windows apps, COM is pretty much the only way to go. Some programs MIGHT offer a native C++ or Java API, but 99% of the time the applications I have to integrate with expose a COM API exclusively. So, writing my app using vanilla C++ doesn't do much since I have to do all that COM programming anyway.
Similarly, if I want other programs to be able to talk to mine, exposing a COM API is usually my best bet, since it allows people to choose from a variety of languages, perform rapid prototyping quickly and easily, and be able to quickly integrate my application into other applications I hadn't even considered. Anyone can pick up a bit of VBScript or VBA and figure out how to use my application through its COM API. I've had managers muddle through simple excel macros to control my software and do some great customization that way, but a C/C++/Java API means only other programmers will be able to take advantage of that feature. IMHO There's no point in developing features only a select few users will be able to take advantage of.
And getting back to WSH, this also means that users don't have to be programmers to use other windows programs from my application, either. Want to make my app export data directly to Excel and plot it? No problem! Record a macro in Excel and you're halfway there!
When all bets are in, I'd much rather have COM than not have it. All of the hoops you refer to are what make COM so easy to use from a higher level of abstraction, which was the goal in the first place. The places where it runs into problems are generally where the spec (IMHO) is ill-defined (or undefined) such as how to effectively handle multi-threaded apps talking to single-threaded apps and vice-versa, determining how and when to display a user interface for a program that is being controlled via COM, determining how and when a program should clean-up and exit that is being controlled by its API (e.g. some programs require you explicitly to call a "quit" function, even though releasing the object should be sufficient), and the semantics for getting/using/releasing COM objects for programs that users are already running. Despite those flaws, I still get a lot of mileage out of COM, and I spend a lot more time making useful things happen than being mired in the tedious bits.
Re:Simplicity??? (Score:5, Interesting)
This example is stupid. You are saying that it is much easier to use a third-party library than to write your own implementation. Well, duh! And it makes no difference whether you access the library via COM or plain C++ / Java / whatever interface.
If I want to integrate my application with other windows apps, COM is pretty much the only way to go. Some programs MIGHT offer a native C++ or Java API, but 99% of the time the applications I have to integrate with expose a COM API exclusively. So, writing my app using vanilla C++ doesn't do much since I have to do all that COM programming anyway.
There! Now we get to the real reason windows programmers use COM: they are forced to!
I've had managers muddle through simple excel macros to control my software and do some great customization that way, but a C/C++/Java API means only other programmers will be able to take advantage of that feature.
There are other ways to do it. There is no reason why excel couldn't have a scripting library to link with your application. It's no different from linking with WSH. But Microsoft chose COM...
Re:Simplicity??? (Score:2)
Re:Simplicity??? (Score:3, Interesting)
No, you are both oversimplifying what I said, and putting words in my mouth. What I'm saying is that thanks to the COM interface architecture, there are ubiquitous components that can all talk to each other with relative ease, making stuff like adding a scri
Re:Simplicity??? (Score:2, Interesting)
Re:Simplicity??? (Score:2)
Who ever thought exporting Microsoft's C++ vtable and calling it a "standard" was a good idea should have at least 2 fingers removed for the pain and suffering they've caused. Binary artifacts like that belong *below* the abstraction level!!
April Fools? (Score:2, Insightful)
And I have always been fascinated by the distributed nature of DCOM, which seemed to me much more graspable than complex monsters like CORBA and J2EE.
First of all, J2EE is not the relevant technology. Java RMI is. RMI is massively simpler than DCOM, which, contrary to this author's take, is a nasty mess of C-inspired foolishness. ;-)
In fact, .Net is largely the l
Re:April Fools? (Score:2)
You have to be kidding me--
Re:April Fools? (Score:2, Insightful)
Are you claiming that every .Net component isn't a COM component?
Further, the "wrappers" you mentioned are exactly the kludge I was referring to. ;-)
Re:April Fools? (Score:2)
Re:April Fools? (Score:5, Insightful)
In fact,
No,
And your statement about Mono? How on earth does the DMCA relate to patent law? It is called the Digital Millenium Copyright Act.
Re:April Fools? (Score:2)
Well, I'm certainly qualified in one sense of the word. I've developed COM components in C++(ATL). Have you? It was not a fun experience. Do you know the difference between a BSTR, and a WSTR? What a mess.
In fact, .Net is largely the latest kludge slapped on top of COM/DCOM to try and hide it's hideous complexity. The programming community should wake up and see the obvious fact that Java provides everything tha
Re:April Fools? (Score:2)
I'm pretty sure that my worst programming experience thus far was trying to write multi-threaded COM object in ATL that talk to hardware via parallel and serial ports. All the worst parts of each one of those technologies rolled into one horrible experience.
I did, however, get it to work.
ATL... ack... better than MFC, but not by much.
Re:April Fools? (Score:2)
The DMCA was used against DeCSS by claiming it was a copyright infringment tool, which is one of
Re:April Fools? (Score:2)
Re:April Fools? (Score:2)
Java is not platform neutral. Java, the language, only *officially* runs on the JVM, the Java platform. This platform has been ported to a number of different hardware and operating system combinations, but it most certainly is not platform independent.
Note that I'm not bashing Java in anyway - it's been my primary programming language for about three years now.
Re:April Fools? (Score:3, Interesting)
Read some of my other responses, I think I covered almost everything there. The one bit I need to respond to is your comment regarding Java:
Almost as great as everything else that happens to be an afterthought port of some wacky technology from another OS.
First off, .Net is clearly the sincerest form of flattery: a blatant ripoff of Java in almost every respect.
Secondly, the Windows port of Java is arguably the most robust port of any, so calling it an "afterthought" simpl
Re:April Fools? (Score:2)
Pearls of Wisdom from Morpheus (Score:5, Funny)
Before making any knee-jerk comments regarding the post, take a moment to ponder over these pearls of wisdom from none other than the great Morpheus, which are very relevant in this context. Take heed and realize that the poster is but part of the system. Forgive him.
"Microsoft Windows is a system, Neo. That system is our enemy. But when you're inside, you look around and what do you see? Businessmen, Teachers, Lawyers, Carpenters...the very minds of the people we're trying to save. But until we do, these people are still a part of that system, and that makes them our enemy. You have to understand, most of these people are not ready to be unplugged from Windows. And many of them are so innerred, so hopelessly dependent on the system that they will that they will fight to protect it. Are you listening to me, Neo? Or were you laughing at the stupid MSN fairy again?"
portability (Score:3, Interesting)
Re:portability (Score:2)
A philosophical question: Can it be still counted as ported?
CORBA vs .NET (Score:2, Informative)
Re:CORBA vs .NET (Score:2)
Not that I'm all that fond of .NET, but that argument is pretty weak.
Re:CORBA vs .NET (Score:2, Informative)
I remember when CORBA was really "gathering steam" ( at least from the number of contracting projects out there calling for it ), and remember seeing some of my OOD/OOP bretheren head off to Corba-based projects. I can think of only two of them who ever sai
Troll Alert (Score:2, Redundant)
Ha! Be prepared to be modded down like the astroturfing troll you are! Ooops.. too late for that I guess.
COM and CORBA (Score:3, Interesting)
Technology is not the hard part (Score:4, Insightful)
If this book does a better job of explaining those concepts using
Questions left to be answered... (Score:2)
CB
Highly recommended (Score:2, Informative)
Sigh. Do we really need this? (Score:2, Insightful)
Just how is this long informercial supposed to interest us? Go ahead, mod me down, flame me for my lack of understanding, but I have worked extensively with COM+ over the last years and I regret ever starting with the stuff.
Am I the only one detecting a current of counter-revolution in Slashdot? Negative moderations of eminently reasonable comments by pro-MS and pro-RIAA voices we can't identify?
A small voice says: stick to th
Re:Sigh. Do we really need this? (Score:4, Insightful)
Look: my company designs transactional web processing applications.
In 1996 we built a portable transaction monitor that is used today in several very large web applications that run on Linux. The entire TP monitor is only several thousand lines of C, the applications are extremely simple, and it all works beautifully.
In 1998 we were asked to make something very similar, but using MTS and COM+. The animal works, but it is incredibly complex, slow, unstable, and frankly impossible to control totally. When we approach the limits of the system in any sense, it collapses, and we cannot do anything to discover why.
It's not about Windows vs. Linux, this is a stupid misdirection on your part. COM is not simple, it is a mass of layers which can be simplified with the appropriate packaging (as can any technology), but which remains complex, slow, and unreliable at the core.
Now explain once again why I personally am part of the reason for what exactly? Or HIBT?
Re:Sigh. Do we really need this? (Score:3, Interesting)
In 1998 we were asked to make something very similar, but using MTS and COM+. The animal works, but it is incredibly complex, slow, unstable, and frankly impossible to control totally. When we approach the limits of the system in any sense, it collapses, and
Re:Sigh. Do we really need this? (Score:2)
Thank you for that clarification. I stupidly assumed that
Re:Sigh. Do we really need this? (Score:3, Insightful)
I'm going to guess you were being sarcastic. For your information, .NET is not "simply one more layer" around the old COM code. It is internally, completely and totally different and unrelated to COM. It is a complete departure from it. Period. If you don't understand that, you don't know enough about COM or .N
like the blind speaking of color (Score:2)
J2EE is a mess, but you can't fault the underlying object and component model for that.
/.s been hacked. (Score:3, Funny)
The open source world is behind here (Score:3, Insightful)
In the beginning, UNIX was ahead. It had multiple processes, pipes, and signals. This looked like reasonable interprogram communication back in the late 1970s, but it's too low-level; trying to do anything that way is painful.
The problem is that what you want is a subroutine call, but what the OS usually gives you is an I/O operation. Some OSs do have good interprocess message passing as standard - QNX, Mach, L4/Hurd, and AmigaOS have it. The others need some kind of middleware to build message passing on top of I/O operations.
In the Microsoft world, that middleware is always there, and you can assume its presence. In the Unix/Linux world, you can't. That's why few open source programs are built that way.
Worse, the message-passing middleware for Unix and Linux carries excess baggage. CORBA for Linux is big, heavy, and available from at least five different sources in incompatible forms. The GNOME people finally had to implement their own CORBA, but it's still at the beta level. GNOME wants it mostly as an internal interface for GNOME components, so they're not too concerned with external compatibility.
OpenOffice uses an incompatible system called UNO. There's an effort to build a CORBA-UNO translating gateway [openoffice.org], but the systems have conceptual differences and don't play well together. And, of course, all this translation drives overhead up.
Related to this problem is inadequate language support for inter-object communication. Newer languages like Java and C# have some built-in support for serialization, marshalling, and introspection, but C and C++ do not. So the operation that really has to be efficient - turning a local object into a string of bytes - tends to be slow.
Because this is more of a standards problem than a technology problem, it's tough to fix in the open source environment.
Microsoft IP? (Score:3, Insightful)
Back in the day. . . (Score:3, Insightful)
They were built by scientists and engineers for scientists and engineers.
The languages developed to program them, and the logical grammer developed within these languages, were those in common use by scientists and engineers, which is to say mathmatical syntax, grammer and logic. That's why they're called computers and not emailers or blogers.
This lead to the rise of "functional" programing through the natural course of things as computers became advanced enough to ignore the physical architecture when programing them. The Function is the natural "object" of the mathmatical language. You can do anything on a computer with the purely functional approach and, what may be hard for the modern trained mind to grasp, the mathmatically trained mind can often do so faster and easier this way than with any of the more recent "developments" in programing.
This is not to say that other ways of looking at things doesn't have its, ummm, functionality. The Object Oriented approach was developed by engineers ( who didn't have very mathmatical minds and didn't particularly understand computers or programing) to conceptualize and solve certain engineering problems dealing with real objects. Beams, pistons and the like. It made a lot of sense to model these objects as objects. What may not be obvious the Object Oriented programer is that these objects are still mathmatical models, in fact just a class (sorry) of function whose variables are handled in a predefined sort of way making the function into a kind of virtual Mechano set.
The way these varibles are handled from and programer point of view ( once the object itself is written) constitutes a user interface to the object.
What Microsoft is doing at the logical and matmatical scale isn't really any different, they're just using a slightly different terminolgy and logic to accomplish largely the same end, but one they are able to "brand" and control, not to mention leverage for their own dominence.
The main difference is that their interface is more ridigly controled by them, being sold by an "ease of use" argument of many small componants which are really just objects with a restricted interface, replacing understanding of what you are doing mathmatically and logically with a kind of tinkertoy set of objects. Just plug 'em together and watch 'em work.
I don't wish to ruffle any feathers, but I'm not particularly afraid of doing so.
This is an approach that may be valid for the modern crop of "programer", but if you wish to honestly be considered a computer engineer, let alone a computer "scientist", it is a largely unworkable solution, just as a person adept at using tinkertoys and mechano sets isn't qualfied to be called an engineer.
This isn't to belittle tinkertoys and mechano sets either. They have their valid place and uses.
Personally I've been "Object Oriented" programing since before there was any such thing. It's an obvious format for modeling real objects in a compact, understandable, easily modified and reusable way, although I didn't call my "beam object" a beam object. I called it my beam function, because that's what it is, even though it may well contain subfuntions while at the same time being a subfunction of the "building function."
I've always tended to think of my programing models in terms of ICs. Note that there are two basic kinds of ICs. Those that are hard wired to perform a single task, such as the venerable 555 chip, and those that are designed with a changable internal logic (you're using at least one of these right now to read this post) such as the Z80.
Both of these kinds of ICs have their valid uses. The programable chip hasn't replaced the hard wired chip, it has augmented the toolset available. Both kinds of mathmatical logic these chips represent are valuable to the programer in t
Re:Back in the day. . . (Score:2)
I didn't buy a computer so I'd have to think.
KFG
DCOM easy? (Score:2, Insightful)
In fact COM/DCOM always seemed to be the poor man's version of CORBA (COM can be seen as equivalent to in-process activ
Re:Yes! (Score:2, Funny)
I've been waiting for a good review on
It could have been a *lot* worse. Never click on anything that references 01100111 01101111 01100001 01110100 01110011 01100101 00101110 01100011 01111000 !
Re:DCOM vs .NET? (Score:4, Interesting)
DCOM, can, indeed be a mess when things go wrong. Show me a dcom programmer who doesn't know how to use dcomcnfg fluently and you're probably looking at someone padding their resume. But so can EJB's (want to see our organizations Oracle TAR's on EJB context lookups? There are many... and you have no clear idea to track down the problems).
I think
Re:.NET is crap (Score:4, Interesting)
Re:.NET is crap (Score:2)
".Net is trying to become Java, and so is Java.."
Yep, I hear that the next version of Java will be 98% Java. Then they just have to focus on removing that last 2% of Fortran... =)
Re:.NET is crap (Score:2)
CF is not as robust, not as scalable, you are tied to one vendor for the life of the project. So even when dealing with lightweight projects you're still saddled with CF crap...
The latest versions of ColdFusion are Java. ColdFusion is compiled into Java Servlets before it is run, so it should be just as fast and scalable as anything else written in Java.
Re:Did I miss a memo or something? (Score:3, Insightful)
Like the reviews author says, I find COM concepts very easy to grasp and quite interesting. Compared to CORBA, it is indeed very easy to use.
As a hacker (someone who likes to know how it works), I find that very interesting. As someone who code for Mac and Palm, I find I can apply many concepts of COM to my code and make it object-portable.
As f
Re:Did I miss a memo or something? (Score:2)
Re:Did I miss a memo or something? (Score:2)
Did you miss Objective C? (Score:2)
Think of it, you can also build GNU ObjC for Linux, Cygwin/MinGW or (with some heroic efforts, no doubt) prc-tools for Palm. Why borrow the concepts if you can have a better-designed real thing across the board?
Re:Did I miss a memo or something? (Score:3, Insightful)
Eeek! Maybe actually trying to understand Wines implementation of DCOM has fried my mind, but COM/DCOM cannot possibly ever be called conceptually easy. Oh sure, the IUnknown/ClassFactory stuff, while a pain in the ass, is easy enough to understand.
Now start trying to implement late binding on your object so it's usable from JavaScript. You do that by implementing
Re:He Belongs in Space Jail w/ Win 3.1! (Score:2)
Under the story about the Linux GUI being standardized,
Back to topic, I need a
Re:He Belongs in Space Jail w/ Win 3.1! (Score:2)
Are you mad!?!?! I was happily using OS/2 about the same time win3.1 was out and I can tell you there was no comparison. OS/2 rocked and even had a comparable selection of software. When windows 95 came out I was moving to GNU/Linux and I've never looked back.
I must admit, however, that the .Net framework is a radical idea for microsoft and it is certainly worth looking into. Mono and GNU.Net may be some of the most important projects that free software has seen recently. N
Re:He Belongs in Space Jail w/ Win 3.1! (Score:2)
Re:Why I love Microsoft (Score:4, Funny)
> at any of my friends house.
I havent seen a single black man at any of my friends house. So they simply do not
exist.
Re:Why I love Microsoft (Score:2)
Re:Simple != Pervasive (Score:2)
Re:More reviews (Score:2)
What a conincidence that all those links have your seller code.
Accidental, I'm sure.
My seller code ? I am not affiliated with any of these websites nor do I buy from them. I found the links by simple google search so you don't have to do the little effort (since I already did it ) !!
If you don't believe me, just search yourself and you will get the same URLs !!
Re:mod parent down (Score:2)
Embedding Amazon affiliate ID's into URL's, and not disclosing their presence, is really sleazy. Any bozo knows you can go to Amazon.com to read reviews of books, so this parent post shouldn't be modded "informative." It's just a scummy way to make a buck from unwitting Slashdot readers.
Embedding Amazon affiliate ID's into URL's ????
I am not affiliated with any of these websites nor do I buy from them. I found the links by simple google search so you don't have to do the little effort (since I already d
Re:It's all relative (Score:2)
In answer to your question, I was using VStudio 6. Sure, all the COM stuff is great if you play within your own little box. It's when you integrate with other COM objects and things go wrong. It is when you try to decipher the insane implementation behind the "smoke and mirrors" that the true evil of COM rears it's ugly head.
Re:Struts equiv in .Net? (Score:2, Insightful)
Re:Struts equiv in .Net? (Score:3, Insightful)
Then again, ASP.NET is supposed to be more MVC-centric as well.
From a high-level perspective, struts by itself focuses primarily on the "controller" part. I believe jakarta-tiles is now integrated with the latest version, and tiles focuses on the view part.
You could actually build a framework in