emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: IDE


From: Przemysław Wojnowski
Subject: Re: IDE
Date: Sun, 11 Oct 2015 15:18:17 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.3.0

W dniu 10.10.2015 o 11:40, Eli Zaretskii pisze:
Come to think of that, even coming up with a list of such features
would be real progress, as I don't think we have that, or ever had.

I can "step forward and work" conceptually here. :-)

One can start with a question:
What is purpose of an IDE (except for making many for a company behind it)?
The simple answer is: to help programmers do their work productively.

The answer tells two things:
1. Who is the target: programmers not average computer user
It could be possibly constrained to e.g. programmers working on projects, not single file programs.
2. How to optimize product backlog: maximization of productivity.

Both these things help to select features.
For example project-oriented programmers _have to have_ project support, whereas "single file" programmers may not care about it.
Features/bugs that impact their productivity have higher priority.

Let's say that we would target "project programmers", then we could ask:
1. What features would make such programmers productive?
2. What other environments offer that attract them?

IMHO the answer is: it depends on target language(s).

I cannot say what makes a Ruby programmer productive, but I can list a few things important for Java programmers. Others, having experience with other languages, may list _must have_ features for their environments.

For (project-oriented/enterprise) Java the features are:
1. Project support
IDE has to know the boundaries of a project - where are sources, tests, libs, resources/assets (additional files used in an app in runtime), docs - and what are relations between them. Also it has to know how to work with project's build tool (be it Maven, Gradle, etc.). A programmer joining a project (99% of cases) should be able to open/import it and start work. Every Java IDE have that.

2. Code completion
From whole project, used libraries, and resources

3. Jumping around the project code and resources.
Jumping to around the project code and used libraries. Another thing is jumping to/from resources (for example aspects can be defined in an XML file and IDE could allow to jump to matching classes).

4. Finding usages of fields, methods, types.
Helps to wrap head around project.

5. Automatic compilation and showing compilation erros/warnings.
Tightens development feedback loop.

6. Running the tests (current, selected, all)
Tighten development feedback loop.

7. Debugging
A must, especially for legacy code, so, basically 99% of projects. :-)

8. Running the app

9. Basic refactoring.
I do refactor _a lot_ and in my experience the most important refactoring is Extract Method. Others, while helpful, are less often used, compared to the EM. One variation of Extract Method is "EM with finding duplicates", which works like this:
- ask user for a method name,
- find all occurrences of selected code in the buffer
- ask user if she wants to replace all occurrences with the call to the new 
method.
This is fantastic feature that Intellij has and helps to remove a lot of duplicated code.

10. Showing documentation (tooltip, etc.)
Maybe EWW could be used to show javadoc in a small window?


Of course, part of these things (e.g. build tool support) are language dependent and should not be in Emacs core.

Also some of the features are already scattered in different elpa libraries, but lack integration with others.

IMHO people having experience in other languages could list features that make them productive and maybe we will be able to find a set of core, absolutely must have, IDE features. :-)

IMHO the list of core IDE features will be fairly small and doable.

Sorry for long email.

Cheers,
Przemysław



reply via email to

[Prev in Thread] Current Thread [Next in Thread]