Sunday, November 03, 2019

Response to letter from American Council on Science and Health.


Alex Berezow, Ph.D.
Vice President of Scientific Affairs
American Council on Science and Health
P.O. Box 1791
New York, NY  10156

Doctor Berezow-

I received with interest your letter dated June 7, 2019, on American Council on Science and Health letterhead, which began “Real scientists and trial lawyers are locked in combat. And the future of science hangs in the balance.” Much of that letter appears to repeat your article A $289M Hit Job On Science In Jackpot Verdict On Monsanto's Glyphosate.
I found your letter to contain some dubious scientific claims. Specifically, you claim that “real science proves that [cancer was caused by glyphosate is] biologically impossible.” I take several issues with this assertion. Most importantly, science does not prove anything. Proof is something to be found in the realm of mathematics, not science. Science is an inductive process by which we make hypotheses and then gather evidence to determine how likely the hypothesis is to be true or false. Scientists do not ever reach the state of having 100% proof of a hypothesis.
You also claim that there is “no credible scientific evidence [that] links glyphosate to cancer.” Perhaps you are unaware of the meta-analysis Non-Hodgkin Lymphoma and Occupational Exposure to Agricultural Pesticide Chemical Groups and Active Ingredients: A Systematic Review and Meta-Analysis published in International Journal of Environmental Research and Public Health, 2014 Apr, or the meta-analysis Exposure to glyphosate-based herbicides and risk for non-Hodgkin lymphoma: A meta-analysis and supporting evidence in Mutation Research, 2019 July-Sep. The latter is based on the most recent update of the Agricultural Health Study cohort published in 2018 and five case-control studies and found a "compelling link" between exposures to glyphosate-based herbicides and increased risk for non-Hodgkin lymphoma. Now that you are aware of them, I would ask that you tone down your rhetoric.
You also claim that “… glyphosate does not cause cancer because it doesn’t harm humans. It is an herbicide, so it is only toxic to plants. There is no known biological mechanism by which glyphosate could cause cancer, so it being a carcinogen isn’t even theoretically possible.” There is so much wrong with these assertions that it is difficult to know where to begin.
First, the opening sentence “glyphosate does not cause cancer because it doesn’t harm humans” draws a conclusion (“does not cause cancer“) based on an assertion (“doesn’t harm humans”) for which no evidence is to be found. This is the kind of statement I would expect an organization such as the Council to disavow like the junk science it seeks to fight against.
Second, the statement “It is an herbicide, so it is only toxic to plants” is also conclusory without evidence. Sure, it is sold as an herbicide. Sure, it is used as an herbicide. Sure, it is effective as an herbicide. But those facts are a non-sequitur as to whether it harms non-plants.
Finally, the claim “There is no known biological mechanism by which glyphosate could cause cancer, so it being a carcinogen isn’t even theoretically possible” appears to totally misunderstand the scientific process. Mankind has known that the sun produces light and heat for far longer than we have understood any process by which it could be “theoretically possible.” But our failure to understand how the sun produces light didn’t mean that it wasn’t obviously possible. Science infers relationships between things by observing the correlation, whether the precise mechanism of a causal relationship is known or not. Scientists form a hypothesis and then test the hypothesis by gathering data. If a causal relationship is shown to exist, the scientist might hypothesize a mechanism for the relationship. If the mechanism is shown to reliably explain the relationship, a hypothesis might graduate to the level of a theory. To suggest that glyphosate “theoretically” couldn’t be a carcinogen because we have no hypothesis for a mechanism is to turn the scientific process on its head. This hit job on science is the kind of pseudo-scientific doublespeak and emotional manipulation I would expect you to fight against.
Having said all that, I should say that the evidence for human harm I’ve seen does not rise to the level that I would support banning glyphosate. But if you’re going to resort to the ad-hominem argument that your opponent is spouting junk science to emotionally manipulate others, well then… pot, meet kettle.
Sincerely,

Neal M Gafter, Ph.D.

Wednesday, August 14, 2019

Accidentally Quadratic Constant Folding


I just fixed a bug in the implementation of constant folding in the C# and VB.Net compilers. They used to require O(n^2) space. Now they require O(n) space.

The naive approach to implementing string concatenation for an expression such as "S1" + "S2" + "S3" is to recursively visit the left-hand and right-hand operands and compute their constant string values, and then concatenate these strings to produce the constant string for the concatenation. It seems obviously correct and the only reasonable way to do it. But it has a serious problem.

The concatenation operation is left associative, so for a long sequence of n concatenations, each of size k, we would produce intermediate results of size k, 2k, 3k, and so on up to nk. The total amount of space needed to represent this collection of strings is O(k n^2). For moderately-sized values of n, this would cause the compilers to run out of memory and crash. This is not merely a theoretical problem, as we had been getting customer reports of this problem about quarterly for the past 7-8 years.

Fixing the problem was fairly straightforward, using a technique I learned from the Cedar/Mesa compiler in the early '80s. Rather than representing string constants in the compilers using strings, they are now represented using a data structure called Ropes. Concatenating two ropes requires only a small constant amount of memory.

Any compiler for a language that supports constant folding of string concatenation will run into this problem unless there is a similarly low-space representation of two concatenated strings. This is a technique that should be in the bag of tricks of any compiler writer.