3 ms·
Do you honestly have the entire class library for your language memorized? And all the member names of all your classes? And all the public interfaces of all
by jasonkester 18y ago
Do you honestly have the entire class library for your language memorized? And all the member names of all your classes? And all the public interfaces of all the 3rd party libraries installed on your machine? And the entire Windows API?
Do you never deal with long member names that would benefit from a quick ctrl+space?
Are you really that quick at opening code files and scrolling down by hand to method definitions?
Do you genuinely prefer to use command-line tools to search your codebase? And replace? And if so, how do you safely rename variables, methods and member names?
I don't think that language choice has all that much to do with it. I'm currently working on a medium sized Python project, and spend maybe an hour a day cursing Eclipse for not knowing the contents of my own classes, let alone the Python and Django libraries. Honestly, I don't feel sped up!
- jm4 18y agoOf course I don't memorize everything. I do memorize the things I use most often so that code completion is hardly necessary. This takes much longer to do when you have a crutch to lean on. I typically have my code on one monitor and documentation on another when dealing with something unfamiliar. I definitely agree with you on the Eclipse issue, though. It's just a bad IDE and people just keep using it. It's sort of like the IE of IDEs.
- rcoder 18y ago...And the entire Windows API? Quite simply, you've shown why some of us prefer to work with compact frameworks in the online space. The normal web stack, as a vocabulary, is really only a few thousand "words" in size: HTTP verbs, HTML tags, CSS selectors, JavaScript/jQuery/etc. API, and your choice of agile web framework interfaces (perhaps with a little SQL mixed in for good measure). Once you're relatively literate in the weird pidgin that is the modern web stack, it's pretty easy to rely on the auto-complete engine already wired into your head. If your class member names are too long, or your method defs are buried inside some 10Kloc monster source file, perhaps you should consider some light refactoring to clean things up. Similarly, if you find yourself heavily relying on search-and-replace outside of single files, you may may have a bit of a coupling problem in your system.
- etal 18y agoAs a vimmer who has used Visual Studio in the past: - Auto-complete can done in emacs and vim, too. There's an older vi-style completion which just completes from existing tokens in the current file (Ctrl-P) and a newer "omni-complete" (Ctrl-X-O) which is a bit smarter. For better poking around, keep an IPython session running. - Don't scroll by hand in vim. There are keybindings for all kinds of jumping around and finding the declaration or definition you need. - Search and replace: I'm surprised you would doubt this. Vim itself is a search/replace/insert filter; there's no dialog you bring up; full regular-expression navigation and substitution is always active. That's why a couple of keystrokes is usually faster than reaching for the mouse, for vim and emacs users. - Command line: Yes! Search, replace, sort, find a declaration, pull up the documentation for a function, run a documentation generator, interact with the version control system -- most of it's build into the editor, and for what isn't built in, the editor gives easy access to the system shell. It's perfectly reasonable to build and edit your code with vim in one window, perhaps split into a few buffers, while playing with the resulting program in a terminal window next to it. For an interpreted language like Python, you don't even need to restart the interpreter, just reload the modules after they change. Thanks to this design, all of this works just as well over an ssh or telnet session. Vim/vi is built for Unix; on Windows, without Cygwin, it's fairly crippled compared to a system that's fully integrated with the operating system. Unix was made to be programmable, and the shell gives significant help for inspecting the system and connecting different programs together. So a text editor that gives direct access to all of these capabilities and builds on top of them is very powerful -- assuming you already know how to use the shell effectively. For VS, it's the other way: VS makes Windows programming reasonable, while doing the same things without the IDE's substantial help (perhaps the way it is in Eclipse) is brutal.