// Most climate models are written in Fortran,
// but I have developed a more accurate one in C++
// Note that method fundingDriesUp() is virtual
// and can be overridden by an educated Congress
class ClimateScam
{
public:
static const bool WISHFUL_THINKING = false;
ClimateScam()
{
m_global_warming_scam = true;
m_global_cooling_scam = false;
}
~ClimateScam()
{
switchBackToGlobalCoolingScam();
}
void model();
virtual void dataTamper() = 0;
virtual void getCaughtDataTampering() = 0;
virtual void makeBSPublicRelationsStatement() = 0;
bool noWarmingFor18years() { return true; }
virtual bool fundingDriesUp() { return WISHFUL_THINKING; }
void switchBackToGlobalCoolingScam()
{
m_global_warming_scam = false;
m_global_cooling_scam = true;
}
private:
bool m_global_cooling_scam;
bool m_global_warming_scam;
};
void ClimateScam::model()
{
while(m_global_warming_scam)
{
dataTamper();
sleep( rand(10000) );
getCaughtDataTampering();
sleep( rand(10000) );
makeBSPublicRelationsStatement();
std::cout << "Goddard may have been right about this"
<< "one but was wrong about everything else"
<< std::endl;
sleep( rand(10000) );
if ( rand(10000) == 0
&& noWarmingFor18years()
&& fundingDriesUp() )
{
// Destructor automatically switches back to global
// cooling scam;
delete this;
}
}
}
int main()
{
ClimateScam* global_warming_scam = new ClimateScam();
global_warming_scam.model();
}
LOL!
Me to literally. Thanks Steve you mad my morning.
Do I compile with the BULLSHIT flag on or off?
e.g.
#define BULLSHIT True
That flag is already set by default in the CAGW compiler.
Oh, sorry, you’re right! 😉
It will only half compile until you insert another 40 cents more. for the next 3 minutes.
… shades of batch processing on corporate’s (CIC’s) mainframe circa 1980’s; prerequeiste was a valid ‘EO’ (engineering charge number or ‘Engineering Order’ number) on the first JCL ‘Job’ card in the ACCNTINFO columns.
http://www.simotime.com/jclone01.htm#JobCard
.
The rand number sub is hilarious.
Only in “climate science”.
(Mosh will probably copy.)
Willis Eschenbach demands that everyone doing science releases their code. Send this to him to show that you are doing science …
Excellent!!
Steve
I note that in this updated code, the variable ‘ClimateNormal’ is never used.
Is that correct?
Fortran.
Why?
Watfor?
Because it is basically the computer equivalent of ancient Sanskrit…something no sane person can possibly EVER comprehend…therefore it makes checking the code and debugging pointless.
Actually Fortran is used because it is very well optimized and parallelizable on the computing farms used in large scale modelling.
That doesn’t make the results of the models any better, because the assumptions are already wrong, but yeah, it would be the right tool for the job.
Google WATFOR and you might get Fred’s joke…
I am not a C+++ weenie but I think you need some define statements before this will compile.
And you left out Global_Temp_Actual = BTSOOM.
This needs a Harry_Readme.txt
You should really put a break after your delete this or you may get unexpected results (something may overwrite the contents of m_global_warming_scam before the loop condition is re-evaluated).
In practice, you need to define a new scam.
I think you have left lots of scope for your current model to be enhanced, simply adding functions such as missingHeatInTheOceans() and hideTheDecline() should easily keep it going till the next round of funding with mininmal changes. 🙂
Cute … don’t care much for the coding format (we now call it “common core coding”) .. but cute.
I think a more applicable language would be common LISP or Clojure.
Additionally, I think dataTamper() should be static since you have shown data tampering to be a constant and hence not a virtual method (one that can be overridden by inherited classes). Until you can actually break this model, I don’t see any inheritance overriding dataTamper(). Once the model is broken, then dataTamper() would be moot and shouldn’t be called again.
Will the destructor ever be called? In the model above, funding never dries up 🙁
virtual bool fundingDriesUp() { return WISHFUL_THINKING; }
if ( rand(10000) == 0
&& noWarmingFor18years()
&& fundingDriesUp() ) // <<<<<<<
{
// Destructor automatically switches back to global
// cooling scam;
delete this;
}
You’re. Catching. On.
// Note that method fundingDriesUp() is virtual
// and can be overridden by an educated Congress
oxymoron : educated Congress
The destructor should also be made virtual. Otherwise you could have a memory leak.
Like Climategate?