G' | 1 Jul 2004 14:09
Picon

Re: Language Design for Refactoring.


JC> Given a clean slate, what would be the characteristics of a language
JC> designed explicitly with making refactoring of programs written in it easy
JC> and reliable?

Clarity of side efects and dependencies.

I'm also thinking about some two way ability for some features.
For example C++ #define macros lose information when they develop
code, when you use evaluation in python or ruby, you also lose
information. Compiling in many languages definetly loses information.
This might be another hard step.

Actually macros and evals are compiling ;-)

G'irts

------------------------ Yahoo! Groups Sponsor --------------------~--> 
Yahoo! Domains - Claim yours for only $14.70
http://us.click.yahoo.com/Z1wmxD/DREIAA/yQLSAA/umvwlB/TM
--------------------------------------------------------------------~-> 

 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
     http://groups.yahoo.com/group/refactoring/

<*> To unsubscribe from this group, send an email to:
     refactoring-unsubscribe <at> yahoogroups.com
(Continue reading)

Michael Feathers | 1 Jul 2004 17:37
Picon

Re[2]: Language Design for Refactoring.


JC>> Given a clean slate, what would be the characteristics of a language
JC>> designed explicitly with making refactoring of programs written in it easy
JC>> and reliable?

G> Clarity of side efects and dependencies.

I've thought about that one a little.  If a language had
compiler-enforced "effect annotations" could be easier for a tool or a
person to make changes.  Method const in C++ is a simple kind of
effect annotation.  There could be more involved ones.  On the other
hand, maintaining them could be hard.  I suspect the better thing is to
keep them out of the code and let a refactoring tool compute them.

Michael Feathers
www.objectmentor.com

------------------------ Yahoo! Groups Sponsor --------------------~--> 
Yahoo! Domains - Claim yours for only $14.70
http://us.click.yahoo.com/Z1wmxD/DREIAA/yQLSAA/umvwlB/TM
--------------------------------------------------------------------~-> 

 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
     http://groups.yahoo.com/group/refactoring/

<*> To unsubscribe from this group, send an email to:
     refactoring-unsubscribe <at> yahoogroups.com
(Continue reading)

John Carter | 6 Jul 2004 03:21
Picon

Re[2]: Language Design for Refactoring.

On Thu, 1 Jul 2004, Michael Feathers wrote:

> JC>> Given a clean slate, what would be the characteristics of a language
> JC>> designed explicitly with making refactoring of programs written in it easy
> JC>> and reliable?
>
> G> Clarity of side efects and dependencies.
>
> I've thought about that one a little.  If a language had
> compiler-enforced "effect annotations" could be easier for a tool or a
> person to make changes.  Method const in C++ is a simple kind of
> effect annotation.  There could be more involved ones.  On the other
> hand, maintaining them could be hard.  I suspect the better thing is to
> keep them out of the code and let a refactoring tool compute them.

That is the current path of my thoughts. Make it possibly for the compiler 
/ IDE to tell to programmer what the "effect annotation" _and_ type is, 
not the otherway round.

Experience with Ruby tells me dynamic typed is better than static type.

My experience with C++ tells me you can get into vast sea changes just 
because you added a single "const" to a piece of bad legacy code. (One of 
the things I truly truly hated about Rational Rose. Add a const and it can 
be a million mouse clicks later before things finally compile.

I also love the notion of Linear Logic, or "reference counting on the 
fingers of one thumb".

ie. At any one time, there may only be a single reference to every object.
(Continue reading)


Gmane