zlacker

[parent] [thread] 28 comments
1. henghe+(OP)[view] [source] 2015-12-12 14:04:39
I don't do a whole lot of software (got caught up on the hardware side of things), but one thing I'm noticing is that nobody makes extensive use of "advanced" IDE features as in eclipse or visual Studio.

Is this personal taste, or has it to do with the scope of the projects these guys are working on?

replies(4): >>detaro+D >>Brando+F >>JustSo+93 >>papito+g5
2. detaro+D[view] [source] 2015-12-12 14:15:48
>>henghe+(OP)
The selection of people certainly makes it less likely that they use IDEs that look like Eclipse or VS. But the editor windows you are seeing may look plain, but I bet most of them have quite fancy features set up, that do a lot of "IDE"-stuff.
replies(1): >>shoove+Q
3. Brando+F[view] [source] 2015-12-12 14:16:35
>>henghe+(OP)
I wouldn't jump to that conclusion unless I observed how people use it in real-time.

For verbose languages, you can't beat auto-completion and auto-import.

replies(1): >>cresha+S
◧◩
4. shoove+Q[view] [source] [discussion] 2015-12-12 14:18:40
>>detaro+D
Yeah, it would be interesting to see how Bram gets around the vim source code, for example.
◧◩
5. cresha+S[view] [source] [discussion] 2015-12-12 14:19:17
>>Brando+F
> For verbose languages, you can't beat auto-completion and auto-import.

And you can get both in vim, emacs, etc. The lines between those and full IDEs are blurry with the right (or wrong) amount of plugins.

replies(2): >>izacus+b2 >>simula+p2
◧◩◪
6. izacus+b2[view] [source] [discussion] 2015-12-12 14:47:58
>>cresha+S
The autocompletion in both vim and emacs was always significantly worse than any IDE-based ones, no matter the plugin I tried (for C, C++, Python or Go). Most of them are pretty much limited to ctags with no context matching, others simply died on projects beyond trivial.
replies(4): >>to3m+y2 >>DrJoke+u5 >>rmcphe+H6 >>bdisra+q8
◧◩◪
7. simula+p2[view] [source] [discussion] 2015-12-12 14:53:36
>>cresha+S
Not all auto-completions are equal. I have felt that Intellij's auto-completion is far superior to vim's YouCompleteMe.

There are many other advantages like out of the box support for a lot of common use cases like refactoring, navigation, build tool support, reuse common shortcuts like Control-C Control-V for copy-paste etc.

I would definitely advice new engineers coming into languages like Java to pick up an IDE like Intellij instead of vim.

replies(1): >>Robopr+qh
◧◩◪◨
8. to3m+y2[view] [source] [discussion] 2015-12-12 14:55:49
>>izacus+b2
For C/C++ and emacs, try rtags: https://github.com/Andersbakken/rtags

It's clang-based, so suffers from none of the tags-type issues: it's context-sensitive, and can see straight through gnarly stuff such as identifiers generated by token pasting.

Good points:

- Only mildly fiddly to set up

- Code browsing works well

- Code completion works well when it works

- Cute gcc/g++/etc. wrapper trick means you don't have to change any build settings

Bad points:

- Making it work with code you haven't built yourself on your local system (e.g., 3rd party stuff that's not complete, code for another platform) is less straightforward

- Code completion sometimes doesn't work with certain files (and for no reason that I've ever been able to figure out)

- It's probably my own limitations but I found it extremely inconvenient to debug (internally it's surprisingly complicated: separate client and server, lots of lengthy command lines, client code writes elisp code to stdout and elisp in emacs eats it up, the actual completion popup is a separate package, etc.)

9. JustSo+93[view] [source] 2015-12-12 15:08:57
>>henghe+(OP)
For me, IDEs are great for when I have to do boilerplate coding. But when I switch to real business logic I use an editor like vi or sublime. Anything more impedes my thinking and gets in my way.
replies(1): >>edwinn+q3
◧◩
10. edwinn+q3[view] [source] [discussion] 2015-12-12 15:15:58
>>JustSo+93
I'm guessing you're probably not writing unit test or use code coverage plugins or running static code analysis to provide feedback incrementally and quickly?
replies(3): >>aarone+x5 >>workit+E5 >>JustSo+ec
11. papito+g5[view] [source] 2015-12-12 15:50:55
>>henghe+(OP)
I did VI for over 10 years, and now I tried IntelliJ Python integration, and my rate of making stupid errors and wasting valuable time has gone down dramatically. Lightning-fast navigation across files, actually working autocomplete, live code style analysis. To be fair, I tried it before and was unimpressed, but in come cases, modern IDE's are becoming superior. And note that it's out of the box - setting up and trying different plugins just seems annoying in the least.
◧◩◪◨
12. DrJoke+u5[view] [source] [discussion] 2015-12-12 15:56:39
>>izacus+b2
I never managed to get it working in vim, but you can get pretty decent auto Go completion (with Go oracle) in Emacs.
◧◩◪
13. aarone+x5[view] [source] [discussion] 2015-12-12 15:57:42
>>edwinn+q3
What has any of those things to do with someone's choice of editor?
replies(1): >>edwinn+T9
◧◩◪
14. workit+E5[view] [source] [discussion] 2015-12-12 15:59:54
>>edwinn+q3
Thinking the same thing, I use vi for short scripts all the time but can't imagine doing anything more complex than that without the power of an IDE to assist with or even do the grunt work for me.
replies(2): >>JustSo+pc >>Robopr+Wg
◧◩◪◨
15. rmcphe+H6[view] [source] [discussion] 2015-12-12 16:18:59
>>izacus+b2
For go auto completion in vim, vim-go with youcompleteme works well for me. It's not tags-based, based on the source AST, shows method signatures as well.
◧◩◪◨
16. bdisra+q8[view] [source] [discussion] 2015-12-12 16:48:21
>>izacus+b2
Cider (for Clojure) and Ensime (for Scala) give you excellent support for auto-completion, documentation, and refactoring in Emacs. It's definitely possible, so it probably just depends on how popular Emacs/Vim are in your language community.
◧◩◪◨
17. edwinn+T9[view] [source] [discussion] 2015-12-12 17:17:28
>>aarone+x5
I take it you've never used those IDE with the plugins to support the workflow I mentioned above...
replies(2): >>merak1+da >>aarone+Ka
◧◩◪◨⬒
18. merak1+da[view] [source] [discussion] 2015-12-12 17:24:06
>>edwinn+T9
I take it you have never used vim or sublime with plugins that can do the same thing.

BTW, I've used both. No need for a snarky response to me as well

replies(1): >>edwinn+XH
◧◩◪◨⬒
19. aarone+Ka[view] [source] [discussion] 2015-12-12 17:37:20
>>edwinn+T9
Well, it depends on what you mean, I suppose. I've integrated Emacs with tools like those, so that I can (for example) get linting feedback on code in real time, or jump to locations from a unit test failure report. But I've never written unit tests, or used coverage or static analysis tools, that depended on Emacs, or indeed on any other editor. I've never even seen that kind of tight coupling, much less perpetrated it myself. I'm not sure whether that's what you're talking about, or whether it only sounds like that's what you're talking about, but I hope it's the latter.
replies(1): >>edwinn+RH
◧◩◪
20. JustSo+ec[view] [source] [discussion] 2015-12-12 18:06:35
>>edwinn+q3
Why wouldn't I be able to?

And the whole point of me switching to vi is so I slow down a bit and get it correct.

replies(1): >>edwinn+ZH
◧◩◪◨
21. JustSo+pc[view] [source] [discussion] 2015-12-12 18:09:43
>>workit+E5
I do let the idea do the grunt work for me. But when I get down to writing the important code, I slow down and reason about it without an IDE.

I generally don't need an ide to keep popping up telling me what to type. I know what I'm doing.

◧◩◪◨
22. Robopr+Wg[view] [source] [discussion] 2015-12-12 19:24:52
>>workit+E5
I appreciate the cross referencing / browsing / documentation capabilities of a good IDE. (especially if it has a vim plugin so my fingers know what to do)

If I uncharitably assume that grunt work means "redundant boilerplate", that sounds like more of a language issue than a tool issue. This said as a Java programmer who has been doing a lot of JavaScript this last year, and REALLY appreciates the brevity. Even if your IDE can generate it, that doesn't mean I want to read it.

Java: the language that has to wear a paper bag over its face while it's screwin' ya. :-)

(think of all those Eclipse plugins to visualize fugly XML bogo-DSLs and other cruft for The Enterprise -- sure, there are worse languages out there, but not in common use now)

replies(1): >>edwinn+kp1
◧◩◪◨
23. Robopr+qh[view] [source] [discussion] 2015-12-12 19:35:26
>>simula+p2
Intellij with vim plugin :-)

I like how you can use command keys to quickly toggle on and off the project file and current-file's-components browsers, leaving the "distraction free" * editor window for much of your work.

* yeah, there's a mode with this name that auto-wacks ALL the supplemental panels, AND the window frame. I don't usually go that far, but it does show that they "get it" as far as what many of us IDE resisters disliked.

◧◩◪◨⬒⬓
24. edwinn+RH[view] [source] [discussion] 2015-12-13 05:07:05
>>aarone+Ka
There are 2 workflows here:

1. the ability to run everything (a.k.a the whole project) using the preferred SCM (or build tools)

for example: mvn clean install

where your pom.xml already set to have cobertura (code coverage), checkstyle/pmd (linting/style/formatting), and findbugs (static code analysis)

2. the ability to run a very specific unit-test somewhere deep down in your project via your IDE as you're writing code (the IDE compiles your code on the fly...) and get everything I mentioned above :)

for example: I want to run one new unit-test for a new code => I don't have to drop to my console/command-line/terminal to run mvn clean install. I just go to my unit-test, highlight the method name, run it through eclipse/intellij and I get everything.

replies(1): >>aarone+901
◧◩◪◨⬒⬓
25. edwinn+XH[view] [source] [discussion] 2015-12-13 05:10:24
>>merak1+da
I'm using sublime. I'm in the market for great sublime plugins and it would be great if you could let me know what plugins you use :).

My workflow goes like this:

1. Write new code

2. Write unit-test

3. Run _just that_ unit-test w/ code-coverage from within my IDE without compilation (e.g.: no mvn clean install)

4. Get feedbacks (unit-test results, code-coverage results)

I take it linting/checkstyle/style-formatter is a given in sublime (I use jshint so I guess I know the answer to that ;)).

◧◩◪◨
26. edwinn+ZH[view] [source] [discussion] 2015-12-13 05:11:07
>>JustSo+ec
See https://news.ycombinator.com/item?id=10725486 and https://news.ycombinator.com/item?id=10725480
◧◩◪◨⬒⬓⬔
27. aarone+901[view] [source] [discussion] 2015-12-13 15:53:20
>>edwinn+RH
Oh, is that all? There's nothing special about that. Any decently capable editor should be able to do likewise. I don't know about Vim because I don't use it, but I would assume it can, and I know very well that Emacs can because I do such things in Emacs every time I write code.

Of course it doesn't work exactly the same way; for example, running a single test doesn't involve highlighting it and telling Emacs to do something magical, but rather flagging it in a way that's specific to the test runner and then doing M-x compile RET RET to point the test runner at that file. The first time I do that, I have to tell Emacs what command I want it to run, but that's no great hardship, since it's buffer-local (each file I'm editing has its own value) and, being a simple test harness invocation, need change only when the filename does. If it matters to me, I can put this information in a configuration file, so I don't have to worry about typing it out even the first time. So far, it hasn't mattered to me. (And, yes, when I run a single test this way, I still get coverage information. Linting happens inline, as linting should, so doesn't really figure into things here.)

The mechanism differs somewhat from what you describe, but the result is the same. Just highlighting the desired test and invoking a keybinding might be a little quicker and more convenient, but so far it hasn't seemed enough so for me to go to the effort of writing Lisp code to do it. It wouldn't be much effort, but since invoking a specific unit test alone takes about a second, it also wouldn't save me much time, which is why I haven't bothered doing it.

A major point of interest here is that none of this workflow is specific to a single language or a single toolset. It works the same way across all the languages I use. Since I work in multiple languages on a daily basis, that's very important to me. It sounds like you work primarily, perhaps exclusively, in Java, so that's not as important to you. The problem is, you seem to have assumed that nobody else's tools can do the same awesome things your tools can do. As I hope you've gleaned from this comment thread, that is rather untrue, and proceeding from the assumption that it is makes you come off as both ignorant and arrogant. What you do with this information is, of course, entirely up to you.

replies(1): >>edwinn+Lo1
◧◩◪◨⬒⬓⬔⧯
28. edwinn+Lo1[view] [source] [discussion] 2015-12-13 21:55:32
>>aarone+901
Hm, I don't mean to sound arrogant although I can see why my comments perceived to be that way. My apology.

I know most test-runners have the capability to run specific test which suggest that any editor that is capable of executing command-line and bind it to something can support my workflow with some annoyance here and there (as you mentioned, your setup isn't as magical as my description ;)). I mean... someone could've written shell scripts that help them run a bunch of things too...

This is akin of the discussion of using ctags and the need to detect file changes and re-run ctags. Last time I google it there were plenty plugins for each editors and ways to set it up (except there's no clear winner ;)).

The whole idea here is that the IDE helps you not to worry about any of that. IntelliJ supports multiple (mainstream) languages that fulfill my workflow nicely.

Good point that I'm sure Emacs can handle way more languages but the steps to set it up and the limitation (filename change? method name change?) feels more static than dynamic to me.

◧◩◪◨⬒
29. edwinn+kp1[view] [source] [discussion] 2015-12-13 22:06:05
>>Robopr+Wg
IDE these days are more than that :)

https://emptysqua.re/blog/unittests-code-coverage-in-pycharm...

http://blog.jetbrains.com/idea/2012/04/code-coverage-for-jav...

[go to top]