3 ms·
Ask HN: What would be your ideal IDE experience be in Rust/Java?
We have been working IDE extensions to make programs nicer on the eye, easier to navigate through and playful to work with. One of the ways we have been experimenting with it is through 1:1 mapping of programs into a lean visual representation (Java for now).
The visual representation doesn't get in the way, you can type code like you would and we convert the code into UI on the fly with regular autocompletes as you'd expect.
Why UI you ask:
1. UI allows us to give hard interaction points where you can click in the right places to access the programming language features available at that point in code.
ex. select 4 statements and press ctrl+f to wrap then in for loop/ right click and select "wrap in for".
2. It lets us lay out your code in a map (or what is suitable for current task), for example when you want to see where all a reference has been used in a program, you can double click on it and we will show you the usages relative to your current position in the program in a map (instead of a list as in current IDEs). You can click on a method and we can bring all the fields/methods that are being used right next to that method without changing the code.
3. The UI is quite dense actually, you can zoom out to the point where it's just code with tokens you can interact with, zoom further and we can show you a local code map of the things that the selected region of your code accesses.
4. It could be useful for accessibility/interaction with code on touch devices.
5. Learn a language by interacting with the UI, the UI can serve to help you explore new language features by making them more accessible. Shifting the focus from learning a language to build programs to learning to use an IDE to build programs.
_________________________________
Here is a link to show what we have been experimenting with:
https://drive.google.com/drive/folders/18CdALYNg3v-Qngle-bOErWl3w8mWT-gR?usp=sharing
_________________________________
How do `you` imagine your perfect IDE experience to be? In your opinion how can one enhance the programming experience with meaningful UIs embedded in the IDE?
* If things are unclear regarding where we are going with this, we are just experimenting with ideas :)
- armchairhacker 5y agoi honestly can’t say i see the usefulness in your UI diagram. The issue is that you’re basically displaying all of the code so it’s just redundant. You need to make it higher-level, e.g. add an annotation which you can apply to specific methods and fields and constructors, and then only show nodes in the diagram when they have that annotation. Another case where a UI view would be especially useful, is live interactive UI/UX previews. Whether that be HTML or Java Swing GUI. The left window is code to render a part of your application’s UI, and the right window is an interactive preview of the UI itself. You can resize the preview, change attributes like color, and maybe add components, and it will affect the code. Or a game engine where the “scene” is actually constructed by code that you can edit, and it will edit the scene.
- vyomkeshj 5y agoThank you for your response! It's supposed to be either edit with code or edit with UI. The UI is supposed to provide one with more flexibility in terms of input options. Instead of a text file, you can have a canvas to arrange your code on. You can put methods side by side and pan between them, see the relationships between them, put stickies on them, highlight statement background to any color to make it more visible. You can put statements side by side to use more h-space on your screen. The UI diagram is not very essential but it gives us the surface area to do such things. Yes, we plan to add plugins that will allow side by side ui previews, another benefit of going ui first is we can do things like draw overlaid arrows to show the user which part of the code binds to which part of the UI in the preview. These will be library specific plugins that can use ex. a set of annotations to allow the library to integrate certain of its features within the UI. We are thinking about ways to make this easy to implement for libraries. __________________________ If you zoom out, we can provide higher level views. You can say right click-> tag a set of methods/fields with a tag and use the tags to filter what is visible in the view. Do I make sense to you? :)