Completely agree with Max Power re: Java & Ada. Those languages are designed to help software engineers avoid errors. C positively encourages errors, and C++ contains the entirety of C. Neither C nor C++ can ever be considered appropriate tools for building high-reliability systems.
~~~~~ "Rightful liberty is unobstructed action according to our will within limits drawn around us by the equal rights of others. I do not add 'within the limits of the law' because law is often but the tyrant's will, and always so when it violates the rights of the individual." - Thomas Jefferson On Sunday, February 16, 2014 7:50 PM, Max Power <[email protected]> wrote: >MemSet and C++ Classes -- or the tragedy of the BOINC client (and Server) >not being written in ADA 95 (or whatever version it is currently at) ... > >The real tragedy is that the BOINC Client and Server are not written in ADA. > >ADA forces people away from a lot of the syntactical nonsense that most >other languages permit. >You cannot even compile an ADA project unless it is self consistent. > >JAVA comes close to ADA in its enforcement of "not allowing the programmer >to do incoherent things" typical mistakes. > >Neither JAVA or ADA are perfect. > >Yet the upper level 'assembly language' mistakes that C, C++ etc permit >without question are not so easy to do in ADA. > >One would think that Berkley Uni (that gets gobs of defense research >funding) would have forced most of its 'mission critical' computer projects >to be written in ADA. > >Sadly, because SETI @ Home was written in C++ ... BOINC became written that >way. > >Now the middleware that runs SETI, Rosetta, etc ... is C++. > >"It is like being shackled to a corpse..." > >-- In the 1st World War, a German officer (but many Germans in the later >years of the war) described the relationship between Austria-Hungary and >Germany as "Being Shackled to A Corpse" (in translation, it is often >"Fettered to A..."). >-- C++ and BOINC are related in this way. It causes no end of grief. C++ is >still at best an upper level assembly language. > > >MP > >DSN @ H > > >-----Original Message----- >From: Nicolás Alvarez >Cc: [email protected] >Subject: Re: [boinc_dev] MemSet and C++ Classes. > >2014-01-09 10:50 GMT-03:00 McLeod, John <[email protected]>: >In short, don't use memset on any structure that includes a class. > >The class constructor may intentionally set internal variables that are not > >0. > >The implementation of each class may vary from platform to platform, and may >vary over time. These bugs can be hard to track down. Much better is to >use classes and constructors / destructors for everything. The built in >default constructor if you don't declare one is supposed to set all values >in the class to 0 or null. The built in destructor does nothing. > >Here are five real (fixed) bugs caused by memsetting things that aren't >supposed to be memset: > >http://boinc.berkeley.edu/gitweb/?p=boinc-v2.git;a=commit;h=8728c049 >[...] >http://boinc.berkeley.edu/gitweb/?p=boinc-v2.git;a=commit;h=3db80eb5 > > > > > > > > > > > >_______________________________________________ >boinc_dev mailing list >[email protected] >http://lists.ssl.berkeley.edu/mailman/listinfo/boinc_dev >To unsubscribe, visit the above URL and >(near bottom of page) enter your email address. > > _______________________________________________ boinc_dev mailing list [email protected] http://lists.ssl.berkeley.edu/mailman/listinfo/boinc_dev To unsubscribe, visit the above URL and (near bottom of page) enter your email address.
