PyCon UK 2008: Challenges for Dynamic Languages

1,094 views

Published on

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,094
On SlideShare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
28
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

PyCon UK 2008: Challenges for Dynamic Languages

  1. 1. J2EE vs Django Ted Leung Sun Microsystems
  2. 2. Not!
  3. 3. Challenges for Dynamic Languages Ted Leung Sun Microsystems
  4. 4. http://flickr.com/photos/pensiero/628674486/
  5. 5. PHP - 9.2% Python - 5% Perl - 4.8% JavaScript - 3.3% Ruby - 2.7%
  6. 6. Do we want to? http://flickr.com/photos/kk/1295074084/
  7. 7. http://flickr.com/photos/thewmatt/1864823746/
  8. 8. http://flickr.com/photos/access/277985573/
  9. 9. http://flickr.com/photos/stuckincustoms/388394597/
  10. 10. http://flickr.com/photos/mrbill/2502891680/ http://flickr.com/photos/mrbill/2502891680/
  11. 11. http://flickr.com/photos/stefan_michele/456453312/
  12. 12. X=1024; Y=768; A=3; J=0;K=-10;L=-7;M=1296;N=36;O=255;P=9;_=1<<15;E;S;C;D;F(b){E=quot;1quot;quot;111886:6:??AAFquot; quot;FHHMMOO55557799@@>>>BBBGGIIKKquot;[b]-64;C=quot;C@=::C@@==@=:C@=:C@=:C5quot;quot;31/513/5131/quot; quot;31/531/53quot;[b ]-64;S=b<22?9:0;D=2;}I(x,Y,X){Y?(X^=Y,X*X>x?(X^=Y):0, I (x,Y/2,X )):(E=X); }H(x){I(x, _,0);}p;q( c,x,y,z,k,l,m,a, b){F(c );x-=E*M ;y-=S*M ;z-=C*M ;b=x* x/M+ y*y/M+z *z/M-D*D *M;a=-x *k/M -y*l/M-z *m/M; p=((b=a*a/M- b)>=0?(I (b*M,_ ,0),b =E, a+(a>b ?-b:b)): -1.0);}Z;W;o (c,x,y, z,k,l, m,a){Z=! c? -1:Z;c <44?(q(c,x ,y,z,k, l,m,0,0 ),(p> 0&&c!= a&& (p<W ||Z<0) )?(W= p,Z=c): 0,o(c+ 1, x,y,z, k,l, m,a)):0 ;}Q;T; U;u;v;w ;n(e,f,g, h,i,j,d,a, b,V){o(0 ,e,f,g,h,i,j,a);d>0 &&Z>=0? (e+=h*W/M,f+=i*W/M,g+=j*W/M,F(Z),u=e-E*M,v=f-S*M,w=g-C*M,b=(-2*u-2*v+w) /3,H(u*u+v*v+w*w),b/=D,b*=b,b*=200,b/=(M*M),V=Z,E!=0?(u=-u*M/E,v=-v*M/E,w=-w*M/ E):0,E=(h*u+i*v+j*w)/M,h-=u*E/(M/2),i-=v*E/(M/2),j-=w*E/(M/2),n(e,f,g,h,i,j,d-1 ,Z,0,0),Q/=2,T/=2, U/=2,V=V<22?7: (V<30?1:(V<38?2:(V<44?4:(V==44?6:3)))) ,Q+=V&1?b:0,T +=V&2?b :0,U+=V &4?b:0) :(d==P?(g+=2 ,j=g>0?g/8:g/ 20):0,j >0?(U= j *j/M,Q =255- 250*U/M,T=255 -150*U/M,U=255 -100 *U/M):(U =j*j /M,U<M /5?(Q=255-210*U /M,T=255-435*U /M,U=255 -720* U/M):(U -=M/5,Q=213-110*U /M,T=168-113*U / M,U=111 -85*U/M) ),d!=P?(Q/=2,T/=2 ,U/=2):0);Q=Q< 0?0: Q>O? O: Q;T=T<0? 0:T>O?O:T;U=U<0?0: U>O?O:U;}R;G;B ;t(x,y ,a, b){n(M*J+M *40*(A*x +a)/X/A-M*20,M*K,M *L-M*30*(A*y+b)/Y/A+M*15,0,M,0,P, -1,0,0);R+=Q ;G+=T;B +=U;++a<A?t(x,y,a, b):(++b<A?t(x,y,0,b):0);}r(x,y){R=G=B=0;t(x,y,0,0);x<X?(printf(quot;%c%c%cquot;,R/A/A,G /A/A,B/A/A),r(x+1,y)):0;}s(y){r(0,--y?s(y),y:y);}main(){printf(quot;P6n%i %in255quot; quot;nquot;,X,Y);s(Y);}
  13. 13. http://flickr.com/photos/wink/2181740364/
  14. 14. http://flickr.com/photos/66164549@N00/2778719952/
  15. 15. Perl http://flickr.com/photos/66164549@N00/2778719952/
  16. 16. Python Perl http://flickr.com/photos/66164549@N00/2778719952/
  17. 17. Python Perl Tcl http://flickr.com/photos/66164549@N00/2778719952/
  18. 18. Python Perl Tcl Dylan http://flickr.com/photos/66164549@N00/2778719952/
  19. 19. Python Perl Ruby Tcl Dylan http://flickr.com/photos/66164549@N00/2778719952/
  20. 20. Python Lua Perl Ruby Tcl Dylan http://flickr.com/photos/66164549@N00/2778719952/
  21. 21. Python Lua Perl Ruby Tcl Haskell Dylan http://flickr.com/photos/66164549@N00/2778719952/
  22. 22. Python Lua Perl Ruby Tcl Haskell Dylan Caml http://flickr.com/photos/66164549@N00/2778719952/
  23. 23. Python Lua Perl Ruby Tcl Haskell Erlang Dylan Caml http://flickr.com/photos/66164549@N00/2778719952/
  24. 24. http://flickr.com/photos/almostinfamous/32546829/
  25. 25. http://flickr.com/photos/fuschia_foot/2394726476/
  26. 26. C# http://flickr.com/photos/ndm007/171398958/
  27. 27. # Builds a function that returns true # when 'f' returns false, and vice versa. def complement f lambda {|*args| not f.call(*args) } end is_even = lambda {|n| n % 2 == 0 } is_odd = complement(is_even) is_odd.call(1) # true is_odd.call(2) # false
  28. 28. var myRotator = { path: 'images/', speed: 4500, images: [quot;smile.gifquot;, quot;grim.gifquot;, quot;frown.gifquot;, quot;bomb.gifquot;] }
  29. 29. PHP
  30. 30. Python PHP
  31. 31. Python PHP Perl
  32. 32. JavaScript Python PHP Perl
  33. 33. Ruby JavaScript Python PHP Perl
  34. 34. Lua Ruby JavaScript Python PHP Perl
  35. 35. Lua Erlang Ruby JavaScript Python PHP Perl
  36. 36. Lua Erlang Ruby JavaScript Python PHP Perl Haskell
  37. 37. Lua Erlang Ruby JavaScript Python PHP Perl Haskell Scala
  38. 38. Lua Erlang Ruby JavaScript Python PHP Perl Haskell Groovy Scala
  39. 39. Lua Erlang Ruby JavaScript Python PHP Perl Haskell Groovy Scala Lisp
  40. 40. Lua Erlang Ruby JavaScript Python PHP Perl Haskell Smalltalk Groovy Scala Lisp
  41. 41. Desktop Applications
  42. 42. Web Applications
  43. 43. http://flickr.com/photos/laughingsquid/218983827/ Scott Beale / LaughingSquid.com
  44. 44. http://flickr.com/photos/paulmoody/225608884/
  45. 45. http://flickr.com/photos/mojodenbowsphotostudio/95796251/
  46. 46. http://flickr.com/photos/selva/36133233/
  47. 47. http://flickr.com/photos/keinepanik/1081215934/
  48. 48. ?
  49. 49. Scripting? ?
  50. 50. Scripting? Dynamic? ?
  51. 51. Scripting? Dynamic? ? Modern?
  52. 52. Scripting? Dynamic? ? Modern? ???
  53. 53. Thanks! ted.leung@sun.com

×