9 ms·
That is a very interesting approach - instead of just presenting files, this IDE is already abstracting out some of the semantic structure for you and presentin
by Vivtek 17y ago
That is a very interesting approach - instead of just presenting files, this IDE is already abstracting out some of the semantic structure for you and presenting code based on its relationships. It's meeting you halfway. And it keeps track of things the way you work - by explicitly acknowledging the task structure of the work, it's again meeting you halfway.
This is a really promising start. Very cool.
- jasonkester 17y agoProgramming hasn't been about files for a long time now. That's the reason that we have IDEs in the first place, and why I cringe when people talk about writing code in a text editor. Any IDE worth its salt will do all the things in that video, except for the little draggable bubbles.
- lambdom 17y agoWith those great IDE, you can do everything, but not editing effectivly :p
- jrockway 17y agoI cringe when people talk about writing code in a text editor Yeah, because we have to type M-. to navigate to the related code. (Also, insert rant about how "UNIX is my IDE".)
- mseebach 17y agoEmacs is a text editor in the same way the space shuttle is a vehicle.
- jrockway 17y agoBut unfortunately, very few IDE users are aware of this.
- mixmax 17y agoYes, it's equally hard to operate.
- davidw 17y agoReally? I can see grandma not using it, but anyone on this site ought to be able to figure out the basics in short order. Of course, no one ever truly masters it - I'm always learning cool new things. But that's part of what makes it so great.
- sreque 17y agoCan your emacs editor construct hyperlinked call graphs showing all callers and callees of a given function? Will this call graph generation remain up to date as I edit files? Can Emacs give me a hyper-linked list of all usages of a given symbol and do it properly(lexical scope, etc.), not just doing a simple symbol search? Can I edit my code in emacs, have a background compiler compile the file on the fly, and also provide error feedback, hilighting the problem lines with a tagged failure reason and also providing a hyper-linked list in another window as well? Last I checked, the best I could do would be to kick off a compile manually and navigate the errors as a linked list. How's emacs' refactoring support? Judging by the following stackoverflow post, it's pretty poor: http://stackoverflow.com/questions/673554/how-can-i-refactor-c-source-code-using-emacs http://stackoverflow.com/questions/673554/how-can-i-refactor.... How's Emacs' keyword completion? Last I checked, it was just a hacky dictionary look-up, whereas an IDE can semantically analyze the source to provide intelligent suggestions. Even if you can get Vim or Emacs to do some of the above, it usually isn't as easy to use or as useful as an IDE. For instance, I know you can get call graph support in Vim using cctree.vim, but it relies on cscope, which requires refreshing the database manually, is slow to load, and tends to generate incomplete tag sets. IDE's are, well, better integrated, and so can do many things a lot better than looser environments like Emacs and Vim. Their UI's tend to be a lot more powerful because they are not designed to be run on windowless environments. Personally, for small projects I use Vim and for large projects I use an IDE with a Vim emulation plugin like Netbean's JVI plugin.
- deleted 17y ago[deleted]
- lutorm 17y agoEmacs can do whatever you want. If it doesn't, it can be added. In fact, Emacs is an IDE... It's just not a mouse-based IDE. Mouse clicking makes my hands hurt much faster than using the keyboard. I also find it annoying to switch from mouse<->keyboard, so I don't want a UI that relies on constant mousing.
- RyanDScott 17y ago"Emacs can do whatever you want. If it doesn't, it can be added...." Um no. But if so, then someone better start busting a lisp to get emacs to make cute little bubbles. I'd love to see that.
- epochwolf 17y agoIt's also based on technology that's ancient compared to everything else around it. (Not that ancient is a bad thing, go unix!) Unrelated but interesting out of 130 space flights 2 resulted in the destruction of the vehicle.
- jrockway 17y agoYeah, dynamic customization and extension is quite antiquated. Modern IDEs should only be customizable by writing 5000 different classes, recompiling, and restarting the IDE. Tools should only be built by dedicated tool-builders, not by your average programmer! Nice troll though, I will give you that.
- jacquesm 17y agoIDE's can be neat, but plenty of people seem to use them as crutches to keep on walking through minefields of APIs. Since the IDE remembers all your parameter sequences and types there is also less incentive for developers of APIs to think ahead of time and plan their interface so it is consistent and easy to remember.
- pohl 17y agoI'd like to have a dollar for every time I've seen a NullPointerException on some line that was constructed by someone who loves the list of methods that automagically pops up for the dot operator: foo.bar().baz().qux() ...Grrrrr!
- Retric 17y agoTry catching a block that does that is actually less code than a long set of conditionals. Granted it's basically saying: if (foo != null) if (bar.bar() != null) if (foo.bar().baz() != null) { ... worked = true; } if (false == worked ) {/*to do*/} But, staying on the happy path until you can demo something is often useful. I think the problem is how you transition from demo to production worthy code.
- guelo 17y agoThat's not the same since you are executing the bar method multiple times.
- sukuriant 17y agoIf you really want to get picky, return foo.bar().baz().qux() * 2; Could become: Bar bar = foo.bar(); if(bar == null) handleBarNull(); else { Baz baz = bar.baz(); if(baz == null) handleBazNull(); else { //(assuming qux is a value) return baz.qux() * 2; } }
- alttab 17y agoif (foo!=null && (a = foo.bar()) && a != null && ... a = foo.bar() will always evaluate to true as the assignment shouldn't ever fail. Of course, in compiled languages I'm sure there will need to be a declaration of 'a' but if there is a possibility to reuse temp variables then could work. However, if you are coding in C/C++ (and to a similar extent Java, there really is no way around it. This could be an example of why hybrid functional, imperative, and object oriented languages are becoming popular because the programmer can pick the paradigm that most suits the problem.
- gjm11 17y agoIn other words: All the things in that video ... except for the things the video was about.
- jasonkester 17y agoThe video highlighted an annoying feature of Squeak Smalltalk, where you get tiny little views of individual methods in their own window, which seems like a good idea until you actually try to do something complicated using it. It's pretty to watch though. The cool things there, in my opinion, were the code navigation pieces. Those are the things I actually think work better with tabbed files. In other news, yikes! I seem to have started an IDE vs. Text Editor flamewar. Sorry about that.
- gridspy 17y agoThose bubbles would have been a nightmare if they didn't relate to each other in such a clean way They have some great grouping features - snapping, colouring, pushing, connections with lines, naming groups.
- stcredzero 17y agoYou get most of the same functionality by saving off Smalltalk images with meaningfully arranged windows. (Yes you can do it with debug sessions too.) But you have to keep track of the relationships yourself. The lines and groupings are genius. This stuff is awesome. First time I've been this impressed by an IDE outside of Smalltalk, Self, or Symbolics, Lisp.
- wallflower 17y agoAwesome UX ideas to possibly implement in iPad app.
- jblomo 17y agoI also appreciated the fact that it linked called functions to their definition. g] is great in Vim, but it is easy to get a little lost in the navigation stack. Having g] intelligently pop out a new buffer window ala :vsplit would be a great start.
- fragmede 17y agoI've been using C# and thus Visual Studio Express over my usual python/vi setup, and Visual Studio practically forces the line of reasoning that results in code bubbles on you. It has a good start on navigation, but I'm finding setting up split panes in Visual Studio (same file or not) is quite cumbersome and not designed for quick edits. I can quickly put two functions side-by-side in vim, but the setup cost in Visual Studio feels much higher.
- UpFromTheGut 17y agoVS2010 made some improvements to this (RC is available here: http://msdn.microsoft.com/en-us/vstudio/dd582936.aspx http://msdn.microsoft.com/en-us/vstudio/dd582936.aspx). Now you can tear off tabs from the main window and place them on another screen, or tile them on the same screen. Also, now there's functionality to split a file into two viewing panes.
- bad_user 17y agoMeh .. by the time Eclipse boots up, and by the time you load your project in Eclipse, I'm already in-the-flow with tickets read / 5 files open / the project running on my localhost. Besides, it's not like it's a primitive environment ... when I want some API discovery/learning or when I want to do some debugging (or both) ... I open up an interactive shell. I have Textmate-like snippets setup in my Emacs, and for CRUD-stuff I bet I'm ten times more efficient than you (and adding new snippets is a piece of cake ... not to mention that we share them company wide because they are text-files in our SVN). When wanting "rename" refactoring, commands with grep/find/sed are already hardwired in my brain. And nothing beats editors like Vim/Emacs on pure text-editing efficiency. Also, good luck using your favorite IDE when trying out a new language ;) So you can cringe all you want, some of us are quite happy with just text-editors.
- icefox 17y agoOne extremely annoying bit watching the video is that for an IDE manipulating text files it requires that your hand never leave the mouse. Every single operation it looks like requires that you right click, click to activate, click to drop down, click to open. Even the 'insta-search' box requires a click. Someone should buy a one button mouse and install it on their computer or just take the mouse away completely. A mouse has a place, but it shouldn't be the primary means of interacting with something that is text.
- ewjordan 17y agoLater on in the video they showed some examples of keyboard shortcuts, so there are some in there, but I agree, it's not entirely clear whether or not mouse-free code sessions are possible. To some extent you'll need mouse-interaction, for dragging things and clearly visual stuff like that (nobody likes to position things with the keyboard, or at least they shouldn't), but they should really do their best to add keyboard hooks to almost everything that they can, definitely.
- delackner 17y agoThe plan9 folks would disagree quite vehemently. We are used to keyboard operations being more efficient for most tasks, but the keyboard operation for "go to the file over there, the one 3 links over semi-related to this one" may be slower than just clicking.
- jedbrown 17y agoYes, but there is a big difference between typing part of the file or function name and typing a full path. Search-based semi-global matching is a really fast way to navigate.
- theycallmemorty 17y agoIt may not be useful when you're trying to bang out new modules but for me the majority of my debugging is done by looking through the code... not much typing going on.
- oakenshield 17y ago