Thanks Mike for your reminder to be pragmatic. It is definitely the way to go. 
Clojure's an incredible language for this.

This is going to be a longish post as I should better explain my position. It 
is just a brief sketch of the problem but I think that we should be thinking 
about it more as a fun exercise rather than a way to troll the haskell/scala/ml 
mailing lists.

I'm not the type of person to get overly academic but I still want to have 
`faith` in the tools that I'm using. In Indian traditions of philosophy, the 
term `shraddah` is translated as `faith` but it literally means `that which 
binds you` or `that which is unwavering`. Logical foundations of practices and 
beliefs are debated by practitioners and scholars alike. To debate and win 
against those in opposition, one has to have a good reason to believe in their 
practice. In other words, academics is a VERY powerful tool for faith.

Because of the vast amounts of academic work around types, we now have a `type` 
priesthood and an increasingly mass of `type converts` who are very 
inflammatory against anything non-typed languages. The cult of haskell will 
always look down on the cult of lisp/javascript/python/ruby, laugh and say `you 
guys suck because you don`t have A, B, C which are features of type inference`.

Now with the `cult of clojure`, we can say YES WE DO (Typed Clojure)… but not 
only that, we should also be able to say: 

"Because we have optional typing, here are a bunch of problems that we can 
solve very easy because X, Y and Z are not restricted by type inference."

Now The the debate actually moves forward, so that we ask ourselves whether 
type-inference is suitable for solving a particular class of problems rather 
than putting ourselves into opposite camps.

I have to come back to Godel's work as it is (quoting the lecturer) `The most 
profound result to have come out of logic for the last 2000 years, ever since 
the time of Aristotle`. What Godel did, was to write a hack that crashed a what 
was thought to be an uncrashable system.

Principia Mathematica (PM) was a huge book which described how one can of about 
using a subset of mathematics to reason without running into Russell`s Paradox 
(which is the mathematical equivalent of saying `this statement is false`). It 
was found that ANY system that referred back to oneself had the potential to 
have this problem and so all of this circular referencing had to be eliminated. 
The reason why the book was so thick was because most of the book was devoted 
to teaching people how to write mathematics without using circular reference. 
It was dense.

Godel constructed an equivalent system of calculation to that of PM and showed 
that anytime the `+` operator was in the system, then it was possible to get 
the system to talk about itself. Therefore, the phrase `This statement is 
unprovable using our system` will result in a paradox in a system that was 
thought the be free of them. Thus, Godel used the logic presented in the 
framework itself to cause its own downfall.

This result put mathematics in its place, not as the single source of truth as 
Russell and Whitehead, the authors of PM had wanted, but as an incredibly tool 
despite its inconsistencies. It also eliminated the need for future 
mathematicians to waste their time in order to build a complete system of 
mathematics - Godel had proved beyond a shadow of a doubt that this was an 
impossible task.

I see history repeating itself with the offspring of PM (type theory). Like PM, 
It is brilliant and to be honest, it is too abstract for me. However, it is my 
understanding that a lot of the leading research is repeating that of PM but 
with an emphasis on computation. To avoid Russell`s paradox, types are always 
hierarchical, never circular. To express circular referencing of types in a 
none circular way requires a lot of time of a lot of smart people. 

There is therefore a lot of pomp and ceremony in order to create a `correct` 
and `complete` system of programming I don't think any of the researchers claim 
this but it is sure marketed that way. 

I believe that we have to put type theory in its proper place as a tool for 
programmers and not as the saviour for programming (that mantle belongs to lisp 
of course =p ) For example:
 - one area that is difficult using types is to define multiple hierarchies 
over objects - like properies of can-fly, can-swim, can-run over birds, mammals 
and reptiles.
 - Another area is with partial data. That is, when does a rose not become a 
rose? when it looses its colour? fragrance? shape?. For example… can {:colour 
:red}  be considered a rose, even though a rose may be red?






On 06/10/2013, at 6:02 PM, Mikera <mike.r.anderson...@gmail.com> wrote:

> I suspect you are going to have zero success "proving" the superiority of 
> dynamic languages (in an academic proof sense). For a start, people are even 
> going to disagree about the precise definition of "better". What matters 
> more: Runtime performance? Flexibility with respect to changing requirements? 
> Ease of learning? Minimisation of typing? Ease of language implementation? 
> Etc..... Any such "proof" based on your own definition of "better" isn't 
> likely to convince others who hold different views.
> 
> My suggestion: just don't worry about it, be pragmatic and use whatever you 
> find helps you to build useful software. Ultimately, that is the main measure 
> of success for a practical general purpose programming language. 
> 
> In particular, I suggest ignoring anyone who launches a "barrage of abuse". 
> Language trolls probably aren't going to give you a sensible conversation in 
> any case.
> 
> On Sunday, 6 October 2013 11:35:20 UTC+8, zcaudate wrote:
> I'm a little bit miffed over this current craze of `types` and `correctness` 
> of programs. It smells to me of the whole `object` craze of the last two 
> decades. I agree that types (like objects) have their uses, especially in 
> very well defined problems, but they have got me in trouble over and over 
> again when I am working in an area where the goal is unclear and requirements 
> are constantly changing. 
> 
> BTW... This is no means a criticism of all the type system work that is going 
> on in the clojure community. I am a huge fan of Ambrose's Typed Clojure 
> project because it gives me the option of using types... not shoving it down 
> my throat. I like the freedom to choose.
> 
> My experience of programming in clojure has freed me from thinking about 
> types and hierarchies and this article rings so true: 
> http://steve.yegge.googlepages.com/is-weak-typing-strong-enough.
> 
> However, everywhere I look, there are smug type-weenies telling me that my 
> dynamically typed program is bad because it cannot be `proven correct` and 
> not `checked by the compiler`. This question on SO really makes me angry.... 
> http://stackoverflow.com/questions/42934/what-do-people-find-so-appealing-about-dynamic-languages....
>  because no one is defending dynamic languages on there. The reason is very 
> simple..... because we don`t have a theory to back us up!
> 
> I do want to put up an counter argument against this barrage of abuse against 
> dynamic languages. And I want to put some academic weight behind this. The 
> only counter I could come up with was to use Godel's incompleteness theorem. 
> For those that don't know... here is an introduction to the man and his 
> theory. http://www.youtube.com/watch?v=i2KP1vWkQ6Y. Godel's theorem, 
> invalidated Principia Mathematica as a complete system of description. 
> Principia Mathematica btw....  effectively led to Type Theory.
> 
> According to http://en.wikipedia.org/wiki/Type_theory. "The types of type 
> theory were invented by Bertrand Russell in response to his discovery that 
> Gottlob Frege's version of naive set theory was afflicted with Russell's 
> paradox. This theory of types features prominently in Whitehead and Russell's 
> Principia Mathematica. It avoids Russell's paradox by first creating a 
> hierarchy of types, then assigning each mathematical (and possibly other) 
> entity to a type. Objects of a given type are built exclusively from objects 
> of preceding types (those lower in the hierarchy), thus preventing loops."
> 
> I'm hoping to collect a few more `proofs` from the clojure community... for 
> example... if there is a paper on "why are type systems so bad at classifying 
> animals"... then please forward it on. 
> 
> -- 
> -- 
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with your 
> first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
> --- 
> You received this message because you are subscribed to a topic in the Google 
> Groups "Clojure" group.
> To unsubscribe from this topic, visit 
> https://groups.google.com/d/topic/clojure/0I7u5yn01qU/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to 
> clojure+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.

-- 
-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to