Slashdot Mirror


User: Latent+Heat

Latent+Heat's activity in the archive.

Stories
0
Comments
1,567
First seen
Last seen
Profile
(view on slashdot.org)

Comments · 1,567

  1. I thought you meant Visual J++ on NetBeans 4.0 Release · · Score: 1
    I thought you meant Visual J++ -- while that is the predecessor to .NET, it was part of the MS/SUN Java lawsuit and it would be cool for someone to be still programming in it.

    Visual J++ was pretty much Visual Basic with a Java face on it. Just as there is nothing quite like VB in the world outside Windows, there is nothing quite like Visual J++ (or .NET and Windows.Forms) outside Windows either.

    It is like people telling me that the source of the world's problems is the use of C-style null-terminated strings with the vulnerability to stack smashing attacks and string buffer overrun exploits -- they say everyone should switch from char* to C++ string class and the world would be in peace and harmony. C++ string is good if you live entirely in the C++ world, but if you cross languages, you are back to char* to move strings back and forth.

    The Holy Grail of computing in the late 80's and 90's was some kind of OS "component architecture" and there were many attempts chronicled by Clement Syzperski's "Component Software." Of all the attempts, I think only two have had any kind of success: ActiveX and Java. ActiveX is fully multilanguage but you are stuck on Windows while Java is cross platform but you are stuck with, well, Java. Well Java is slightly cross language (all those languages coded to the Java VM don't really count) because you can script Java from Matlab.

    ActiveX controls are just about impossible to implement or use outside of an IDE or scripting language designed for them (does anyone out there work with ActiveX using vi and a command-line compiler and make files?), and they are kind of crufty, but they are so compatible with stuff in the Windows world, they are so useful in packaging a lot of complex GUI code and just handing the functionality to someone, and .NET Windows.Forms controls just don't work in the same wide world yet.

    Because ActiveX (don't get started on the business of ActiveX on Web pages, that is not what I am talking about) is so powerful and so universal in the Windows world, I could see where someone would stick with J++.

  2. IDE and steep learning curve on NetBeans 4.0 Release · · Score: 1
    I find there is a big leap between coding java in my favorite text editor and running javac and learning to use an IDE -- I got flamed here on Slashdot for expressing the view that Eclipse is a little opaque on that score.

    IDEs can be "rigid" in their way of doing things in the way that I say a person is rigid in that tasks have to follow a certain complex ritual or they are not done. You kind of have to accept some of them on their own terms and employ their "wizards" or procedures for generating projects and adding classes -- you probably have to generate a project, add a class, and then paste the code for your class into that file.

    I always thought that Pascal (or the Borland Turbo and Delphi Pascal dialects) was quite IDE friendly in that the dependencies are indicated in the source code with the "uses" clauses -- this is an outgrowth of Modula 2 and Ada and the "from module bleen import bleenInit, bleenReport" business. C++ is the least IDE friendly in that the #include's are "non-hygenic" imports. What the IDE needs to do is build a dependency tree to construct its version of a make file, and in the Pascal/Modula family, that gets explicitly stated in source while in C++ you have to parse the #included'ed header files to sort of figure that out, and you may have to assist the IDE by telling it what source files are "part of the project."

    I would rank Java as somewhere in between Delphi Pascal and C++ in IDE friendliness. But Java IDEs have creative ways in confounding people who just want to turn the key and take a drive around the block. In a proper Pascal or C++ program, there is a unique void main() where program execution is supposed to start where I believe a Java program could potentially have multiple entry points -- classes with the proper static main() method. In Eclipse, it is not enough to have a project loaded up, you have to designate a class containing a static main() method to run a program from the IDE, and that tripped my up for a long time. They also have some funky system for loading up collections of files making up a project from zip files and making sure you have loaded everything up to get an example project to work tripped me up to.

    Not to be picking on Eclipse, but if Netbeans is anything like it, it may be perfectly obvious and reasonable to someone using it for a long time, but for someone coming from the text editor and javac world, I can see where you can be spinning your wheels with nothing moving.

  3. What ever happened to 2-D graphics? on Graphics for Beginners (Using SDL) · · Score: 1
    I work with sound spectrogram displays ("voice prints") using the Windows 2-D graphics API. The calls that tie me down to Windows are IDirectDraw::WaitForVerticalBlank(), ScrollWindowEx(), and CreateDIBSection(). This API is far from simple, but these are the Windows-specific calls for which it is hard to find equivalents in other systems.

    CreateDIBSection() allows blitting a raster to the screen. I call a raster a memory array of pixels where you can control all of the pixel values. OK, CreateDIBSection() creates a bitmap object along with a corresponding raster memory allocation, you have to create a memory graphics context (Windows HDC) and load the bitmap object into that graphics context, and you have to blit from the memory graphics context into the display graphics context, but apart from the complicated dance step, you are essentially blitting a raster into the display -- something that TinyPTC does with a simple, clean interface.

    What Windows allows and TinyPTC along with many other systems does not support is blitting a subrectangle of the raster into the display. Why this is important to me is that I scroll the display with ScrollWindowEx() (which takes advantage of hardware acceleration, and I don't find that call outside of Windows), and I scroll my in-memory raster representation of the display by shifting a circular-buffer pointer, and once I scroll the raster in that way, I need to blit in piecemeal into the display in response to paint messages.

    Finally, IDirectDraw::WaitForVerticalBlank() allows doing the scrolls in step with the display refresh to get absolutely smooth scrolls without tear or flicker. Is there anything like this call under other "platforms"?

    That these three calls exist under Windows is an outgrowth of the WinG and later DirectDraw/DirectX initiatives. There was a vast supply of largely 2-D DOS games and His Billness decided they needed to move to Windows, and Windows got a lot of game-specific support for the 2-D games of that generation.

    It seems that the game world has moved on from 2-D games and on to 3-D games and the 2-D game API's are deprecated, even in the Windows world. If I understand the 3-D graphics world, this business of background scrolls with sprites on top has all gone out the window as a tool for getting a high-performance pseudo-depth game display. You are supposed to recreate each frame in its entirety with each frame refresh, although you describe the scene in terms of those shader triangles and get hardware assist to draw them and sort out the depth.

    Maybe I am living in the past and unnecessarily tied to the kinds of 2-D performance optimizations just described. Maybe I should switch from 8-bit palette-mapped rasters to 32-bit RGB rasters, memory usage be damned, I should scroll those rasters by copying the pixels in memory, and I should blit the entire raster wholesale using the TinyPTC-style API with each frame update. Its just that what I have is high performance across a broad range of hardware speeds and works quite well.

  4. How your ceiling recessed lights use energy on Is the Future of Silicon Valley Solar? · · Score: 1
    Don't know where you live, but if you live where you do a lot of winter heating, an energy use of those recessed lights you need to consider is whether warm air is leaking past those fixtures into the attic and out the attic vents.

    Any light fixtures can have air leaks from heated space into the attic in the gaps and cracks where they mate with with the ceiling plasterboard. Ordinary light fixtures just have an electric box penetrating the ceiling while a recessed fixture has the whole works pushing through. You can close down air leaks using silicone caulk -- I have also used plasterboard joint compound or spackling to fill those gaps as well.

    On the attic side, there is the question about whether there are gaps in the insulation where the fixture pokes up into the attic. You may have to be careful putting insulation right up against the fixture in terms of causing the fixture to overheat -- check with the manufacturer on that one.

  5. Abundant neutrons on New Advances Bring Fusion Closer to Reality · · Score: 1

    Long before fusion becomes a practical source of electric power or steam, it will be a source of energetic neutrons. My worry is less about any accident with a fusion reactor than the ability of anyone having a fusion reactor to have gobs of neutrons to transmute whatever they want and generate the raw materials, plutonium and tritium, for nuclear bombs of various kinds.

  6. Lightweight definition of "lightweight" on Lightweight Languages Workshop Webcast from MIT · · Score: 1
    I agree with your definition, but I would emphasize "easy to implement." The notion of "easy to learn" is just plain silly.

    The whole idea behind a lightweight language is something that is easy to port to an embedded system, something that is easy to incorporate as a macro or extension language in other software.

  7. Cain and Able on Live to be 1000 Years Old? · · Score: 3, Insightful
    I thought the deal with Cain and Able was that Cain offered a sacrifice of grain and fruit while Able offered a sacrifice from the flock of sheep he was tending. Able's sacrifice was preferred so Cain got angry and murdered Able.

    Sacrifice is tied into the consumption of food -- you don't offer sacrifice of something you are not eating. Able had to have been eating meat. You may need to check with other Bible commentators on how to understand Genesis 9:3.

    I tend to view human prehistory as divided into hunter-gatherer, cereal grain agriculture, and domesticated animal (pastoral) phases. Genesis, among other things, is about the emergence of Jewish people as a pastoral culture from out a cereal grain society in what is now Iraq.

    The emergence of cereal grain agriculture is what allowed Egypt one one hand, Ur, Summer, Akad, Babylon, or whatever those dudes in Iraq called themselves long ago on the other, to build their pioneering civilizations. I don't know all of the mechanics of this but while grain ag allowed an expansion of the population and a more reliable food supply, it resulted in a rather top-down society with these kings lording it over people and the common people eating a less nutritious diet of grain instead of lean meat. Yeah, yeah, a vegan diet is supposed to prevent cancer and heart disease, but the bone records show that the serfs in grain culture had poorer health than the hunter-gatherer peoples preceding them.

    Maybe the deal is that when you planted a crop, you had to stay put, and you needed some kind of king/Mafia boss type to protect you from raiders, and you had to pay that king some kind of tithe.

    The emergence of the Jewish people from that substrate, well how do I describe it, it was a kind of an independence movement, but it was a kind of "get back to nature" movement. Sheep and goat herding introduced economy of scale into reproducing the diet (meat, cheese) of the original hunter-gatherers. I guess with the pastoral culture 1) you had a much richer diet, 2) you had security of your food supply, and 3) you could move around and not require the protection of some king.

    The pastoral culture has all kinds of positive reference in the Bible, ranging from Abel's sacrifice being preferred to Cain and Cain taking matters into his own hands (probably relates to the inherent tension from between the cereal-grain civilizations and the pastoral tribes not under their thrall) all the way to our Lord calling himself the "Good Shepherd" in the Gospel of John.

  8. Re:The not too distant future... on Gunshot Tracking Cameras to be Deployed in LA · · Score: 1

    Didn't know, however, that the parent post even rose to the level of a political opinion.

  9. U.S. fund Kliper? Maybe that's the idea. on Energia Reveals New Russian Spacecraft · · Score: 2, Insightful
    You don't suppose the "here is Kliper, our next-generation spacecraft" and the scuffing of feet and "gee, we don't quite have the funds to build it" isn't a solicitation of some sort? It looks like they are casting about for partners.

    As to "NASA's culture is far too arrogant to do something that smart", there is a lot more to the story. That James Oberg fellow who wrote one of the linked articles worked for NASA a long time ago but has been an independent author and consultant on these matters. It is safe to say that James Oberg is not NASA -- he has been as critical of NASA as he has been of the Russians, and he has been NASA's biggest, biggest critic for doing what you say they have been unable to do -- cooperate with the Russians.

    Oberg is one of these uber geeks who has made it his life work to understand as much as anyone in the West about the Russian space program. As to why his interest in the Russians, it is kind of like a Trekker who is into Klingon gear rather than the Federation.

    While Oberg knows more about the Russian space program than anyone outside Russia, he is not one of these guys who has "gone native" or has ungrudging admiration for their work. He is a true geek who calls it as he sees it, has travelled to Khazikstan just to see what kind of shape things are in, and the Russians get nervous when he wants to know what is in that junkyard just over the fence.

    His big cause was trying to put the brakes on NASA when "let's use Russian hardware" was the solution to everything NASA was trying to do with the International Space Station. The Russians obviously had the most experience with their Mir space station, but their industrial base was imploding, and Oberg was concerned that the return on the dollar for buying Russian hardware wasn't going to be there -- things were in such bad shape it wasn't clear whether they could deliver on their committments.

    NASA's big problem is they keep going in different directions that don't pan out. One direction was X-33/Venture Star. Another direction was co-develop with the Russians -- while I don't think it was quite as bad as Oberg made it out to be, I don't think NASA has been left with warm fuzzy feelings about the Russians.

  10. Re:Numerical programming needs an array type on Python 2.4 Final Released · · Score: 1
    I guess a lot has happened in the 6 months since I was seriously looking at all of this.

    The STSciI is recommending matplotlib which you link to. They had this thing called Chaco -- is that still around?

    I see that matplotlib has support for numeric/numarray. I know that the Web sites tell all new users to adopt numarray, but they indicate there is a performance hit for 20,000 array elements and that it is still a work in progress. Any tips on this?

  11. Numerical programming needs an array type on Python 2.4 Final Released · · Score: 1
    Any serious numerical programming needs an array type. List types based on indirection, whether from Lisp or Python just don't do the job -- too much overhead.

    Matlab, famously, has an array type (the basic data type is a 2-D array or matrix -- hence "Matlab"). While Matlab is interpreted and slow, functions that operate wholesale on array types are fast. Java has an array type, and they seem to have done a good job of it with efficient bounds checking. At one level, a Java array definition is a class like any other class, but an array is special case (you cannot "extends" an array type) that gives the required efficiency.

    While the early Lisps didn't have arrays, I am told Common Lisp and the other dialects stemming from the Lisp machine days where the emphasis was on having an industrial-strength language, they all had arrays, and they even had neat ways of taking array "slices" -- passing a subrange of an array and having bounds checking apply to that subrange.

    Python is working on arrays -- Numeric and Numarray -- but adoption seems slow in stuff like plot and graphics packages.

    I would like to use Python as a replacement for Matlab -- I am bothered that we are so stuck on Matlab in our engineering curriculum -- a university shouldn't be shilling for a properietary language from a single vendor. Besides, Matlab is so ad hoc and cobbled together -- I think we could use something with a better theoretical foundation in language design.

    I am looking for a good plot/graphics package for Python that supports on of the Python array types to make this transition.

  12. Difficulty with getting SUVs off the road on Lunar Helium 3 Could Meet Earth's Energy Demands · · Score: 1
    The problem is that a price of oil/gasoline high enough to get SUVs off the road would make trucking very expensive (getting railroads built back up is a long-term proposition), make air travel very expensive (even if air used less energy than road for a trip), and make a bunch of other things more expensive.

    That is why I think the Clinton "BTU tax" as a broad-based tax didn't go anywhere. In order to get the environmental benefit of cutting back on the worst energy wastage, you end up putting a broad-based price hike on the entire economy with attendant inflation and so on. That is also why I support tightening CAFE standards and broadening them to include SUVs rather than increasing gas taxes beyond the requirements to pay for roads.

  13. The real reason for code generation on Software Tools of the Future · · Score: 1
    You have a good point about why you can't run directly from the modeling environment. I have always kind of wondered about code generation (I call that feature "code wizards" after its -over- use in Visual Studio), but couldn't quite express what I thought was wrong with it.

    I think the answer is that a modeling environment which can "run" the model becomes its own computer programming language, and people are concerned that if something is perceived as yet another (fine) computer language, no one will want to use it. If the modeling system can spit out C++, you can point to that and say "here, it uses C++ and C++ is a portable language that everyone has heard about." Heck, C++ was originally a modeling environment for C (it was a preprocessor that generated C code).

    The thing that bothers me about "code wizards" for C++ is that C++ has macros, it has classes, it has templates, and to supply a code wizard is an admission that you don't know how to use those three facilities in C++ to abstract what you are doing (ActiveX, Windows forms) in form you can get people to use, so you automatically generate C++ code that uses macros, classes, and templates in such a way that no one can read or hope to edit the code.

    Microsoft has in a way given up on C++ for UI code with their C# language -- I think of it as Delphi, a highly Windows UI-oriented language that is a long way from its Pascal roots, with C syntax. On the other hand, the Windows forms side of Delphi configures widget properties by serializing objects to a resource file (the .dfm file that gets folded into the .exe when you compile) while C# .NET reverts to generating code to set property values. Then they try to hide that code in the editor. Maybe they think that is more efficient.

    I think that it would be useful to have both charts and automatically generated C++ code in a modeling tool the charts and C++ were two different ways of looking at the exact same thing -- in a CAD tool for hardware, you could have a circuit diagram and a text net list. For this to be useful it is essential that they have a good round trip capability -- if you edit the C++ you don't lose the ability to get back to the charts. It would be helpful if the generated C++ code were readable. It could be verbose, that you wouldn't want to generate it by hand, but it would help alot that you could safely edit it if you wanted to.

  14. More-OO-than-thou religious fanatics on Holub on Patterns · · Score: 3, Insightful
    First it was this Law of Demeter business where you weren't supposed to invoke a method of an object you retrieved from another object and you were to either implement gobs of forwarding methods or implement "visitor" objects to do the forwarding or some such thing.

    Then there was the "inheritance is bad" deal where everything is to be done with composition and you have to write gobs of forwarding methods between the object and the object it contains.

    Now there is this "Get/Set is harmful" -- no, "Evil" I say because this is a matter of religion. So what are you supposed to do when you need to get some representation of state out of an object -- to display it? Can you do a getStateValue()? Oh, no! You have to hand that object an AWT graphics context object and have the object render itself. So much for reusing that object outside of Java.

    Or in another Golub article referenced on this topic, you are not supposed to have set functions to initialize an object to a required state -- you are supposed to pass your object a "Visitor" or "Strategy" object that supplies the state -- through what? An interface with a whole raft of get functions?

    Suppose the approach was, "Do you have a whole lot of get methods on an object? Why are they there? Is it because you need to retrieve the state of an object to print it out? Have you considered giving your object a Print() method and getting rid of all of the get methods? Are you concerned that your object is now hard-wired into a particular print driver? Have you considered implementing an abstract print interface and implementing void Print(IPrintInterface my_printer) as the Print method?"

    But no. The approach is that get/set is "evil" or "smells bad" or some such thing. An object with get/set is a kind of shame and you have to go to extreme contortions in your code, spinning off bunches of classes you never needed before to avoid the embarrassment of having get/set.

  15. Freeman Dyson on Robot Helps NASA Refocus On Hubble · · Score: 1

    Freeman Dyson expressed the same opinion -- that for the money they threw at the Hubble and all of its servicing missions, they could have had a whole bunch of purpose-built telescopes . . . in synchronous instead of low-Earth orbit. So what if one mission fails -- you have a budget to do more.

  16. Gee, what ever happened to K-Mart anyway? on Wal-Mart's Data Obsession · · Score: 1

    I kinda miss K-Mart. Mom would buy me the "Ketch" brand dress shirts for Christmas, the one with the sailboat emblem on the collar label, and these shirts had only half as much fabric as a regular dress shirt. I could wear them for maybe 6 hours before I would go into "deoderent failure" have to be careful to keep my arms by my sides for the rest of the day.

  17. And you sir, are no Gerald Ford! on Segway vs. Roomba · · Score: 2, Insightful

    I had heard GWB is pretty athletic, and I also heard that he had crashed a Segway, but those photos suggest he made a pretty graceful recovery. No, he didn't plant the landing like an Olympic gymnast, but he lands on his feet in a stance used in most contact sports.

  18. A lot harder than it looks on Rules Set for $50 Million America's Space Prize · · Score: 2, Interesting
    I think people will find 0-G sex to be either greatly overrated or at least a lot more difficult than you would think.

    Think of the early space walkers and how even the most simple tasks caused them to flail about and sweat buckets. You know, Newton's Laws, action and reaction, and how partners having sex will probably have to be tied down with Velcro or something similar.

    As far as solo sex, no one is admitting to that one either and whether there are any particular problem areas. Michael Collins said that the docs had recommended this activity for long-duration space station missions, you know, so a guy doesn't get prostate problems in space (one of the Apollo 13 guys got really, really sick with a UTI because he was holding it because there was some miscommunication whether they had enough electric power to take a leak), but the astronauts were indignant that the docs would even talk about such a thing.

    On the other hand, these guys on 90 day cruises inside of missile submarines, don't tell me that no one has had solo sex, although the Navy doesn't check to see if you are imagining it with a chick or a dude.

  19. Hacking the Laws of Robotics -- Spoiler Alert on US Army Testing Robots with Shotguns · · Score: 1
    Spoiler alert . . . Spoiler alert

    In Naked Sun, Lijah Bailey figures out that a murder was committed by tricking a robot into performing a violent act by manipulation of its conformity to the Three Laws.

    The novel goes on a great length about the impossibility of a robot harming a human and then springs that as a surprise ending. Well guess what. The murderer who used the robot as a weapon was a hacker -- figured out how to manipulate a system conforming to a set of rules that were supposed to insure security in such a way to break that security.

    I discussed this with an Asimov fan -- was Asimov not clued in to hacking and computer security? That rules that supposedly resulted in ironclad security could be circumvented by a determined attack on some weakness in the rules?

    It was suggested (trying to defend Asimov) that the societies he was depicting was clueless to those issues -- that they had become so reliant on technology that their brains had gone soft. Whatever.

  20. Tennis serve on Origin of Cosmic Rays Revealed · · Score: 1

    Whose tennis serve, mine or that of a Williams sister? Wasn't there a credit card commercial where the Wack-a-Mole in the game arcade went into hibernation to hide from Venus Williams?

  21. MFC, ATL and the Round Trip Problem on 30th Anniversary of Pascal · · Score: 1
    There are two broad categories of Windows programming: one is Windows API and the second is COM/ActiveX.

    Windows API programming has been classically approached by object inheritance -- you have a base class that implements the "under the hood" stuff to do a form or a widget, and you extend that class for your customized widget or form.

    Borland has something called the Type Library Editor, found in both Delphi and C++ Builder. The Type Library Editor is how you can make changes to a COM interface. It keeps an IDL file describing a COM interface up to date with a Delphi/C++ Bui;lder wrapper class. The beauty of this arrangement is that, yes, you can use the code wizard to initially generate the wrapper class, but you can go in and play around with the interface methods and signatures and edit stuff and things will keep in synch. COM/ActiveX programming has been approached with "code wizards." Yes, there is code wizard stuff in the Windows API programming, but Borland is famous for the VCL class library that does most of the heavy lifting using object inheritance while Visual Studio is somewhat code wizard oriented.

    The reason why everyone reverts to code wizards with COM is that COM is based on exposing a virtual method table (VMT) to the outside world and is fussy about order and signature of the methods in that VMT. You end up needing a wrapper class with the correct VMT to forward all your calls to the actual object, implemented by inheriting from a base object, that does all the work. On account of all of the baggage in COM and ActiveX, that wrapper class is wordy, and the only way people know how to generate it is with a code wizard.

    In the MFC/ATL world, you have the code wizard to generate the interface, the IDL, and the wrapper class, but if I want to edit anything, I am stuck. Yeah, yeah, COM interfaces are supposed to immutable, but sometimes you want to move things around in the initial development phase before your COM interfaces are published to the outside world and set in stone. I am at a loss as to how to change a method signature or remove a method from a COM object -- it seems there are about 5 different files you have to edit by hand. The only way I can think of is to scrap the project file and start over.

    While the Borland Type Library editor is not perfect and I had about a year's worth of learning curve to get it to do everything I want (or find out what is not possible), I am utterly dependent on its features for doing COM/ActiveX development. I have done some toy COM and ActiveX objects using VC++, but I am really stuck figuring out how to edit COM interfaces and I wonder how anyone is able to use VC++ (i.e. the MFC/ATL wizards) to do COM without going mad.

  22. Re:The Well-Regulated Militia on Neal Stephenson Responds With Wit and Humor · · Score: 1
    As I said, IANACS, and I was expressing my own personal opinion and I defer to people with greater insight on this.

    As to the Swiss having the H-K in the closet and not the ammo, I am going by what I am told. I am pretty sure the situation in Switzerland is more oriented towards the common defense rather than upholding a right to gun ownership. Do you know what the setup is in Switzerland? Do they have the guns and the ammo? Only the guns and the ammo at an armory or depot?

  23. The Well-Regulated Militia in medieval England on Neal Stephenson Responds With Wit and Humor · · Score: 1

    My bad, I meant long bow, not cross bow.

  24. The Well-Regulated Militia on Neal Stephenson Responds With Wit and Humor · · Score: 3, Insightful
    "A well regulated Militia, being necessary to the security of a free State, the right of the people to keep and bear Arms, shall not be infringed."

    The "militia" clause has been a long-time issue of contention, and it is widely believed that courts in the U.S. don't have any issues with gun control (many cities have very strict gun ordinances which are very often violated) as the 2nd Amendment applies to, as you say, serving in the National Guard. The only people who seem to believe that the 2nd Amendment outlaws gun control laws are members of the NRA, who are a group with a cause rather than people with official standing.

    With that said, I think there is a larger issue here than only th people in the U.S. who want to run around with guns as they see fit. If the 2nd Amendment is held to not mean much of anything with regard to enabling gun ownership, perhaps all of the other amendments could be just as readily dismissed. The First Amendment has been given an expansive and broad interpretation while the 2nd Amendment has been given the narrowest of interpretations -- what is to keep it that way?

    IANACS (I am not a constitutional scholar) but let me offer my take on the 2nd Amendment. The Militia historically refered to the adult (male) citizenry who would be expected to take up arms to defend the Republic, not to the Texas Air National Guard or related institutions. A well-regulated Militia refers to those adult males having sufficient training with arms that they know how to shoot straight. There are historical precedents. You haven't told us what part of the EU you hail from, but every adult male Swiss is required to have not only a gun, but something quite capable like an H-K stashed away in their closet. They don't get to keep the ammunition, but they are required to have that automatic weapon at the ready. Going back in time, there were English kings who required the male citizenry to able to shoot a cross bow, the H-K of its day in terms of capabilities. The training to handle a cross bow is no small undertaking.

    So, the intent of the 2nd amendment is that all adult males in good standing be not restricted in owning, acquiring, and practicing with the type of firearms necessary to acquire good shooting skills. Can we bar felons from guns? We bar them from voting. Can we restrict the kind of gun? In my opinion, we can restrict the type of gun to what is reasonable to use in training and practicing shooting skills. Can we restrict where you can take a gun? Why not -- the 2nd Amendment protects the right to own guns, not the right to wave them around. Is the interpretation of the 2nd Amendment important to people who want nothing to do with guns? Yes, because then all of the other amendments are in peril.

  25. Re:#8 One tool for one job? on Rob Pike Responds · · Score: 2, Interesting
    This seems to be the difference between COM and .NET or perhaps between VB 6 and what followed it.

    Microsoft had an "object" model in COM, but that model only allowed extension of an object into a new object by composition - did not support inheritance. The notion of "object" in VB 6 was the same way.

    There is a school of thought that inheritance is to be avoided, that everything should be composition. Inheritance may be bad -- think of OO newbies making inheritance trees 12 levels deep. Also think how hard it is to extend objects in someone else's framework by inheritance (think OWL or MFC). And think of the contortions one goes through to live with single inheritance and the perils of multiple inheritance.

    And inheritance can always be simulated by composition by implementing functions on the interface that simply forward. In fact, they way multiple interfaces (as in Java) gives you a poor-man's multiple inheritance is that you have to write member functions to implement each interface that end up forwarding to composed objects because you get only one path of inheritance.

    But there are times when you want inheritance. All of that implementing functions that forward to the function of another object gets old afterwhile -- it is so much busy work that we rely on "code wizards" in our development environment (Visual Studio) to write all of that mess. Implementing a COM object means writing tons of functions that simply call other functions.

    I believe Microsoft must have come to that conclusion with .NET because COM was the kind of OO-neutral component system you are talking about, and Microsoft must have come to some realization that the approach is too restrictive. COM is essentially procedural at its very lowest level because that is the lowest common denominator of the languages it needs to support. .NET has an object model (an a VM) built into the operating system level, and it allows inheritance of classes across language boundaries, something one cannot consider with COM.

    While inheritance (or any other element of OO) can have to "golden hammer" syndrome, there are times when what you want is a hammer, and in the absence of a hammer you end up pounding stuff with a heavy wrench or screw driver handle. I believe the OO holdouts want to live in a hammer-free society (Hammers Considered Harmful), and while OO people see everything as a nail, there are things that are nails and require proper hammers.

    I used to think that OO was a solution seeking a problem, but I am beginning to think that OO is something that exists in the nature of programming architectures, and a lot of procedural programming is a simulation of OO (think Windows API, Gnome/GTK) so you may as well use an OO language. Professor Wirth tried to be an OO holdout with his Oberon language, and he caved with Oberon-2 and completely crossed over to the Dark Side with Component Pascal.

    I don't know enough about Lisp and maybe I am awed by those who do, but I am beginning to wonder as to whatever Lisp does is even closer to the true essence of software and what OO is doing is a kind of emulation of Lisp, just as a lot of procedural programming really wants to be OO but doesn't know it.