The Microsoft Python one is excellent, as is the Remote development one.
I'm a fan of VS Code because in spite of it having a plug in system, there are great plug ins there. And that one single great plugin is all that is needed (for that specific purpose)
The problem with systems that are really just frameworks for other to build on is they become reluctant to build stuff that plugins exist for. The philosophy becomes to depend on the plugins rather than built out needed features. This entrenches the spaghetti pile of plugins.
Plugins are great and necessary - Jetbrains IDEs have plugins. The difference is a philosophical one - are plugins there to provide core functionality, or are they there to provide uncommon use cases? VSCode uses plugins for basics, JetBrains builds basics in - with JetBrains you can never install a plugin and happily work away. With VSCode, the very first task you must carry out is to start managing your inventory of plugins.
Effectively, I don't care if I receive a batteries-included product where the batteries are pre-installed and on-demand loaded, vs one where they're permanently installed.
You seem to prefer opinionated, where other people like the fact they can pick and choose from various plugins to my their IDE their own, and if they do not like the default implementation of a feature there likely is another plugin that may work for them.
For example there are a couple of git plugins, all of them act slighty different based on the workflow of the users of that plugin, if MS came in and said "No this is how git workflow is in VSCode and no other way is possible" that would turn off alot of users
Further you stated another glaring problem, Jetbrians mikes IDE's plural, specialized for each lang they are targeting, VSCode needs to work with many lang, there is not a VSCode:Python edition, and VSCode:Powershell edition, etc et c etc
It is just VSCode and plugins add the Languages you need / want support for
Cheaper for personal use, and free for students.
https://www.jetbrains.com/idea/buy/#commercial?billing=yearl...
Consultants make at £400 day here, dotnet devs usually more.
If you are a hobbiest, it's cheaper.
And the costs decrease each year.
If you are saying £100, then it sounds like it would offer you money for value, so it's probably not for you.
microsoft already has an IDE like this for their core languages; it's called visual studio. it's kinda bloated, but it's still a great tool for languages that microsoft has deigned to grace with its direct attention. for anything else, you're SOL; the plugin ecosystem is pretty limited for VS. the more VSCode reimplements plugins "natively" (isn't it all JS anyway?), the less it has a reason to exist.
The big thing with Jetbrains is the cost. PyCharm is $9-$25/month and VSCode is free
And then, despite automatically identifying the local python venv, install the linter elsewhere so it doesn't work.
But it integrates it wonderfully when you install the linter yourself, or if you use the bundled pylance.
Unlike the FANG companies, Microsoft doesn't tend to rip the carpet out from under independent developers like that.
To avoid left-pad situations
No, they roll them into the carpet and sodomize them like they did with Keivan Beigi and at most just sheepishly say sorry after some public outcry.
This is really frustrating. Am I doing something wrong?
Note that a new extension, that works alongside the original python extension, has been developed by Microsoft: Pylance. It speeds things up based on pyright, a python type-checker.
For refactoring you can use rope [0] as a VSCode extension.
However, I was also having a lot of trouble with environment variables, especially PYTHONPATH. How do you solve that?
Also rope did NOT work well for me. When I tried to refactor (rename) a function definition, it also changed variables in unrelated scopes that had the same name and were not related to the function at all. So I did not gain anything from that which I couldn't achieve using CTRL+F replace.
I haven't used rope extensively, it's too bad that it doesn't work well. It's open source so I guess it needs more contributions.
“Rope is not installed. Install?” - so I need a package in my virtual env just to rename variables?
“Rope is installed. Refactoring failed”.
Careful with the Remote Development plugin. It does NOT have an open source license.
Absolutely everything we use has non-opensource components, unless you try to pursue the path of a purist.
JetBrains IDEs are development environments, meant for editing code, in specific primary language. They really try their best to understand code that user works on (which is a hard problem, because code is frequently invalid while it's being actively edited), and make it as convenient as possible.
VSCode is - in my understanding - essentially, a step over older glorified extensible notepads on steroids. Unlike those older extensible notepads, it does have built-in programming language editing features, but mostly it's still not the core product but rather a job for extensions and language servers to fill that niche.
So for me VSCode wins over editors like Sublime or Atom, that don't have core programming language processing concepts baked in, but still loses to the specialized IDEs where specific language support is a primary feature (like PyCharm or GoLand).
I've used RubyMine and IntelliJ. IntelliJ kept me sane for the thankfully-short time I worked with Java, and I appreciate it. But I can't get past how SLOW RubyMine is. Even on my $4,000 MBP, it just feels sluggish. Maybe that's because I'm at home on Rails, and I can think faster than the IDE, but there's really not much excuse to my mind for being that slow, especially on top-end hardware. It once helped me debug a plugin of plugin of a gem, and I'll be forever grateful for that, but I keep trying it every so often, and failing to part with my cash for it. I pay a lot for software, in general, but that one's just too steep for my taste, when tools like vim, Sublime, and VS Code exist.
I work on a stack that has ruby on rails on the backend, javascript on the frontend, .NET Core apps to do data transformation, and some NodeJS thrown in there, too. I have to switch back and forth between these projects regularly. There is no other tool like VS Code that provides me the flexibility to have snippets and highlighting and the things I need to maintain these projects, while also giving me the flexibility to switch between languages and syntax on the fly without having to wait 20 minutes just for the IDE to load up.
Java, Python, Go, Terraform, Bazel, all in the same IDE at once. Best in class refactoring for all of them. Handles the monorepo surprisingly well (Bazel is a big help here, too).
I had to bump the memory a bit on the IDE, but after hundreds of thousands of lines of code the index gets large.
I used to use VSCode heavily... Emacs before that. But now with IntelliJ I don’t really need much else. The plug-in ecosystem is really nice too.
VSCode does not get that kind of love, it is marketed differently and has different core values.
Jokes aside, I guess what VS Code needs is to grow a strong community of people who care about the editor as much as what they do using it. Emacs has managed to do that, so it's possible.
That explains Emacs amazing longevity, but as the article points out, Emacs longevity is actually a problem as its keyboard and UI conventions predate the modern conventions that came with Windows and MacOS.
This has an important downstream consequence on the "plugin" ecosystem: since these "plugins" are better seen as small applications running on in a shared, restriction-free OS, they don't need a fixed and restrictive API to interoperate. The entire Emacs is the API, and as long as an elisp app follows conventions and plays nice, it will almost seamlessly interoperate with every other app. And in cases where it doesn't (e.g. you try to use two apps that do roughly the same thing), it's relatively trivial to patch out the conflicts yourself. Having an integrated debugger and REPL is also helpful :).
VSCode philosophy feels more restrictive compared to that.
As for the keyboard conventions, it's true and it impacts the market share, but that's a problem for almost any software that reaches longevity. Conventions come and go, so it shouldn't stop one from learning a tool that keeps proving its worth over decades. And in case of Emacs, if you don't like the default keybindings, you can quite easily patch them up to follow whatever convention you fancy :).
Terminology is a slightly worse problem because you can't patch that out if you don't like it - but then again, it's just a bunch of terms you need to learn; par for the course for any developer.
And honestly one could spend a career learning every editor/IDE in depth without ever accomplishing anything else. Embedded is especially bad as one often must use the IDE integrated into the platform's SDK.
(Under the hood, stuff you change via Customize gets serialized into a file called custom.el. But you don't have to know that to use it.)
The article mentions Excel, for example, coming a few years after that and going strong today.
So I really do think Emacs predating those conventions is not going to be overcome.
I've long felt that this was an obvious and good use of Emacs - as a central coordination point for the entirety of one's computational life, with everything manipulated programmatically from a single programming environment with both rich UI capabilities and a full-fledged programming language. No other project seems to understand the value of such a central point... but still, there are many ways Elisp could improve to make this kind of usage easier.
No. But I do use Emacs Lisp to automate certain tasks and then wrap them up in an Emacs interface -- like highlighting some JSON to submit to an API endpoint, or using ivy to select a Docker container to start or stop.
> You mentioned network connections - do you actually do scripting with Elisp's networking primitives?
Emacs provides an OOTB way to hit API endpoints in the form of 'request'. So it's not just the networking primitives, but the utilities built on those primitives that Emacs comes with.
> there are many ways Elisp could improve to make this kind of usage easier.
Emacs Lisp has had two major warts: speed, and the lack of lexical scoping and CL-like constructs. The latter is largely addressed. The former is being worked on with efforts like gccemacs.
Your answer: Learn Lisp!
Technically true even in spite of emacs, but if every engineer out there learns lisp to write better python wouldn't that be an interesting world.
This is also true for VS Code (with JavaScript instead of Emacs Lisp of course). VS Code is just a bit more organized on the surface, giving it significant advantages over emacs in that regard, but also a bit more closed in culture.
I've been finding that once I changed capslock to become control, the various keyboard commands in Emacs make a lot of sense to me. In fact, far more than I thought they would, to the point where I'm feeling a lot more comfortable and competent performing the shortcuts, which means I remember a lot more of them. (Remembering shortcuts has always been a problem for me because I have various Adult ADHD issues.)
Sure, it's just one person's anecdotal and subjective, experience, but I've found myself using Emacs to edit my code (mostly Terraform and Ansible) much more than VSCode.
- Features that should arguably be built in require searching for, evaluating, and installing a plugin.
- Some plugins spam you with a "What's New" page with each update.
Bookmarking is an example of these two in action: https://github.com/alefragnani/vscode-bookmarks/issues/175
I prefer to use Vim as a powerful editor, within Unix as my IDE.
vim rules for me, as a full IDE from the terminal.
It only takes a second but its absolute madness.
https://blog.arduino.cc/2019/10/25/new-arduino-pro-ide-a-clo...
My VScode is tweaked to the languages I need and I can use one editor to switch between them.
And the linting and formatting just works.
Then you do not really need to install any plugins. Problem solved!
You don't start using Vim as an IDE. It's a waste of time, because like you said IDEs offer a complete product right off the bat. You start using Vim as a text editor, for text editor things, and when you're familiar enough with Vim's plugin ecosystem you may start to enhance your text editing experience with IDE-like features. And you may come to realize that's all you need.
Learning Vim for the sole purpose of tuning it into an IDE is a terrible idea no matter how you slice it. I blame people who hype their Vim setup as a complete IDE even though they started learning Vim as a text editor, not an IDE.
Then consistent and integrated IDEs are a mix of “everything and the kitchen sink” and “our way or the highway”
Personally I prefered to pay the price of an ugly and patchworky workspace to get something that works like I want to work and without too many things I don’t care about.
Replace "vs code" with "javascript" and "plugin" with "library" and you've just described the javascript ecosystem.
Batteries included! All you ever need to work with JS.
Some people absolutely took advantage of the situation from a financial standpoint and created a business opportunity for themselves, at the expense of the community.
This is why my experience with VS Code reminds me of Eclipse.
It's also about type hinting, refactoring, debugging, etc.
And for the two languages you speak of it just so happens that the support is shipped with VS Code since Microsoft is heavily invested in the development of these languages.
For other's (even Python) support varies widely.
And plugins are inconsistent, buggy, inconsistently documented, hard to use and find and update and goodness knows who developed them. Plugins can be duplicated, outdated, abandoned and incompatible.
But worst of all, a big pile of plugins isn't a consistent integrated product vision.
I gave VSCode a solid go, and I had to keep installing plugin after plugin, but it was truly painful trying to find where in the interface to use the plugin and how to use it.
It reminded me of using VIM as an IDE - not an IDE, a big pile of stuff that isn't integrated. I started using VIM as an IDE when I started programming and I believe it cost me a year of time - I should have gone straight to a consistent integrated IDE.
I prefer a batteries included approach such as the Jetbrains IDE's.
I absolutely do use VS Code - it's always loaded, but I only use it like a simple text editor.