On Tue, Jan 3, 2012 at 7:19 AM, Sean Wolfe <ether....@gmail.com> wrote:
> Well working in java continues to suck. I wish I had more experience > in C/cpp, working on it, because then I could be a little less biased > on evaluating java. I mean my frustrations with curly brace completion > and strong typing aren't a limitation of java per se. > > I've been reading a lot about the relative merits of static vs duck > typing and a plus on the strongly-typed side seems to be, catching > bugs in the editor or at compile time as opposed to runtime. Yes. That's a primary benefit of statically typed languages--the compiler can do some of the brain work for you. There are plenty of other examples, too (e.g., const-correctness in C/C++ and the "throws" declaration in Java). > From my > deeply uneducated standpoint it seems to me like this wouldn't be a > horribly hard thing to do, to add static typing or enforced types to > python. >From a programmer's perspective, I *don't* see it as easy to add support for static typing to Python. It really must be all there or all *not*. And having it *not* is one of the beauties of Python. It also made it slower. However, it's a tradeoff the language designer(s) always have to make; it can't really happen at the coders' level. I suppose you could do things like: def my_func(in): if type(in) != type(""): raise ValueError() . . . which emulate static types, but is still not a compile-time error. In my early Python libraries, I found I was doing something of this sort because I wanted it to be robust, even at the cost of performance (this is a case where C++ wins: C++ is plenty fast, you don't have to do this particular kind of error checking, and you can put #ifdef/#endif around error-checking sections so that the code isn't even *there* when you don't want it). On the flip side, it's actually surprisingly easy to add duck typing (of a sort, through polymorphism) to compile-time languages. In Java, simply make everything type "Object". E.g.: Object my_var = new String("Help! Spiders!"); my_var = new Integer(6); I mean we could make cholices as we code as to what to use. > When it was better to use a strongly typed methodolgy we could > refactor our code. We could use the feature as needed, and continue > with duck typing for normal python ness. > > Also, although coding in Java sucks massively and gives me no joy or > happiness in life, I am finding a glimmer of hope and encouragement > using this libgdx gaming framework which at least is made by game > enthusiasts and uses cool terminology like 'Actor' and 'Stage' as > opposed to Canvas and BitmapDrawable or worse ... java.util.List . > Lord save me from java.util.List . > > Just a little rant to start of 2012 in the right way. > > Happy new year!! And remember. press on, it's only a flesh wound! Ian