qammm | 12 years ago | on: Why Clojure will win
qammm's comments
qammm | 12 years ago | on: Do you need a degree to be a coder?
qammm | 12 years ago | on: Do you need a degree to be a coder?
qammm | 12 years ago | on: Why Clojure will win
If I have a function: def upcase(s: String): String... The compiler with its static type system can tell me if e. g. I am trying to call the upcase function with an Int argument. But in my experience something like that just does not happen very often. Most programmers are not so stupid that they try to fit a square peg in a round hole. ;-)
A unit test can check if the returned string is really the upcase version of the input parameter. Plus if the programmer would really assume that he could upcase an Int it would just as well give the feedback that his assumption was wrong-like the compiler.
qammm | 12 years ago | on: Why Clojure will win
And of course: Using a statically typed language is no excuse to not write unit tests. Unit tests serve as a safety net checking if the behavior of the implemented unit is (and stays) correct. As a side effect this will also find all type errors a compiler will find. I have programmed a lot in Java and also in dynamic programming languages and in my opinion type errors just don't happen often enough to justify the additional amount of work and complexity that comes with static type systems. However I'd agree that if you want to get the best possible performance you probably need a statically typed language as the compiler can then optimize the generated code better.
qammm | 12 years ago | on: Why Clojure will win
That is good and bad. Good: you can probably find good use for every feature Scala has. Bad: On a sufficiently big project with one or more extra clever developers most probably every feature will be used and that will make it extra hard to understand for normal software developers that have to maintain it for long years after the original extra smart developer already left the company. See it a bit like that: On a hard to understand scale with 1 being easy to understand und 10 being extremely hard to understand Java projects can go from 1 to 6 and Scala projects can go from 1 to 10.
Personally I like simple languages more. And I don't need a compiler to catch errors that a unit test would also catch.
qammm | 12 years ago | on: Why Clojure will win
qammm | 12 years ago | on: How to Fatten Pigs and People
The central mechanism to understand is insulin. Quoting http://en.wikipedia.org/wiki/Insulin: "Insulin is a peptide hormone, produced by beta cells of the pancreas, and is central to regulating carbohydrate and fat metabolism in the body. Insulin causes cells in the liver, skeletal muscles, and fat tissue to absorb glucose from the blood. In the liver and skeletal muscles, glucose is stored as glycogen, and in fat cells (adipocytes) it is stored as triglycerides.
Insulin stops the use of fat as an energy source by inhibiting the release of glucagon. ... Porcine insulin is especially close to the human version."
That means whenever you consume a meal that produces a high insulin response your body stops burning fat immediately and in addition stores all the fat in the meal you just consumed in the form of fat. That is what makes pigs and people fat (in addition to another phenomenom which makes you hungry again much quicker).
You can index food by the insulin reaction it causes. This index is called insulin index. Different food has a different index value. See e. g. http://en.wikipedia.org/wiki/Insulin_index Unfortunately there are no really detailled insulin index tables as there are for the glycemic index. The glycemic index measures how fast your blood sugar will rise after consuming a specific food. In most cases however high glycemic index will also mean high insulin index and you can substitute the missing insulin index data by using the glycemic index data with one exception: milk. Milk although having a low glycemic index (caused by milk sugar/lactose) has a high insulin index! See e. g. http://www.marksdailyapple.com/dairy-insulin/
Corn and Sugar have high glycemic (and thus insulin) index. Milk protein causes an abnormal high insulin index.
There are a lot of diets that can be explained by optimizing mostly this insulin effect: Atkins, Low Carb, Sears/Zone, Paleo. Although I am not an expert in any of them. All I can say is that by only taking care for what I ate I lost 60 pounds over the course of 1.5 years (I used a similar german diet called "Schlank im Schlaf"). The interesting thing to me is: When I am eating food with a low insulin effect I stay satisfied for much longer. When I eat food with high insulin effect I get hungry again in 1-2 hours. It feels almost like drinking salt water against thirst...
Ok, then let's just ignore continuations as they are somehow available in both languages although the Scala one feels a bit more officially endorsed to me.
> def upcase(s: String): UppercasedString
Even with that type signature of course the compiler can not check that for input "a" the output will be "A". Your code could have a bug and upcase "a" to "B" (Off-by-one errors are quite common) and your compiler would be perfectly happy. That is the whole point why unit test are more valuable than compiler type checks: checking specific code behavior and not only static types.