Re: [CODE4LIB] You are a *pedantic* coder. So what am I?

2013-02-22 Thread Peter Schlumpf
Reminds me of the Zen saying:  In the beginner's mind there are many 
possibilities.  In the expert's mind there are few.


-Original Message-
From: Justin Coyne jus...@curationexperts.com
Sent: Feb 21, 2013 11:59 AM
To: CODE4LIB@LISTSERV.ND.EDU
Subject: Re: [CODE4LIB] You are a *pedantic* coder. So what am I?

Ian, I have to caution against taking the attitude we only code in what we
already know.  Of course you are going to be able to hit the ground
running faster in what you are expert in.  Putting on the blinders is a
great way to become irrelevant in the technology sphere.  If you want to be
a better coder, there is no better way than to learn a new language, and
actually do a project in it. The insights you find in doing this will make
you a better coder when your go back to doing whatever it was you were
doing before.

-Justin


On Thu, Feb 21, 2013 at 11:53 AM, Ian Walls iwa...@library.umass.eduwrote:

 Agreed.  Each language has its own strengths and weaknesses.  Pick the one
 that works best for your situation, factoring in not only what the
 application needs to do, but your and your team's level of experience, and
 the overall community context in which the project will live.  The
 peculiarities of a given languages truth tables, for example, can easily
 get washed out of the calculation when you consider what languages you know
 and what platforms your institution supports.


 -Ian

 -Original Message-
 From: Code for Libraries [mailto:CODE4LIB@LISTSERV.ND.EDU] On Behalf Of
 Ethan Gruber
 Sent: Thursday, February 21, 2013 12:45 PM
 To: CODE4LIB@LISTSERV.ND.EDU
 Subject: Re: [CODE4LIB] You are a *pedantic* coder. So what am I?

 Look, I'm sure we can list the many ways different languages fail to meet
 our expectations, but is this really a constructive line of conversation?

 -1


 On Thu, Feb 21, 2013 at 12:40 PM, Justin Coyne
 jus...@curationexperts.comwrote:

  I did misspeak a bit.  You can override static methods in Java.  My
  major issue is that there is no getClass() within a static method,
  so when the static method is being run in the context of the
  inheriting class it is unaware of its own run context.
 
  For example: I want the output to be Hi from bar, but it's Hi from
 foo:
 
  class Foo {
public static void sayHello() {
  hi();
}
public static void hi() {
  System.out.println(Hi from foo);
}
  }
 
  class Bar extends Foo {
 
public static void hi() {
  System.out.println(Hi from bar);
}
  }
 
  class Test {
public static void main(String [ ] args) {
  Bar.sayHello();
}
  }
 
 
  -Justin
 
 
 
  On Thu, Feb 21, 2013 at 11:18 AM, Eric Hellman e...@hellman.net wrote:
 
   OK, pedant, tell us why you think methods that can be over-ridden
   are static.
   Also, tell us why you think classes in Java are not instances of
   java.lang.Class
  
  
   On Feb 18, 2013, at 1:39 PM, Justin Coyne
   jus...@curationexperts.com
   wrote:
  
To be pedantic, Ruby and JavaScript are more Object Oriented than
Java because they don't have primitives and (in Ruby's case)
because classes
   are
themselves objects.   Unlike Java, both Python and Ruby can properly
override of static methods on sub-classes. The Java language made
many compromises as it was designed as a bridge to Object Oriented
  programming
for programmers who were used to writing C and C++.
   
-Justin
   
  
 



Re: [CODE4LIB] You are a *pedantic* coder. So what am I?

2013-02-22 Thread Shaun Ellis

On 2/22/13 11:22 AM, Peter Schlumpf wrote:

Reminds me of the Zen saying:  In the beginner's mind there are many possibilities. 
 In the expert's mind there are few.


... with beginner's mind being the zen-preferred place to hang out, right?


[CODE4LIB] You are a *pedantic* coder. So what am I?

2013-02-21 Thread Eric Hellman
OK, pedant, tell us why you think methods that can be over-ridden are static.
Also, tell us why you think classes in Java are not instances of java.lang.Class


On Feb 18, 2013, at 1:39 PM, Justin Coyne jus...@curationexperts.com wrote:

 To be pedantic, Ruby and JavaScript are more Object Oriented than Java
 because they don't have primitives and (in Ruby's case) because classes are
 themselves objects.   Unlike Java, both Python and Ruby can properly
 override of static methods on sub-classes. The Java language made many
 compromises as it was designed as a bridge to Object Oriented programming
 for programmers who were used to writing C and C++.
 
 -Justin
 


Re: [CODE4LIB] You are a *pedantic* coder. So what am I?

2013-02-21 Thread Justin Coyne
I did misspeak a bit.  You can override static methods in Java.  My major
issue is that there is no getClass() within a static method, so when the
static method is being run in the context of the inheriting class it is
unaware of its own run context.

For example: I want the output to be Hi from bar, but it's Hi from foo:

class Foo {
  public static void sayHello() {
hi();
  }
  public static void hi() {
System.out.println(Hi from foo);
  }
}

class Bar extends Foo {

  public static void hi() {
System.out.println(Hi from bar);
  }
}

class Test {
  public static void main(String [ ] args) {
Bar.sayHello();
  }
}


-Justin



On Thu, Feb 21, 2013 at 11:18 AM, Eric Hellman e...@hellman.net wrote:

 OK, pedant, tell us why you think methods that can be over-ridden are
 static.
 Also, tell us why you think classes in Java are not instances of
 java.lang.Class


 On Feb 18, 2013, at 1:39 PM, Justin Coyne jus...@curationexperts.com
 wrote:

  To be pedantic, Ruby and JavaScript are more Object Oriented than Java
  because they don't have primitives and (in Ruby's case) because classes
 are
  themselves objects.   Unlike Java, both Python and Ruby can properly
  override of static methods on sub-classes. The Java language made many
  compromises as it was designed as a bridge to Object Oriented programming
  for programmers who were used to writing C and C++.
 
  -Justin
 



Re: [CODE4LIB] You are a *pedantic* coder. So what am I?

2013-02-21 Thread Ethan Gruber
Look, I'm sure we can list the many ways different languages fail to meet
our expectations, but is this really a constructive line of conversation?

-1


On Thu, Feb 21, 2013 at 12:40 PM, Justin Coyne
jus...@curationexperts.comwrote:

 I did misspeak a bit.  You can override static methods in Java.  My major
 issue is that there is no getClass() within a static method, so when the
 static method is being run in the context of the inheriting class it is
 unaware of its own run context.

 For example: I want the output to be Hi from bar, but it's Hi from foo:

 class Foo {
   public static void sayHello() {
 hi();
   }
   public static void hi() {
 System.out.println(Hi from foo);
   }
 }

 class Bar extends Foo {

   public static void hi() {
 System.out.println(Hi from bar);
   }
 }

 class Test {
   public static void main(String [ ] args) {
 Bar.sayHello();
   }
 }


 -Justin



 On Thu, Feb 21, 2013 at 11:18 AM, Eric Hellman e...@hellman.net wrote:

  OK, pedant, tell us why you think methods that can be over-ridden are
  static.
  Also, tell us why you think classes in Java are not instances of
  java.lang.Class
 
 
  On Feb 18, 2013, at 1:39 PM, Justin Coyne jus...@curationexperts.com
  wrote:
 
   To be pedantic, Ruby and JavaScript are more Object Oriented than Java
   because they don't have primitives and (in Ruby's case) because classes
  are
   themselves objects.   Unlike Java, both Python and Ruby can properly
   override of static methods on sub-classes. The Java language made many
   compromises as it was designed as a bridge to Object Oriented
 programming
   for programmers who were used to writing C and C++.
  
   -Justin
  
 



Re: [CODE4LIB] You are a *pedantic* coder. So what am I?

2013-02-21 Thread Justin Coyne
with regards to Class extending Object,  should this error be possible?

error: clone() has protected access in Object
Class.clone();
 ^


Of course this sort of nit-picking is absolutely not constructive.  I'm
just saying that if you're teaching the Object Oriented programming
paradigm, there are better choices than Java.  Java is a really difficult
language for the beginner.  How many professional Java programmers can work
without an IDE?   Compare that to the same metric for any scripting
language.


-Justin.




P.S.

error: clone() has protected access in Object
System.out.println(Class.clone().toString());
^




On Thu, Feb 21, 2013 at 11:45 AM, Ethan Gruber ewg4x...@gmail.com wrote:

 Look, I'm sure we can list the many ways different languages fail to meet
 our expectations, but is this really a constructive line of conversation?

 -1


 On Thu, Feb 21, 2013 at 12:40 PM, Justin Coyne
 jus...@curationexperts.comwrote:

  I did misspeak a bit.  You can override static methods in Java.  My major
  issue is that there is no getClass() within a static method, so when
 the
  static method is being run in the context of the inheriting class it is
  unaware of its own run context.
 
  For example: I want the output to be Hi from bar, but it's Hi from
 foo:
 
  class Foo {
public static void sayHello() {
  hi();
}
public static void hi() {
  System.out.println(Hi from foo);
}
  }
 
  class Bar extends Foo {
 
public static void hi() {
  System.out.println(Hi from bar);
}
  }
 
  class Test {
public static void main(String [ ] args) {
  Bar.sayHello();
}
  }
 
 
  -Justin
 
 
 
  On Thu, Feb 21, 2013 at 11:18 AM, Eric Hellman e...@hellman.net wrote:
 
   OK, pedant, tell us why you think methods that can be over-ridden are
   static.
   Also, tell us why you think classes in Java are not instances of
   java.lang.Class
  
  
   On Feb 18, 2013, at 1:39 PM, Justin Coyne jus...@curationexperts.com
   wrote:
  
To be pedantic, Ruby and JavaScript are more Object Oriented than
 Java
because they don't have primitives and (in Ruby's case) because
 classes
   are
themselves objects.   Unlike Java, both Python and Ruby can properly
override of static methods on sub-classes. The Java language made
 many
compromises as it was designed as a bridge to Object Oriented
  programming
for programmers who were used to writing C and C++.
   
-Justin
   
  
 



Re: [CODE4LIB] You are a *pedantic* coder. So what am I?

2013-02-21 Thread Ian Walls
Agreed.  Each language has its own strengths and weaknesses.  Pick the one that 
works best for your situation, factoring in not only what the application needs 
to do, but your and your team's level of experience, and the overall community 
context in which the project will live.  The peculiarities of a given languages 
truth tables, for example, can easily get washed out of the calculation when 
you consider what languages you know and what platforms your institution 
supports.


-Ian

-Original Message-
From: Code for Libraries [mailto:CODE4LIB@LISTSERV.ND.EDU] On Behalf Of Ethan 
Gruber
Sent: Thursday, February 21, 2013 12:45 PM
To: CODE4LIB@LISTSERV.ND.EDU
Subject: Re: [CODE4LIB] You are a *pedantic* coder. So what am I?

Look, I'm sure we can list the many ways different languages fail to meet our 
expectations, but is this really a constructive line of conversation?

-1


On Thu, Feb 21, 2013 at 12:40 PM, Justin Coyne
jus...@curationexperts.comwrote:

 I did misspeak a bit.  You can override static methods in Java.  My 
 major issue is that there is no getClass() within a static method, 
 so when the static method is being run in the context of the 
 inheriting class it is unaware of its own run context.

 For example: I want the output to be Hi from bar, but it's Hi from foo:

 class Foo {
   public static void sayHello() {
 hi();
   }
   public static void hi() {
 System.out.println(Hi from foo);
   }
 }

 class Bar extends Foo {

   public static void hi() {
 System.out.println(Hi from bar);
   }
 }

 class Test {
   public static void main(String [ ] args) {
 Bar.sayHello();
   }
 }


 -Justin



 On Thu, Feb 21, 2013 at 11:18 AM, Eric Hellman e...@hellman.net wrote:

  OK, pedant, tell us why you think methods that can be over-ridden 
  are static.
  Also, tell us why you think classes in Java are not instances of 
  java.lang.Class
 
 
  On Feb 18, 2013, at 1:39 PM, Justin Coyne 
  jus...@curationexperts.com
  wrote:
 
   To be pedantic, Ruby and JavaScript are more Object Oriented than 
   Java because they don't have primitives and (in Ruby's case) 
   because classes
  are
   themselves objects.   Unlike Java, both Python and Ruby can properly
   override of static methods on sub-classes. The Java language made 
   many compromises as it was designed as a bridge to Object Oriented
 programming
   for programmers who were used to writing C and C++.
  
   -Justin
  
 



Re: [CODE4LIB] You are a *pedantic* coder. So what am I?

2013-02-21 Thread Andreas Orphanides
Concur. I think everyone should just switch to APL [0], then we'll all
suffer equally.

[0] http://en.wikipedia.org/wiki/APL_(programming_language)

On Thu, Feb 21, 2013 at 12:53 PM, Ian Walls iwa...@library.umass.eduwrote:

 Agreed.  Each language has its own strengths and weaknesses.  Pick the one
 that works best for your situation, factoring in not only what the
 application needs to do, but your and your team's level of experience, and
 the overall community context in which the project will live.  The
 peculiarities of a given languages truth tables, for example, can easily
 get washed out of the calculation when you consider what languages you know
 and what platforms your institution supports.


 -Ian

 -Original Message-
 From: Code for Libraries [mailto:CODE4LIB@LISTSERV.ND.EDU] On Behalf Of
 Ethan Gruber
 Sent: Thursday, February 21, 2013 12:45 PM
 To: CODE4LIB@LISTSERV.ND.EDU
 Subject: Re: [CODE4LIB] You are a *pedantic* coder. So what am I?

 Look, I'm sure we can list the many ways different languages fail to meet
 our expectations, but is this really a constructive line of conversation?

 -1


 On Thu, Feb 21, 2013 at 12:40 PM, Justin Coyne
 jus...@curationexperts.comwrote:

  I did misspeak a bit.  You can override static methods in Java.  My
  major issue is that there is no getClass() within a static method,
  so when the static method is being run in the context of the
  inheriting class it is unaware of its own run context.
 
  For example: I want the output to be Hi from bar, but it's Hi from
 foo:
 
  class Foo {
public static void sayHello() {
  hi();
}
public static void hi() {
  System.out.println(Hi from foo);
}
  }
 
  class Bar extends Foo {
 
public static void hi() {
  System.out.println(Hi from bar);
}
  }
 
  class Test {
public static void main(String [ ] args) {
  Bar.sayHello();
}
  }
 
 
  -Justin
 
 
 
  On Thu, Feb 21, 2013 at 11:18 AM, Eric Hellman e...@hellman.net wrote:
 
   OK, pedant, tell us why you think methods that can be over-ridden
   are static.
   Also, tell us why you think classes in Java are not instances of
   java.lang.Class
  
  
   On Feb 18, 2013, at 1:39 PM, Justin Coyne
   jus...@curationexperts.com
   wrote:
  
To be pedantic, Ruby and JavaScript are more Object Oriented than
Java because they don't have primitives and (in Ruby's case)
because classes
   are
themselves objects.   Unlike Java, both Python and Ruby can properly
override of static methods on sub-classes. The Java language made
many compromises as it was designed as a bridge to Object Oriented
  programming
for programmers who were used to writing C and C++.
   
-Justin
   
  
 



Re: [CODE4LIB] You are a *pedantic* coder. So what am I?

2013-02-21 Thread Adam Wead
Actually, I'm finding this thread very enlightening.  I've only had a little 
java experience, but always assumed it was the ur-implementation of OO 
principles.  Now, I've had that assumption corrected.

Thanks,

…adam


On Feb 21, 2013, at 12:53 PM, Ian Walls iwa...@library.umass.edu wrote:

 Agreed.  Each language has its own strengths and weaknesses.  Pick the one 
 that works best for your situation, factoring in not only what the 
 application needs to do, but your and your team's level of experience, and 
 the overall community context in which the project will live.  The 
 peculiarities of a given languages truth tables, for example, can easily get 
 washed out of the calculation when you consider what languages you know and 
 what platforms your institution supports.


 -Ian

 -Original Message-
 From: Code for Libraries [mailto:CODE4LIB@LISTSERV.ND.EDU] On Behalf Of Ethan 
 Gruber
 Sent: Thursday, February 21, 2013 12:45 PM
 To: CODE4LIB@LISTSERV.ND.EDU
 Subject: Re: [CODE4LIB] You are a *pedantic* coder. So what am I?

 Look, I'm sure we can list the many ways different languages fail to meet our 
 expectations, but is this really a constructive line of conversation?

 -1


 On Thu, Feb 21, 2013 at 12:40 PM, Justin Coyne
 jus...@curationexperts.comwrote:

 I did misspeak a bit.  You can override static methods in Java.  My
 major issue is that there is no getClass() within a static method,
 so when the static method is being run in the context of the
 inheriting class it is unaware of its own run context.

 For example: I want the output to be Hi from bar, but it's Hi from foo:

 class Foo {
  public static void sayHello() {
hi();
  }
  public static void hi() {
System.out.println(Hi from foo);
  }
 }

 class Bar extends Foo {

  public static void hi() {
System.out.println(Hi from bar);
  }
 }

 class Test {
  public static void main(String [ ] args) {
Bar.sayHello();
  }
 }


 -Justin



 On Thu, Feb 21, 2013 at 11:18 AM, Eric Hellman e...@hellman.net wrote:

 OK, pedant, tell us why you think methods that can be over-ridden
 are static.
 Also, tell us why you think classes in Java are not instances of
 java.lang.Class


 On Feb 18, 2013, at 1:39 PM, Justin Coyne
 jus...@curationexperts.com
 wrote:

 To be pedantic, Ruby and JavaScript are more Object Oriented than
 Java because they don't have primitives and (in Ruby's case)
 because classes
 are
 themselves objects.   Unlike Java, both Python and Ruby can properly
 override of static methods on sub-classes. The Java language made
 many compromises as it was designed as a bridge to Object Oriented
 programming
 for programmers who were used to writing C and C++.

 -Justin




This communication is a confidential and proprietary business communication. It 
is intended solely for the use of the designated recipient(s). If this 
communication is received in error, please contact the sender and delete this 
communication.


Re: [CODE4LIB] You are a *pedantic* coder. So what am I?

2013-02-21 Thread Justin Coyne
Ian, I have to caution against taking the attitude we only code in what we
already know.  Of course you are going to be able to hit the ground
running faster in what you are expert in.  Putting on the blinders is a
great way to become irrelevant in the technology sphere.  If you want to be
a better coder, there is no better way than to learn a new language, and
actually do a project in it. The insights you find in doing this will make
you a better coder when your go back to doing whatever it was you were
doing before.

-Justin


On Thu, Feb 21, 2013 at 11:53 AM, Ian Walls iwa...@library.umass.eduwrote:

 Agreed.  Each language has its own strengths and weaknesses.  Pick the one
 that works best for your situation, factoring in not only what the
 application needs to do, but your and your team's level of experience, and
 the overall community context in which the project will live.  The
 peculiarities of a given languages truth tables, for example, can easily
 get washed out of the calculation when you consider what languages you know
 and what platforms your institution supports.


 -Ian

 -Original Message-
 From: Code for Libraries [mailto:CODE4LIB@LISTSERV.ND.EDU] On Behalf Of
 Ethan Gruber
 Sent: Thursday, February 21, 2013 12:45 PM
 To: CODE4LIB@LISTSERV.ND.EDU
 Subject: Re: [CODE4LIB] You are a *pedantic* coder. So what am I?

 Look, I'm sure we can list the many ways different languages fail to meet
 our expectations, but is this really a constructive line of conversation?

 -1


 On Thu, Feb 21, 2013 at 12:40 PM, Justin Coyne
 jus...@curationexperts.comwrote:

  I did misspeak a bit.  You can override static methods in Java.  My
  major issue is that there is no getClass() within a static method,
  so when the static method is being run in the context of the
  inheriting class it is unaware of its own run context.
 
  For example: I want the output to be Hi from bar, but it's Hi from
 foo:
 
  class Foo {
public static void sayHello() {
  hi();
}
public static void hi() {
  System.out.println(Hi from foo);
}
  }
 
  class Bar extends Foo {
 
public static void hi() {
  System.out.println(Hi from bar);
}
  }
 
  class Test {
public static void main(String [ ] args) {
  Bar.sayHello();
}
  }
 
 
  -Justin
 
 
 
  On Thu, Feb 21, 2013 at 11:18 AM, Eric Hellman e...@hellman.net wrote:
 
   OK, pedant, tell us why you think methods that can be over-ridden
   are static.
   Also, tell us why you think classes in Java are not instances of
   java.lang.Class
  
  
   On Feb 18, 2013, at 1:39 PM, Justin Coyne
   jus...@curationexperts.com
   wrote:
  
To be pedantic, Ruby and JavaScript are more Object Oriented than
Java because they don't have primitives and (in Ruby's case)
because classes
   are
themselves objects.   Unlike Java, both Python and Ruby can properly
override of static methods on sub-classes. The Java language made
many compromises as it was designed as a bridge to Object Oriented
  programming
for programmers who were used to writing C and C++.
   
-Justin
   
  
 



Re: [CODE4LIB] You are a *pedantic* coder. So what am I?

2013-02-21 Thread Devon
This ... saddens me.

We can have evermore threads which hit the daily post limit about the
community and how everyone feels. But a thread about programming language
strength/weakness has to be shut down.

I think it's time to change the name. I'm completely serious.

/dev




On Thu, Feb 21, 2013 at 12:45 PM, Ethan Gruber ewg4x...@gmail.com wrote:

 Look, I'm sure we can list the many ways different languages fail to meet
 our expectations, but is this really a constructive line of conversation?

 -1


 On Thu, Feb 21, 2013 at 12:40 PM, Justin Coyne
 jus...@curationexperts.comwrote:

  I did misspeak a bit.  You can override static methods in Java.  My major
  issue is that there is no getClass() within a static method, so when
 the
  static method is being run in the context of the inheriting class it is
  unaware of its own run context.
 
  For example: I want the output to be Hi from bar, but it's Hi from
 foo:
 
  class Foo {
public static void sayHello() {
  hi();
}
public static void hi() {
  System.out.println(Hi from foo);
}
  }
 
  class Bar extends Foo {
 
public static void hi() {
  System.out.println(Hi from bar);
}
  }
 
  class Test {
public static void main(String [ ] args) {
  Bar.sayHello();
}
  }
 
 
  -Justin
 
 
 
  On Thu, Feb 21, 2013 at 11:18 AM, Eric Hellman e...@hellman.net wrote:
 
   OK, pedant, tell us why you think methods that can be over-ridden are
   static.
   Also, tell us why you think classes in Java are not instances of
   java.lang.Class
  
  
   On Feb 18, 2013, at 1:39 PM, Justin Coyne jus...@curationexperts.com
   wrote:
  
To be pedantic, Ruby and JavaScript are more Object Oriented than
 Java
because they don't have primitives and (in Ruby's case) because
 classes
   are
themselves objects.   Unlike Java, both Python and Ruby can properly
override of static methods on sub-classes. The Java language made
 many
compromises as it was designed as a bridge to Object Oriented
  programming
for programmers who were used to writing C and C++.
   
-Justin
   
  
 




-- 
Sent from my GMail account.


Re: [CODE4LIB] You are a *pedantic* coder. So what am I?

2013-02-21 Thread Sullivan, Mark V
I was just curious, so I threw the same thing into C#.

class Foo
{
public static void sayHello()
{
hi();
}

public static void hi()
{
Console.WriteLine(Hi from foo);
}
}

class Bar : Foo
{
public static void sayHello2()
{
hi();
}

public static new void hi()
{
Console.WriteLine(Hi from bar);
}
}

class Program
{
static void Main(string[] args)
{
Bar.sayHello();
Bar.sayHello2();
Console.ReadLine();
}
}

Result is similar:
Hi from foo
Hi from bar.

The C# compiler actually throws an error if you try to make a static class 
extend another class.  ( i.e., static class Bar : Foo ).

Static references are really a nice way to get around OO in the first place 
though.  Of course I use them as well, when I want to introduce more procedural 
type methods into my code, or when I truly need something at the CLASS level, 
rather than the OBJECT level.  Although using static methods can occasionally 
provide very small performance boosts, I would guess static methods also 
reduces the ability to use reflection to examine code introduced or created 
during runtime.

That said, it's hard for me to get too excited about the lack of the ability 
for a static class to extend another static class and throw strongly typed 
classes out the window for Javascript's hash implementation.  And I have spent 
a lot of time trying to get Javascript to feel more object-oriented, copying a 
child classes hash from the parent and then adding new items (happen to be 
functions) to it and using Prototype as well.

Either way, there are different models for everyone and perhaps every project.  

But, I did learn something about Java (and then C#) from this thread.

Mark / UF



-Original Message-
From: Code for Libraries [mailto:CODE4LIB@LISTSERV.ND.EDU] On Behalf Of 
Benjamin Armintor
Sent: Thursday, February 21, 2013 1:22 PM
To: CODE4LIB@LISTSERV.ND.EDU
Subject: Re: [CODE4LIB] You are a *pedantic* coder. So what am I?

If this thread is just code nerdery: You can't override static methods in Java. 
 It looks like you can because there's a generous search for statically bound 
names (if B extends A, and A defines static a(), B.a() works), but it's not the 
overriding mechanism because if you try to refer to super in an overriding 
implementation, the compiler stops you (it's not bound).  This also suggests 
that classes are not objects, but that the reflection API cheats a little to  
make them appear to be so.

I always thought Javascript both had primitives and was more functional than 
OO, given the Prototype inheritance stuff, the fact that objects are really 
hashes, and the fact that constructors are functions.  Ruby, though:
totally OO. Except when it's not.

- Ben


On Thu, Feb 21, 2013 at 1:00 PM, Adam Wead aw...@rockhall.org wrote:

 Actually, I'm finding this thread very enlightening.  I've only had a 
 little java experience, but always assumed it was the 
 ur-implementation of OO principles.  Now, I've had that assumption corrected.

 Thanks,

 ...adam


 On Feb 21, 2013, at 12:53 PM, Ian Walls iwa...@library.umass.edu wrote:

  Agreed.  Each language has its own strengths and weaknesses.  Pick 
  the
 one that works best for your situation, factoring in not only what the 
 application needs to do, but your and your team's level of experience, 
 and the overall community context in which the project will live.  The 
 peculiarities of a given languages truth tables, for example, can 
 easily get washed out of the calculation when you consider what 
 languages you know and what platforms your institution supports.
 
 
  -Ian
 
  -Original Message-
  From: Code for Libraries [mailto:CODE4LIB@LISTSERV.ND.EDU] On Behalf 
  Of
 Ethan Gruber
  Sent: Thursday, February 21, 2013 12:45 PM
  To: CODE4LIB@LISTSERV.ND.EDU
  Subject: Re: [CODE4LIB] You are a *pedantic* coder. So what am I?
 
  Look, I'm sure we can list the many ways different languages fail to
 meet our expectations, but is this really a constructive line of 
 conversation?
 
  -1
 
 
  On Thu, Feb 21, 2013 at 12:40 PM, Justin Coyne
  jus...@curationexperts.comwrote:
 
  I did misspeak a bit.  You can override static methods in Java.  My 
  major issue is that there is no getClass() within a static 
  method, so when the static method is being run in the context of 
  the inheriting class it is unaware of its own run context.
 
  For example: I want the output to be Hi from bar, but it's Hi 
  from
 foo:
 
  class Foo {
   public static void sayHello() {
 hi();
   }
   public static void hi() {
 System.out.println(Hi from foo);  } }
 
  class Bar extends Foo {
 
   public static void hi() {
 System.out.println(Hi from bar);  } }
 
  class Test {
   public static void main(String [ ] args) {
 Bar.sayHello

Re: [CODE4LIB] You are a *pedantic* coder. So what am I?

2013-02-21 Thread Jay, Michael
you really derailed me . . . i might be able to help with the javascript ypu're 
messing with though . . . maybe . . . 

mj


[CODE4LIB] Recall: [CODE4LIB] You are a *pedantic* coder. So what am I?

2013-02-21 Thread Jay, Michael
Jay, Michael would like to recall the message, [CODE4LIB] You are a *pedantic* 
coder. So what am I?.


Re: [CODE4LIB] You are a *pedantic* coder. So what am I?

2013-02-21 Thread Genny Engel
I feel that this is true.  However, the more languages I learn, the more I find 
myself doing embarrassing things like trying to update a JavaScript file and 
then realizing I'm actually writing in PHP or C++.  If only my brain had an 
automatic language gearshift.

Genny Engel
Sonoma County Library
gen...@sonoma.lib.ca.us
707 545-0831 x1581
www.sonomalibrary.org


-Original Message-
From: Code for Libraries [mailto:CODE4LIB@LISTSERV.ND.EDU] On Behalf Of Justin 
Coyne
Sent: Thursday, February 21, 2013 9:59 AM
To: CODE4LIB@LISTSERV.ND.EDU
Subject: Re: [CODE4LIB] You are a *pedantic* coder. So what am I?

Ian, I have to caution against taking the attitude we only code in what we
already know.  Of course you are going to be able to hit the ground
running faster in what you are expert in.  Putting on the blinders is a
great way to become irrelevant in the technology sphere.  If you want to be
a better coder, there is no better way than to learn a new language, and
actually do a project in it. The insights you find in doing this will make
you a better coder when your go back to doing whatever it was you were
doing before.

-Justin


On Thu, Feb 21, 2013 at 11:53 AM, Ian Walls iwa...@library.umass.eduwrote:

 Agreed.  Each language has its own strengths and weaknesses.  Pick the one
 that works best for your situation, factoring in not only what the
 application needs to do, but your and your team's level of experience, and
 the overall community context in which the project will live.  The
 peculiarities of a given languages truth tables, for example, can easily
 get washed out of the calculation when you consider what languages you know
 and what platforms your institution supports.


 -Ian

 -Original Message-
 From: Code for Libraries [mailto:CODE4LIB@LISTSERV.ND.EDU] On Behalf Of
 Ethan Gruber
 Sent: Thursday, February 21, 2013 12:45 PM
 To: CODE4LIB@LISTSERV.ND.EDU
 Subject: Re: [CODE4LIB] You are a *pedantic* coder. So what am I?

 Look, I'm sure we can list the many ways different languages fail to meet
 our expectations, but is this really a constructive line of conversation?

 -1


 On Thu, Feb 21, 2013 at 12:40 PM, Justin Coyne
 jus...@curationexperts.comwrote:

  I did misspeak a bit.  You can override static methods in Java.  My
  major issue is that there is no getClass() within a static method,
  so when the static method is being run in the context of the
  inheriting class it is unaware of its own run context.
 
  For example: I want the output to be Hi from bar, but it's Hi from
 foo:
 
  class Foo {
public static void sayHello() {
  hi();
}
public static void hi() {
  System.out.println(Hi from foo);
}
  }
 
  class Bar extends Foo {
 
public static void hi() {
  System.out.println(Hi from bar);
}
  }
 
  class Test {
public static void main(String [ ] args) {
  Bar.sayHello();
}
  }
 
 
  -Justin
 
 
 
  On Thu, Feb 21, 2013 at 11:18 AM, Eric Hellman e...@hellman.net wrote:
 
   OK, pedant, tell us why you think methods that can be over-ridden
   are static.
   Also, tell us why you think classes in Java are not instances of
   java.lang.Class
  
  
   On Feb 18, 2013, at 1:39 PM, Justin Coyne
   jus...@curationexperts.com
   wrote:
  
To be pedantic, Ruby and JavaScript are more Object Oriented than
Java because they don't have primitives and (in Ruby's case)
because classes
   are
themselves objects.   Unlike Java, both Python and Ruby can properly
override of static methods on sub-classes. The Java language made
many compromises as it was designed as a bridge to Object Oriented
  programming
for programmers who were used to writing C and C++.
   
-Justin
   
  
 



Re: [CODE4LIB] You are a *pedantic* coder. So what am I?

2013-02-21 Thread Ian Walls
Justin,


I certainly agree that to become a better coder, it's good to experiment
with many languages and applications.  I'm not advocating that any given
shop should always rule out a project in a new (to them) language.  What I'm
saying is that the context of what you already know and what your
environment supports is an equally important part of the conversation when
choosing a language to develop in. 

-Ian

-Original Message-
From: Code for Libraries [mailto:CODE4LIB@LISTSERV.ND.EDU] On Behalf Of
Justin Coyne
Sent: Thursday, February 21, 2013 12:59 PM
To: CODE4LIB@LISTSERV.ND.EDU
Subject: Re: [CODE4LIB] You are a *pedantic* coder. So what am I?

Ian, I have to caution against taking the attitude we only code in what we
already know.  Of course you are going to be able to hit the ground running
faster in what you are expert in.  Putting on the blinders is a great way to
become irrelevant in the technology sphere.  If you want to be a better
coder, there is no better way than to learn a new language, and actually do
a project in it. The insights you find in doing this will make you a better
coder when your go back to doing whatever it was you were doing before.

-Justin


On Thu, Feb 21, 2013 at 11:53 AM, Ian Walls iwa...@library.umass.eduwrote:

 Agreed.  Each language has its own strengths and weaknesses.  Pick the 
 one that works best for your situation, factoring in not only what the 
 application needs to do, but your and your team's level of experience, 
 and the overall community context in which the project will live.  The 
 peculiarities of a given languages truth tables, for example, can 
 easily get washed out of the calculation when you consider what 
 languages you know and what platforms your institution supports.


 -Ian

 -Original Message-
 From: Code for Libraries [mailto:CODE4LIB@LISTSERV.ND.EDU] On Behalf 
 Of Ethan Gruber
 Sent: Thursday, February 21, 2013 12:45 PM
 To: CODE4LIB@LISTSERV.ND.EDU
 Subject: Re: [CODE4LIB] You are a *pedantic* coder. So what am I?

 Look, I'm sure we can list the many ways different languages fail to 
 meet our expectations, but is this really a constructive line of
conversation?

 -1


 On Thu, Feb 21, 2013 at 12:40 PM, Justin Coyne
 jus...@curationexperts.comwrote:

  I did misspeak a bit.  You can override static methods in Java.  My 
  major issue is that there is no getClass() within a static method, 
  so when the static method is being run in the context of the 
  inheriting class it is unaware of its own run context.
 
  For example: I want the output to be Hi from bar, but it's Hi 
  from
 foo:
 
  class Foo {
public static void sayHello() {
  hi();
}
public static void hi() {
  System.out.println(Hi from foo);
}
  }
 
  class Bar extends Foo {
 
public static void hi() {
  System.out.println(Hi from bar);
}
  }
 
  class Test {
public static void main(String [ ] args) {
  Bar.sayHello();
}
  }
 
 
  -Justin
 
 
 
  On Thu, Feb 21, 2013 at 11:18 AM, Eric Hellman e...@hellman.net wrote:
 
   OK, pedant, tell us why you think methods that can be over-ridden 
   are static.
   Also, tell us why you think classes in Java are not instances of 
   java.lang.Class
  
  
   On Feb 18, 2013, at 1:39 PM, Justin Coyne 
   jus...@curationexperts.com
   wrote:
  
To be pedantic, Ruby and JavaScript are more Object Oriented 
than Java because they don't have primitives and (in Ruby's 
case) because classes
   are
themselves objects.   Unlike Java, both Python and Ruby can properly
override of static methods on sub-classes. The Java language 
made many compromises as it was designed as a bridge to Object 
Oriented
  programming
for programmers who were used to writing C and C++.
   
-Justin
   
  
 



Re: [CODE4LIB] You are a *pedantic* coder. So what am I?

2013-02-21 Thread Chris Fitzpatrick
pendantic and ruby go together about as well as brevity and this
mailing list

class Foo
 private
 def bar
   Calling a private method is foobar
 end
end

$ irb
1.9.3p286 :009  Foo.new.bar
NoMethodError: private method `bar' called for #Foo:0x007f9e9184b8b8

1.9.3p286 :010  Foo.new.send(:bar)
 = Calling a private method is foobar

They've been saying they're going to remove this in the next version for
about 5 years now...



On Thu, Feb 21, 2013 at 9:37 PM, Ian Walls iwa...@library.umass.edu wrote:

 Justin,


 I certainly agree that to become a better coder, it's good to experiment
 with many languages and applications.  I'm not advocating that any given
 shop should always rule out a project in a new (to them) language.  What
 I'm
 saying is that the context of what you already know and what your
 environment supports is an equally important part of the conversation when
 choosing a language to develop in.

 -Ian

 -Original Message-
 From: Code for Libraries [mailto:CODE4LIB@LISTSERV.ND.EDU] On Behalf Of
 Justin Coyne
 Sent: Thursday, February 21, 2013 12:59 PM
 To: CODE4LIB@LISTSERV.ND.EDU
 Subject: Re: [CODE4LIB] You are a *pedantic* coder. So what am I?

 Ian, I have to caution against taking the attitude we only code in what we
 already know.  Of course you are going to be able to hit the ground
 running
 faster in what you are expert in.  Putting on the blinders is a great way
 to
 become irrelevant in the technology sphere.  If you want to be a better
 coder, there is no better way than to learn a new language, and actually do
 a project in it. The insights you find in doing this will make you a better
 coder when your go back to doing whatever it was you were doing before.

 -Justin


 On Thu, Feb 21, 2013 at 11:53 AM, Ian Walls iwa...@library.umass.edu
 wrote:

  Agreed.  Each language has its own strengths and weaknesses.  Pick the
  one that works best for your situation, factoring in not only what the
  application needs to do, but your and your team's level of experience,
  and the overall community context in which the project will live.  The
  peculiarities of a given languages truth tables, for example, can
  easily get washed out of the calculation when you consider what
  languages you know and what platforms your institution supports.
 
 
  -Ian
 
  -Original Message-
  From: Code for Libraries [mailto:CODE4LIB@LISTSERV.ND.EDU] On Behalf
  Of Ethan Gruber
  Sent: Thursday, February 21, 2013 12:45 PM
  To: CODE4LIB@LISTSERV.ND.EDU
  Subject: Re: [CODE4LIB] You are a *pedantic* coder. So what am I?
 
  Look, I'm sure we can list the many ways different languages fail to
  meet our expectations, but is this really a constructive line of
 conversation?
 
  -1
 
 
  On Thu, Feb 21, 2013 at 12:40 PM, Justin Coyne
  jus...@curationexperts.comwrote:
 
   I did misspeak a bit.  You can override static methods in Java.  My
   major issue is that there is no getClass() within a static method,
   so when the static method is being run in the context of the
   inheriting class it is unaware of its own run context.
  
   For example: I want the output to be Hi from bar, but it's Hi
   from
  foo:
  
   class Foo {
 public static void sayHello() {
   hi();
 }
 public static void hi() {
   System.out.println(Hi from foo);
 }
   }
  
   class Bar extends Foo {
  
 public static void hi() {
   System.out.println(Hi from bar);
 }
   }
  
   class Test {
 public static void main(String [ ] args) {
   Bar.sayHello();
 }
   }
  
  
   -Justin
  
  
  
   On Thu, Feb 21, 2013 at 11:18 AM, Eric Hellman e...@hellman.net
 wrote:
  
OK, pedant, tell us why you think methods that can be over-ridden
are static.
Also, tell us why you think classes in Java are not instances of
java.lang.Class
   
   
On Feb 18, 2013, at 1:39 PM, Justin Coyne
jus...@curationexperts.com
wrote:
   
 To be pedantic, Ruby and JavaScript are more Object Oriented
 than Java because they don't have primitives and (in Ruby's
 case) because classes
are
 themselves objects.   Unlike Java, both Python and Ruby can
 properly
 override of static methods on sub-classes. The Java language
 made many compromises as it was designed as a bridge to Object
 Oriented
   programming
 for programmers who were used to writing C and C++.

 -Justin