On 26 mars 2013, at 12:05, Frank Shearar wrote:
On 26 March 2013 10:51, Camille Teruel <camille.teruel@gmail.com> wrote:
On 26 mars 2013, at 11:02, Tudor Girba wrote:
I like this project proposal. A little addition would be to add type inference for code written in the inspector where we already have concrete types that we could leverage for development tools. Would you consider that?
Do you mean that type information could be gathered on object inspection? If so it's a cool idea and the same thing could be done with a debugger.
As an example, since you know the actual type of all variables and method arguments, you can use that information when writing code in the debugger: you've just written a message send to some variable but that that variable's class doesn't understand that message, for instance. (This should be a warning, not an error.)
I just didn't want to force the student to develop new type inference mechanisms because some solutions already exist in Pharo. The project is more about making cool tools that use type information provided by an existing solution.
That includes both Francisco Garau's and Santiago Bragagnolo's work on Concrete Type Inference, Roel Wuyt's RoelTyper and my own tiny inference engine in SqueakCheck (http://www.squeaksource.com/SqueakCheck/ and its ConfigurationOf might well need fixing for Pharo).
Thanks Frank, I wasn't aware of your engine, I will have a look on it.
frank
Doing both tasks would be too much work for one student. However, if the existing solutions don't fit the tool the student wants to develop he is still free to improve them.
Cheers, Doru
On Tue, Mar 26, 2013 at 10:51 AM, Camille Teruel <camille.teruel@gmail.com> wrote:
Hi Janko,
Here is another project proposition.
Programming tools for Pharo based on Type Inference
Level: intermediate/advanced
Possible mentor: Camille Teruel Possible second mentor: Stéphane Ducasse
Description: Type inference mechanisms can be used to compute the types of variables from the source code. This information is very interesting in the context of a dynamically-typed language like Smalltalk. Several type inference tools already exists for Smalltalk but the type information they bring has not revealed all its potential yet. The student will have to leverage this type information with new programming tools.
Example of such tools are:
Code analysis tools:
better "implementors of" and "senders of" lists dead code finder
Development tools:
type mismatch hints at compile time better code completion
Technical details:
The student will have to analyze existing type inference tools and choose an appropriate solution. Then he will have to learn how to build UIs with Spec.
Benefits for the Pharo community
New useful development tools Improvement of existing code base thank to these tools
Benefits for the student
Use a highly reflective dynamic language Learn the basics of type inference Learn how to make UIs with Spec Have an impact on the code base of a large project
-- www.tudorgirba.com
"Every thing has its own flow"